そういえばすっかり忘れていた
SMTPS/SMTP over SSL対応。
secgw.mythril.ne.jp用にSSLサーバ証明書を取得したので、対応させてみた。
やり方はあまり難しくない。
1./etc/postfix/main.cfの修正 下記を/etc/postfix/main.cfに追記する。CAfileはFreeRADIUS用にルート証明書と中間証明書を結合させたファイルを使っているためこの指定にしている。理由はFreeRADIUSと同じで、中間証明書を独立指定できないから。あとでリネームするか……。
#SSL/TLS
smtpd_tls_security_level = may
smtpd_tls_cert_file = /etc/pki/tls/certs/secgw.mythril.ne.jp.crt
smtpd_tls_key_file = /etc/pki/tls/private/secgw.mythril.ne.jp.key.nopasswd
smtpd_tls_CAfile = /etc/pki/tls/certs/freeradius.pem
smtpd_tls_CApath = /etc/pki/tls/certs
smtpd_tls_loglevel = 1
smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache
tls_random_source = dev:/dev/urandom
tls_daemon_random_source = dev:/dev/urandom
2./etc/postfix/master.cfの修正 デフォルトでコメントアウトされている下記を有効にする。ちなみにこれはSMTPS対応の設定で、SMTP over SSL限定対応の場合はコメントアウトされたままでよい。
smtps inet n - n - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
3.iptablesで465/tcpを開口、ルータ設定の修正 いつものやつ。SMTPSはデフォルトで465/tcpを使う。ルータのポートフォワード設定も併せて修正。
あとはpostfixとiptablesに再起動を掛ければ完了。
メールクライアント側はSMTPサーバとしてsecgw.mythril.ne.jp:465をSSL/TLS付きで指定すればよい。個人的にはThunderbirdで動作確認済み。当然ながら指定するSMTPサーバホスト名とSSLサーバ証明書上のFQDNが一致していないと警告が出るので要注意。
ちなみにSMTP over SSLとSMTPSの違いは、
SMTP over SSL:25/tcpで待ち受けがデフォルト。平文のSMTPコネクションの他、STARTTLSで
SSL/TLSでの暗号化通信も使える。
SMTPS:465/tcpで待ち受けがデフォルト。SSL/TLSでの
暗号化通信しか使えない。
というもの。SMTPというレガシープロトコルの互換性を重視したのがSMTP over SSL、互換性よりセキュリティを重視したのがSMTPS。