网络诊断工具

MTA-STS 检测

入站邮件的强制 TLS 策略

什么是 MTA-STS?

MTA-STS 让一个域名能够要求入站邮件必须通过经过认证的 TLS 投递,以抵御降级和中间人攻击。IPeek 会读取 _mta-sts TXT 记录,并获取发布在 mta-sts.your-domain 上的策略文件。它弥补了机会性 STARTTLS 所留下的缺口——后者可被攻击者悄悄剥离。

MTA-STS 如何发布并强制执行策略

MTA-STS 由两部分组成。位于 _mta-sts.your-domain 的 TXT 记录持有一个版本号和一个策略 ID,告诉发送方服务器策略存在,并在你更新时随之改变。策略本身存放在通过 HTTPS 提供的纯文本文件中,地址为 https://mta-sts.your-domain/.well-known/mta-sts.txt。该文件列出版本、模式、允许的 MX 主机名以及 max_age 缓存有效期。支持 MTA-STS 的发送方会获取并缓存该策略,随后拒绝向任何证书无法据此通过验证的 MX 投递。

如何解读你的 MTA-STS 结果

IPeek 显示 _mta-sts TXT 记录是否存在,以及策略文件能否通过 HTTPS 访问。其中最重要的是 mode 值。none 表示没有策略生效,testing 表示报告失败但邮件仍照常投递,enforce 表示发送方在 TLS 认证失败时必须中止投递。请检查策略中的 mx 条目与你真实的 MX 记录是否一致,以及策略主机上的 HTTPS 证书是否有效。较高的 max_age(常为 604800 秒)能提升保护,因为已缓存的策略更难被实时篡改。

常见 MTA-STS 问题及修复方法

最常见的错误是 TXT 记录存在,但策略文件返回 404 或一个重定向,这会使策略无法使用。策略主机必须提供有效的 HTTPS,因此 mta-sts.your-domain 上过期或不匹配的证书会彻底破坏强制执行。当 MX 条目与你的 DNS 不再同步时,一旦切到 enforce 就会造成投递失败。请先在 testing 模式下推出,监控 TLS-RPT 报告中的失败,确认每个 MX 都出示有效且匹配的证书后,再切到 enforce。

常见问题

MTA-STS 的 testing 和 enforce 模式有什么区别?

在 testing 模式下,检测到 TLS 失败的发送方仍会投递邮件但报告该问题,让你在不阻断流量的情况下发现隐患。在 enforce 模式下,发送方必须对任何证书验证失败的 MX 中止投递。请先用 testing,观察你的 TLS-RPT 报告,仅在没有失败出现后再切换到 enforce。

MTA-STS 策略文件位于何处?

策略文件通过 HTTPS 提供,地址为 https://mta-sts.your-domain/.well-known/mta-sts.txt,位于名为 mta-sts 的子域上。位于 _mta-sts.your-domain 的 DNS TXT 记录只宣告策略存在并携带一个 ID;实际规则,包括 mode 和允许的 MX 主机,都存放在那个 HTTPS 文件中。两者都必须存在且有效,MTA-STS 才能工作。

MTA-STS 与 STARTTLS 有何不同?

STARTTLS 是机会性的:它提供加密,但网络攻击者可以剥离 STARTTLS 通告,悄无声息地强迫明文投递。MTA-STS 增加了一个已发布的策略,告诉发送方 TLS 是必需的以及应信任哪些 MX 证书,因此被剥离或无效的 TLS 连接会导致投递失败,而非悄悄降级。它针对降级攻击对 STARTTLS 进行了加固。

MTA-STS 需要 DNSSEC 吗?

不需要。MTA-STS 刻意依赖 HTTPS 和 Web PKI 来建立信任,而非 DNSSEC,这使它比 DANE 更易部署。策略文件的 HTTPS 证书提供认证。如果你的域名已有 DNSSEC,可以让 DANE 与 MTA-STS 并行运行,因为两种机制相互补充而非冲突。

我该如何安全地推出 MTA-STS?

先以 testing 模式发布 TXT 记录和策略文件,然后启用 TLS-RPT,让发送方服务器把任何 TLS 失败的报告邮件发给你。确认策略中的 MX 主机名与 DNS 一致,且每个 MX 都出示有效证书。当报告在一个正常报告周期内显示没有失败后,将模式改为 enforce 并更新策略 ID。

相关工具

Deutsch | English | Español | Français | Italiano | Português | Русский | Українська | 日本語 | 简体中文 | 한국어