今天晚上,我在网站上进行了互动,向康奈尔大学某人的邮箱发了一封电子邮件;我之前没有给他写过信。我收到了以下回复[email protected]
(匿名):
<[email protected]> (expanded from
<[email protected]>): host
gmail-smtp-in.l.google.com[142.251.16.26] said: 550-5.7.26 This mail is
unauthenticated, which poses a security risk to the 550-5.7.26 sender and
Gmail users, and has been blocked. The sender must 550-5.7.26 authenticate
with at least one of SPF or DKIM. For this message, 550-5.7.26 DKIM checks
did not pass and SPF check for [gmx.com] did not pass 550-5.7.26 with ip:
[128.253.150.158]. The sender should visit 550-5.7.26
https://support.google.com/mail/answer/81126#authentication for 550 5.7.26
instructions on setting up authentication.
some-id-here - gsmtp (in reply to
end of DATA command)
另外,我的域名(gmx.com)是全球第十大电子邮件提供商(根据雅虎财经,截至 2022 年)。谷歌拒绝来自它的电子邮件是没有意义的。另外,我显然无法为不属于我的域名设置 SPF 或 DKIM。
那么,人们应该怎么做呢?数千万人需要用自己的个人域名设置自己的 SMTP 服务,然后为其设置 SPF 或 DKIM?... 哎呀。
答案1
Google 拒绝来自它的电子邮件毫无意义。另外,我显然无法为不属于我的域名设置 SPF 或 DKIM。
这与错误信息所说的完全相反。
Gmail 已拒绝该邮件,因为 SPF展示在 gmx.com 域上,并且由于 SPF 检查告诉它该邮件没有来自 GMX 服务器。相反,它来自一台机器属于 Cornell.edu,显然是因为您的通讯员正在将他们的 @cornell.edu 邮件转发到他们的个人 Gmail 收件箱。
当邮件转发出现时,SPF 检查失败是正常的,因为转发者显然不是该域的授权发件人。根据 DMARC 规则,这通常是可以接受的,因为 DKIM 数字签名检查仍会通过(GMX 会签署所有外发邮件)——但前提是邮件的内容(正文、主题、“发件人”标头)未被修改。
但根据 Gmail 的拒绝,Cornell.edu 的邮件系统最有可能做过修改消息(例如,他们可能添加了那些愚蠢的“[危险:从外部系统收到消息]”警报之一),在尝试进一步转发消息之前使签名无效。
GMX 实际上因拥有以下之一而闻名更加严格邮件提供商之间的配置(包括 Yahoo 邮箱),因为他们不仅已经设置了 SPF 和 DKIM,而且还设置了其域的 DMARC 策略,以要求其他收件人完全拒绝所有“假装来自”@gmx.com 但未通过至少一项 SPF 或 DKIM 检查的邮件,而大多数其他提供商要么拥有宽松的 DMARC 策略,要么根本没有。
换句话说,GMX 已经请求才能实现这一点。
(这是邮件列表系统的一个常见问题,传统上,系统会在主题中添加“[list-name]”前缀,并经常在邮件正文中添加简短的页脚;但是,由于这会使发件人的 DKIM 签名无效,因此来自 @gmx.com 和 @yahoo.com 的邮件在通过这些较旧的邮件列表系统时,通常会被归类为“垃圾邮件”,因为 GMX 和 Yahoo 要求这样做。)
答案2
答案3
问题比这更复杂。我再次收到被拒绝的电子邮件,并显示该消息,而发送到同一地址、来自同一地址、域和 SMTP 服务器并通过同一互联网提供商发送的许多其他电子邮件都已顺利送达。更重要的是,今天我向同一个收件人发送了两封电子邮件(相隔几分钟),第一封被拒绝,而第二封没有。所以我再次发送了第一封,所有内容都相同,但它被拒绝了。
好吧,被拒绝的邮件太大了,所以我又发了一封小得多的邮件,但它也被拒绝了。所以我又发了一封相同的邮件,没有被拒绝,它也没有被拒绝。
因此,在我看来,gmail 的错误检查中似乎存在某些问题 - 一个有缺陷的条件分支? - 当它检测到其他问题时,它会声称存在 SPF 或 DKIM 问题。
这并不意味着该错误消息对于收到它的每个人都无效。但我的经验表明,要么 1) 错误是由消息中除报告的内容之外的某些内容引起的,要么 2) 有时候(很多时候)应该生成该错误,但实际上并没有生成。
我觉得有必要寻找实际的编码错误,而不是仅仅解释意图。
编辑:这比我想象的还要奇怪。我现在从我发送“被拒绝”电子邮件的收件人那里得知,这些邮件实际上已经收到了。
然而,当我一个半月前发给同一个人的电子邮件时,也收到了同样的拒绝信息,他们没有收到。我无法猜测发生了什么,但如果我再次收到这样的信息,我会尝试收集更多数据。