域名配置了多条 SPF TXT 记录导致验证失败怎么办?

域名配置了多条 SPF TXT 记录导致验证失败怎么办?
问题原因:RFC 7208 §3.2 明确规定:如果一个域名存在多条以 "v=spf1" 开头的 TXT 记录,SPF 检查必须返回 permerror(永久错误)。这意味着所有发自此域名的邮件都会因 SPF 异常而被标记——本质上相当于没有配置 SPF。这种情况常见于:多管理员分别添加了 SPF 记录、从旧邮件服务商迁移时未删除原有记录、或 DNS 管理后台合并 zone 文件时出现重复。
Step 1 — 查看所有 TXT 记录:运行 dig txt yourdomain.com 查看完整的 TXT 记录列表。这个命令会返回该域名下所有的 TXT 记录,包括 SPF、DKIM、DMARC 等。
Step 2 — 识别 SPF 记录:在输出结果中,找出所有包含 "v=spf1" 的行。每一条以 "v=spf1" 开头的记录都是一个独立的 SPF 声明——如果超过一条,符合 RFC 7208 §3.2 的多记录 permerror 条件。
Step 3 — 合并为一条记录:将多条 SPF 记录的机制(ip4、ip6、include、a、mx 等)合并到一条 v=spf1 记录中。例如原有两条记录 "v=spf1 ip4:203.0.113.0/24 -all" 和 "v=spf1 include:_spf.mailprovider.com -all",合并为 "v=spf1 ip4:203.0.113.0/24 include:_spf.mailprovider.com -all"。注意:移除重复项,-all 或 ~all 只需保留一个。
Step 4 — 清理 DNS:登录 DNS 管理后台,删除多余的 SPF TXT 记录,仅保留合并后的那一条。修改后等待 DNS TTL 过期(通常几分钟到几小时),用 dig txt yourdomain.com +short 再次确认只剩一条 SPF 记录。

📎 RFC 7208 §3.2 多记录处理