2012-07-14 90 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

相關問題