我正在使用仅发送邮件(时事通讯)的 Postfix 服务器。
我已阅读我应该在 Postfix 上启用 TLS 和/或 SSL 以提高邮件传递性能。这是真的吗?Postfix 下的 SSL 和 TLS 有区别吗?
默认情况下,我的 Postfix 安装中已经有这三行:
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
所以我想知道 SSL/TLS 是否已经默认启用?这些自动生成的 pem 和密钥文件是什么?如何用我的 HTTPS 证书替换它们?我的域已经有一个 HTTPS 证书。我可以为 Postfix 和 Nginx 使用相同的证书吗?
启用加密对传递性能没有帮助,但它是值得推荐的,因为它会增加电子邮件隐私。正如您可能从 Google 的“传输中电子邮件加密透明度报告”中注意到的那样,在传输过程中加密电子邮件已成为一种标准。
虽然 SSL 和旧版本的 TLS 已被弃用,但电子邮件是一种向后兼容的基础架构,它认为任何加密都比没有加密好,并且愿意回退到未加密的连接。因此,中间人攻击很容易,并且发明了通过 Opportunistic DANE TLS ( RFC 7672 ) 实现的 SMTP 安全性等技术,以在保持向后兼容性的同时提高安全性。
默认情况下(截至 2020 年 5 月),SSLv2 和 SSLv3 在 Postfix 中均已禁用
smtp_tls_protocols
– 用于传递邮件的客户端组件&smtpd_tls_protocols
– 用于接收邮件的服务器组件。我的回答总结了当前的最佳实践以及如何在 Postfix 中实现它们。
入站 TLS
您目前拥有 Postfix 附带的自签名默认“蛇油”证书。您告诉您已经有一个用于您的 Web 服务器的证书,您当然可以使用该证书链和密钥的路径,但是为了让这个答案对其余的更有用,也可以用免费的 Let's Encrypt 证书替换它们。为了那个原因,
在同一台机器上使用(或安装)一个 Web 服务器来处理HTTP-01 质询和
使用它为传入邮件创建的证书。例子:
请注意
您的当前
smtpd_use_tls
被替换为smtpd_tls_security_level
Postfix ≥ 2.3。Postfix ≥ 3.4 配置服务器密钥和证书的首选方法是通过
smtpd_tls_chain_files
参数。根据RFC 3207, 4您应该在公开引用的 SMTP 服务器上使用机会 TLS:
将 Let's Encrypt 与Certbot一起使用意味着您的证书会在 2-3 个月的周期内自动更新。Postfix 不会自动加载这些更新的证书,因此添加一个 cronjob 以定期使用新证书重新加载 Postfix 可能是明智之举,例如(在 Debian 10 中每周一次)
出站 TLS
如果您想在出站邮件上为接收服务器添加 TLS 身份验证,您可以使用带有
smtp_tls_security_level
. 使用 DANE 要求您的 DNS 解析器具有 DNSSEC 功能,并且它只对那些发布了 TLSA 策略的域进行身份验证。同样,这是在不破坏向后兼容性的情况下增加隐私的最佳实践。如果你不能使用 DANE,你可以手动指定一个你知道有加密的域列表,并单独使用 TLS 对它们强制执行,使用
smtp_tls_policy_maps
:使用此 Berkeley DB,其内容
/etc/postfix/tls_policy
可能如下所示:使用 Let's Encrypt 进行入站 TLS 的 DANE
为了完整起见,如果您还发布自己的 TLSA 记录,则出站 DANE 验证效果最佳。使用 Let's Encrypt,自动发布当前证书的指纹有点问题。相反,您可以按照请避免带有 LE 证书的“3 0 1”和“3 0 2”DANE TLSA 记录中的说明使用 DANE-TA(2) :
此外,要使其正常工作,您需要为您的域创建一个 DNSSEC 签名区域。
不会。TLS 为用户和传输期间提供加密,但不应影响可交付性,除非您发送到仅接受 TLS 的服务器。正确设置 DKIM、DMARC、MTA-STS 记录等将提高可交付性。这是一个复杂的主题,不利于此处的单一答案。
对于您的目的没有区别。
发送:是,接收:否 - 安装了默认的自签名证书。网上有很多指南和
man postfix
. 还有Postfix TLS 文档大多数人直接加入。同样,网络和男人是你的朋友。