有趣的情况,我不知道这是我的错还是Google的。
我有一个域example.com ,它有两个子域: main.example.com和spf.example.com 。 对于main.example.com域,我的TXTlogging过去被定义为: v = spf1 redirect = example.com,并为相关的example.com定义了TXT。
出于各种原因,我决定为spf.example.com创build“主”TXT SPF,并在那里redirect。 请注意,SOA和NS仅适用于example.com 。 我改变了main.example.com TXT阅读v = spf1 redirect = spf.example.com和谷歌(根据DMARC报告)没有看到SPFlogging了。 雅虎和微软呢。
因此,我运行了第二个testing:创build了backup.example.com ,发送了一些没有定义TXT SPF的电子邮件,来自所有雅虎,MS和Google的DMARC报告反映出没有TXT SPF。 定义TXT为v = spf1 redirect = spf.example.com和bam,MS和Yahoo注意到,虽然Google仍然没有。
任何解释,除了“谷歌邮件软件糟糕”?
据我了解,redirectlogging中的值如下所示:
v=spf1 redirect=spf.example.com -
有两个问题我立即注意到:
- )没有任何机制,即logging似乎在语法上是不正确的。 redirect ,但它不是logging中的最后一个条目。 这两个都是有问题的,因为规范试图确保logging在实际应用之前应该被理解:
从SPF规格的logging评估部分 (强调增加):
check_host()函数parsing并解释SPFlogging以查找当前testing的结果。 logging的语法首先被validation,如果logging中任何地方有任何语法错误,check_host()立即返回结果“permerror”,而没有进一步的解释或评估。
从SPF规范的redirect部分 (强调添加):
为了清楚起见, 任何“redirect”修饰符应该出现在logging中的最后一个术语 。 如果logging中的任何位置有“全部”机制,则必须忽略任何“redirect”修改器。