所以我必须为共享域创建 SPF 记录 - 2 个邮件系统,一个是 Office 365。通常它看起来像这样:
“v=spf1 mx include:MAIL_SERVER include:spf.protection.outlook.com ~all”
如果事先已经像这样配置的话,那就非常简单了:
“v=spf1 mx include:MAIL_SERVER ~all"
但是我有一个不同的情况,是这样的:
“v=spf1 mx redirect:_spf.PROVIDERSERVER.COM"
我不确定,我可以这样做吗:
“v=spf1 mx redirect:_spf.PROVIDERSERVER.COM include:spf.protection.outlook.com ~all”
它会像这样工作吗?如果不是,那么应该改变什么?
重定向是一个修改器而不是机制,只有在测试了所有其他机制之后才会考虑。与 include 不同,一旦导航了 redirect,它就不会返回来评估进一步的术语,尽管为了清楚起见,您的定位不是无效的,但它应该显示为记录中的最后一个术语,因为它只会在之后进行评估所有其他条款均已测试并通过。即它在 SPF 记录中的位置不会决定其处理顺序。
如果记录中满足任何替代机制术语,则处理将在该术语处停止并返回评估的条件,这包括可能存在的任何“所有”机制。因此,您不能将redirect与all结合使用,因为all机制将始终首先被测试并满足,并且redirect永远不会被处理。当然,重定向域的 SPF 中的任何 all 机制在达到时仍然适用,这与 include 中的 -all 不同,后者会通过将 not-matched 返回到包含机制调用而被忽略。 (警告:如果在遍历的 include 中遇到 +all ,它将返回 matched,并触发该 include 前面的任何结果,通常是默认的 + 。) 值得注意的是,任何重定向域自己的 SPF 可能包含进一步的重定向,并且它们会按预期级联。然而,每个
重定向都计入查找计数限制。 所以总而言之,你会想要使用类似...
“v=spf1 mx include:spf.protection.outlook.com redirect=_spf.PROVIDERSERVER.COM”
说redirect
完全替换了当前记录,所以我希望它忽略所有其他子句 - 但它也从左到右进行评估,所以也许它会首先进行
mx
查找 - 你可以测试手动操作。我不知道你为什么要看
redirect
。
我怀疑你可以通过以下方式实现你的目标:
"v=spf1 mx include:_spf.PROVIDERSERVER.COM include:spf.protection.outlook.com ~all"
来自
RFC,关于重定向修饰符的第 6.1 节此设施供希望申请的组织使用 同一记录到多个域。例如:
la.example.com. TXT "v=spf1 redirect=_spf.example.com" ny.example.com. TXT "v=spf1 redirect=_spf.example.com" sf.example.com. TXT "v=spf1 redirect=_spf.example.com" _spf.example.com. TXT "v=spf1 mx:example.com -all"
在此示例中,来自三个域中任意一个的邮件由 相同的记录。这可能是一种管理优势。注意:一般来说,域“A”不能可靠地使用重定向到 不在同一管理控制之下的另一个域“B”。自从
保持不变,不能保证记录 域“B”将正确适用于域“A”中的邮箱,特别是如果域“B”使用涉及本地部分的机制。安
而且,
“include”指令通常会更合适。
redirect
修饰符不得与
all
机制结合使用:
为了清楚起见,任何“重定向”修饰符都应该显示为最后一个记录中的术语。如果存在任何“重定向”修饰符,则必须忽略是记录中任意位置的“全部”机制。
考虑到这一切,我建议使用@Synchro 提供的语法。虽然这并不违反规则,但将机制与
redirect
修饰符结合起来是非常不寻常的。
)你可以从上一个例子中进行记录。如果其他一切都失败,则将使用 redirect
修饰符,这意味着它将是最后检查的事情)。
redirect
修饰符放在记录末尾、
~all
之前。