SPFlogging中间的“〜all”在parsing时是否指示logging结束?

我们公司的SPFlogging格式如下:

“v = spf1 include:_spf.google.com〜all a mx ip4:XX0.0 / 23 include:spf.example.com?all”

所以我们在SPFlogging中有一个“〜all”。 在openspf.com网站上 ,他们对“全部”机制这样说:

这个机制总是匹配。 它通常在SPFlogging的末尾。

所以,他们并不是说在SPFlogging结束时要“全部”走,而是通常走到最后。

在我们公司,最近我们发现从我们的SPFlogging中列出的服务器发送的电子邮件软失败,但我们的SPFlogging通过了迄今为止我发现的所有validation工具。

我想知道的是,在包含Google Apps(_spf.google.com)之后,这个“〜all”是否会导致parsing停止,并且无法识别SPFlogging的其余部分? 传球还是软失败取决于谁在parsing它,以及他们如何处理SPFlogging的具体实施? 是否有任何理由有一个“全部”机制,不在SPFlogging的末尾?

是的,我知道我们可以改变我们的SPFlogging。 这个问题更多的是澄清这一切是如何运作的,而不一定是解决我们的具体情况。

RFC 7208第5.1节对此作了明确的规定:毕竟all东西都必须被忽略。

“全部”之后的机制将永远不会被testing。 在“全部”之后列出的机制必须被忽略。 无论条款的相对顺序如何,当logging中存在“全部”机制时,任何“redirect”修饰符( 第6.1节 )都必须被忽略。

它所废弃的RFC, RFC 4408 ,说了很多同样的事情; RFC的较新版本只是澄清了意图。

“全部”之后的机制将永远不会被testing。 有“全部”机制时,任何“redirect”修改器( 第6.1节 )都不起作用。

所以,SPF的一致性实现将会在第一遍之后完全忽略所有的东西。 但是,这并不意味着每个实现都符合规范。 特别是,这可能被认为值得澄清, 因为一个或多个实现不符合。

目前还不清楚为什么在线validation工具无法解决这种错误configuration问题,但是如果您打算在第一次使用之后进行任何操作,则应该更正该logging,因为正确的实施将忽略它。

“v = spf1 include:_spf.google.com〜all a mx ip4:XX0.0 / 23 include:spf.example.com?all”

按顺序说:

_spf.google.com电子邮件传递SPFlogging对我们的域名有效”

“对我们的域名所有其他发件人软弱”

“来自我们的Alogging的电子邮件对我们的域名有效”

“来自我们的MXlogging的电子邮件对我们的域名有效”

“来自IP范围xx0.0/23电子邮件对我们的域名有效”

“邮件通过spf.example.com SPFlogging对我们的域名有效”

“来自我们域名所有其他发件人的电子邮件无法通过某种方式进行validation”

根据logging语法:

机制按顺序进行评估。 如果没有机制或修饰符匹配,则默认结果为“中性”。

因此,一旦它触及所有其他人的“软弱”,它就应该忽略你指定的其他机制。

您的SPFlogging应尽可能简洁。 我非常怀疑你有一个应该为你的域名发送电子邮件的整个/ 23networking,你的Alogging也不应该。 也许如此…但很可能不是。

一个很好的清洁SPFlogging应该是这样的:

“v = spf1 include:_spf.google.com include:spf.example.com mx -all”

基本上说_spf.google.com,spf.example.com和您的MXlogging是您的域唯一有效的发件人…其他所有应该被视为无效。

正确实施的 SPF检查器将在机制匹配上短路,并且check_host()函数将返回限定符值作为结果。 我没有任何“真实世界”的数据提供给你关于大多数电子邮件服务器是否遵循RFC。

来源: RFC7208 (参见第17页)