SOFTFAIL = 错误的 SPF 或顽固的邮件服务器?

SOFTFAIL = faulty SPF or stubborn mailserver?

我用 pphmailer 发送的大部分电子邮件都出现软故障。我已经多次更新 SPF 并解决了各种争执。我已阅读大多数相关的 Whosebug 帖子,但 none 解决了我的问题。

最有效的 spf 是:

"v=spf1 mx a a:mail.citynetwork.se ?all"

它仍然给我一个 softfail 和 1.4-1.9 的 X-Spam-Score。

服务器 mail.citynetwork.se (91.123.193.200) 正在处理所有收到的邮件,包括 smtp,但是当他们发送邮件时,他们使用 mailout.citynetwork.se(91.123.193.63 和 91.123.193.90)。

是说: Received-SPF: softfail (google.com: 转换 admin@skivbasar.se 的域没有将 2a00:16d8:0:12::10 指定为允许的发件人) client-ip=2a00:16d8:0:12::10;

Received-SPF: permerror (google.com: 在查找 admin@skivbasar.se 期间处理中的永久错误) client-ip=2a00:16d8:0:12::10;

或 Received-SPF: softfail (google.com: 转换域 admin@skivbasar.se 没有将 91.123.193.90 指定为允许的发件人) client-ip=91.123.193.90;

ip 91.123.193.90 (mailout.citynetwork.se) 似乎没有任何 SPF 记录,所以如果我添加它,它会导致 permerror。

我神奇地获得了一次通过: Received-SPF: pass (google.com: domain of admin@skivbasar.se 将 91.123.193.90 指定为允许的发件人) client-ip=91.123.193.90;

但是当我再次尝试时,它出现了软故障。

SPF: "v=spf1 mx a include:mail.citynetwork.se -all" 我收到了第一个 permerror,然后是 PASS,然后是 neutral,neutral neutral....

有人能理解这个吗? SPF 记录是否不会在我的服务器上立即更新,或者我如何使用相同的代码、邮件和 SPF 获得不同的支票? "include:" 和 "a:" 是否给出相同的结果? 我需要 CIDR 地址吗? Should/Can 我添加 IP 而不是域?

所以您的问题包含很多内容,我们需要稍微梳理一下。首先,请记住 SPF 是基于 DNS 的策略,因此策略的评估取决于接收邮件服务器的 DNS。因此,由于 DNS 缓存,策略更改可能不会立即生效,甚至对于处理单个域的入站电子邮件的不同服务器也不会保持一致。这可以解释为什么您会看到不同的结果。

作为一般规则,在调试 SPF 策略时,您应该设置较低的 TTL(300 或 600 秒)并尝试 space 完成您的更改。某些服务器会将 1 小时以下的任何 TTL 视为一个小时,因此如果您进行得太快,您的更改可能不会按预期传播。

现在,关于您应该使用什么策略的另一个问题:

  1. 不要使用 'include',除非您包含在您包含的域上定义的 SPF 记录。没有为 mail.citynetwork.se 定义 SPF 记录,因此您不应该使用 include 指令

  2. 作为一般规则,最好尽可能使用显式 IP 地址而不是 a 或 mx 指令。对于您的情况,像 v=spf1 ip4:91.123.193.90 ip4:91.123.193.63 ip6:2a00:16d8:0:12::10 ~all 这样的规则应该有效。请注意,这假设 IP 地址是静态的,实际情况可能并非如此。

  3. 如果 IP 地址不是静态的,那么您可以在规则中使用 a 指令。例如,v=spf1 a:mailout.citynetwork.se ~all。这包括您引用的两个 IPv4 地址,尽管 AAAA 记录中的 IPv6 地址与您问题中的地址不完全匹配。从您提出问题到现在,该地址可能已经发生变化,或者它可能不是正确的地址。所以这个规则可能无法开箱即用。

因此,将规则更改为我在上面 #2 或 #3 中指定的低 TTL 规则,等待一个小时左右,然后 运行 再次测试。