TLS-RPT(SMTP TLS Reporting)记录检测工具

获取域名的_smtp._tls TXT记录,诊断TLS连接失败时的报告发送地址(rua)是否按RFC 8460规范正确配置。适用于MTA-STS/DANE部署后的运维监控。

诊断 TLS 连接失败的报告(TLS-RPT)

纵然引入了 MTA-STS 或 DANE,仍有一事看不见:**投递究竟有没有在失败,惟有发信一方知晓。** TLS-RPT 便是填上这道缺口的约定。把报告地址写进 `_smtp._tls` 的 TXT 记录,**发信方的服务器便会逐日把报告送来。** 本工具取来那条记录,报出其写法是否合乎 RFC 8460。

**TLS-RPT 本身并非防御,而是一套观测的手段。** 它挡不住攻击,只告诉您 TLS 的建立失败了多少回。**可若没有这份观测,便无从判断何时该把 MTA-STS 推进到 `enforce`。** 万一强制一开投递即停,不等有人来抱怨,您是断然不会知道的。**故而实务中的次第是:先配好 TLS-RPT,让 MTA-STS 停在 `testing` 并读其报告,确信无物失败之后,方才转入 `enforce`。**

使用方法

  1. 输入域名 只给域名即可,形如 `example.com`。
  2. 查看 TXT 记录 **看有无 `v=TLSRPTv1` 与 `rua=`。**
  3. 确认报告地址的写法 以 `mailto:` 或 `https:` 写就。**也请确认那个地址当真收得到。**
  4. 定下由谁来读报告 **配好了却无人过目,便等于白配。** 请定下谁看、何时看。

用好本工具的小技巧

  • TLS-RPT并非由接收方声明后自用,而是由发送邮件服务器读取并使用,用于在与你的域名建立TLS连接失败时,知道该把统计报告发往何处。
  • rua字段可以同时列出mailto:格式的邮箱地址和https:格式的Web端点,也可以用逗号分隔指定多个目标。
  • 报告以JSON格式(application/tlsrpt+json,也可能经过gzip压缩)发送,建议准备专用的解析工具或邮箱,而不是指望人工阅读。
  • 刚部署MTA-STS或DANE之后,建议持续关注一段时间的TLS-RPT报告,以便及时发现可能遗漏的配置错误。
  • Google、Microsoft、Yahoo等主要邮件服务商均支持发送TLS-RPT报告,因此与这些大型服务商邮件往来较多的域名,部署后收益也更明显。

这些场景会用到

把 MTA-STS 推向强制之前

**趁还在 `testing`,可量一量究竟有无失败**,这便是作决断的依据。

及早察觉投递的毛病

不必等人来告知,便可知失败正在发生。

引入 DANE 之后作监控

**证书与 TLSA 记录的出入,会以失败的形态现于报告之中。**

确认自家记录的写法

`rua` 写错的模样,便是一封报告也收不到。

TLS-RPT 的术语

_smtp._tls TXT
**承载报告地址的 DNS 记录。** 写作 `v=TLSRPTv1; rua=mailto:...` 的形式。
rua
报告该送往何处。**请给出一个电子邮件地址,或一个备好接收的 HTTPS 端点。**
RFC 8460
规定 TLS-RPT 的格式与报告内容的标准。
每日报告
发信方服务器所送的、涵盖一日的报告。其中载有成功与失败的次数,以及失败的缘由。
MTA-STS
强制 TLS 的安排。**TLS-RPT 与它相配,用以看清那份强制究竟施行得如何。**
DANE
以 DNSSEC 为前提验证证书的安排。**此处的毛病同样会现于 TLS-RPT 的报告之中。**

常见问题

MTA-STS是强制TLS连接的防御机制,而TLS-RPT则是通过报告确认强制之后TLS连接是否实际发生失败的观测机制。两者可以独立配置,也可以只部署其中一个。

“未配置”本身在许多域名中都很常见,并不意味着立即存在危险。但如果已经部署了MTA-STS或DANE,建议同时配置TLS-RPT,以便及时发现配置错误。

会发送到TXT记录rua字段中指定的mailto:邮箱地址或https:端点。也可以用逗号分隔指定多个接收地址。

报告是JSON格式的结构化数据,通常的做法是通过监控工具或脚本自动汇总,而非人工查看。也有不少厂商提供专门的报告解析服务。

本工具仅检查TXT记录的语法以及必填字段(v、rua)是否存在,并不验证报告是否真的会送达。部署后请等待数天,确认是否实际收到了报告邮件。
工具君

闲话 ― TLS-RPT填补的“静默故障”漏洞

TLS-RPT(TLS Reporting,RFC 8460)于2018年发布,几乎与MTA-STS(RFC 8461)同期推出。两者由同一个工作组讨论制定,有诸多共通之处——都以DNS的TXT记录为基础,也都由Google、Microsoft、Yahoo等主要厂商共同推动——但二者承担的角色截然不同。MTA-STS是“强制使用TLS”的防御层,而TLS-RPT则是揭示“强制之后实际发生了什么”的可观测层。

在TLS-RPT出现之前,SMTP通信中TLS握手失败的情况大多只会被发送方邮件服务器记录到日志中,接收域名的管理员完全不会收到任何通知。即便证书过期或MTA-STS策略配置有误,也往往要等到邮件真正无法送达才会被发现——这种“静默故障”曾是运维上的一大难题。

部署TLS-RPT之后,系统会按日向rua中指定的地址发送汇总报告。报告采用application/tlsrpt+json格式(常经gzip压缩),以结构化数据形式包含成功/失败的次数,以及失败时的具体原因(如证书不匹配、STARTTLS协商失败等)——这类数据更适合交由监控系统摄取分析,而非人工阅读。

在实际运维中,部署MTA-STS或DANE时通常会一并配置TLS-RPT。如果只部署了强制层而没有观测手段,一旦配置有误导致正常邮件被拦截,也无从察觉。通过持续监控TLS-RPT报告,可以更安全地推进TLS强制化的落地。