这个问题似乎是因为opendkim没有设置伪资源记录OPT UDPSize,表明它可以处理超过512字节的响应,定义为EDNS (wiki),RFC 2671。
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)
挖掘 (EDNS)
来自dig 的相同请求正确地表明更大的响应是可以的(OPT UDPsize=4096):
33350+ [1au] TXT? selector1._domainkey.outlook.com. ar: . OPT UDPsize=4096 (73)
并且 unbound 正确响应完整的 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 项目似乎已经死了,所以这个问题不太可能得到修复。