2012-07-14 129 views
2

我正在制作自己的SMTP服务器的项目。这非常有效,但存在一些问题。当服务器和请求是本地服务器时,侦听SMTP工作,但是如果从远程服务器请求失败,则它会失败

当我在我的开发机器上运行我的SMTP服务器,并有一个PHP脚本从本地计算机发送到本地smtp服务器的电子邮件或telnet它工作正常,我的程序收到SMTP消息,并发送相关的响应。

我然后将程序复制到服务器上并运行我的smtp服务器,当我从服务器telnet到本地smtp服务器,即telnet localhost 25它的工作原理。

如果我然后尝试通过同一网络上的远程PC连接到我的smtp服务器并尝试telnet到它,我得到Connecting to 192.168.1.74 (this is the address of the server)...could not open connection to the host, on port 25: connect failed,如果我运行php脚本http://192.168.1.74/send-mail.php它会失败。

当我绑定套接字时,我尝试绑定到端口25上的127.0.0.1和192.168.1.74 smtp服务器代码,但它没有区别。

为什么这不能从远程PC连接到服务器,但本地工作正常。

感谢您提供的任何帮助。

+2

你有防火墙阻止端口25在服务器上? – arx 2012-07-14 16:10:27

+1

尝试绑定到'IPAddress.Any' – 2012-07-14 16:18:18

回答

1

找到问题所在,当我将网卡设置为静态时,我很笨,我忘了添加默认网关。现在我已经做到了,现在正按预期工作。

感谢大家的帮助和建议。

1

一对夫妇刺在黑暗中在这里,但:

  1. 服务器是否有防火墙运行?如果是这样,你有没有为端口25做适当的例外?

  2. 远程PC 真的是在同一网络(即相同的子网)?如果你有一台路由器,你必须适当地转发端口。

+0

感谢您的建议,没有运行防火墙,它定义在同一个网络上,它是一个家庭网络,因此一切都被插入到一个路由器中。另外,我不认为这会有所作为,但服务器在我的开发机器上运行在虚拟机上,我可以连接到服务器以进行其他操作 – Boardy 2012-07-14 16:16:24

+0

开发机器是否可以从外部连接到服务器虚拟机?我想知道如果开发机器没有正确转发端口25到虚拟机。 – 2012-07-14 16:20:58

+0

刚做了一个测试,我在服务器上启用了postfix,看看它是否只是我自己的smtp服务器的问题,而且我遇到了同样的问题,本地它通过本地主机工作,但是如果我从开发机器telnet到服务器它无法连接 – Boardy 2012-07-14 16:31:38

相关问题