我为域名设置了 SPF 记录,但欺骗发件人仍然有效,原因很简单:
电子邮件中似乎有 3 种不同的“发件人”:
- 回复
- 返回路径
- 信封来自
您的邮件客户端显示reply to
为发件人的电子邮件,但邮件服务器似乎进行了 SPF 检查return path
,envelope from
这对我来说毫无意义。
这意味着如果我发送一封电子邮件,其中说return path
和envelope from
是hacker.net
以及reply to
是[email protected]
是我试图欺骗的,它将检查 的 SPF hacker.net
,现在假设这是我为其配置了 SPF 的域,它将通过并作为来自的邮件传递到受害者的邮箱,[email protected]
即使我不允许向 发送电子邮件victim.org
,从而有效地绕过 SPF 检查。
有办法解决这个问题吗?似乎只有DMARC
才能防止这种情况,但如果这是真的,SPF 检查的意义何在?
答案1
为了完成各种“发件人”值的列表,我想添加:
From
,这是客户端设置的标头,在 RFC 5322 中定义(RFC 5322.From
)Reply to
,也是由客户端设置的标头,定义在 RFC 5322 中Return path
并且都引用SMTP 会话期间命令Envelope from
的参数( )MAIL FROM
RFC 5321.MailFrom
DMARC 的目的是传达适用于 SPF 和 DKIM 均未通过的邮件的策略,而不是依赖本地策略。此策略由发件人的域名所有者表达(使用p=
DMARC 记录的参数)。
在 DMARC 评估期间,标识符对齐检查(参见 RFC 7489 第 3.1 节),以确保:
RFC 5321.MailFrom
传递的 SPF的域名与RFC 5322.From
- 传递的 DKIM 中使用的域名与
RFC 5322.From
因此,要解决您的问题,您应该在 DNS 区域中发布 DMARC 记录victim.org
:
_dmarc.victim.org IN TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]"
这将确保标识符对齐失败(如您的示例所示)将导致 DMARC 失败,并且该邮件将被标记为垃圾邮件。
SPF 检查的目的是确保 SMTP 会话期间客户端的 IP 地址得到 所有者的允许hacker.net
。在您的示例中,SPF 的作用hacker.net
不是保护victim.org
:-)
如果你想鸟瞰,我发表了一篇文章,其中有一张SPF、DKIM 和 DMARC 如何协同工作以防止鱼叉式网络钓鱼(滚动至文章中间)