![SPF、DomainKeys 和 DKIM 用于备用域身份验证](https://linux22.com/image/688993/SPF%E3%80%81DomainKeys%20%E5%92%8C%20DKIM%20%E7%94%A8%E4%BA%8E%E5%A4%87%E7%94%A8%E5%9F%9F%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81.png)
假设我的域名是 example.com,我们有 SMTP 服务器的 SPF 记录example.com
。现在假设我决定允许以 的身份example.org
发送邮件example.com
。我知道如何添加example.org
到 SPF,但如果我还想使用 DomainKeys 或 DKIM 来验证 example.org,密钥是否需要位于example.com
或中example.org
?例如,
我会用:
_domainkey.example.com. IN TXT "t=y\; o=~\;"
xxxxxxx._domainkey.example.com. IN TXT "k=rsa\;
p=xxxxxxxxxxx
或者
_domainkey.example.org. IN TXT "t=y\; o=~\;"
xxxxxxx._domainkey.example.org. IN TXT "k=rsa\;
p=xxxxxxxxxxx
还,
1) 谁生成密钥?example.com
或example.org
?(我很确定 example.org 会生成密钥,然后将密钥发送给我们进行 DNS 公开,但不确定)
2) 我是否需要 SPF 和密钥,或者仅使用密钥就足以验证其他域并允许其通过身份验证?(我只想使用密钥)
3) 就提供商检查而言,哪一个更好用?例如,提供商是否像检查 SPF 一样检查密钥?
答案1
作为电子邮件发送者,正确配置服务器对于建立可信度/信任度大有裨益。现在几乎所有评估都是自动化的,许多组织对发布的内容都有选择性。我的服务器的大多数连接显然都是垃圾邮件。
1) 谁生成密钥?example.com 还是 example.org?(我很确定 example.org 会生成密钥,然后将密钥发送给我们进行 DNS 公开,但我不太确定)
您可以使用现有密钥为两个域签名。诀窍是使用正确的签名者对电子邮件进行签名。我从发件人地址中提取域并以该域的身份进行签名。
拥有多个具有不同选择器的有效公钥是完全可以接受的。在密钥替换期间,您需要让旧密钥和新密钥都处于活动状态。密钥应定期替换。
如果您充当中继服务器并example.org
进行签名,则他们需要生成他们使用的密钥。维护签名域的 DNS 的任何人都需要添加用于签名消息的选择器的公钥。
在签名服务器上生成密钥是最安全的。这样就无需在其他地方拥有私钥。公钥是公开的,将被发布,因此无需保护它。
许多大型组织未能公布其公钥。我赞扬您为纠正这一问题所做的努力。
2) 我是否需要 SPF 和密钥,或者仅使用密钥就足以验证其他域并允许其通过身份验证?(我只想使用密钥)
SPF 和 DKIM 都是完全可选的,但它们确实有助于区分您的服务器和垃圾邮件机器人。我建议对所有域使用 SPF。v=spf1 a mx -all
对于发送电子邮件的域、v=spf1 a -all
邮件服务器和v=spf1 -all
所有其他域,这可以很简单。
3) 就提供商检查而言,哪一个更好用?例如,提供商是否像检查 SPF 一样检查密钥?
SPF 更可靠,但我相信大多数大型网站都会同时检查 DKIM 和 SPF。通过严格的 SPF 策略可以很好地表明电子邮件是有效的。根据我的经验,许多组织都使用 SPF 来评估邮件。
对于邮件服务器,我会推迟接受邮件,除非:邮件服务器的域或其父域没有 SPF 策略;或者 SPF 通过了其域或其父域的 SPF 验证。软通过被视为失败。
正如我所指出的,许多大型组织未能发布他们的 DKIM 公钥。因此,我怀疑 DKIM 本身失败不会引起太大的问题。有效的 DKIM 签名似乎有助于建立可信度/信任。但是,如果您发布了 DMARC 记录,则可能会应用其策略。
发布域名的 DMARC 记录可让您使 SPF 和 DKIM 签名策略可用于自动验证。DMARC 允许接收服务器向您发送有关您域名的电子邮件来自何处以及如何处理它们的详细信息。Gmail 和 Yahoo 都会向我发送报告。从仅通知策略开始,直到您确定您的邮件已正确签名并且 SPF 正常运行。