You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用python-dns库查询DNS返回NoAnswer错误的求助

解决python-dns查询MX记录时的NoAnswer错误

嘿,我来帮你搞清楚这个问题!

首先咱们拆解下问题本质:你遇到的dns.resolver.NoAnswer错误,是因为你查询的域名mail1.avem-groupe.com根本没有MX记录,和DNS服务器无关。

为什么dig能查到结果但python-dns报错?

你用dig mail1.avem-groupe.com查询的是默认的A记录(主机地址记录),这个域名确实有A记录(返回了31.172.163.202),但当你用python-dns指定查询MX类型时,DNS服务器返回的响应里没有对应的MX记录,所以触发了NoAnswer异常。

你可以自己用dig验证MX记录的情况:

dig mail1.avem-groupe.com MX

执行后你会发现ANSWER SECTION是空的,这就证明该域名确实没有MX记录。

正确的解决方式

MX记录是用来指定**整个域名(比如avem-groupe.com)**的邮件接收服务器,而不是单个主机(比如mail1.avem-groupe.com)。如果你想获取这个域名的MX记录,应该查询主域名:

import dns.resolver

my_resolver = dns.resolver.Resolver()
my_resolver.nameservers = ['8.8.8.8']

# 查询主域名的MX记录,这才是正确的姿势
try:
    answer = my_resolver.query('avem-groupe.com', 'MX')
    for rdata in answer:
        print(f"邮件服务器: {rdata.exchange},优先级: {rdata.preference}")
except dns.resolver.NoAnswer:
    print("该域名没有MX记录")

额外说明

如果你的需求是确认mail1.avem-groupe.com是否可以作为邮件服务器,那应该检查它的A记录或者反向PTR记录,而不是MX记录——MX记录的作用是告诉外界“给这个域名发邮件应该找哪个服务器”,它是绑定在域名层面的,不是单个主机。

内容的提问来源于stack exchange,提问作者steackfrite

火山引擎 最新活动