我有一个网站 example.com,运行在装有 IIS 7 和“IIS 6”SMTP 服务的 Windows 2008 服务器上。该网站定期向[电子邮件保护]。
在极少数情况下,example.com 的 MX 记录查找会失败,因此 SMTP 服务会回退到 A 记录,我理解这是预期行为。然而,这并非期望行为,因为 example.com 的邮件服务器位于不同的机器上,所以偶尔的电子邮件会被退回。
预防这种情况的最佳方法是什么?
编辑:我的 DNS 设置如下:
A - example.com -> 11.22.33.44
A - mail.example.com -> 55.66.77.88
CNAME - www.example.com -> example.com
MX - example.com -> server-a.outside-spam-filter-service.com
MX - example.com -> server-b.outside-spam-filter-service.com
MX - example.com -> server-c.outside-spam-filter-service.com
MX - example.com -> server-d.outside-spam-filter-service.com
我没有在本地机器上运行 DNS 服务器。机器设置为使用我们的托管提供商 (PEER1) 的 DNS 服务器。
编辑2,故障排除问题的答案:
1. Web 服务器是 AD 域的一部分吗?
该服务器不是域的一部分。
2. Web 服务器上的 smtp 服务是否配置为接受 example.com 的电子邮件?如果已配置,并且未配置为中继电子邮件,它将尝试在本地传递邮件,而不是查找 MX 记录,这可能会与返回“A”混淆。
SMTP 服务配置为接受所有本地 SMTP 连接,并配置为中继所有电子邮件。(此外,如果它不是配置为中继,它不会反弹吗全部电子邮件而不是仅仅一些?)
3. ... 检查 Web 服务器正在使用的 DNS 服务器,并从 Web 服务器运行查询以检查 example.com 的 mx 记录,并确保它返回正确的信息....
我使用列为主 NIC 的 DNS 服务器的两个服务器执行了命令行 nslookup。MX 记录按预期返回。
答案1
仅当不存在 mx 记录时才应传递 A 记录。如果存在 mx 记录但服务器未应答或 4xx 邮件,则发送服务器应将邮件排队并重试。如果 MX 未应答,然后发送服务器尝试 A 记录,则在我看来,该服务器已损坏。
编辑-..故障排除步骤--
由于它只发生在网络服务器本身上,所以这里有一些需要注意的地方。
- Web 服务器是 AD 域的一部分吗?AD 域与外部域名相同吗?如果它们使用相同的域名 (example.com),则内部 AD 将覆盖外部 DNS 服务器,您需要确保您的内部 AD DNS 具有正确的 MX 记录。
- Web 服务器上的 SMTP 服务是否配置为接受 example.com 的电子邮件?如果已配置,并且未配置为中继电子邮件,它将尝试在本地传递邮件,而不是查找 MX 记录,这可能会与返回“A”混淆。
Web 服务器配置为使用哪些 DNS 服务器?检查 Web 服务器正在使用的 DNS 服务器,并从 Web 服务器运行查询以检查 example.com 的 MX 记录,并确保它返回正确的信息。从 Web 服务器执行以下操作。还要查看 Web 服务器的配置,并针对列为其本地 DNS 服务器的每个服务器(而不是托管公司的外部服务器)进行尝试。
nslookup > set type="mx" > example.com
答案2
您必须修复盒子上的 DNS 解析器。即使有两个或更多 MX 记录,您仍会收到退回邮件,因为在极少数情况下,您的盒子无法解析任何邮件。
一个不合适的解决方法是安装 Windows DNS 服务;最好将其设为 DNS 从属服务器以自动获取所有更新。为此,您可能需要在主 DNS 服务器上添加一些规则,具体取决于操作系统和 DNS 守护程序的类型。
答案3
我认为问题在于您没有 MX 所引用的主机 spam-filter.example.com 的 A 记录。
我可能错了,但我相信只有在没有 MX 记录的情况下才会回退到域 A 记录...而不是在没有 MX 引用的 A 记录的情况下,不是由于空的 MX,也不是由于 nxdomain。
答案4
因为你的意思是,你只想把你的消息发送给具体的电子邮件地址具体的服务器直接通过,你可以发送到[电子邮件保护]并配置邮件服务器以接受发送到其 IP 地址的邮件并投递到正确的邮箱。这将完全消除 DNS 查找。