我有一个完全可管理的 VPS,运行 Ubuntu 14.04,它托管多个域名的网站。最近我尝试添加 DKIM 签名以避免垃圾邮件过滤器。我遵循了ubuntu-postfix-dkim 教程,使用 KeyTable 和 SigningTable ,正如在写得很好的帖子中解释的那样askubuntu.com.每个域名都有自己的公钥和私钥以及txt DNS区域记录。
通过测试后[电子邮件保护],[电子邮件保护]甚至通过http://dkimvalidator.com/答案是一样的:
DKIM:失败(签名无法验证)
邮件已签名,签名看起来没问题,但验证测试失败。我唯一想到的是,在计算签名哈希后,邮件以某种方式被修改了。我的问题是:
是否可以调试发送过程?如果能检查一下 DKIM 签名的计算内容和时间就更好了。 我努力了忽略标题 To,to,TO在配置文件中,但奇怪的是到:价值仍然出现在高度=参数。
我在 Google 上搜索了很多次,但仍然没有找到。提前致谢。dkimvalidator.com
的输出:
DKIM Signature
Message contains this DKIM Signature:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inhillz.com; s=mail;
t=1429184641; bh=g3zLYH4xKxcPrHOD18z9YfpQcnk/GaJedfustWU5uGs=;
h=Date:From:To:Subject;
b=fccxI1j/+InWdupEY1/hAYCUeSAlTHo3tr/594sOqETs6kEzRlyXWZDLib1b1WqV0
xN/wr0Io+OGTJOTChp+cJ/H/KrODt1mzGgDA/O/AKWUPEGKODgk9iO03/o6DpLB4bM
t5GVSKdBQna7sYkQJM2mGtCNgswydgsgytb0J9QA=
Signature Information:
v= Version: 1
a= Algorithm: rsa-sha256
c= Method: relaxed/relaxed
d= Domain: inhillz.com
s= Selector: mail
q= Protocol:
bh= g3zLYH4xKxcPrHOD18z9YfpQcnk/GaJedfustWU5uGs=
h= Signed Headers: Date:From:To:Subject
b= Data: fccxI1j/+InWdupEY1/hAYCUeSAlTHo3tr/594sOqETs6kEzRlyXWZDLib1b1WqV0
xN/wr0Io+OGTJOTChp+cJ/H/KrODt1mzGgDA/O/AKWUPEGKODgk9iO03/o6DpLB4bM
t5GVSKdBQna7sYkQJM2mGtCNgswydgsgytb0J9QA=
Public Key DNS Lookup
Building DNS Query for mail._domainkey.inhillz.com
Retrieved this publickey from DNS: v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCpLxuEApOG3ubulSygyEMAVsGHnBUDdYfCHJpGzMguNOCPSpQSdHxUFS+AGKwwyYTLs0X9kP7KUKLhY5TcxJgFPpSl6DOkkjs7Yd/njdg5o/DZe4Ey1hv+XqquEwGh7mqH3049ph2DUA7w3sm6gEgcydYTcyR5ykZ8nQMSIoeRKQIDAQAB
Validating Signature
result = fail
Details: bad RSA signature
编辑
我尝试生成新密钥,也更改了 DNS 记录,并对其进行了测试
opendkim-testkey -d inhillz.com -s mail -k mail.private -vvv
输出为:
opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: key loaded from mail.private
opendkim-testkey: checking key 'mail._domainkey.inhillz.com'
opendkim-testkey: key not secure
opendkim-testkey: key OK
通过验证后[电子邮件保护]仍然是同样的错误。
答案1
更改 DNS 设置时,请务必更新 SOA 记录的序列号,即 2016092601 ;序列号,其中 yyyymmddhhvv = 年月日时版本。如果序列号不变,某些 DNS 将不会更新其缓存。
另外,请确保 dkim 与 DNS 记录中的 txt 记录绝对匹配:
dkim._domainKey TXT(“p=非常长的文本字符串”)