外发邮件被退回,退信原文是 Permanent error: too many DNS lookups,可 SPF 那一行本身看上去并不长。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,SPF 里每个 include 和 a 机制都会触发一次额外查询,嵌套层数叠加后超过十次上限,收件方直接判定策略无效。

碰到「SPF 查询次数超限」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。报错里带路径的,先去看那个路径在不在、权限对不对。

dig +short TXT example.com | grep spf
dig +short TXT _spf.example.com
# 每展开一层算一次查询

同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。

备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。

具体做法是,把所有 include 逐层展开数清层数;合并同一家服务商的条目;把结果扁平化写成固定 IP 列表。

最后用这个标准收尾,SPF 检测工具显示查询次数小于 10,结果从 permerror 变成 pass。

作者 9823189