6.4.14 添付ファイル名が文字化けする

ケース1)
現象
添付ファイルがあるメールを受信した場合に,BASE64デコードされないまま添付ファイル名が受信されている。
文字化け例)
第12回定期大会の議=?iso-2022-jpXXX・・・
上記のように添付ファイル名の途中から「=?iso-2022-jp」の文字が現れる場合など
要因
エンコードされた添付ファイル名のデータの行末が"?="でない。
Mail - SMTPでは,行末が"?="でないなどフォーマットが異なるデータはデコード処理しません。
行末が"?="でない要因としては,送信時のエンコード失敗,または経路上のメールサーバの誤動作と推測されます。
対処
現象が発生したメールの受信ログがある場合,ログファイルで該当メールの受信部分を探し,添付ファイル名がどのような名称であったかを確認します。

ログの出力例)

Mon dd hh:mm:ss HEADER  Body (RFCtoX400) :

Content-Type: application/yyyyyyy;
       name="=?iso-2022-jpXXXXXXXXXXXXXXXXXX?=
       =?iso-2022-jpXXXXXXXXXXXXXXXXXXXXXXXXX?=
Content-Disposition: attachment;
       filename="=?iso-2022-jpXXXXXXXXXXXXXXXXXX?=
       =?iso-2022-jpXXXXXXXXXXXXXXXXXXXXXXXXX

Mail - SMTPでは,Content-type:とContent-Disposition:の両方にファイル名がある場合,Content-Disposition:のfilenameから優先的にファイル名を取得します。
上記のログ出力例では,Content-Disposition:のfilenameに指定されている添付ファイル名の二行目のデータの終わりが"?="でないためデコードされません。
この為,デコード処理する一行目のデータと,デコード処理しない2行目のデータを文字列結合した文字列を添付ファイル名として受信します。上記のようにエンコードデータの行末が"?="でない場合には,受信側のメールシステムでの対処方法はありません。送信側でエンコードが正しく実施されているか確認した上で,添付ファイル名を短くしていただく等の運用回避をお願いします。
ケース2)
前提条件:Version 3以前からMail - SMTPを使用しており,現在はバージョンアップして運用している。
現象
インターネットにメール送信する際に,受信側で添付ファイル名が文字化けする。SEND_CODEにmimeを指定しているが,受信時に添付ファイル名を確認するとmimeエンコードされていない。
要因
SEND_FNAMEにauto以外が設定されている。テキストエディタ等を使用して,smtpdir下のsmtpgw.cfgを参照してSEND_FNAMEの値を確認してください。
対処
Mail - SMTPを停止します。テキストエディタを使用しsmtpgw.cfgを開き「SEND_FNAME=XXXX」の設定行を削除してください。Mail - SMTPを起動して添付ファイル付きのメールを送信して添付ファイル名の生成状態を確認してください。
ケース3)
現象
添付ファイルがあるメールを受信した場合に,ファイル名の途中に「filename_1_=」等の文字列が挿入されたり途中に文字化け文字が挿入された状態で添付ファイル名が受信されている。
文字化け例)
第12回定期大会の議題に関す肅跂釶辣・・る質問.doc
第12回定期大会の議題200filename_1_=60512.doc
上記のように添付ファイル名の途中に「肅跂釶辣・・」のように文字化けしたり「filename_1_=」の文字が現れる場合など
要因
エンコードされた添付ファイル名のデータがRFC2231方式でエンコードされており,複数行で指定されている場合の行末が";"でない。
Mail - SMTPでは,行末が";"でない場合には次行に添付ファイル名が継続して指定されていると解釈します。
対処
現象が発生したメールの受信ログがある場合,ログファイルで該当メールの受信部分を探し,添付ファイル名がどのような名称であったかを確認します。

ログの出力例)

Mon dd hh:mm:ss HEADER  Body (RFCtoX400) :

Content-Type: application/msword;
       name*0*=ISO-2022-JP''%1B%24BBh%231%2322sDj4%7CBg2q%24N5DBj%24K4X%249%24k
       name*1*=%3CALd%1B%28B.doc
Content-Transfer-Encoding: base64
Content-Disposition: inline;
       filename*0*=ISO-2022-JP''%1B%24BBh%231%2322sDj4%7CBg2q%24N5DBj%24K4X%249
       filename*1*=%24k%3CALd%1B%28B.doc

上記のログ出力例では,Content-Disposition:のfilenameに指定されている添付ファイル名の一行目のデータの終わりが";"でないためfilename*1*=が添付ファイル名として受信されます。
送信側で添付ファイル名を短くする,エンコード方法を変更する等の運用回避をお願いします。