?all -all 和 ~all 在 DNS (spf) 配置中

?all -all and ~all in DNS (spf) configuration

我尝试 configure/authenticate 我的域 DNS 与电子邮件营销服务。要验证 SPF,我应该添加一些代码。

我想使用各种服务,在他们提供的TXT中,最后,有些使用“-all”,有些使用“~all”,有些使用“?all” 喜欢:v=spf1 include:spf.mailjet.com include:spf.sendinblue.com mx ~all

我想知道这样的两条记录是否互斥??all -all 和 ~all

有什么区别

all 机制是 SPF 记录中列出的最后一个机制,如果没有其他机制与传入 IP 相匹配,它会告诉检查者该怎么做。 -all 表示默认结果是硬失败,~all 表示“软失败”,表示它不是通过,但也不是硬拒绝(也许表明您应该将其放入垃圾邮件文件夹 - 虽然这应该是 DMARC 的决定)。 ?all表示它是“中性”的,相当于什么都没有。

当这样的服务推荐 ?all 时,他们 super-conservative 并且不想增加任何类型的风险 - 这是一个“故障安全”选项,提供最小的中断,但是也没有保护。我会说这是适得其反的,最终只会让伪造发生,完全破坏了使用 SPF 的全部意义。参见 my own service's recommendations

“正确的方法”是使用 ~all 默认值,并将您的 DMARC 记录配置为要求 DKIM 和 SPF“通过”结果。这有一个历史原因:如果遇到 -all,早期的 SPF 过滤器实现将完全停止电子邮件处理,而 DMARC 处理将没有机会做它的事情,所以给出软失败更安全,并且然后让 DMARC 认为这是一个失败。

简而言之,如果您使用 DMARC,请瞄准 -all,如果您是,请使用 ~all