MTA-STS 的核心作用
- “降级攻击” 风险:即使双方支持 TLS 加密,攻击者也可能伪造 “不支持 TLS” 的指令,迫使邮件以明文(未加密)方式传输,导致内容泄露。
- “中间人攻击(MITM)” 风险:攻击者可能冒充目标邮件服务器,骗取发送方信任并拦截邮件,甚至篡改邮件内容。
MTA-STS 通过以下机制解决这些问题:
- 强制 TLS 加密:要求发送方(MTA)必须使用 TLS 与接收方服务器通信,若无法建立 TLS 连接,则直接拒绝发送(而非降级为明文)。
- 验证服务器身份:发送方需通过接收方预先公布的 “信任锚”(如 SSL 证书指纹)验证服务器身份,防止被伪造的服务器欺骗。
MTA-STS 的工作原理
接收方:配置 MTA-STS 策略(关键前提)
在自己的域名下托管一个 JSON 格式的策略文件,文件路径固定为:https://mta-sts.<接收方域名>/.well-known/mta-sts.txt
例如, Gmail 的策略文件路径为 https://mta-sts.gmail.com/.well-known/mta-sts.txt。策略文件需包含核心规则,示例如下(具体要求可以参考文末RFC8461):
version: STSv1
mode: enforce
mx: gmail-smtp-in.l.google.com
mx: *.gmail-smtp-in.l.google.com
max_age: 86400
在接收方域名的 DNS 中添加一条 TXT 记录,格式为:_mta-sts.<接收方域名> IN TXT “v=STSv1; id=<唯一标识>”,其中 <唯一标识> 是策略文件的版本号(如时间戳),用于告知发送方 “策略已更新”。Gmail的DNS记录示例如下:
[root@localhost ~]
"v=STSv1; id=20190429T010101;"
发送方:验证并执行策略
- 查询 DNS TXT 记录:检查目标域名是否存在 _mta-sts 的 TXT 记录,确认对方支持 MTA-STS。
- 获取策略文件:通过 HTTPS 访问目标域名的 mta-sts.txt 文件。发送方会解析该文件,从中提取出 MX 记录等信息。策略文件中会列出允许接收邮件的 MX 主机名。
- 策略校验:所要连接的 MX 记录名必须被策略中的任一 mx: 模式匹配;收件 MTA 必须支持 STARTTLS,并在握手时出示链到受信根的证书;证书 SAN(DNS-ID)必须与目标 MX 主机名匹配。
- 策略应用:
根据策略里的 mode 决定失败时的处理方式:
enforce:严格模式。若 MX 不匹配 / 没 STARTTLS / 证书无效,则不允许投递到该主机;遍历下一个候选 MX。若最终都失败,作为暂时性错误 4xx 重试(不得立刻永久失败),给策略更新留出窗口。
testing:观测模式。即便验证失败也可以像未部署一样投递;若同时部署了 TLSRPT,发件方会发出失败报告,便于你观察上线风险。
none:关闭/撤销。当作未部署处理;常用于平滑下线
MTA-STS 与其他邮件安全技术的区别
- 企业邮箱:保护内部员工与外部客户 / 合作伙伴之间的邮件传输(如合同、财务数据等敏感信息)。
- 政务 / 金融机构:满足合规要求(如 GDPR、等保 2.0),防止敏感政务、金融数据泄露。
- 大型邮件服务商:如 Gmail、Outlook 等,已全面支持 MTA-STS,提升全球邮件传输的安全性。