Java 查找特定域的 MX 记录失败

Java failure in looking up the MX record for specific domain

这里有一段代码演示了 Java 使用 DNS 的标准扩展无法正确查找特定域的 MX 记录的情况,而 dig 实用程序没有问题这样做。我已经在不同的机器、网络和操作系统(AWS Ubuntu、Linode CentOS、本地 Windows)上复制了它。

import javax.naming.directory.InitialDirContext;
import javax.naming.directory.Attributes;
import javax.naming.NamingException;

public class Main
{
    public static void main(String[] args) throws NamingException {
        String domain = "designercakesbyapril.com";
        InitialDirContext ctx = new InitialDirContext();
        Attributes attributes = ctx.getAttributes("dns:/" + domain, new String[]{"MX"});
        System.out.println(attributes);
        
        // outputs "No attributes"
    }
}

同时,这里是 dig:

dig +short MX designercakesbyapril.com
traff-1.hugedomains.com.
hdr-nlb9-41371129e8304c29.elb.us-east-1.amazonaws.com.

可能是什么问题?我有兴趣从 Java.

中可靠地查找 MX 记录

环境:

openjdk 11.0.14.1 2022-02-08 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.14.1+1-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.14.1+1-LTS, mixed mode, sharing)

designercakesbyapril.com 配置不正确。

请求回复 CNAME 记录,该记录无效,因为在顶点。 因此你会得到不稳定的行为,问题不在你的程序中,而是在这个需要修复的域 DNS 配置中。

$ dig MX designercakesbyapril.com +noall +ans
designercakesbyapril.com. 3h IN CNAME traff-1.hugedomains.com.
traff-1.hugedomains.com. 28s IN CNAME hdr-nlb9-41371129e8304c29.elb.us-east-1.amazonaws.com.

(并注意它是如何失败的,因为姓氏也没有 MX 记录)

您可以在 https://dnsviz.net/d/designercakesbyapril.com/YjpWYQ/dnssec/(在线 DNS 故障排除工具)上查看此域名的损坏程度(15 个错误,6 个警告)。