如何正确拆分 DKIM txt dns 条目?

如何正确拆分 DKIM txt dns 条目?

这里有很多关于分割 DKIM txt 记录的问题,但我的 DNS 提供商只允许每个键有 255 个字符。没有像其他平台提到的所有其他问题那样花哨的方式来输入多个值。

我继续输入多个同名的 TXT 条目:

entry    type   value
[z._domainkey] [TXT] [v=DKIM1;k=rsa;...]
[z._domainkey] [TXT] [...restofkey]

它确实显示在我的查询中,但有时顺序混乱:

$ drill txt z._domainkey.example.com.
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 7181
;; flags: qr rd ra ; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0 
;; QUESTION SECTION:
;; z._domainkey.example.com.       IN      TXT

;; ANSWER SECTION:
z._domainkey.example.com.  1796    IN      TXT     "v=DKIM1;k=rsa;"
z._domainkey.example.com.  1796    IN      TXT     "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAh957KTmtf+f1GCrdVKydz2x0NDs1Cx/g/AYIlx2QcyOpXzd3DNC8saykKjfwYEIGq47UdnLQdJztINPu5QsphwSnpQiGqV28EltNp1poNNeUwSno7vrUTQI44vkD7OosCh+yLVD5AWCqxOr0l4C6kp2UuXvEc6zANPQrbOuVABm"
z._domainkey.example.com.  1796    IN      TXT     "Gf2nLFvcR4iswFC3JpLOdZr259BelASlU2WApIeDK/a8Qo096WzpFCeFtamIxZFkeHdCSmrS7zrtDrxxvXzYhXIFharkWeY5cXKzZ7vUGR14Zie9gzNzoz5NoibngkBH6dw5C70lU5ynVwx+/U+TCEKOZu1X9K/ZC5/1NrsW83QIDAQAB"

(已经尝试过从中间拆分,像 base64 通常那样以 64 字节为单位,使用在线拆分工具,将其拆分成两部分、三部分和四部分。最终结果都相同)

所有验证器(包括来自我的 MX 处理程序的验证器)都说这是无效的。

我还需要做什么来拆分这些值吗?我必须重复该p=部分还是做其他事情?DNS 客户端如何知道连接多个 TXT 条目的顺序?为什么提供拆分值的验证工具在拆分时也无法验证它们?例如https://www.mailhardener.com/tools/dns-record-splitter

所有验证器都只显示一条包含v=DKIM1;k=rsa;p=...无效 dkim 记录部分的记录,而将仅作为密钥延续的记录显示为完全不同的记录,甚至不是有效的 dkim。

例如https://dkimcore.org/c/keycheck

* v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0... (This might be a valid DKIM record)
* r259BelASlU2WApIeDK/a8Qo096WzpFCeFtam... (This doesn't look like a DKIM record)

答案1

DNS 协议级别的要求实际上非常简单,通常问题围绕各种 UI 选择(我相信这里就是这种情况)。

价值 (数据如果你愿意的话)TXTDNS记录由以下数组组成字符串价值观。每一个人字符串长度可以是 0-255 个字符。

DNS 中的 DKIM 条目需要是单个TXT记录,并且 DKIM 定义如果该TXT记录具有多个字符串值,则这些字符串值将在 DKIM 感知软件使用之前连接在一起。

来自DKIM 请求函数

TXT RR 中的字符串在使用前必须连接在一起,中间不能有空格。TXT RR 对于特定选择器名称必须是唯一的;也就是说,如果 RRset 中有多个记录,则结果不确定。

也就是说,如果您有一个较长的 DKIM 值,那么无论怎样分割它都没有区别,只要每个部分不超过 255 个字符即可。但是,所有部分都必须包含在一条TXT记录中。

至于你的具体情况,在标准化主文件格式你的例子是:

z._domainkey.example.com.  1796    IN      TXT     "v=DKIM1;k=rsa;" "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAh957KTmtf+f1GCrdVKydz2x0NDs1Cx/g/AYIlx2QcyOpXzd3DNC8saykKjfwYEIGq47UdnLQdJztINPu5QsphwSnpQiGqV28EltNp1poNNeUwSno7vrUTQI44vkD7OosCh+yLVD5AWCqxOr0l4C6kp2UuXvEc6zANPQrbOuVABm" "Gf2nLFvcR4iswFC3JpLOdZr259BelASlU2WApIeDK/a8Qo096WzpFCeFtamIxZFkeHdCSmrS7zrtDrxxvXzYhXIFharkWeY5cXKzZ7vUGR14Zie9gzNzoz5NoibngkBH6dw5C70lU5ynVwx+/U+TCEKOZu1X9K/ZC5/1NrsW83QIDAQAB"

(请注意,它是具有多个字符串值的一条记录)

如果您使用的软件/服务不接受符合以下条件的数据输入主文件格式,这很可能只是弄清楚他们期望的具体格式(手册?支持?),或者甚至可能是TXT针对该软件/服务的一些有限支持。

相关内容