• 作成:

SpamAssassinをバージョン3.4.2にアップデートすると任天堂からのメールが文字化けする症状を直しました

結論

設定ファイルに書いてある

add_header all Report _REPORT_

を消すと治ります.

症状

テキスト

This is a multi-part message in MIME format.

--wsJyydQBtMm8=_?:
Content-Type: text/plain;
        charset="utf-8"
Content-Transfer-Encoding: 8bit

ncaq 

ポケットモンスター Let's Go! ピカチュウ・Let's Go! イーブイをプレイいただきありがとうございます
開発者からのメッセージメール限定壁紙のプレゼントゲームのプチ情報をお届けいたします

This is a multi-part message in MIME format.

--wsJyydQBtMm8=_?:
Content-Type: text/plain;
	charset="utf-8"
Content-Transfer-Encoding: 8bit

ncaq 様

『ポケットモンスター Let's Go! ピカチュウ・Let's Go! イーブイ』をプレイいただきありがとうございます。
開発者からのメッセージ、メール限定壁紙のプレゼント、ゲームのプチ情報をお届けいたします。

のようになってしまう症状が発生していました.

.procmailrc

# SpamAssassin add flag
:0fw
|/usr/bin/spamassassin

をコメントアウトしたら文字化けしなくなったため, SpamAssassinの問題であると確定しました.

原因調査

ユーザのルールが悪いのかなと思って全部コメントアウトしてみましたが変わらず文字化け.

ReportingBugs - Spamassassin Wiki を見てみましたが似たような例は見つからず.

とりあえずサーバだとビルドが遅いからSpamassassinの色々なバージョンを試せないし, デスクトップPCに入れて試してみましょう.

なんと再現しませんでした.

ホームディレクトリじゃない場所の設定が悪いのかと検討をつけました. しかしそのへんスパムメールを添付ファイルにしないぐらいの設定しかいじってない気がします…

とりあえず/etc/mail/spamassassinをバックアップして設定を全消しして再インストールしてみます.

spamassassinを再インストールしても文字化けしますね. うーん…

~/.spamassassinを移動させてみたら文字化けしなくなりました. これで~/.spamassassinが原因の一端を担っていることがわかりました.

しかし, 先程設定ファイルを全コメントアウトしても文字化けしてしまったのは何故なのでしょう. 今全部コメントアウトしてみたら文字化けしなくなりました.

/etc/mail/spamassassinの設定と~/.spamassassinの設定, どちらかが存在しても文字化けするということのようですね.

調査の結果一見全然関係なさそうな以下の設定があると文字化けするようですね.

# デバッグのために非迷惑メールにも解析結果を記述する
add_header all Report _REPORT_

何だろう, utf-8のファイルに別のエンコードで書き込もうとしてバグるとかなのですかね.

でもデスクトップPCで spamassassin --cf='add_header all Report _REPORT_' -t < 1543901546.17096_0.sonoda:2,S しても文字化けしないけど, サーバでこれを実行すると文字化けするのですよね.

user_prefsをサーバからデスクトップに全コピーしてみますか. 再現しませんね.

/var/lib/spamassassinを削除してsa-updateをやり直してみるという暴挙に出てみます. サーバの方は文字化けしたまま.

バージョンが違うのが問題なのかなと思い当たって, mail-filter/spamassassin-3.4.2-r2をデスクトップの方にインストールしてみます. やはりデスクトップでは再現しませんでした.

USEフラグが違うからエンコードの対応状況が違う? いや, これ関係は同じなはずです.

sudo perl-cleaner allをしてperl関連のパッケージの再ビルドをしてみます. 何故かtexinfoが再ビルドされただけで状況に変化はなしです.

そう言えばそもそもspamassassinのバージョンが古い場合は問題が無かったんだよなと思い出して, サーバのspamassassinのバージョンを古くしてみようと思い立ちました.

m '=mail-filter/spamassassin-3.4.1-r21' でspamassassin-3.4.1-r21をインストールしてテスト. そうすると… 文字化けしない!

これはやはりバージョンアップで発動したバグのようですね. デスクトップPCで再現しないのは謎ですが…

公式にバグレポートしました

バージョン3.4.2-r2から設定に add_header all Report _REPORT_ を追加すると, utf-8のメールが文字化けすることがある(環境依存?)

最近任天堂から来るメールが文字化けして困っていました. そう言えば文字化けし始めたのはSpamAssassinをバージョンアップした時からだと気が付きました. そこでSpamAssassinを無効化してみたら文字化けしなくなり原因を確信しました.

とりあえずuser_prefsを全部コメントアウトしてみたのですが, 文字化けするのは変わりませんでした.

そこで一度SpamAssassinの関連ファイルを全部消して再インストールしてuser_prefsの内容を削っていくなどして, add_header all Report _REPORT_ が原因であると判明しました.

この設定ファイルを削ると文字化けしませんが,

以下のように設定を追加すると文字化けします. spamassassin --cf='add_header all Report _REPORT_' -t < 1543901546.17096_0.sonoda:2,S

アップデートしてから文字化けするようになったのを思い出したので, システムにインストールされているSpamAssassinを3.4.1-r21に戻してみたら, 同じコマンドを実行しても文字化けしませんでした.

他の環境で試してみようと思って, デスクトップPCにSpamAssassinをインストールして試してみたのですがこちらでは再現しませんでした. なので再現性は謎ですが, アップデートで発現したバグであることには間違いないと思います.

私のサーバで文字化けする例を添付しておきます.

7664 – If you add add_header all Report_REPORT_ to the setting from version3.4.2-r2, utf-8 's mail may garbled (environment dependent?)