簡體   English   中英

SMTP服務器與PHP和telnet的可用性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM