我的公司正在租用很多IP。我們的客戶主要是郵寄者。在IP租約後,有時它們會讓IP無法使用,因爲IP在Yahoo,Gmail,AOL等某些提供商處被阻止。使用PHP和telnet的SMTP服務器可用性
目前,我們通過綁定IP並運行來自CentOS系統的telnet
命令像這樣的:
telnet -b $IP smtp.gmail.com 25
,並得到輸出,如果是220 OK,或者其他什麼東西,將表明,IP是不是dirty
。
我在找的是一個PHP腳本,或者第一個想法是如何實現的。 基本上,我們會綁定IP的,PHP會檢查連接的輸出並寫入一個csv文件。
我在過去做過大量的PHP項目,但沒有什麼相似之處。任何想法從哪裏開始? 感謝您的建議。
編輯
由於我的調查,我能夠做這樣的事,
$eol= system("nc -4 -w 2 -s $Binded_IP smtp.gmail.com 25", $output);
var_dump($output);
,並得到這樣的輸出:
-bash-4.2$ php script.php
220 smtp.gmail.com ESMTP 13sm2795405wml.25 - gsmtp
我試圖用netcat
代替遠程登錄。這是自變量,對那些誰不熟悉netcat的含義:
-4 to bind only IPv4
-s Source IP to bind to
-w 2 Timeout
但問題是我無法找到一個方法來關閉連接,它只是掛出,並保持開放。如果我找到一種方法來關閉連接,我可以在文件中存儲$輸出,過濾SMTP狀態碼,並繼續使用第二個IP並檢查它。
難道你不能只通過PHP的exec()運行這個?或者,也許更好,只需要在文本文件或其他東西中運行IP地址的bash腳本? – junkfoodjunkie
@junkfoodjunkie是的,我認爲bash也是如此,但得到了stucked如何終止並獲得現有連接的輸出 – fugitive
此腳本在這裏應該有助於http://stackoverflow.com/questions/3675897/how-to-check-by- php-if-my-script-is-connecting-to-smtp-server – unixmiah