我有一个由 Gandi 托管的虚荣域名 (mydomain.com),并为我的家人配置了邮件别名,指向我们各自的 Gmail 地址:
等等。
Gmail 配置为以虚荣地址发送电子邮件,并且我还设置了 SPF 记录:
v=spf1 include:_spf.google.com include:_spf.gpaas.net include:_mailcust.gandi.net ?all
尽管 mail-tester.com 报告 SPF 设置正确,但从 [anyone]@mydomain.com 向 [anyone else]@mydomain.com 发送电子邮件时可能会出现 SOFTFAIL:
来自 | 发给 | 电子邮件的 SPF 结果 |
---|---|---|
[电子邮件保护] | [电子邮件保护] | 经过 |
[电子邮件保护] | [电子邮件保护] | 经过 |
[电子邮件保护] | [电子邮件保护] | 经过 |
[电子邮件保护] | [电子邮件保护] | 软故障 |
电子邮件 SOFTFAIL 时的标题如下:
Delivered-To: [email protected]
ARC-Authentication-Results: i=1; mx.google.com;
spf=softfail (google.com: domain of transitioning [email protected] does not designate 2001:4b98:dc4:8::230 as permitted sender) [email protected]
Return-Path: <[email protected]>
Received: from relay10.mail.gandi.net (relay10.mail.gandi.net. [2001:4b98:dc4:8::230])
by mx.google.com with ESMTPS id w4-20020a05600018c400b0020ac7a84cb7si9021160wrq.441.2022.05.01.02.22.05
for <[email protected]>
(version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256);
Sun, 01 May 2022 02:22:06 -0700 (PDT)
Received-SPF: softfail (google.com: domain of transitioning [email protected] does not designate 2001:4b98:dc4:8::230 as permitted sender) client-ip=2001:4b98:dc4:8::230;
Authentication-Results: mx.google.com;
spf=softfail (google.com: domain of transitioning [email protected] does not designate 2001:4b98:dc4:8::230 as permitted sender) [email protected]
Received: from spool.mail.gandi.net (spool3.mail.gandi.net [217.70.178.212]) by relay.mail.gandi.net (Postfix) with ESMTPS id 51151240003 for <[email protected]>; Sun,
1 May 2022 09:22:05 +0000 (UTC)
X-Envelope-To: [email protected]
Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) by spool.mail.gandi.net (Postfix) with ESMTPS id 49A2CAC0C45 for <[email protected]>; Sun,
1 May 2022 09:22:04 +0000 (UTC)
Received: by mail-lf1-f48.google.com with SMTP id w19so20836346lfu.11
for <[email protected]>; Sun, 01 May 2022 02:22:04 -0700 (PDT)
Received: from smtpclient.apple (cpc1-sotn14-2-0-cust79.15-1.cable.virginm.net. [81.96.148.80])
by smtp.gmail.com with ESMTPSA id r7-20020a2e8e27000000b0024f3d1dae9asm761964ljk.34.2022.05.01.02.22.02
for <[email protected]>
(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
Sun, 01 May 2022 02:22:02 -0700 (PDT)
From: Me <[email protected]>
To: My Brother <[email protected]>
Received-SPF: pass (spool3: domain of gmail.com designates 209.85.167.48 as permitted sender) client-ip=209.85.167.48; [email protected]; helo=mail-lf1-f48.google.com;
Authentication-Results: spool.mail.gandi.net; dkim=none; dmarc=none; spf=pass (spool.mail.gandi.net: domain of [email protected] designates 209.85.167.48 as permitted sender) [email protected]
有什么方法可以阻止从 mydomain.com 发送到 mydomain.com 的另一个地址的电子邮件发生 SPF 失败?
答案1
您可以看到该邮件是从 Gandi 服务器收到的:
Received: from relay10.mail.gandi.net (relay10.mail.gandi.net. [2001:4b98:dc4:8::230])
您可以看到 Gandi 服务器未在 SPF 记录中获得授权:
Received-SPF: softfail (google.com: domain of transitioning [email protected] does not designate 2001:4b98:dc4:8::230 as permitted sender)
SPF 检查return-path
标头。不是mailfrom
标头。return-path
是[email protected]
。因此,gmail.com SPF 记录不允许 Gandi 服务器使用return-path
带有 gmail.com 电子邮件地址的 发送电子邮件。
SPF 运行正常。您看到的是 SPF 协议在邮件转发方面存在固有缺陷。当邮件在 MTA(邮件服务器)级别转发时,mailfrom
和return-path
标头不会被重写(也不应该重写),但当转发的邮件到达收件人的电子邮件服务器时,它来自转发服务器,而不是来自发件人的原始电子邮件服务器。因此,收件人的电子邮件服务器会检查 SPF,并发现域return-path
未授权转发电子邮件服务器发送邮件。
转发会破坏 SPF。由于您无法控制域的 SPF 记录gmail.com
,因此您无法授权 Gandi 服务器代表 Gmail 转发邮件。这就是为什么不能单独使用 SPF 来确定邮件是否被授权的原因。
您有四种解决方案(我认为选项 1 和 2 需要付费的 Google 工作区帐户):
- 确保当您使用别名电子邮件地址从 gmail 发送电子邮件时,它也会在标题中使用电子邮件别名
return-path
。还要将 gmail 服务器添加到 的 SPF 记录中mydomain.com
。有关使用 gmail 以别名发送电子邮件的更多信息,请参见此处:https://support.google.com/mail/answer/22370?hl=en - 配置您的 MX 记录和 gmail,以便发往您的别名的电子邮件直接发送到 gmail 的服务器并进入您的收件箱,而不是通过第三方转发。
- 在第三方接收发往您的别名电子邮件地址的电子邮件,而不是转发邮件。然后配置 Gmail 以使用从我的其他帐户 (POP3) 导入电子邮件Gmail 中的选项。
- 如果您可以控制转发电子邮件服务器的行为,则可以创建一个规则,在转发从您的某个电子邮件别名接收并发往该别名的电子邮件时,重写
return-path
标头以匹配标头。mailfrom
答案2
这可能可能是由于 Gmail 中报告的错误
尽管有些发帖者报告说问题成功了,但我认为问题尚未解决。
答案3
问题在于,SPF 本身并不足以阻止未通过身份验证的电子邮件。即使是硬性验证也无济于事。
这促使了 DMARC 的发展。通过它,您可以指示接收服务器(包括从内部发送到内部的服务器)拒绝未通过身份验证的电子邮件。
您可以在此处了解有关硬故障与软故障的更多信息以及为什么 DMARC 是答案:https://knowledge.ondmarc.redsift.com/en/articles/1148885-spf-hard-fail-vs-spf-soft-fail