在 bind9 中发布长域密钥记录

在 bind9 中发布长域密钥记录

我正在设置一个基于 exim4 的邮件系统。该系统实现了 DKIM 签名和检查(以及其他功能)。签名似乎没有问题,但检查不起作用,并且 exim4 抱怨我的 TXT 记录的语法,该记录带有我的 dkim 公钥:

2014-02-02 22:37:31 1WA5fP-0004Y4-E2 DKIM: d=middle.earth s=a9d04665528b593d263a6e5256648c99 c=relaxed/relaxed a=rsa-sha256 [invalid - syntax error in public key record]

我使用 2048 位长的 RSA 密钥在邮件中继级别对我的邮件进行签名(这没问题,而且通过此服务器中继的邮件中确实有 DKIM 标头)。问题似乎在于 bind(该区域的 DNS 服务器)不支持区域文件中长度超过 255 个字符的记录。因此,我选择拆分记录,如下所示,并按照非常值得信赖的网站 zytrax.com 中的描述进行拆分:

...
a9d04665528b593d263a6e5256648c99._domainkey IN  1800 TXT    ("k=rsa,p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz2/ZfhxSI/A"
                                         "bqgh0amM8ylrlosirWeKShUhq7fg12aYmRwOqq9hIzO0Fcz1BzfgHVu6HU++rC5"
                                         "QoUK0JQK/nk4jwkDgvG2di2ZYmAvEbY/VeiK1x/TG0p1Iczr2k6Bj0gEAb/YGD2"
                                         "YbwrwAi4bDXwoPsYuuNn9TB3jjyWKu/dvOsqhff1/4Wc+FkOi0ClvgrXiklN28X"
                                         "TLjyjSyU794ntIoegXxrfwcwkhfPMvuqcnhfIC0Z8L71M4WR4SoHyNHVfBtNlUv"
                                         "VNROiXlMxtxnNQvfViSwz6LC8bYIxeAba3hSXPTChKu3qZtfR0o3jFwEWAfLQdg"
                                         "Ixler0jMEoAyJmfQIDAQAB")

完整的区域文件可以在这里找到:http://pastebin.com/GDE5XA2M

使用该配置,exim 会抱怨上述错误。如果我尝试手动解析我的 dkim 记录,则会得到以下结果:

;; ANSWER SECTION:
a9d04665528b593d263a6e5256648c99._domainkey.middle.earth. 1800 IN TXT "k=rsa,p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz2/ZfhxSI/A" "bqgh0amM8ylrlosirWeKShUhq7fg12aYmRwOqq9hIzO0Fcz1BzfgHVu6HU++rC5" "QoUK0JQK/nk4jwkDgvG2di2ZYmAvEbY/VeiK1x/TG0p1Iczr2k6Bj0gEAb/YGD2" "YbwrwAi4bDXwoPsYuuNn9TB3jjyWKu/dvOsqhff1/4Wc+FkOi0ClvgrXiklN28X" "TLjyjSyU794ntIoegXxrfwcwkhfPMvuqcnhfIC0Z8L71M4WR4SoHyNHVfBtNlUv" "VNROiXlMxtxnNQvfViSwz6LC8bYIxeAba3hSXPTChKu3qZtfR0o3jFwEWAfLQdg" "Ixler0jMEoAyJmfQIDAQAB"

在我看来,这不太对劲,我可以想象 exim 会因为这样的输出而迷失方向。但是,我不能 100% 确定对于如此长的 DNS 记录,这是否是正常的 DNS 回复,exim 是否应该处理它,或者我设置的 bind 方式是否错误。

任何帮助都将不胜感激。

谢谢。

答案1

您使用逗号而不是分号来分隔记录中的键/值对。将其更改为:

a9d04665528b593d263a6e5256648c99._domainkey IN  1800 TXT (
         "k=rsa;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz2/ZfhxSI/A"
         "bqgh0amM8ylrlosirWeKShUhq7fg12aYmRwOqq9hIzO0Fcz1BzfgHVu6HU++rC5"
         "QoUK0JQK/nk4jwkDgvG2di2ZYmAvEbY/VeiK1x/TG0p1Iczr2k6Bj0gEAb/YGD2"
         "YbwrwAi4bDXwoPsYuuNn9TB3jjyWKu/dvOsqhff1/4Wc+FkOi0ClvgrXiklN28X"
         "TLjyjSyU794ntIoegXxrfwcwkhfPMvuqcnhfIC0Z8L71M4WR4SoHyNHVfBtNlUv"
         "VNROiXlMxtxnNQvfViSwz6LC8bYIxeAba3hSXPTChKu3qZtfR0o3jFwEWAfLQdg"
         "Ixler0jMEoAyJmfQIDAQAB")

另外,我注意到,在我的特定区域文件中,我特别声明了版本为v=DKIM1,我认为你也应该这样做。顺便提一下,我没有用 包装记录,( )因为我只是将其全部放在一行中:

record._domainkey IN 1800 TXT "v=DKIM1;blah" "blah2" "blah3"

这是个人喜好,现在我意识到你的偏好肯定更具可读性。

答案2

就我而言,Google 的 DKIM 密钥非常长。您应该在 250-255 个字符后将其拆分到下一行,例如:

mail._domainkey    IN  TXT ( "v=DKIM1\; h=sha256\; k=rsa\; "     
     "p=MIIBIjANBgkqhki...."
     "cOasyifDEj0AqBEEG7XbGfP0..."
     "dM0FoPv4JsWByAgz/ywIDAQAB" )

相关内容