我正在尝试将 DKIM 签名应用于从我们的域发送的新闻通讯(邮件列表)。不幸的是,我无法在这里透露域名的名称,所以我将其称为 {mydomain}.co.il。我的选择器是“mta1”。
我按照在线说明进行了发球,但是在测试结果时,我在签名的各个方面都收到了错误!
我使用http://www.port25.com/support/domainkeysdkim-wizard/创建了公钥和私钥。我将整个私钥复制到 .pem 文件中,包括以下行
-----BEGIN RSA PRIVATE KEY-----
MIICX...{rest of private key goes here}
-----END RSA PRIVATE KEY-----
我将 hMailServer 设置为在我们的域上使用 DKIM 签名,将其指向私钥,并告诉它使用 SHA1(据我所知,它占用的 CPU 较少,更适合大量邮件列表)。
当然,我设置和 DNS 记录是这样的:
mta1._domainkey.{mydomain}.co.il =
v=DKIM1; k=rsa; h=sha1; s=email; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCptw7j4dessLrTmSKC1rg3yyB5
Vql0U+lzVoWXSHKB8f6ly7jgVze4Xp6V9U7OgcT/DRm421pUwcNgjO85yevxvISM
V64wAgfus6sCZI/eL8owRXpclbq89ap59TW75V5I9iDcCqKxpKoqjiuDP2pQwUbB
KphAb+vd8asNX8GRCQIDAQAB
_domainkey.{mydomain}.co.il =
t=y;o=~;
首先,我使用http://dkimcore.org/tools/dkimrecordcheck.html检查了 DNS 记录,得到了以下愚蠢信息:
p= MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDtjJF/34Z3g5bk/qP7cf0UxSNj 5nAodXgCQ7c0CJq1fIyY3QWl4l4LnYNJ11yIsCB13eQbAzx6gQOiLg0getR17D5i GMmK5EIp5kGn6PC3afjiaXlwS6geM59BINxXAwn6/GTwhdS0i0lnJ7bJePbrC7+E Xn9pxfXr1q79n3RCuwIDAQAB
The p= field must be base64 encoded
...但这是 port25.com 生成的公钥的精确副本!
接下来,我测试了我的实际 DKIM 签名,如下所示:
dkim-signature: v=1; a=rsa-sha1; d={mydomain}.co.il; s=mta1;
c=relaxed/relaxed; q=dns/txt; h=From:Reply-To:Subject:Date:Message-ID:To:MIME-Version:Content-Type:List-Help:List-Unsubscribe:List-Post:List-Owner:List-Archive;
bh=MrAZfkhgb6I02eyuqIKMb+Zg1L0=;
b=GmncisEWZjOhQfnnEzZNTAbOvqo+7JJSU52tbpA103Alw5jTIy3UF4L6xWpajQjP4P76UyByOcS8cAr9i8VIBxr/qrArqwYpOfd9teQ0Adx58Ywn03dsNWDs+succQSZ3EkrQJFf7cQFdbakEHzrzEAYJYLQaoSx3KbitFf2Kjc=
我使用http://www.appmaildev.com/en/dkim/测试了我们的 DKIM 签名电子邮件,并收到以下错误:
Exception: No records found for given DNS query
...但是这是错误的!
我还收到以下错误:
============================================================
DKIM result: fail (wrong body hash: MrAZfkhgb6I02eyuqIKMb+Zg1L0=)
============================================================
Signed by: office@{mydomain}.co.il
Expected Body Hash: hr++FhCjnb1cH9c0FJGJsCnCgNA=
我究竟做错了什么?有谁知道我能做些什么来解决这个问题?