SPF记录具有多个标记,其中一个可以是include标记,SPF记录以像+、?、~或-这样的量词结束。
当使用include标记时,包含的SPF记录有它自己的SPF量化符。让我们从包含的SPF记录中调用量词“子量化器”。
这个“子量词”是否只适用于它定义的主机,而“父量词”适用于除子定义主机之外的所有东西?还是父量词总是否决所有包含的(子)量词?
例如:
v=spf1 a include:example2.com -allv=spf1 a ip4:1.2.3.4 ?all现在,?all (子)量词还是-all (父-)量词适用于ip4:1.2.3.4?
所包含的SPF记录也可能包括在内,因此它可以达到一个深度的多层次,我的问题也适用。
发布于 2018-02-07 04:06:49
使用include机制,“包含”SPF语句并不是字面上包含在原始语句中,而是只使用它的结果。来自RFC 7208第5.2节:
事后看来,“包括”这个名字选择得很差。只使用引用SPF记录的评估结果,而不是在第一个引用记录中真正包括引用记录的机制。例如,在引用的记录中评估"-all“指令并不会终止整个处理,也不一定会导致总体”失败“。
这意味着,“包含”SPF语句的结果被视为match、not match或permerror,类似于其他SPF语句。标准甚至显式地包含一个表,“包含”SPF语句的结果如何影响主语句:
+---------------------------------+---------------------------------+
| A recursive check_host() result | Causes the "include" mechanism |
| of: | to: |
+---------------------------------+---------------------------------+
| pass | match |
| | |
| fail | not match |
| | |
| softfail | not match |
| | |
| neutral | not match |
| | |
| temperror | return temperror |
| | |
| permerror | return permerror |
| | |
| none | return permerror |
+---------------------------------+---------------------------------+发布于 2018-02-07 00:19:35
将文档转换为您的示例:
在下面的示例中,客户端IP为1.2.3.4,当前域为example1.com。
v=spf1 include:example2.com -all
如果example2.com没有SPF记录,则结果是PermError。
假设example2.com的SPF记录是v=spf1 a -all。
查一下例子2.com的A记录。如果与1.2.3.4匹配,则返回Pass。
如果没有匹配,除了example2.com的-all之外,包含作为一个整体失败;最终结果仍然是失败的外部指令集在这个例子。
信任关系-- include:机制旨在跨越管理边界。需要特别注意的是,确保include:机制不会使域处于将SPF传递结果传递给来自跨用户伪造的消息的风险。除非在指定的其他域设置了防止交叉用户伪造的技术机制,否则include:机制应该给出中立的结果,而不是传递的结果。这是通过在?前面添加include:来完成的。上面的例子是:
v=spf1 ?include:example.com -all
因此,信任被转移到“子”域(并且有限制这种影响的机制)。
https://security.stackexchange.com/questions/179272
复制相似问题