无法连接到远程邮件服务器以在ASP.NET中发送电子邮件

我想将Web应用程序从Windows Server 2003迁移到Windows Server 2008 R2。 除了从应用程序发送电子邮件,所有的工作正常。

如果我将应用程序configuration为在“本地主机”上使用smtp服务器,但是将其更改为“真实”主机名(例如mail.example.org),则不会发送邮件。 错误消息说,远程服务器需要一个安全的连接或SMTPauthentication。 但是因为它使用“本地主机”,而不是主机名时,我怀疑这是问题。

另外它不太可能与邮件服务器的问题,我也尝试了与另一个。

所以对我来说,好像防火墙阻止了到邮件服务器的传出连接。 我试图打开端口25,但它仍然没有工作。 也许我只是做错了。


更新:为了澄清我的设置:

  • 我有一个安装了hMailServer的Windows Server 2008 R2(为某些托pipe域设置)
  • 对于我所说的网站,我需要使用外部邮件服务器(完全不同的托pipe服务提供商)

显然我有点偏离轨道。 当使用主机名“localhost”或“mail.somedomain.com”(而somedomain.com设置在我的邮件服务器上)连接到本地邮件服务器时,它似乎工作正常。 但是,当使用外部邮件服务器(“mail.externaldomain.com”)的主机名称,似乎它试图再次连接到本地服务器,虽然这个域没有设置在邮件服务器。 感谢Evan Anderson提供的使用telnet的技巧 – 为什么我自己没有想到呢?:-)

请注意,网站www.externaldomain.com是托pipe在我的服务器上,但DNS条目由其他托pipe服务提供商维护。 “externaldomain.com”是唯一指向我的服务器的所有其他logging(MX,子域)指向其他服务器的条目。

所以我想现在的问题是,我如何把我的服务器连接到外部邮件服务器。 我必须在我的邮件服务器configuration这是否是一个Windows服务器的东西?

嗅探stream量(使用Wireshark或Microsoftnetworking监视器 ),看看发生了什么。 您可能会收集是否与邮件服务器的TCP连接正在使用netstat -a -n 1 | find ":25" 当你试图发送电子邮件时, netstat -a -n 1 | find ":25"在你的服务器上的一个窗口中运行,但我会去嗅探器的路线,并把它放在床上。

它极有可能是SMTP服务器需要身份validation。 你应该用TELNET“手动”运行一个SMTP事务,看看发生了什么。 (您真的应该知道如何通过TELNET执行SMTP传输 ……)从服务器执行此操作将会带来certificateWindows防火墙不阻止外部SMTP连接尝试的额外好处。

看看电线上的交通情况,find问题的根本,而不是用棍子戳。

如果这是一个防火墙,你不会得到你得到的错误信息。 连接尝试正在进行,这只是不成功。 旧的W2K3服务器如何configuration发送电子邮件到电子邮件服务器? W2K3服务器是否在电子邮件服务器上的“允许中继”列表中? 如果是这样,那么你还需要添加W2K8服务器。 检查W2K3服务器的configuration以进行authentication设置等,并将W2K8服务器上的设置设置为匹配。

我终于解决了这个问题……防火墙,IIS和邮件服务器都没有引起错误。 我的托pipe服务提供商DNS中有一些超级用户条目。 这导致应用程序尝试连接到本地邮件服务器而不是远程邮件服务器。 删除错误的DNS条目后,所有工作正确。

问题是,我的域的DNS条目由另一个托pipe服务提供商维护,但由于在我的提供商DNS也是这个域的条目,他们有我的Web服务器的优先级。

所以,如果遇到类似的问题,总是想到ping远程主机似乎不工作。 并且不要忘记在更正DNS条目(在命令提示符下键入“ipconfig / flushdns”)后刷新服务器的DNScaching,