问题描述
我尝试使用电子邮件营销服务配置/验证我的域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
时,它们就非常保守,并且不希望增加任何风险-这是一种“故障安全”选项,可将中断降到最低,但也没有保护措施。我会说这适得其反,并且最终只会导致伪造的发生,完全打败了使用SPF的整个观点。参见my own service's recommendations。
“正确的方法”是使用~all
默认值,并将DMARC记录配置为同时要求DKIM和SPF“通过”结果。有一个历史原因:早期的SPF过滤器实现会在遇到-all
时完全停止电子邮件处理,而DMARC处理将无法做到这一点,因此提供软失败更为安全,并且然后让DMARC认为失败。
简而言之,如果您不使用DMARC,则瞄准-all
,如果您使用DMARC,则使用~all
。