从新域名发注册验证邮件,Gmail 收件方显示 via 陌生域名,八成进垃圾箱。收件服务器日志里写 SPF fail,查 example.com 的 TXT 只有一条验证记录。乍看像缓存或者权限的锅,追下去往往不是。

dig TXT example.com +short
# v=spf1 ip4:203.0.113.10 include:_spf.mailprovider.com -all
swaks --to test@gmail.com --from noreply@example.com --server smtp.example.com

追下去是这么回事:域名解析里没有 SPF 记录,收件方无法确认发信 IP 是否被授权。默认策略按 softfail 处理,配合新域名没有信誉,很容易被投进垃圾箱。同域的其他 TXT 记录还会挤占查询次数。

「SPF 记录缺失」这类改动最怕改一半,回滚脚本先准备好,再动生产。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。

偶发问题先统计频率,一小时几次和一天一次,查法完全不同。改完顺手把文档补一句,省得下次自己重新推一遍。

具体做法是,加一条 v=spf1 的 TXT 记录 把发信 IP 和邮件服务商都列进去;整个域名只保留一条 SPF 记录 多条会直接 permerror;用 dig 查一遍确认记录已生效;再发一封测试信看 Authentication-Results。

验收就看一点,收件方 Authentication-Results 里 spf=pass,测试邮件落在收件箱,不再显示代发提示。

作者 9823189