MTA-STS 记录检查器
MTA-STS(SMTP MTA Strict Transport Security,RFC 8461)通过 DNS 记录 + HTTPS 策略文件双重机制,强制邮件服务器之间使用 TLS 加密传输,防止 SMTP 降级攻击(STRIPTLS)与中间人窃听。其发现记录 _mta-sts.<域名> 声明策略版本与策略文件的 HTTPS 位置,策略文件则规定允许连接的 MX 与加密模式。MTA-STS 是邮件传输安全的现代基线(配合 DANE/TLSA 使用)。
输入域名,工具将查询 _mta-sts.<域名> 的 TXT 记录(MTA-STS 策略发现记录),并尝试获取 https://mta-sts.<域名>/.well-known/mta-sts.txt 策略文件。
功能说明
- 策略发现记录查询:查询 _mta-sts.<domain> TXT 记录,确认 v=STSv1 与 id= 版本号
- 策略文件抓取:尝试访问 https://mta-sts.<domain>/.well-known/mta-sts.txt 并解析 mx/enforce 指令
- 双重缺失检测:分别报告「发现记录缺失」与「策略文件缺失」,定位配置断点
- DANE 关联提示:说明 MTA-STS 与 DANE/TLSA(RFC 7672)的互补关系
使用方法
MTA-STS 配置包含两个部分:① _mta-sts.<域名> 的 TXT 发现记录(v=STSv1; id=<版本>);② https://mta-sts.<域名>/.well-known/mta-sts.txt 策略文件。工具先查询发现记录,若存在则继续抓取策略文件并解析。两者缺一不可——只有发现记录没有策略文件(或反之),MTA-STS 都无法生效。注意策略文件必须通过 HTTPS 提供服务且证书有效,否则发送方将按 RFC 8461 忽略该策略。
为什么需要定期检查
MTA-STS(SMTP MTA Strict Transport Security,RFC 8461)解决的是「邮件传输加密的强制性问题」。STARTTLS 虽然是标准能力,但在传统实现中可以被降级攻击(downgrade attack)——攻击者拦截握手后,可诱导双方以明文传输。
MTA-STS 通过两个组件实现强制加密:一是 DNS 中的 _mta-sts 策略发现记录(TXT),二是 HTTPS 托管的策略 JSON 文件。两者同时生效,收件方 MTA 才会应用「强制 TLS + 证书校验」策略。
检查 MTA-STS 时需注意:发现记录与策略文件必须同时存在且内容一致(policy-id 匹配);策略文件的 HTTPS 证书必须有效(RFC 8461 §3.3 要求验证证书链);以及 mx 列表必须与实际 MX 记录一致——不一致会导致合法邮件被拒收。
检查结果解读
| 检查项 | 合格标准 | 风险 |
| 发现记录 | _mta-sts.<domain> 的 TXT 记录存在且 v=STSv1 | 高(缺失则策略不生效) |
| 策略文件 | https://mta-sts.<domain>/.well-known/mta-sts.txt 可访问 | 高 |
| policy-id | 发现记录与策略文件的 id 字段一致 | 中 |
| mx 列表 | 策略文件 mx 字段与实际 MX 记录匹配 | 高 |
| HTTPS 证书 | mta-sts 子域证书有效且受信任 | 高 |
常见配置错误与修复
- 发现记录缺失:添加 TXT 记录:v=STSv1; id=20260101(id 建议用日期便于轮换)
- 策略文件不可达:在 mta-sts 子域部署 HTTPS,提供 /well-known/mta-sts.txt,内容含 version: STSv1 和 mx 列表
- policy-id 不一致:修改发现记录或策略文件,使两者 id 完全一致,否则策略不生效
- mx 列表不匹配:将实际 MX 主机全部加入策略文件 mx 字段,遗漏会导致邮件被拒收
- 证书问题:为 mta-sts 子域申请有效证书(可用通配符或单域名证书),并确保证书链完整
技术标准依据
本工具基于以下 IETF 标准实现,查询逻辑与解析规则均与标准定义保持一致:
- DNS 查询:RFC 8484(DNS Queries over HTTPS)、RFC 1035(DNS 协议)
- 记录解析:MTA-STS:RFC 8461 §3.1(发现记录)、§3.2(策略文件)
