如何解决 SPF 问题

How to fix SPF issue

所以我正在使用 mail-tester.com,这很好,只是现在我非常困惑。我第一次 运行 测试时,它是这样说的(在 SPF 部分,问题是:你不能使用你的发件人电子邮件地址 )

What we retained as your current SPF record is:
  v=spf1 a mx ~all

It should be changed to:
  v=spf1 a mx ip4:some-ip-address ~all

Need guidance? Visit the guide for cloudflare.

当我点击 link 到 CloudFlare 的指南时,它字面上说我的新 TXT 记录应该是 v=spf1 a mx ~all,这基本上与上一页相矛盾。所以...也许最初的诊断页面是具体的指导,而 CloudFlare 的指南只是一般指导,关于把记录放在哪里?无论如何,所以我在 CloudFlare 中没有带有 v=spf1 a mx ~allTXT 记录(再次不寻常,因为前一页说它保留了这样的 SPF 记录),所以我添加了它。它没有做任何事情来修复我的分数。

所以我当时的想法是,好吧,让我们按照诊断页面的具体指导添加 IP 地址。下次我 运行 测试时,我得到了:

What we retained as your current SPF record is:
  v=spf1 a mx ip4:some-ip-address ~all

It should be changed to:
  v=spf1 a mx ip4:some-ip-address ip4:different-ip-address ~all

Need guidance? Visit the guide for cloudflare.

并且...您猜对了,不断遵循这些说明只会让我进入一个永无止境的新 ip 地址循环,将新的 ip 地址添加到记录中,但实际上并没有改变我的分数。比如,现在我在:

What we retained as your current SPF record is:
  v=spf1 a mx ip4:some-ip-address ip4:different-ip-address ~all

It should be changed to:
  v=spf1 a mx ip4:some-ip-address ip4:different-ip-address ip4:another-ip-address ~all

Need guidance? Visit the guide for cloudflare.

有没有其他人有这方面的经验?如果你不知道,我对 SPF 完全是个菜鸟,不知道如何诚实地解决这个问题。对于上下文,我的域和邮件由 Gandi 管理,但通过 CloudFlare 重定向,因此 CloudFlare 是我的 DNS 记录实际保存的地方。

当你这样说时:

v=spf1 a mx ~all

它表示从您域的 A 记录解析的 IP 以及指定为您域的邮件交换器的任何 IP 将获得 SPF pass 状态,其他所有内容将获得 softfail.

因此,当您收到该错误时,这意味着您正在从允许来源列表未涵盖的某个地方发送,因此建议您将发送 IP 添加到您的记录以允许它。

如果您从 gmail 等具有大量邮件服务器的地方发送邮件,源地址会经常更改,这可以解释为什么它每次都建议不同的 IP。

有两种解决方法:

  1. 不要使用外部服务发送,真正从您明确指定的 IP 发送 (即被您的 amx选项)。
  2. 使用 SPF include 指令允许从使用动态发送 IP 的来源发送。

在后一种情况下,您的记录应该是这样的:

v=spf1 a mx include:_spf.google.com ~all

虽然您说您使用的是 cloudflare 和 gandi,但您并没有说明您实际从哪里发送电子邮件 - 如果您不使用 gmail,那么 include 来自任何其他服务的 SPF正在使用。

更新。给定 217.70.183.200 的实际源 IP,我们可以看到发生了什么。 Whois 告诉我们该 IP 属于 gandi.net,并且查找 gandi.net 的 SPF 记录 returns this:

v=spf1 ip4:217.70.176.0/21 ip4:217.70.186.186/32 ip4:217.70.186.187/32 ip6:2001:4b98:c::/48 ip6:2001:4b98:dc2:43:216:3eff:fe69:f13/128 ip4:217.70.186.186/32 ip6:2001:4b98:dc2:90:217:70:186:186/128 ptr ?all

其中列出的第一个地址范围 (ip4:217.70.176.0/21) 涵盖了 217.70.183.200 地址,所以我建议您将 SPF 设置为这个,这应该可以解决您的问题(这正是我所说的在上面的选项 2 中):

v=spf1 a mx include:gandi.net include:_spf.google.com ~all