Office365 SPF 记录的查找次数过多

Office365 SPF 记录的查找次数过多

由于一些非常荒谬的管理原因,我们在 Office365 上有一个带有一个邮箱的拆分域,这需要我们添加include:outlook.com到我们的 SPF 记录中。问题在于,仅这条规则就需要最大 DNS 查找次数为 10。

说真的,这太可怕了。看看它:

v=spf1
include:spf-a.outlook.com
include:spf-b.outlook.com
ip4:157.55.9.128/25
include:spfa.bigfish.com
include:spfb.bigfish.com
include:spfc.bigfish.com
include:spf-a.hotmail.com
include:_spf-ssg-b.microsoft.com
include:_spf-ssg-c.microsoft.com
~all

鉴于我们拥有自己的大型邮件系统,我们需要制定、、和的规则,a这将使我们进行 13 次 DNS 查找,这会导致使用严格的 SPF 验证器mx时出现s,而使用非严格/实施不当的验证器时则会导致完全不可靠/不可预测的验证。include:_spf1.mydomain.cominclude:_spf2.mydomain.comPERMERROR

是否有可能以某种方式include:从臃肿的 outlook.com 记录中删除其中 3 条规则,但仍然覆盖 O365 使用的服务器?

编辑:

评论者提到我们应该使用较短的spf.protection.outlook.com记录。虽然对我来说是新闻,而且更短,只短了一条记录:

spf.protection.outlook.com
  include:spf-a.outlook.com
  include:spf-b.outlook.com
  include:spf-c.outlook.com
  include:spf.messaging.microsoft.com
    include:spfa.frontbridge.com
    include:spfb.frontbridge.com
    include:spfc.frontbridge.com

編輯²

我想我们可以从技术上将其简化为:

v=spf1 a mx include:_spf1.mydomain.com include:_spf2.mydomain.com include:spf-a.outlook.com include:spf-b.outlook.com include:spf-c.outlook.com include:spfa.frontbridge.com include:spfb.frontbridge.com include:spfc.frontbridge.com ~all

但我发现的潜在问题是:

  1. 我们需要随时了解父母spf.protection.outlook.comspf.messaging.microsoft.com记录的任何变化。如果有任何变化或 [但愿不会] 添加,我们将不得不手动更新我们的记录以反映这一点。
  2. 对于我们的实际域名,记录的长度为 260 个字符,这需要 2 个字符串作为 TXT 记录,而且老实说,我不相信所有的 DNS 客户端和 SPF 解析器都能正确接受长度超过 255 字节的 TXT 记录。

答案1

截至最近,微软已通过删除所有子记录并改用 2 或 3 个“ptr”记录来“修复”此问题:

$ dig TXT spf.protection.outlook.com
spf.protection.outlook.com. IN  TXT "v=spf1 ptr:protection.outlook.com ptr:o365filtering.com -all"

$ dig TXT spf.messaging.microsoft.com
spf.messaging.microsoft.com. IN TXT "v=spf1 ptr:protection.outlook.com ptr:messaging.microsoft.com ptr:o365filtering.com -all"

问题在于:虽然这将帮助 Office 365 客户端避免停留在“查找次数过多”的 PermError 之下……但它通过强制世界上的每个邮件服务器对连接到它们的每个 IP 地址执行(昂贵的)PTR 查找来实现这一点。

根据SPF 规范

如果可能的话,您应该避免在 SPF 记录中使用此机制,因为它会导致大量昂贵的 DNS 查找。

答案2

我们也发现了这个问题。微软“鼓励”您仅使用 Office 365 来处理电子邮件,因为现在没有空间添加新项目。

我们解决这个问题的方法有两个。

首先,我们可以通过将其他条目添加为显式 IPv4 条目来减少 DNS 查找。这样,我们就可以添加一些显式 IP,然后再include:outlook.com

其次,我们在主域下为 Office 365 内容设置了一个单独的子域。这样,电子邮件 @foo.company.com 可以获得 Office 365 SPF,而电子邮件 @comapny.com 可以获得我们的正常 SPF。这并不完美,但幸运的是,我们使用 Office 365 的地方都可以使用子域内的电子邮件地址,而不是基本域内的电子邮件地址。

相关内容