这封电子邮件是如何破坏 SPF 检查的?

这封电子邮件是如何破坏 SPF 检查的?

我运行一个邮件服务器,它似乎可以正确处理设置了 SPF 的电子邮件 - 然而,我开始收到声称来自银行的虚假电子邮件 - 发件人地址设置为银行 - 但这些电子邮件肯定不是来自银行。

该邮件相关标题如下:

Delivered-To: [email protected]
Received: from mail.mydomain.org (localhost [127.0.0.1])
    by mail.mydomain.org (Postfix) with ESMTP id AD4BB80D87
    for <[email protected]>; Thu, 13 Oct 2016 20:04:01 +1300 (NZDT)
Received-SPF: none (www.tchile.com: No applicable sender policy available) receiver=mydomain.org; identity=mailfrom; envelope-from="[email protected]"; helo=www.tchile.com; client-ip=200.6.122.202
Received: from www.tchile.com (www.tchile.com [200.6.122.202])
    (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
    (No client certificate requested)
    by mail.mydomain.org (Postfix) with ESMTPS id 40F6080B9F
    for <[email protected]>; Thu, 13 Oct 2016 20:03:57 +1300 (NZDT)
Received: from www.tchile.com (localhost.localdomain [127.0.0.1])
    by www.tchile.com (8.13.1/8.13.1) with ESMTP id u9D73sOG017283
    for <[email protected]>; Thu, 13 Oct 2016 04:03:55 -0300
Received: (from apache@localhost)
    by www.tchile.com (8.13.1/8.13.1/Submit) id u9D73smu017280;
    Thu, 13 Oct 2016 04:03:54 -0300
Date: Thu, 13 Oct 2016 04:03:54 -0300
Message-Id: <[email protected]>
To: [email protected]
Subject: CANCELLATION_PROCESS.
From: KIWI BANK <[email protected]>
Reply-To: 
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=029F3E3270D5187AA69203962BF830E3
X-Virus-Scanned: ClamAV using ClamSMTP

这里的关键是,kiwibank.co.nz 在我的家乡是一家合法、信誉良好的银行,并且拥有 SPF 记录,内容如下:

kiwibank.co.nz.     13594   IN  TXT "v=spf1 include:_spf.jadeworld.com ip4:202.174.115.25 ip4:202.126.81.240 ip4:202.12.250.165 ip4:202.12.254.165 ip4:66.231.88.80 include:spf.smtp2go.com include:spf.protection.outlook.com -all"

因此,经过一番阅读后,似乎 Envolope-From 是正确的,但“发件人”是伪造的。有什么方法可以纠正/缓解这种情况而不会破坏“常规”电子邮件?我注意到我使用 Postfix、Spamassassin 和 policyd(postfix-policyd-spf-perl)——如果真的很容易绕过,SPF 的意义何在?

答案1

在这种情况下,他们大概对你的服务器说了这样的话:

EHLO www.tchile.com
MAIL FROM: [email protected] 
RCPT TO: [email protected]
DATA
Date: Thu, 13 Oct 2016 04:03:54 -0300
Message-Id: <[email protected]>
To: [email protected]
Subject: CANCELLATION_PROCESS.
From: KIWI BANK <[email protected]>
Reply-To: 
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=029F3E3270D5187AA69203962BF830E3
X-Virus-Scanned: ClamAV using ClamSMTP

The contents of mail...
.

SMTP 对话(又称“信封”)可以具有与电子邮件标头不同的发件人/收件人。SPF 不会检查标头,但实际显示给最终用户的始终是标头!是的,SMTP 是坏了。是的,SPF 是破碎的。

最好检查 DMARC,而不是只检查 SPF。DMARC 默认检查 SPF,但它也会检查发件人标头与 SMTP MAIL FROM 的对齐情况(域需要匹配 - 它会忽略用户名部分)。作为额外奖励,您还可以获得 DKIM 支持,这是对 SPF 的一个非常有用的补充。

DMARC 依赖于 _dmarc.kiwibank.co.nz 上的 DNS TXT 记录集。但目前没有。根据当前的互联网法规,这意味着 kiwibank.co.nz 的所有者根本不关心是否受到此类欺骗的保护。但在某些情况下,您可以对所有传入电子邮件强制执行 DMARC。

答案2

因此,经过一番阅读,我发现 Envolope-From 是正确的,但“发件人”是伪造的。有什么方法可以纠正/缓解此问题而不会破坏“常规”电子邮件?

验证From标头将要中断邮件列表:

  1. foo@yourbank 向 cat-picture-sharing-list@bar 发送一封邮件。

  2. 邮件列表将接收邮件,

    • Envelope-From用类似于 cat-picture-sharing-list-bounce@bar 的东西替换它,
    • 可能会修改 Reply-To 标头并
    • 将邮件重新发送给所有收件人(例如您)。

现在你的邮件服务器收到一封邮件

Envelope-From: cat-picture-sharing-list-bounce@bar
From: foo@yourBank

从酒吧的邮件服务器发送。

我注意到我使用 Postfix、Spamassassin 和 policyd(postfix-policyd-spf-perl)——如果它真的很容易被绕过,那么 SPF 还有什么意义呢?

  1. 许多垃圾邮件发送者懒得发送“正确的”信封发件人。
  2. 你的银行不会得到(大部分)背向散射对于这封垃圾邮件,因为 NDR 被(或应该)发送到 Envelope-From 地址。
  3. 基于 Envelope-From 的评分变得更加可靠。如果您(或您信任的评分提供商)为所有带有 Envelope-From=...@yourbank 的邮件分配高度负面的垃圾邮件分数,垃圾邮件发送者就无法滥用这一点。

相关内容