我按照这些说明使用 Postfix 设置 OpenDKIM,并且它的工作原理与宣传的一样。我的外发邮件添加了 DKIM-Signature 标头,例如:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=example.com; s=mail;
t=1398638300; bh=mk/7yYUxFCWz+ZHB0opJIA/S3J5ELoPZPfAO0KQdVg4=;
h=Date:From:To:Subject:From;
b=fPPfUliJUgA0re38nkJ2R18TeFgbamOv1U8nDb9958eTeAT6Mp7oq4WGrHPiPmc+b
mrLu9RuW0/S4d0ipkilNZDxgecwl7qttrDbTEkWxdhwwTSe5FL3OBaUoUxJFrMGjmY
RdBjY5ZWtvk29+gXZ+af5Of9OrY7COLlqGkFXRXw=
Run Code Online (Sandbox Code Playgroud)
我的问题是关于d=上面的参数。在一台邮件服务器处理多个虚拟域的外发邮件的情况下,d= 是否应该包含发送邮件的邮件服务器?还是应该是出现在 From: 地址中的域?
我曾尝试阅读有关此主题的RFC 6376,但我发现的唯一相关内容是:
d= The SDID claiming responsibility for an introduction of a message
into the mail stream [...] The conventions and semantics used by a Signer to
create and use a specific SDID are outside the scope of this specification
Run Code Online (Sandbox Code Playgroud)
我希望这里有人知道如何在实践中使用 d= 参数。
您正在从错误的角度看待问题 - 发件人的角度。你应该从接收者的角度来看它。
因此,假设我们有一个 person@foo.com 通过邮件服务器 random.com 向我们发送消息。我们对这两个域一无所知。来自 person@foo.com 的电子邮件中来自 foo.com 的签名是否会告诉您任何信息?显然是这样,因为 foo.com 可以就其控制的电子邮件帐户发表一些看法。来自 person@foo.com 的电子邮件中来自 random.com 的签名告诉您什么?很少。random.com 可能被垃圾邮件发送者控制,发送声称来自 person@foo.com 的垃圾邮件以绕过您的过滤器。因此,如果您对 random.com 一无所知,那么它的签名也毫无意义。
另外,请记住允许电子邮件包含多个 DKIM 签名。因此,如果您运行邮件列表,发送到该列表的邮件可能在 From 标头中包含来自域的签名。邮件列表也可能会使用该列表的域在信封中出现,从而对其进行签名。两者都向接收者提供有用的信息,帮助他们决定是否信任该消息。
在 DKIM 中,不要求该d=值(或相关i=值)与消息中的任何其他标头相匹配。DKIM 本身仅对签名者进行身份验证,而不是对发送者进行身份验证,将其留给接收者实施某些策略以使此信息有用。
DMARC 允许发件人域为 DKIM 指定策略,使 DKIM 签名对收件人更有用。随着DMARC的d=和From:头必须匹配(或者确切地或允许子域,根据所指定的严格性)。
对于 OpenDKIM,您需要查看SigningTable和KeyTable配置指令以正确处理多个域。
DKIM来自发件人域的签名是最可靠的,并且发件人的电子邮件策略可能需要签名。随着该策略的引入,DMARC域现在可以发布策略,其中包含对不符合策略的电子邮件所需的操作。
DKIM旨在匹配标头中的发件人,该发件人可能不是信封发件人。 SPF验证信封发件人是否有权使用发送服务器为该域发送邮件。 DMARC将两者联系在一起,以提供更好的政策框架。
所有这三种机制都要求在相关域的 DNS 树中发布数据。
DKIM来自第三方的仅表明签名内容在该域签名后是否已被修改。这对于拒绝可能有用,但对于发件人声誉则无用。
| 归档时间: |
|
| 查看次数: |
4487 次 |
| 最近记录: |