Windows Server 2019 内置 SMTP 服务器:电子邮件卡在队列中,事件日志中显示“远程服务器未响应连接尝试”

MrF*_*ika 6 windows smtp

我正在使用 Windows Server 2019 设置新的专用服务器。它正在替换基于 Windows Server 2008 R2 的旧服务器。我已经在旧服务器上运行了内置 SMTP 服务器,没有任何问题。我已经将新服务器设置为充当 SMTP 服务器,使用我自己设置旧服务器时的笔记,以及在线仔细检查说明。基本上按照这里的说明:

http://www.vsysad.com/2017/05/install-and-configure-smtp-server-on-windows-server-2016/

我遇到的问题是电子邮件不会离开 C:\inetpub\mailroot\Queue 并且永远不会到达收件人。Windows 事件日志包含以下警告:

事件 4006,smtpsvc
“由于以下原因,向主机 '204.79.197.212' 传送消息时失败,原因如下:远程服务器未响应连接尝试。”

以上只是使用 Hotmail 目标地址的示例。尝试发送到其他域上的地址时会收到相同类型的消息。

我试过的:

  1. 我已使用 Telnet 手动发送电子邮件。电子邮件由本地 SMTP 服务器创建和接收,没有问题,但不会离开队列文件夹。
  2. 我已经针对 Hotmail 和 Gmail 地址运行了 SmtpDiag。没有问题。MX 记录按预期列出。
  3. 我使用了 Nslookup 并确认 MX 记录已解决。
  4. 我已使用 Telnet 成功连接到 Hotmail 和 Gmail SMTP 服务器。
  5. 我使用过 Wireshark 并且能够看到我的服务器只尝试访问目标电子邮件地址域的 IP 地址,在端口 25。因此,对于 Hotmail,它只是解析 hotmail.com 的 IP 地址(这是204.79.197.212) 并尝试在端口 25 打开到该地址的连接。这显然失败了,因为那里没有 SMTP 服务器。我的服务器甚至从未尝试访问 MX 记录中指定地址的 SMTP 服务器。

上面的最后一项还与我注意到的一件有趣的事情有关,即事件 4006 消息中列出的 IP 地址不是 MX 记录中列出的 IP 地址之一。它是实际 hotmail.com 域的 IP 地址。那么,为什么它会尝试联系 hotmail.com 而不是 MX 记录中列出的地址之一?

为了进一步调查,我使用 Telnet 发送到我自己域中的电子邮件。果然,我在日志中发现了一个 4006 事件说:

“由于以下原因,向主机“[我的域的 IP]”传送消息时,向远程域“[我的域]”传送失败:连接已被远程主机断开。”

SMTP 服务器似乎再次尝试连接到我域的 IP 和端口 25,而不是连接到 MX 记录中指定的地址。

到此为止。也许我在这里误解了一些东西,但看起来 Windows 的 SMTP 服务器正试图直接在端口 25 上连接到电子邮件地址的域(忽略 MX 记录)......关于我可能做错了什么的任何想法或者我应该如何解决这个问题?

编辑:找到了解决方法以及触发问题的原因。看我下面的回答。

MrF*_*ika 5

我一直在调查这个问题,现在认为它是 Windows Server 2019 中的一个错误。事实上,我已经找到了一个解决方法,以及如何 100% 确定地重现这个问题。

如果 SMTP 服务启动类型设置为“自动”(即启动时立即启动),邮件将无法正确发送。但是,如果 SMTP 服务设置为手动启动,然后从 services.msc 或从 IIS6 管理器手动启动,则电子邮件将离开队列并传递给收件人。

如果该服务使用“自动”启动,则任何发送电子邮件的尝试都将始终导致电子邮件卡在队列中,并且将事件 4006(有关详细信息,请参阅初始帖子)写入事件日志.这在我的测试中是 100% 可重现的。

解决方法是将启动类型设置为“自动(延迟启动)”。如果我被正确通知,这将导致 SMTP 服务在最后一个“自动”服务启动后 2 分钟启动。这不是最佳解决方案,但暂时可以。

为了完整起见,以下是重现问题的分步说明:

  1. 安装 SMTP 服务器功能
  2. 转到 IIS6 管理器,右键单击 SMTP 虚拟服务器,然后单击“属性”
  3. 转到“访问”选项卡
  4. 单击“连接...”,选择“仅下面的列表”并添加 127.0.0.1。单击“确定”。
  5. 单击“中继...”,选择“仅下面的列表”并添加 127.0.0.1。取消选中窗口底部的复选框。单击“确定”。
  6. 再次单击“确定”退出 SMTP 虚拟服务器属性。
  7. 打开 services.msc 并将“简单邮件传输协议 (SMTP)”服务启动类型设置为“自动”
  8. 重新启动计算机并尝试发送电子邮件

注意:重现该问题可能不需要步骤 2 到 6,但这是我一直在使用的基本设置。