如何配置 SMTP 的 TLS 强制加密(require TLS)?

57 如何配置 SMTP 的 TLS 强制加密(require TLS)?
原因

STARTTLS 是 SMTP 协议的安全扩展(RFC 3207)。默认 Postfix 使用机会式加密(opportunistic TLS),即对方支持就加密,不支持就降级为明文。在安全合规场景下需要强制要求 TLS。

操作

1. 入站(收信)强制 TLS
编辑 /etc/postfix/main.cf
smtpd_tls_security_level = encrypt
smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3,!TLSv1,!TLSv1.1
smtpd_tls_mandatory_ciphers = high
配置后,对方若不发起 STARTTLS 握手则立即拒绝连接。
2. 出站(发信)强制 TLS(谨慎使用):
smtp_tls_security_level = encrypt
⚠ 出站强制要求目标服务器也支持 STARTTLS,否则邮件彻底无法投递。建议从 may 开始(机会式加密)。
3. Submission 端口(587)强制
/etc/postfix/master.cf 中 submission 段添加:
submission inet n - n - - smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes

4. 验证
postfix reload
openssl s_client -starttls smtp -connect mail.example.com:25
检查证书链和协商的 TLS 版本。

RFC 3207 (SMTP Service Extension for Secure SMTP over TLS) · RFC 7817 (Updated TLS Support) · RFC 8314 (Cleartext Considered Harmful)