我们正在运行 Exchange 2010,最近我注意到一些外发邮件卡在队列中,并出现错误“451 4.4.0 DNS 查询失败”。在每个发生这种情况的域上,我都能够使用 nslookup 查找 MX 记录并通过 SMTP 打开与其服务器的连接,因此我相当确定这个问题出在我这边。我的发送连接器没有通过智能主机路由邮件,也没有设置为使用不同的 DNS 服务器进行查找,所以我很困惑为什么这些邮件没有发出去。有什么想法吗?
答案1
4.xx 回复代码是临时代码,因此 Exchange 会继续尝试,直到重试间隔到期。您可以尝试在 Exchange 服务器上安装数据包捕获程序(Microsoft Network Monitor 就是一个很好的程序)并启动捕获并运行一段时间。您可以设置捕获过滤器以仅捕获 SMTP 和 DNS 流量,以保持较低的捕获开销。运行捕获后,向问题域之一的用户发送电子邮件或等待当前排队的电子邮件重试(或强制重试)并查看捕获中显示的内容,首先键入 DNS 流量以查看问题是否得到正确解决,然后继续查看 SMTP 流量以寻找正在发生的事情的线索。
答案2
Exchange 2010 似乎总是在查询 IPv4 地址之前查询邮件服务器的 IPv6 地址。假设 DNS 服务器具有域名的 IPv4 地址,但没有 IPv6 地址。当该 DNS 服务器收到对域名 IPv6 地址的请求时,它应该发送一个包含零个地址的成功响应。如果您在这样的域上运行 nslookup,如下所示:
nslookup -type=aaaa mail.foo.com
你应该看到响应:
*** No IPv6 address (AAAA) records available for mail.foo.com
Exchange 似乎将此回复视为“我没有该域的任何 IPv6 地址,但是您可以让我了解一个 IPv4 地址吗?”
至少有一次我收到您描述的 451 错误,我从 nslookup 得到了如下响应:
*** ns.mynameserver.com can't find mail.foo.com: Query refused
如果您看到这种情况,唯一真正的解决办法是联系域管理员并要求他们更改其 DNS 服务器的行为。他们可能会完全过滤掉 IPv6 查询,这似乎是个坏主意。
我建议您直接告诉 Exchange 2010 停止询问邮件服务器的 IPv6 地址,但尽管在 Google 上搜索了很多,我还是不知道这是否可行。
答案3
我刚刚遇到了 Exchange 2007 服务器的这个问题,但是所有电子邮件都正在排队。
为了解决这个问题,我将发送连接器网络属性修改为“使用域名系统...”和“使用外部 DNS 查找...”
(Org Config, Hub Transport, Send Connectors tab, right click send connector having issue.)
此外,我还将外部 DNS 服务器添加到外部 DNS 查找中。
(Server Config, Hub Transport, right click the hub server, properties, External DNS Lookup tab, Use these DNS Servers...)
服务器能够解析 MX 记录并且队列开始处理。