[英]Can't Telnet to SMTP server on port 25 but PHP mail() works
[英]SMTP server availability with PHP and telnet
我的公司正在租用大量的IP。 我們的客戶主要是郵件。 租用IP后,有時它們使IP不可用,因為IP被某些提供商(例如Yahoo,Gmail,AOL等)阻止了。
目前,我們通過綁定IP並從CentOS系統運行telnet
命令來進行簡單檢查,如下所示:
telnet -b $IP smtp.gmail.com 25
並獲取輸出,如果可以,則為220,或者其他表明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
代替telnet。 對於不熟悉netcat的人來說,這就是參數的含義:
-4 to bind only IPv4
-s Source IP to bind to
-w 2 Timeout
但是問題是我找不到關閉該連接的方法,它只是掛出並保持打開狀態。 如果我找到關閉該連接的方法,則可以將$ output存儲在文件中,過濾SMTP狀態代碼,然后繼續使用第二個IP進行檢查。
您可以使用以下腳本檢查服務器是否存在連接。
$f = fsockopen('smtp smtp.gmail.com', 25) ;
if ($f !== false) {
$res = fread($f, 1024) ;
if (strlen($res) > 0 && strpos($res, '220') === 0) {
echo "Success!" ;
}
else {
echo "Error: " . $res ;
}
}
fclose($f) ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.