質問: postfix dovecotをcentos7内で作っています。 gmailからのメールが文字化けしてしまいます。 utf8とbase64で送られてきているそうです。 本文の日本語が全部文字化けしています。 何か対策はありませんか? ちなみにpostfixのmain.cfでutf8サポートを行いました。 8bitに変換するよう設定も行いましたが、依然文字化けされています。
回答: どんな風に化けているのか分かりませんが、その化け方で対応は異なります。 quoted-printable エンコードされている場合 ============================= 例 ``` =81=40=82=b3=82=c4=81=41=82=d3=82=c6=8e=76=82=a2=97=a7=82=c1=8 2=c4=81=41=90=56=8a=83=95=fb=96=ca=82=c9=82=d3=82=e7=82=c1=8 ``` これは8bit文字を使っているのに送信側が Content-Type ヘッダを設定していないか、もしくは latin-1 系の文字集合名を設定しているのが問題です。 base64 エンコードされている場合 =================== 例 ``` gXmLxopFk66M/IF6DQoNCkVyaWNzc29ugUFJbnRlbILIgsc1jtCCqoOCg2+DQ4OLkluWloz8gq+W s5D8kNqRsYtaj3CC8JStlVwNCg0KgaFVUkwNCmh0dHA6Ly93d3cuYmx1ZXRvb3RoLmNvbS8NCmh0 dHA6Ly93d3cuYmx1ZXRvb3RoLmNvbS9uZXdzL3RleHQvcHJlc3M0Lmh0bSCBaZStlVyOkZe/gWoN ``` こちらも同様に Content-Type ヘッダに設定してこない送信側の問題です。 ただし最近では、だいたいの場合メールの文字化けの原因はメーラにあります。 gmail だとするとおそらくですが該当のメールの Content-Type ヘッダには charset=utf8 が設定されているかと思います。また Subject ヘッダも以下の様にエンコードされているはずです。 ``` Subject: ?utf-8?B?$... ``` Content-Type ヘッダが設定されていない場合、多くの日本人向けのメーラは Subject ヘッダや From ヘッダで使われる base64 エンコードされた際のエンコーディング名(日本では `=?iso-2022-jp?` が多いです)から「これはおそらく本文も iso-2022-jp だ」といった具合に判定されます。