![将 DKIM 字符串输入 BIND 区域文件的正确方法是什么?](https://linux22.com/image/753676/%E5%B0%86%20DKIM%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%BE%93%E5%85%A5%20BIND%20%E5%8C%BA%E5%9F%9F%E6%96%87%E4%BB%B6%E7%9A%84%E6%AD%A3%E7%A1%AE%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我使用 Ubuntu 16.04 LTS。在将 DKIM 字符串(那段长代码)输入 BIND 的区域文件时,我又遇到了这个烦人的问题。过去(对于不同的域),我曾经通过首先将字符串从 OpenDKIM 的 mail.txt 文件复制到 NotepadQQ(它是 Notepad++ 的 Linux 版本)来绕过该问题。在记事本中,字符串不会自行分解成几部分,我只需将其粘贴到区域文件中,DKIM 就可以正常工作(现在仍然正常工作!)。
但最近我有了一个新域名,我正在尝试为其设置电子邮件。所以我们又来了。同样的故事,但我的解决方法这次不起作用。不过我确实注意到,在这个我现在尝试输入的字符串中(与我之前的字符串不同)也有几个斜线...不知道这有什么区别...我在网上看到了一些解决方案(比如用引号分隔字符串),但坦率地说,我不明白如何在现实生活中实现它...这是新的字符串(不起作用)。这是拆分后开始工作的字符串。我还包含了选择器和所有其余部分以使图片完整:
mail._domainkey IN TXT "v=DKIM1; k=rsa;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3611SadfrxRDAgOQXaNLnde9/vsuSdeL4a5uy+JcxkCsgfjRiVlD9uwZBD+KgG2SkDdZ6+OVndZk3YuOpzmSmzwQz5VXLH5Nh/o2Z3oZnn/zqWtp+eyMaKR1jnznxPNT6/DPvOEWxbNybbNtYlWdHl5qHrzF7BUQdTVV8jGFxrwIDAQAB"
以下是我的旧域名中的完整工作示例(未拆分的字符串):
mail._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDfc9WdF2XaWAFSmhJkjPMcvHT54NiK7puywuaDMQ1jsNTp6wP2tujO1Fp2jzT5aMJOK4CWrOmu4dAg2jZ82CUzghMcIy0p1uN9ZpHfsaDbYMUekN6CkuwIWvcCxrRPJQoyAMnw7IU1QFpRIwzpGLomzNY9KeDZCBGkxH1lYXcacQIDAQAB"
答案1
有一件事很难说出你的情况到底发生了什么,那就是问题只包括记录数据的尾部(包括尾随的"
),但数据的开头全部丢失了:
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3611SadfrxRDAgOQXaNLnde9/vsuSdeL4a5uy+JcxkCsgfjRiVlD9uwZBD+KgG2SkDdZ6+OVndZk3YuOpzmSmzwQz5VXLH5Nh/o2Z3oZnn/zqWtp+eyMaKR1jnznxPNT6/DPvOEWxbNybbNtYlWdHl5qHrzF7BUQdTVV8jGFxrwIDAQAB"
完整的 DKIM 数据应如下所示:
v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3611SadfrxRDAgOQXaNLnde9/vsuSdeL4a5uy+JcxkCsgfjRiVlD9uwZBD+KgG2SkDdZ6+OVndZk3YuOpzmSmzwQz5VXLH5Nh/o2Z3oZnn/zqWtp+eyMaKR1jnznxPNT6/DPvOEWxbNybbNtYlWdHl5qHrzF7BUQdTVV8jGFxrwIDAQAB
由于上述数据只有 234 字节(小于 255 字节的限制*),您可以简单地将其写为TXT
这样的记录:
foo._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3611SadfrxRDAgOQXaNLnde9/vsuSdeL4a5uy+JcxkCsgfjRiVlD9uwZBD+KgG2SkDdZ6+OVndZk3YuOpzmSmzwQz5VXLH5Nh/o2Z3oZnn/zqWtp+eyMaKR1jnznxPNT6/DPvOEWxbNybbNtYlWdHl5qHrzF7BUQdTVV8jGFxrwIDAQAB"
由于问题中数据的开头被截断,因此很难判断您的 DKIM 数据中是否有其他参数(除了v
、k
和 之外p
),或者只是参数之间嵌入了多余的空格,这可以解释您尝试放入记录中的值TXT
最终可能大于 255 个字节。
但是如果你有例如(或更长的密钥,这是更常见的情况):
v=DKIM1; k=rsa; n=blablablablablabla; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3611SadfrxRDAgOQXaNLnde9/vsuSdeL4a5uy+JcxkCsgfjRiVlD9uwZBD+KgG2SkDdZ6+OVndZk3YuOpzmSmzwQz5VXLH5Nh/o2Z3oZnn/zqWtp+eyMaKR1jnznxPNT6/DPvOEWxbNybbNtYlWdHl5qHrzF7BUQdTVV8jGFxrwIDAQAB
您需要将其拆分,以便每个字符串≤255 个字节,例如像这样:
foo._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; n=blablablablablabla; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3611SadfrxRDAgOQXaNLnde9/vsuSdeL4a5uy+JcxkCsgfjRiVlD9uwZBD+KgG2SkDdZ6+OVndZk3YuOpzmSmzwQz5VXLH5Nh/o2Z3oZnn/zqWtp+eyMaKR1jnznxPNT6/DPvOEWxbNybbNtYlWdHl5qHrzF7BUQdTVV8jGFxrwIDAQA" "B"
*) 之所以有文章提到拆分字符串,是因为记录的字符串值TXT
具有最大长度为 255 字节, 然而单个TXT
记录可以有多个这样的值(每个最多 255 个字节)。
DKIM 规范规定,只需将较长的值拆分为多个字符串即可DKIM 客户端在解释 DKIM 数据之前连接多个字符串。
理清了所有这些背景知识后,从您的问题中无法清楚地看出您的值实际上是否足够长以至于不会成为任何问题(本质上,您的 DKIM 密钥太短,因此不会成为明显的问题)。
答案2
好的,有人通过这种方式帮助我解决了这个问题(只有上帝知道,但它确实有效!)
p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3611Sad" "frxRDAgOQXaNLnde9/vsuSdeL4a5uy+JcxkCsgfjRiVlD" "9uwZBD+KgG2SkDdZ6+OVndZk3YuOpzmSmzwQz5VXLH5Nh/o2Z3oZnn/zqWtp+eyMaKR1jnznxPNT6/DPvOEWxbNybbNtYlWdHl5qHrzF7BUQdTVV8jGFxrwIDAQAB"