如何解决 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 ~all
的 TXT
记录(再次不寻常,因为前一页说它保留了这样的 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。
有两种解决方法:
- 不要使用外部服务发送,真正从您明确指定的 IP 发送 (即被您的
a
和 mx
选项)。
- 使用 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
所以我正在使用 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 ~all
的 TXT
记录(再次不寻常,因为前一页说它保留了这样的 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。
有两种解决方法:
- 不要使用外部服务发送,真正从您明确指定的 IP 发送 (即被您的
a
和mx
选项)。 - 使用 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