快速回答
如何设置 MTA-STS 和 TLS-RPT?
在 _mta-sts.yourdomain 发布一条包含 v=STSv1 和 id 的 TXT 记录,在 https://mta-sts.yourdomain/.well-known/mta-sts.txt 提供带有效证书的策略文件,并在 _smtp._tls 添加一条用于 TLS-RPT 报告的 TXT 记录(RFC 8461 和 RFC 8460)。Postelva 托管 DNS 记录;策略文件需要一台支持 HTTPS 的网站主机。
MTA-STS 和 TLS-RPT 配置的四个组成部分
| 组成部分 | 位置 | 内容 | 托管位置 |
|---|---|---|---|
| MTA-STS 记录 | example.com 下 _mta-sts 处的 TXT | v=STSv1; id=20261112T000000Z | 您的 DNS(Postelva 的免费 DNS) |
| 网站主机名 | mta-sts.example.com 处的 A、AAAA 或 CNAME | 指向一台网站服务器 | 您的 DNS |
| 策略文件 | https://mta-sts.example.com/.well-known/mta-sts.txt | version、mode、mx 行、max_age | 具备 HTTPS 和有效证书的网站主机 |
| TLS-RPT 记录 | example.com 下 _smtp._tls 处的 TXT | v=TLSRPTv1; rua=mailto:[email protected] | 您的 DNS |
分六步设置 MTA-STS
列出您的 MX 主机
策略必须写明您服务商的邮件主机。Proton Mail 使用 mail.protonmail.ch 和 mailsec.protonmail.ch,Mailbox.org 使用 mxext1 至 mxext4.mailbox.org。
设置网站主机名
在 DNS 编辑器中,为 mta-sts 添加一条指向您所控制的网站服务器的记录,并为 mta-sts.yourdomain 获取有效证书。
以测试模式发布策略文件
在 .well-known 文件夹中创建文件 mta-sts.txt,设置 mode: testing 和较短的 max_age。
添加 _mta-sts 的 TXT 记录
发布 v=STSv1; id=,后面跟一个唯一的值,例如日期和时间。
添加 TLS-RPT 记录
在 _smtp._tls 发布带有 rua mailto 地址的 TXT 记录,并查看每日报告。
切换到 enforce
当报告显示您自己的 MX 主机没有任何失败时,把 mode 改为 enforce,调高 max_age,并更新 id。
; DNS records
_mta-sts.example.com. IN TXT "v=STSv1; id=20261112T000000Z"
_smtp._tls.example.com. IN TXT "v=TLSRPTv1; rua=mailto:[email protected]"
mta-sts.example.com. IN CNAME webhost.example.net.
; File served at https://mta-sts.example.com/.well-known/mta-sts.txt
version: STSv1
mode: testing
mx: mail.protonmail.ch
mx: mailsec.protonmail.ch
max_age: 86400MTA-STS 保护什么?
MTA-STS 让邮件域名可以声明自己支持 TLS,并要求发件方拒绝向任何无法出示有效证书的 MX 主机投递邮件。它由 2018 年 9 月的建议标准 RFC 8461 定义。没有它,服务器之间的加密只是机会性的:发件方尝试 STARTTLS,如果攻击者将其剥离,邮件就会以明文发送。
策略处于 enforce 模式时,支持 MTA-STS 的发件方会获取您的策略,检查 MX 主机是否出现在 mx 列表中,并要求建立有效的 TLS 连接且证书相符。任何一项检查失败,邮件都会等待,而不会通过较弱的通道投递。它只保护收到的邮件,并且只对实现了它的发件方有效。它不验证邮件本身:那是 SPF、DKIM 与 DMARC 的区别 中各条记录的职责。
策略文件里写些什么?
策略文件是由 key: value 行组成的纯文本文件,包含版本、模式、允许的 MX 模式以及以秒为单位的有效期。RFC 8461 定义了这些字段。version 必须是 STSv1。mode 为 enforce(发件方不得向未通过检查的主机投递)、testing(投递可以继续,支持 TLS-RPT 的发件方会发送失败报告)或 none(等同于不存在策略)。每条 mx 行写出一个完整的主机名,例如 mail.protonmail.ch,或在最左侧标签上使用通配符,例如 *.example.net。max_age 是秒数,最大为 31,557,600,RFC 指出它通常应为数周或更长。其示例使用 604800,即一周。
该文件必须通过 HTTPS 在 mta-sts.yourdomain 提供,且证书对该名称有效。只有 HTTP 200 的应答才有效,并且不得跟随重定向,这就排除了 URL 转发,因为这种服务会以重定向应答。文件应以 text/plain 发送。请使用您自己掌控的小型网站主机或静态页面主机。mx 行必须与您服务商的记录一致,记录列表见 什么是 MX 记录。
id 是什么,更新顺序是怎样的?
TXT 记录中的 id 是由 1 至 32 个字母和数字组成的标签,每当策略变化时都必须更改,以便发件方知道要重新获取文件。RFC 8461 指出它标识策略的一个实例,各 id 之间没有先后顺序,所以使用日期时间戳很合适。
请按这个顺序更新:先发布新的策略文件,再更改 id。如果发件方在新文件之前看到了新 id,就会再次缓存旧策略。更换邮箱服务商时,MX 主机也会改变,所以要在更改 MX 记录之前修改 mx 行,在迁移期间把旧主机保留在列表中,并更新 id。在 enforce 模式下遗漏一条 mx 行会导致邮件无法到达,而迁移指南 如何把邮箱迁移到新服务商 给出了其余步骤的安全顺序。
TLS-RPT 是什么,报告包含哪些内容?
TLS-RPT 是一种报告格式(RFC 8460),发件服务器每天通过它告知您,有多少条到您域名的 TLS 连接成功或失败。您在 _smtp._tls.yourdomain 发布一条 TXT 记录,包含 v=TLSRPTv1 和一个带有 mailto: 或 https: 地址的 rua 字段。mailto 报告必须带有报告方域名的有效 DKIM 签名。
每份报告是一个涵盖一个 UTC 日的 JSON 文档。它写明所应用的策略(MTA-STS、DANE 或无),统计成功和失败的会话,并给出失败类型,例如 certificate-expired 或 starttls-not-supported,以及发送方和接收方的 IP 地址。这样您就能在切换到 enforce 之前发现证书已过期或某条 mx 行有拼写错误。请把最初几周视为 DMARC 所推荐的试运行期。
个人邮箱域名需要 MTA-STS 吗?
不需要:MTA-STS 是可选的加固措施,大型发件方的规则并不要求它。Google、Yahoo 和 Microsoft 要求批量发件人配置 SPF、DKIM 和 DMARC,并没有列出 MTA-STS。对于使用 Proton Mail、Fastmail 或 Mailbox.org 的个人域名,只有在您愿意维护网站主机和证书时,这项配置才值得做。
各服务商不尽相同。根据 Postelva 在 2026 年 11 月 12 日对 4 家服务商(Proton Mail、Tuta、Mailbox.org 和 Fastmail)DNS 配置清单的查阅,其中 1 家在自己的配置中列出了 MTA-STS 记录(Tuta,一条 CNAME),其余三家所查阅的帮助页面均未提及。整套配置共有 3 条 DNS 记录和 1 个文件。请用 如何检查 MX、SPF、DKIM 和 DMARC 记录 中的命令逐一检查:dig TXT _mta-sts.example.com +short 和 dig TXT _smtp._tls.example.com +short。
可供引用的定义:MTA-STS 是让其他服务器向您的域名投递邮件时必须使用 TLS 的策略,TLS-RPT 是在它失败时通知您的每日报告。
MTA-STS 和 TLS-RPT 常见问题
可以把 MTA-STS 策略文件放在我的 DNS 服务商处吗?
仅靠 DNS 主机不行:文件需要一台通过 HTTPS 在 mta-sts.yourdomain 应答的网站服务器。URL 转发行不通,因为不得跟随重定向。
应该使用什么 max_age?
RFC 8461 指出该值通常为数周或更长,其示例使用 604800 秒(一周)。先在 testing 模式下使用较短的值,报告没有问题后再调高。
MTA-STS 和 DANE 一样吗?
不一样。两者都保护服务器之间的 TLS,但 DANE 依赖 DNSSEC 和 TLSA 记录,而 MTA-STS 依赖 HTTPS 策略文件。TLS-RPT 对两者都能报告。
在 enforce 模式下证书过期会怎样?
当某台 MX 主机的证书验证失败时,支持 MTA-STS 的发件方会停止向您的主机投递,邮件会留在它们的队列中。缺少 mx 行时也是如此,所以请关注 TLS-RPT。
我必须使用 enforce 模式吗?
不必。testing 模式已经可以提供报告,而 none 模式会关闭该策略。
总结
- MTA-STS(RFC 8461)让向您域名投递的邮件必须使用 TLS。
- 配置:_mta-sts 处的一条 TXT 记录、位于 mta-sts.yourdomain/.well-known/mta-sts.txt 的 HTTPS 策略文件,以及 _smtp._tls 处用于 TLS-RPT 的一条 TXT 记录(RFC 8460)。
- 策略列出 mode(enforce、testing、none)、mx 主机和 max_age,最大为 31,557,600 秒。
- 不得跟随重定向,因此 URL 转发无法提供该文件。
- 每次策略变化都要更改 id;先更新文件,再更新 TXT 记录。
- 先从 testing 模式开始,在切换到 enforce 之前阅读 TLS-RPT 报告。
- Postelva 免费托管 DNS 记录;一个 .com 每年 US$12.49/年。
来源 (4)
- RFC 8461,SMTP MTA Strict Transport Security (MTA-STS) — RFC Editor (查询日期 2026-11-12)
- RFC 8460,SMTP TLS Reporting — RFC Editor (查询日期 2026-11-12)
- 电子邮件发件人指南 — Google Workspace Admin Help (查询日期 2026-11-12)
- 自定义域名与防伪造 — Proton (查询日期 2026-11-12)