仕事でPostfixの設定をしていたんだけど、MSPからの送信がうまくいかなくてハマったので備忘のためにメモ。
1.FreeBSDのportsからPostfixをインストールし、MSPを有効にする
postfixのインストールは、portsからmake installで行います。今回はDovecot SASLを使うとか、仮想メールボックスを使うことを最終目標にしていたので、それらのためのオプションも組み込んでおきます。
単純にMSPを有効にするには、master.cfのsubmissionセクション(13行~17行付近)のコメントをはずして有効にすればよいです。
submission inet n - n - - smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
これでひとまずはMSPが使えるようになる。
2.master.cfの変更をする
しかし、単にコメントを解除したままでは、MSPにて送信するときにSTARTTLSを要求されてしまい、SMTP over SSL/TLSの設定も行う必要がある。(smtpd_tls_security_level=encrypt はSTARTTLSコマンドが必須となる)
特に、Symantecのアンチウィルス製品を使っている場合、STARTTLSを使うとメール送信時のスキャンが出来ないためにアンチウィルスソフトが通信を阻害してしまう。
これを解決するために、ここを「smtpd_tls_security_level=may」と変更することで、STARTTLSを使わなくても送信が可能になる。
理想はSSL暗号鍵も作ってTLSで通信することなんだけど、TLS用に暗号鍵を作っても、オレオレ鍵では厳密には正しさを証明できないので、それならあってもなくても変わらないかなと思う。サーバとの間を暗号化しても、その先が暗号化されてなければ同じだしね・・・。
ちなみにSymantec製品とSMTP over TLSを併用したい場合は、smtps(465)を使って通信の最初から最後までを暗号化してしまえば良い。ようするにSTARTTLSで通信の途中から暗号化すると、Symantec製品が強制的にエラーにしちゃうという訳ですな。