postfix の認証でdovecot saslを使う SSL編

$ sudo dovecot --version
2.2.13

設定ミスるとスパムの踏み台になるので結構緊張する。

外から(認証つきで)メールを送る時は、smtpへの接続に使うポートは、587(サブミッションポート)か465(smtps)のどちらかを使うのが主流みたい。

587ポートで暗号化する場合、TLS/SSLという方式になる。
平文で接続し、認証するフェーズになるとstarttls というコマンドを送って暗号化を行う。
一方、465ポートのsptms(smtp ssl?)は最初から暗号化している。
どちらでも信頼性に関していうとどちらも変わらないっぽい。

なんで似たような機構があるのか考えるとこういう歴史的経緯があるのでは?

認証なしな25時代 => 
平文だが認証つけた587時代 => 
後方互換を意識したTLS/SSLで突貫暗号化587時代 => 
完全SSLな465時代 ← 今ここ

今回は、starttls不要なsmtps使う。

設定ファイルを修正する

/etc/postfix/main.cf

1行追加する

smtpd_tls_security_level = may

/etc/postfix/master.cf

smtps周辺をアンコメントする。

smtps     inet  n       -       -       -       -       smtpd
  -o syslog_name=postfix/smtps    
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

テストする

$ openssl s_client -connect localhost:465  

でポートの確認ができるのと、メーラーに外部smtpサーバとして登録すると動作確認ができる。

postfix/smtp[24449]: Untrusted TLS connection established to gmail-smtp-in.l.google.com[64.233.188.27]:25: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)

telnetだとsslを超えれないということに気が付かなくてだいぶ時間食ったンゴ.........。

https://wiki.debian.org/PostfixAndSASL