DKIM验证的是SMTP信封发件人还是邮件头发件人?

4

我想了解用于验证电子邮件的SPF / DKIM / DMARC堆栈。

我知道SPF适用于SMTP“mail from”/ envelope-from。

但即使在stackoverflow本身,我也发现关于DKIM是在envelope-from还是实际的SMTP负载/电子邮件/标头-来自方面存在矛盾的信息。


1
关闭。然而,它有3个赞同,而且我在这里也有完全相同的问题(我认为措辞完全没问题)。有时候我真想知道Stack Overflow的贡献者们到底塞了多大的东西进去,让他们变得这么混蛋。 - undefined
1个回答

7

简短回答...

SPF 验证发送 IP 地址的信封,DKIM 验证邮件负载,DMARC 将两者绑定在一起,并指示任一项失败时所需的处理方式。


较长回答...

DKIM 在发送服务器上应用于已编写的消息,使用私钥,然后由接收服务器使用公钥通过 DNS 进行验证。

DKIM 规范允许签名者选择签署哪些标头字段,但必须始终签署 From: 字段,以及指定长度(可以为零)的正文,在作者的心情中可能包括消息负载末尾的正文和/或 附件

DKIM 与 SMTP 路由无关,因为它在 RFC 5322 消息上运行,即传输邮件的标题和正文,而不是在 RFC 5321 中定义的 SMTP 信封。因此,DKIM 签名在多个 MTA 上进行基本中继时仍然有效。

DKIM 允许 签名者 以严格或放松的方式传达其认为合法的电子邮件内容。通过这种方式,签名者可以保证一些关键内容,同时允许对空格和标头包装进行某些微不足道的重写。它不能直接防止或披露企图滥用,但可以通过接收服务器在签名者允许的程度上验证内容,以进行法医学分析。


SPF 发布在 DNS 中,并由接收服务器进行测试。

SPF 规范允许域的 DNS 保证哪些发送 IP 和其他解析为 IP 的机制被允许/禁止成为该域的电子邮件发送源。它只针对使用 RFC 5321 中定义的 SMTP 信封进行测试,使用 MAIL FROMHELO 值之一。


DMARC 是发布在域中的策略,并由接收服务器进行验证。

它允许发送域通过符合要求的接收服务器报告来监视滥用情况,并指示如何处理任何 SPF 或 DKIM 失败。此外,它可以用于 对齐 在 SPF 和 DKIM 中找到的域,并用于识别当 SPF 和 DKIM 都通过时发生滥用,但每个域使用不同的域。


1
在电子邮件的 DKIM-Signature: 头部中,您可以使用 d= 属性指定签名域。该值还决定了在 DNS 中查找公钥的位置。您并未完全回答这个域名是否应该/必须对应于电子邮件通信的 From: 标头或其他部分。 - pabouk - Ukraine stay strong
@pabouk:OP 没有问到这个,但是邮件中的任何内容和 d= 之间没有联系。只要你知道该域的私钥并使用该私钥指向公钥,就可以使用 任何 域的私钥签署发件人邮件。这很常见 - 例如,Google 或 MS 可能会使用自己的私钥来签署来自“您自己的域”的消息。 - EML
3
@EML 我真的很困惑。OP明确询问DKIM是在信封发件人还是实际SMTP负载/电子邮件/标题发件人上工作。当我写下我的评论时,我正在学习SPF、DKIM和DMARC的细节。现在我可以确认,当您使用DKIM+DMARC时,电子邮件头部From:中的域将被测试是否与DKIM-Signature:头部的d=属性松散或严格对齐。DKIM本身不会检查这一点。例如,请参见:https://mxtoolbox.com/dmarc/dkim/dkim-alignment - pabouk - Ukraine stay strong
1
我不确定我是否理解了你的评论,但是你可能在你的陈述中感到困惑,即“正在测试电子邮件头中的域”。From:字段的值没有以任何方式“测试”,除非查找它是否自签名以来已更改。例如,它可以使用“foo.com”的私钥进行签名,但可能包括标题From: me@bar.com。如果有人截取邮件并将其更改为From: donald@duck.com,则哈希将更改,DKIM应/将报告失败。 - EML
1
@EML 当然,我的英语大部分时间都很生硬 :) 无论如何,我强烈建议您阅读有关DMARC对齐的内容,因为它是SPF / DKIM / DMARC三位一体中非常重要的一部分,您现在缺少了这个:https://en.wikipedia.org/wiki/DMARC#Alignment - pabouk - Ukraine stay strong
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接