无法远程登录到端口 25 上的 SMTP 服务器,但 PHP mail() 可以工作


Can't Telnet to SMTP server on port 25 but PHP mail() works

没有找到这个问题的答案:VMWare虚拟机内部的PHP mail()函数(Win7)

我决定尝试一些新的东西。我在一台机器上设置了SMTP中继。我可以使用它并在其假脱机目录中接收邮件。但是,当我尝试将其设置为将邮件转发到已配置的SMTP服务器(称为"邮件",位于端口25)时,它失败了。

Telnet 在端口 25 上也失败,所以它不起作用似乎是正常的 - "连接被拒绝"是来自 telnet 的错误。

但真正奇怪的是,如果我在这台机器上设置一个 Apache/PHP 服务器并使用 PHP 的邮件功能(配置为在端口 25 连接到"mail"),它就可以工作了!我可以从PHP发送电子邮件(我不需要),但我不能远程登录到机器。

有人见过这样的东西吗?快把我逼疯了!

提前致谢

您是否检查过防火墙设置? 如果您的防火墙不允许从外部地址连接到端口 25,但允许本地连接到端口 25,那么这就解释了为什么 PHP 可以很好地使用它,但你不能从外部连接。

您是否尝试使用"邮件"的IP地址而不是主机名。

Win 7 上的网络设备默认使用 ipv4 ipv6。如果在打开连接(即启动telnet)时指定计算机名(而不是计算机的DNS条目),则"邮件"可能会随机解析为该计算机的ipv4或ipv6地址(或多或少)。如果您的邮件服务器只侦听 ipv4 地址,则在解析"邮件"时不会获得连接。

当机器"邮件"有多个网络设备时,您可以观察到相同的问题。然后,它可以将计算机名解析为网络设备的任一地址。