使用长dkim密钥时,opendkim错误“密钥检索失败”

时间:2019-02-09 19:27:21

标签: dns postfix-mta dkim unbound

我在opendkim中使用后缀,并看到很多以下错误:

opendkim[63]: 84D4C390048: key retrieval failed (s=selector1, d=hotmail.com):
'selector1._domainkey.hotmail.com' reply truncated

在许多不同的域中都会发生错误,但是如果使用长的dkim密钥(> 1024位),则始终会发生错误。我认为这是一个相当普遍的问题,但到目前为止找不到有用的东西。

这是我的opendkim配置问题还是在这方面opendkim刚刚被破坏?

2 个答案:

答案 0 :(得分:1)

libopendkim的res_query()调用似乎无法通过重新传输请求来处理截断。它在我的devserver上执行,因此这似乎是本地配置选项。 res_query()似乎没有强制TCP模式的方法,但是它的手册页建议您可以在/etc/resolv.conf中本地强制TCP模式。

否则,您可以通过链接到OpenDKIM支持的另一个解析程序(例如未绑定)来解决此问题。

答案 1 :(得分:0)

此问题似乎是由于以下事实造成的:opendkim没有设置伪资源记录OPT UDPSize,表明它可以处理长度超过512字节的响应,如EDNS (wiki),{{ 3}}。

Opendkim(无EDNS)

在opendkim请求的此tcpdump中可以看到:

28112+ TXT? selector1._domainkey.outlook.com. (50)

以及未绑定的响应:

28112| q: TXT? selector1._domainkey.outlook.com. 1/0/0 selector1._domainkey.outlook.com.
CNAME selector1._domainkey.outbound.protection.outlook.com. (105)

Dig(EDNS)

来自RFC 2671的相同请求正确地表明较大的响应是正确的(OPT UDPsize = 4096):

33350+ [1au] TXT? selector1._domainkey.outlook.com. ar: . OPT UDPsize=4096 (73)

未绑定并正确响应完整的TXT记录:

33350 q: TXT? selector1._domainkey.outlook.com. 2/0/1 
selector1._domainkey.outlook.com. CNAME 
selector1._domainkey.outbound.protection.outlook.com., 
selector1._domainkey.outbound.protection.outlook.com.
TXT "v=DKIM1;k=rsa;p=MIIBI[...]1913" ar: . OPT UDPsize=4096 (567)

为简洁起见,TXT记录中的DKIM密钥被截断了。

不幸的是,opendkim项目似乎已死,因此不太可能解决该问题。