什么是 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。