我们有几个电子邮件服务器通过 PostFix 发送合法电子邮件并使用 openDKIM。
最近我们有一些接收者声称无法验证 DKIM 记录,因此我们尝试了各种工具,例如 mail-tester.com、isnotspam.com 等,并看到相同的结果,一些电子邮件未通过 DKIM 检查,而另一些则通过了.
同一台服务器可以发送一封带有 DKIM 通行证的电子邮件,它可以发送另一封电子邮件并且 DKIM 失败。似乎是电子邮件本身决定了 DKIM 是否会通过。我每次都可以用相同的电子邮件复制它。
我无法理解这种行为,并想知道是否有人见过类似的问题。电子邮件本身如何导致 DKIM 失败?
一、排除与实际签名无关的问题
Authentication-Results: host; dkim=fail
意味着签名失败,但Authentication-Results: host; dkim=permerror
可能只是意味着收件人无法获取您的密钥。Received:
与收件人无关的最上面的标题,如果不是您,您正在查看转发的邮件。然后,确定是谁导致签名中断
在提交时获取邮件的副本(例如存储在 IMAP Sent 文件夹中),在收到原始邮件时获取原始邮件的副本,然后逐字节进行比较。
如果收件人无法将完整的标头转发给您,您可以通过将问题邮寄到同一提供商的自己的邮箱来重现问题,这样您就可以查看完整的标头。
a)您在签名后修改自己的邮件,使签名无效
您是否发送无效邮件,并且您的邮件系统正在为您解决一些问题,例如添加缺少的
Date
标题?修复/替换不合规的 MUA。您用于外发垃圾邮件过滤的某些软件是否会修改您正在签名的标头?
在任何此类修改之后,确保邮件处理软件的顺序将签名放在最后。
b) 收件人在验证您的签名之前修改了您的邮件,因此无法验证您的签名
我在野外看到的例子:
relaxes
DKIM 规范化就足够了。xn--..
!Received
或之类的标题X-Spam-Status
!请注意,如果您的邮件服务器无法应用建议的转换,您仍然可以拒绝您期望失败的邮件 - 然后发件人可以尝试使用不同的邮件客户端或收件人地址(或者至少注意到有问题)。