我想拒绝我的 postfix 服务器上的非 TLS 传入邮件。
以下是我所做的:
smtpd_tls_security_level = encrypt
smtpd_tls_auth_only = yes
我不太明白这两行之间的区别,但它似乎有效。
现在,我想要做的是检查 TLS 证书是否正确。有没有办法做到这一点,因为我不明白如果我们不能确定源服务器,TLS 的附加值
谢谢
* 编辑 *
我在目标邮箱消息头中获得了以下信息:
(No client certificate requested)
事实上我的问题是如何设置客户端证书认证
答案1
尽管根据谷歌透明度报告传输中的电子邮件加密,大多数服务器都支持 TLS,但仍有许多服务器不支持,强制使用 TLS 会破坏您的电子邮件传递。此外,与 HTTPS 不同,SMTP 没有广泛使用的强大 PKI。由于发送或接收邮件通常不需要有效证书,因此许多人正在为其邮件服务器使用自签名证书。
所以,机会型 TLS 仍然是最佳选择. 文档中也提到了这一点smtpd_tls_security_level
:
may
- 机会性 TLS:向远程 SMTP 客户端宣布支持 STARTTLS,但不要求客户端使用 TLS 加密。
encrypt
- 强制 TLS 加密:向远程 SMTP 客户端宣布支持 STARTTLS,并要求客户端使用 TLS 加密。根据RFC 2487如果是公共引用的 SMTP 服务器,则不得应用此选项。相反,此选项应仅用于专用服务器。
好的,RFC 2487已被 RFC 3207 废弃,但这部分没有改变。从第 4 节:
公开引用的 SMTP 服务器不得要求使用 STARTTLS 扩展来本地传递邮件。此规则可防止 STARTTLS 扩展破坏 Internet SMTP 基础架构的互操作性。公开引用的 SMTP 服务器是在 Internet 邮件地址右侧域名的 MX 记录(或 A 记录,如果不存在 MX 记录)中列出的 Internet 主机的端口 25 上运行的 SMTP 服务器。
如果您想在邮件交换中进一步实施 TLS,则 TLS 加密不是强制性的。相反,您可以实施基于 DNS 的命名实体身份验证(DANE)查找您的出站 SMTP:即RFC 7672关于 SMTP 安全性机会主义的 DANETLS。这可确保您不会在收件人决定发布其已接受证书的信息时将电子邮件发送到错误的服务器。这可通过以下方式配置smtp_tls_security_level
并需要 DNSSEC:
smtp_tls_security_level = dane
smtp_dns_support_level = dnssec
如果您希望对出站和入站邮件实施 DANE,您可以阅读我在另一个问题中更全面的回答:在 Postfix 上启用 TLS/SSL。