我正在使用仅发送邮件(时事通讯)的 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
Run Code Online (Sandbox Code Playgroud)
所以我想知道 SSL/TLS 是否已默认启用?这些自动生成的 pem 和密钥文件是什么?如何用我的 HTTPS 证书替换它们?我的域已经有一个 HTTPS 证书。我可以对 Postfix 和 Nginx 使用相同的证书吗?
Esa*_*nen 16
启用加密无助于提高传送性能,但值得推荐,因为它可以提高电子邮件的隐私性。正如您可能从 Google 关于传输中电子邮件加密的透明度报告中注意到的那样,传输中加密电子邮件已成为一种标准。
\n虽然 SSL 和旧版本的 TLS 已被弃用,但电子邮件是一种向后兼容的基础设施,它认为任何加密都比没有加密好,并且愿意回退到未加密的连接。因此,中间人攻击很容易,并且发明了诸如通过机会 DANE TLS ( RFC 7672 ) 的 SMTP 安全性等技术来提高安全性,同时保持向后兼容性。
\n默认情况下(截至 2020 年 5 月),Postfix 中已禁用 SSLv2 和 SSLv3
\nsmtp_tls_protocols\xe2\x80\x93 用于传递邮件的客户端组件 &smtpd_tls_protocols\xe2\x80\x93 用于接收邮件的服务器组件。我的回答总结了当前的最佳实践以及如何在 Postfix 中实施它们。
\n您当前拥有 Postfix 附带的自签名默认“万金油”证书。您告诉您已经拥有网络服务器的证书,并且您当然可以使用该证书链和密钥的路径,但是为了使这个答案对其他人更有用,还可以用免费的 Let\'s Encrypt 证书替换它们。为了那个原因,
\n您当前的内容smtpd_use_tls被 Postfix \xe2\x89\xa5 2.3 替换smtpd_tls_security_level。使用:
smtpd_tls_security_level=may\nRun Code Online (Sandbox Code Playgroud)\n对于 Postfix \xe2\x89\xa5 3.4,配置服务器密钥和证书的首选方法是通过参数smtpd_tls_chain_files。注意正确的顺序:私钥在证书链之前:
smtpd_tls_chain_files =\n /etc/letsencrypt/live/mail.example.com/privkey.pem,\n /etc/letsencrypt/live/mail.example.com/fullchain.pem\nRun Code Online (Sandbox Code Playgroud)\n自 Certbot 2.0 起, Let\'s Encrypt 已开始默认颁发ECC 证书,但某些 SMTP 服务器不支持。在这种情况下,如何从 Let\'s Encrypt for Postfix 获取 ECC 和 RSA 证书?涵盖添加额外的 RSA 证书。
\n根据RFC 3207, 4,您应该在公开引用的 SMTP 服务器上使用机会性 TLS:
\n\n\n公开引用的 SMTP 服务器不得要求使用\nSTARTTLS 扩展来在本地传送邮件。此规则可防止 STARTTLS 扩展破坏 Internet SMTP 基础结构的互操作性。公开引用的 SMTP 服务器\n是在 MX 记录(如果不存在 MX 记录,则为 A 记录)中列出的 Internet 主机的端口 25 上运行的 SMTP 服务器\n对于域名右侧的域名Internet 邮件\n地址。
\n
使用 Let\'s Encrypt 和Certbot意味着您的证书会在 2-3 个月的周期内自动更新。Postfix 不会自动加载这些更新的证书,因此明智的做法是systemctl reload postfix使用 Certbot--deploy-hook或定期使用 cronjob 重新加载 Postfix ( )。
如果您想在出站邮件上为接收服务器添加 TLS 身份验证,您可以将机会性 DANE 与smtp_tls_security_level. 使用 DANE 要求您的 DNS 解析器具有 DNSSEC 功能,并且它仅对那些发布了 TLSA 策略的域进行身份验证。同样,这是在不破坏向后兼容性的情况下增加隐私的最佳实践。
\n\n\n
dane\n
\n- 机会主义 DANE TLS。在此安全级别,目标的 TLS 策略\n通过 DNSSEC 获取。为了使 TLSA 策略生效,\n必须对包含 DNS 区域的目标域进行签名,并且\nPostfix SMTP 客户端的操作系统必须配置为将其\nDNS 查询发送到能够执行以下操作的递归 DNS 名称服务器:验证\n签名的记录。
\n
# TLS, DNSSEC and DANE for SMTP client\nsmtp_tls_session_cache_database = btree:${data_directory}/smtp_scache\nsmtp_tls_security_level = dane\nsmtp_dns_support_level = dnssec\nRun Code Online (Sandbox Code Playgroud)\n如果您无法使用 DANE,您可以手动指定您知道已加密的域列表,并单独对它们强制使用 TLS,使用smtp_tls_policy_maps:
smtp_tls_policy_maps = hash:/etc/postfix/tls_policy\nRun Code Online (Sandbox Code Playgroud)\n对于这个 Berkeley DB,其内容/etc/postfix/tls_policy可能如下所示:
# Encrypt all mail to @gmail.com using any MX with TLS 1.2\ngmail.com encrypt protocols=TLSv1.2\n\n# Ecrypt all mail delivered using a specific nexthop destination\n[contoso-com.mail.protection.outlook.com] encrypt\nRun Code Online (Sandbox Code Playgroud)\n为了完整起见,如果您还发布自己的 TLSA 记录,则出站 DANE 验证效果最佳。使用 Let's Encrypt,自动发布当前证书的指纹有点问题。相反,您可以使用 DANE-TA(2),如请避免 \xe2\x80\x9c3 0 1\xe2\x80\x9d 和 \xe2\x80\x9c3 0 2\xe2\x80\x9d 带有 LE 的 DANE TLSA 记录中所述证书:
\n_25._tcp.mail.example.com. IN TLSA 2 1 1 (\n 60B87575447DCBA2A36B7D11AC09FB24A9DB406FEE12D2CC90180517616E8A18\n)\nRun Code Online (Sandbox Code Playgroud)\n此外,要实现此功能,您的域需要一个 DNSSEC 签名区域。
\n| 归档时间: |
|
| 查看次数: |
29157 次 |
| 最近记录: |