大型邮箱投递

大型邮箱投递相关问题共 3 问,点击问题展开答案。每条对应一个具体错误码或场景,看完即可操作。

64 什么是 MTA-STS?怎么部署它来防止邮件传输途中的 TLS 降级攻击和中间人窃听?
MTA-STS 解决什么问题

SMTP 默认不加密——邮件传输途中可以被中间人(MITM)窃听。STARTTLS 提供了加密选项但属于"机会性加密"(Opportunistic Encryption):发信服务器发出 STARTTLS 命令、收件方响应并开始 TLS 握手——但如果攻击者删除了 STARTTLS 命令(降级攻击),发信方就会用明文发送邮件。MTA-STS(RFC 8461)解决了这个问题:收件方域名公开发布强制加密策略——声明"发给我域的邮件必须走 TLS 加密、必须验证证书"。发信方检查收件方 MTA-STS 策略后:如果有 MTA-STS→强制 TLS;如果没有→回退到机会性加密。

部署(两步、两文件)

Step 1:DNS TXT 记录
在你的 DNS 新增一条 TXT 记录:
名称:_mta-sts.yourdomain.com
值:v=STSv1; id=20260706203000
其中 id 是数字串(推荐时间戳 YYYYMMDDHHMMSS)——每次更新策略时必须递增 否则发信方不会重新获取。

Step 2:HTTPS 策略文件
在你的 mta-sts.yourdomain.com 的 Web 服务器上创建路径:
/.well-known/mta-sts.txt
内容:
version: STSv1
mode: testing ← 先 testing 测试几天
mx: mx1.yourdomain.com
mx: mx2.yourdomain.com
max_age: 86400 ← 策略缓存秒数(1天)
HTTPS 必须有有效证书(建议 Let's Encrypt)。

确认 testing 阶段无投递故障后改为:
mode: enforce ← 强制加密 未加密则拒收
同时增大 max_age:max_age: 604800(7天)。

配合 TLS-RPT(RFC 8460)获取报告

再新增一条 DNS TXT:
名称:_smtp._tls.yourdomain.com
值:v=TLSRPTv1; rua=mailto:tls-reports@yourdomain.com
支持 MTA-STS 的发信方会每天向这个地址发送 JSON 格式的 TLS 投递报告——哪些邮件 TLS 成功、哪些失败了、失败原因是什么。类似 DMARC RUA 报告但针对 TLS 层面。

注意事项

• MTA-STS 只强制入向(别人发给你的邮件走加密)——不影响你出向的邮件。
• MTA-STS 不是 SPF/DKIM/DMARC 的替代——这四者是互补的独立维度。
• 测试工具:dig txt _mta-sts.yourdomain.com 验证 DNS;curl https://mta-sts.yourdomain.com/.well-known/mta-sts.txt 验证策略文件。
• Postfix 可以用 postfix-mta-sts-resolver(GitHub 开源 daemon)自动查询外域 MTA-STS 策略。

参考:RFC 8461(MTA-STS)· RFC 8460(TLS-RPT)· EasyDMARC MTA-STS Checker · GitHub postfix-mta-sts-resolver

1 发邮件被退信提示"550-5.7.26 This message is not authenticated",怎么办?
原因

Gmail 自 2024 年起要求所有发信域必须通过 SPF 或 DKIM 认证。你的域名缺少或配置了无效的 SPF/DKIM 记录。

操作

1. 检查域名的 SPF 记录:nslookup -type=txt yourdomain.com,应有一条以 v=spf1 开头的 TXT 记录。
2. 检查 DKIM 记录:确认发信 MTA 生成的 DKIM 选择器对应的 TXT 记录已在 DNS 发布。
3. 如缺失,联系邮件服务商获取正确的 SPF 和 DKIM 配置值并添加到 DNS。

参考:RFC 7208 (SPF) · RFC 6376 (DKIM) · Google Email Sender Guidelines

2 发邮件退信提示"550-5.7.25 does not have a PTR record",怎么解决?
原因

Gmail 要求发信 IP 必须配置 PTR 反向解析记录(RFC 1912 §2.1)。你的发信服务器 IP 未配置 PTR,或 PTR 指向的域名无法正向解析回该 IP。

操作

1. 联系 IP 提供商(云服务商/ISP)为发信 IP 设置 PTR 记录,PTR 值应为邮件服务器的主机名。
2. 确认 PTR 指向的域名可正向解析回该 IP(正反向解析闭环)。
3. 验证:nslookup <发信IP> 应返回你设置的域名。

参考:RFC 1912 §2.1 (PTR) · Google Email Sender Guidelines