BASE64 エンコードの一行の文字数の制約条件

某製品*1NDR が文字化けする、というクレームを受けて担当者と調べてみたところ、NDR がマルチパートメールになっていて、ISO-2022-JP の text/plain パートが BASE64 エンコーディングされており、そこに問題がありそうなことが分かりました。

ISO-2022-JP なのに何故 BASE64 エンコーディングしとるんじゃ?」という疑問はさておき

$ nkf -emB hoge.txt

などとしてもキチンとデコードされません。おかしいなぁ、と思って色々見てみたところ、NDRBASE64 エンコーディングされたデータの 1行の文字数が 4の倍数になっていないのが原因のようでした。が、これをベンダーにどういえば良いのかでまた悩みが...

例えば MIME::Base64 - base64文字列のエンコードとデコード とかでは

デコードする文字の数が4の倍数ではありません。正しいbase64データは長さが4の整数倍になるよう、
1つまたは2つの"="文字で調整すべきです。デコードの結果は、 埋め込み文字がそこに存在するような
形で行なわれます。

と書かれているのですが、これは

  1. base64 エンコーディングの仕様
  2. RFC XXXX の記述

どっちから来ている制約かを見つけることができませんでした。どなたかご存知でしたら教えてください m(__)m。

*1:といっても 2つに一つでばれちゃうわけですが...