SpamAssassinをバージョン3.4.2にアップデートすると任天堂からのメールが文字化けする症状を直しました
結論
設定ファイルに書いてある
add_header all Report _REPORT_
を消すと治ります.
症状
最近任天堂から来るメールが常に文字化けしているので割と困っている
— エヌユル (@ncaq) 2018年11月30日
Thunderbirdが悪いのかと思ったけど生のメールファイルでエンコード試してみたけど正しく認識しない
ASCIIがそのままなのでutf-8っぽさはあるし実際content-typeもutf-8が指定されてるんだけどutf-8で読めない
サポートに連絡だな pic.twitter.com/VMu6I3QwRY
任天堂からのメールが文字化けしてる問題ThunderbirdだけじゃなくてAndroidのGmailでも発生してるからやっぱり向こう側か私のメールサーバがおかしいっぽい
— エヌユル (@ncaq) 2018年11月30日
そう言えば任天堂からのメールが文字化けしてる件spamassassinをアップデートしたときと同期してる気がする
— エヌユル (@ncaq) 2018年11月30日
暫くspamassassin通すのやめてみるか
spamassassin無効にしたら文字化けしなくなったので開発元にバグ報告が必要だ
— エヌユル (@ncaq) 2018年12月4日
テキスト
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に入れて試してみましょう.
spamassassinにかけたメールが文字化けする問題
— エヌユル (@ncaq) 2018年12月5日
最小の再現を出そうとしてサーバからローカルのPCにメールを移動させてspamassassinをインストールして動かしてみたら再現しなかった
しかしユーザルールを消滅させても問題なく文字化けしてたしなあ…
/etc/以下のルールが悪いのかな
なんと再現しませんでした.
ホームディレクトリじゃない場所の設定が悪いのかと検討をつけました. しかしそのへんスパムメールを添付ファイルにしないぐらいの設定しかいじってない気がします…
とりあえず/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をインストールして試してみたのですがこちらでは再現しませんでした. なので再現性は謎ですが, アップデートで発現したバグであることには間違いないと思います.
私のサーバで文字化けする例を添付しておきます.