我在尝试通过内部SMTP服务器发送电子邮件时收到“Mail Enabled Sub-domain check failed”消息。
我在VS2013开发环境中使用SMTP客户端库。我继承了代码,并且由于实际配置中包含的机密信息,遗憾的是我无权发布它;但我可以肯定SMTP客户端的设置是正确的,只要它不需要机密数据,我可以提供任何其他信息,如果它有助于回答问题。
在过去的配置中,我总是通过在SMTPClient类实例化中提供主机和端口信息,直接对具体命名的SMTP服务器进行身份验证。
这种情况有所不同,因为我被告知应用程序运行的其他服务器(Web服务器)之一;实际上是作为SMTP客户端连接的SMTP主机传递。
但实际上,我认为它在技术上可以作为中继服务器运行,因为它不是SMTP服务器。
消息通过弹出对话框从客户端提交给我们的内部员工,允许他们输入消息并单击提交。邮件将被发送到内部电子邮件地址,并发送给发件人。
调试程序后,客户端的Send()方法不会抛出任何错误。
我已经对此进行了测试,但邮件必须在SMTP服务器上,因为我收到了一封电子邮件;但是,而不是接收我通过应用程序提交的测试消息;我收到一条消息,说“交付给以下收件人失败了。”我的电子邮件地址以及发送邮件的电子邮件地址。
在邮件末尾显示“已启用邮件子域检查失败”
我在网上搜索了此消息,但没有点击,因此它可能是仅在我们的组织内生成的消息;或者之前没有人发布过这个问题。
在任何一种情况下,任何人都可以提供任何有关此消息可能含义的见解吗?我在服务器上的系统或应用程序事件日志中没有收到任何错误。也许我需要检查一些其他区域以确保Web服务器已正确配置为用作SMTP中继服务器?我不熟悉以这种方式配置Web服务器。
此时我无法找到线索。
答案 0 :(得分:0)
我发布这个答案,因为它与我们的特殊情况有关。我相当肯定这条消息可能有些错误;因此可能存在可以生成错误的其他场景。
如前所述,我们的应用程序使用的SMTP主机地址实际上是运行应用程序的Web服务器的主机地址。 Web服务器也配置为SMTP中继服务器,这意味着通过应用程序发送的任何邮件请求都使用本地主机将邮件中继到实际的SMTP Exchange Server。
经过数小时的故障排除以查找错误原因后,发现服务器名称的格式不正确,无法利用SMTP中继系统。
例如,使用的主机名格式为: machinenameCNameAlias.subdomain.domain.com
应该是什么时候 actualMachineName.subdomain.domain.com
换句话说,使用SMTP中继服务器时,使用CNAME别名无效。 (至少在我们的配置中)
将CNAME别名替换为服务器的实际名称后,错误就解决了。
我显然不是交易所或其配置柜台部分的任何方面的专家;但在使用关键字在线搜索后," CNames和SMTP中继服务器&#34 ;;我找到了其他潜在的参考资料;也许推断使用类似的配置类型不鼓励使用CNAME别名。
如果其他人能够肯定这些意见,那就太棒了。
但至于最初发布问题的特定情况,这就是我们的答案。