当前位置: 首页 > 知识库问答 >
问题:

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

张鸿宝
2023-03-14

这里有一段代码演示了一个案例,其中用于处理DNS的Java标准扩展无法正确查找特定域的MX记录,而挖掘实用程序这样做没有问题。我已经在不同的机器、网络和操作系统(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 +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)

共有1个答案

袁高峰
2023-03-14

designercakesbyapril.com 配置不正确。

请求使用CNAME记录回复,该记录在那里无效,因为在apex。因此,您将获得不稳定的行为,问题不在于您的程序,而在于需要修复的此域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个警告)。

 类似资料:
  • 查找特定记录并更新

  • 问题内容: 我有以下数据: 对于每组记录(按ParentID分组),我想查找所有没有包含“ A”作为数据值的记录的组。 由于第1组和第6组确实包含至少一个以“ A”作为数据值的记录,因此我不希望看到它们。我只想查看记录4和5(它们是组4的一部分),因为该组中没有记录带有“ A”。 任何帮助是极大的赞赏! 问题答案: 如果表很大,建议建立索引。

  • 在下面的java代码中,我正在进行DNS SRV记录查找,以解析给定域名的目标域名和相关端口,例如root@1000000000.blubluzone.com.用/HERE/below表示的查找函数以某种方式返回null,我无法获得查询结果(即记录数组为null)。因此,当在for循环中访问记录数组时,将引发空指针异常。 你认为我缺少什么来让下面的代码工作。我正在使用dnsjava,相关的API

  • 我已经用实现了一个Kafka消费者。我的使用者应该使用事件,然后为每个事件向其他服务发送REST请求。只有当REST服务关闭时,我才想重试。否则,我可以忽略失败的事件。 我的容器工厂配置如下: 我使用来设置异常和相应的重试策略。 如果我有机会了解中的哪个记录失败了,那么我将创建的自定义实现,以检查失败的消息是否可重试(通过使用字段)。如果它是不可重试的,那么我将从列表中删除它以重新查找。 关于如何

  • find 查找匹配标准的记录,可以链式查询(见下文): Person.find({status:'active'}, function(err, results) { // ... }); 你也可以限制结果的个数,这条语句限制结果为10个: Person.find({status:'active'}, 10, function(err, results) { // ... }); Pers

  • 我正在使用log4j进行日志记录。我有一个场景,我必须为不同的严重性使用单独的日志记录。例如,对于软件包foo,我必须在控制台中打印具有严重性ERROR的消息,而我必须在日志文件中打印具有严重性WARN的消息。我如何配置我的log4j.xml相同。