AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1017291
Accepted
Bob5421
Bob5421
Asked: 2020-05-16 04:01:10 +0800 CST2020-05-16 04:01:10 +0800 CST 2020-05-16 04:01:10 +0800 CST

在 Postfix 上启用 TLS/SSL

  • 772

我正在使用仅发送邮件(时事通讯)的 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 使用相同的证书吗?

postfix
  • 2 2 个回答
  • 14444 Views

2 个回答

  • Voted
  1. Best Answer
    Esa Jokinen
    2020-05-17T03:36:48+08:002020-05-17T03:36:48+08:00

    启用加密对传递性能没有帮助,但它是值得推荐的,因为它会增加电子邮件隐私。正如您可能从 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 证书替换它们。为了那个原因,

    1. 在同一台机器上使用(或安装)一个 Web 服务器来处理HTTP-01 质询和

    2. 使用它为传入邮件创建的证书。例子:

      smtpd_tls_cert_file=/etc/letsencrypt/live/mail.example.com/fullchain.pem
      smtpd_tls_key_file=/etc/letsencrypt/live/mail.example.com/privkey.pem
      smtpd_tls_security_level=may
      

    请注意

    • 您的当前smtpd_use_tls被替换为smtpd_tls_security_levelPostfix ≥ 2.3。

    • Postfix ≥ 3.4 配置服务器密钥和证书的首选方法是通过smtpd_tls_chain_files参数。

    • 根据RFC 3207, 4您应该在公开引用的 SMTP 服务器上使用机会 TLS:

      公开引用的 SMTP 服务器不得要求使用

    STARTTLS 扩展,以便在本地传递邮件。此规则可防止 STARTTLS 扩展破坏 Internet 的 SMTP 基础结构的互操作性。公开引用的 SMTP 服务器是在 Internet 邮件地址右侧的域名的 MX 记录(或 A 记录,如果 MX 记录不存在)中列出的 Internet 主机的端口 25 上运行的 SMTP 服务器.

    将 Let's Encrypt 与Certbot一起使用意味着您的证书会在 2-3 个月的周期内自动更新。Postfix 不会自动加载这些更新的证书,因此添加一个 cronjob 以定期使用新证书重新加载 Postfix 可能是明智之举,例如(在 Debian 10 中每周一次)

    50 5 * * 1 systemctl reload postfix
    

    出站 TLS

    如果您想在出站邮件上为接收服务器添加 TLS 身份验证,您可以使用带有smtp_tls_security_level. 使用 DANE 要求您的 DNS 解析器具有 DNSSEC 功能,并且它只对那些发布了 TLSA 策略的域进行身份验证。同样,这是在不破坏向后兼容性的情况下增加隐私的最佳实践。

    dane

    • 机会主义 DANE TLS。在此安全级别,目标的 TLS 策略是通过 DNSSEC 获得的。要使 TLSA 策略生效,必须对包含 DNS 区域的目标域进行签名,并且必须将 Postfix SMTP 客户端的操作系统配置为将其 DNS 查询发送到能够验证签名记录的递归 DNS 名称服务器。
    # TLS, DNSSEC and DANE for SMTP client
    smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
    smtp_tls_security_level = dane
    smtp_dns_support_level = dnssec
    

    如果你不能使用 DANE,你可以手动指定一个你知道有加密的域列表,并单独使用 TLS 对它们强制执行,使用smtp_tls_policy_maps:

    smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
    

    使用此 Berkeley DB,其内容/etc/postfix/tls_policy可能如下所示:

    # Encrypt all mail to @gmail.com using any MX with TLS 1.2
    gmail.com encrypt protocols=TLSv1.2
    
    # Ecrypt all mail delivered using a specific nexthop destination
    [contoso-com.mail.protection.outlook.com] encrypt
    

    使用 Let's Encrypt 进行入站 TLS 的 DANE

    为了完整起见,如果您还发布自己的 TLSA 记录,则出站 DANE 验证效果最佳。使用 Let's Encrypt,自动发布当前证书的指纹有点问题。相反,您可以按照请避免带有 LE 证书的“3 0 1”和“3 0 2”DANE TLSA 记录中的说明使用 DANE-TA(2) :

    _25._tcp.mail.example.com. IN TLSA 2 1 1 (
        60B87575447DCBA2A36B7D11AC09FB24A9DB406FEE12D2CC90180517616E8A18
    )
    

    此外,要使其正常工作,您需要为您的域创建一个 DNSSEC 签名区域。

    • 7
  2. Peleion
    2020-05-16T04:30:33+08:002020-05-16T04:30:33+08:00

    在 postfix 上启用 TLS 和/或 SSL 以提高邮件传递性能

    不会。TLS 为用户和传输期间提供加密,但不应影响可交付性,除非您发送到仅接受 TLS 的服务器。正确设置 DKIM、DMARC、MTA-STS 记录等将提高可交付性。这是一个复杂的主题,不利于此处的单一答案。

    SSL 和 TLS 的区别

    对于您的目的没有区别。

    默认启用

    发送:是,接收:否 - 安装了默认的自签名证书。网上有很多指南和man postfix. 还有Postfix TLS 文档

    用我的 https 证书替换它们

    大多数人直接加入。同样,网络和男人是你的朋友。

    • 0

相关问题

  • Postfix 在特定端口上接受邮件

  • 让 Postfix 以两种方式处理垃圾邮件

  • Postfix 或 exim:自动/程序化和转发电子邮件设置

  • 后缀电子邮件地址

  • 什么是最好的开源电子邮件解决方案包

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve