【问题标题】:SPF record with REDIRECT and INCLUDE带有 REDIRECT 和 INCLUDE 的 SPF 记录
【发布时间】:2018-06-01 07:03:19
【问题描述】:

所以我必须为一个共享域创建一个 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”

它会像这样工作吗?如果不是,那应该改变什么?

【问题讨论】:

    标签: dns record spf


    【解决方案1】:

    重定向是一个修饰符而不是一个机制,并且只会在所有其他机制之后被考虑已经过测试。与 include 不同,一旦导航了 redirect,它就不会返回来评估进一步的术语,尽管您的定位不是为了清楚起见而无效,但它应该显示为最后一个术语在记录中,因为它只有在所有其他术语都经过测试和通过后才会被评估。即它在 SPF 记录中的位置不会决定它的处理顺序。

    如果记录中满足任何替代机制术语,则处理将在该术语处停止并返回评估条件,这包括可能存在的任何all机制。因此,您不能将 redirectall 结合使用,因为 all 机制总是会首先被测试和满足,而 redirect 永远不会被处理。当然,重定向域的 SPF 中的任何 all 机制在达到时仍然适用,这与 include 中的 -all 不同,后者将被忽略将不匹配返回到包含机制调用。 (警告:如果在遍历的 include 中遇到 +all ,它将返回 matched,并触发已添加到该 include 的任何结果,通常是默认的 + 。)

    值得注意的是,任何重定向域自己的 SPF 都可能包含进一步的重定向,并且它们会按预期级联。但是,每个重定向都计入查找计数限制。

    所以总而言之,你会想要使用类似...

    “v=spf1 mx include:spf.protection.outlook.com redirect:_spf.PROVIDERSERVER.COM”
    

    【讨论】:

    • 您能否澄清一下,为什么 MX 部分在 include 之后?
    • 这只是我的疏忽,这将是有效的语法,但你是对的,它可能会有所作为,因为它只会在包含后尝试解析 mx 机制,所以可能已经在考虑 mx 之前达到 SPF FAIL。我已经编辑了我的答案以更准确地反映您的问题。谢谢。
    【解决方案2】:

    对此我不确定,但这里有一个猜测! The docsredirect 完全替换了当前记录,所以我希望它忽略所有其他子句 - 但它也会从左到右进行评估,所以它可能会先进行 mx 查找 - 你可以测试一下手动。

    我不知道你为什么首先查看redirect

    我怀疑你可以实现你的目标:

    "v=spf1 mx include:_spf.PROVIDERSERVER.COM include:spf.protection.outlook.com ~all"
    

    【讨论】:

      【解决方案3】:

      作为早期答案的插件。

      RFC, section 6.1 on the redirect modifier 读取:

      此工具旨在供希望申请的组织使用 同一记录到多个域。例如:

       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 修饰符结合起来是极不寻常的。

      【讨论】:

        【解决方案4】:

        据我所知(/了解https://www.rfc-editor.org/rfc/rfc7208#page-26),您可以从上一个示例中进行记录。 redirect 修饰符将在其他所有操作都失败时使用,这意味着它将是最后检查的内容。

        请注意,根据同一 RFC,建议将 redirect 修饰符放在记录的末尾,在 ~all 之前。

        【讨论】:

        • 这具有误导性,文档不建议将重定向放在“~all”之前,但实际上说...“如果存在“全部”机制,则必须忽略任何“重定向”修饰符记录中的任何地方'
        猜你喜欢
        • 2015-08-23
        • 2012-11-05
        • 2015-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-11
        相关资源
        最近更新 更多