postfixの設定を見直した
TL; DR
- 自前のメールサーバから送ったメールがgmailで”暗号化されませんでした”と表示されるので、tls関係の設定を変更した
- postfixの設定のプレフィクスには”smtp_”と”smtpd_”の2種類がある
- postfixの設定のプレフィクスには”smtp_”と”smtpd_”の2種類がある (大事な事なので…以下省略
smtpとsmtpd
メーラ→メールサーバ(postfix)→gmailの流れでメールを送信するケースを考える。
このとき、メーラ→メールサーバ間が”smtpd_”の設定、メールサーバ→gmailが”smtp_”の設定が該当する。
よって、gmail向けにTLSを使う場合は、”smtp”の設定でtlsを有効にする。
設定
メーラとgmail向け両方にtlsを有効にするよう設定をした。 証明書はLet’t encryptで取得しているのでそれを用いる。証明書更新時にはpostfixの再起動が多分必要。
なお、smtp_tls_CAfileは指定をしないとgmailの証明書がuntrustedとなる(ログに記録される)。
しかし、ログに記録されるだけで、httpsのように警告が出たりはしない。
unstrustedの場合に動作を変更する場合には、smtp_tls_security_levelでverifyを指定し、smtp_tls_verify_certで検証項目を指定する。
ただし、この動作はインターネットにメールを配送するシステムのデフォルト動作としては適切ではない。
また、この設定は、tlsで送信してもいいし、しなくてもいいという日和見tlsであるが、tlsを強制する設定も、インターネットにメールを配送するシステムのデフォルト動作としては適切ではない。
smtp_tls_security_level = may smtp_tls_CAfile = /etc/pki/tls/cert.pem smtpd_tls_cert_file = /etc/letsencrypt/live/<domain name>/fullchain.pem smtpd_tls_key_file = /etc/letsencrypt/live/<domain name>/privkey.pem smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_protocols = !SSLv2, !SSLv3 smtpd_tls_protocols = !SSLv2, !SSLv3 smtpd_tls_loglevel=1 smtp_tls_loglevel=1 smtpd_tls_received_header = yes
なお、postfix 2.3以降では“smtp_use_tls”を使わず、smtp_tls_security_levelを使うことになっている。
パラメータの詳細はman 5 postconf
で見れる。
ウェブに比べてメールシステムの暗号化・証明書の扱いってゆるゆるですね。 そのうちメールにもtls必須とかの流れになるんでしょうか。