2017-04-11 11 views
0

私の会社はたくさんのIPを借りています。そして私たちのクライアントは主にメーラです。 IPリースの後、Yahoo、Gmail、AOLなどの特定のプロバイダでIPがブロックされることがあるため、IPを使用できなくなることがあります。PHPとtelnetを使用したSMTPサーバーの入手

現在、私たちはCentOSシステムからIPをバインドしてtelnetコマンドを実行することにより、このような:

telnet -b $IP smtp.gmail.com 25 

そして、それはOK、220、またはIPがdirtyではないことを示すことになる何か他のものであれば、出力を取得します。

私が探しているのは、PHPスクリプト、またはこれがどのようにできるかというアイデアです。 基本的に、私たちはIPをバインドし、PHPは接続の出力をチェックし、例えばcsvファイルに書き出します。

私は過去に多くのPHPプロジェクトを行ってきましたが、それに似ていません。どこから始めたらいいですか? ありがとうございます。

EDIT

私の調査により、私は、このような何かを

$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。

-4 to bind only IPv4 
-s Source IP to bind to 
-w 2 Timeout 

しかし、問題は、私はその接続をクローズする方法を見つけることができないで、それだけでたむろし、開いたままに:これはnetcatをに慣れていない人に、引数の意味です。接続を閉じる方法が見つかった場合は、$出力をファイルに保存し、SMTPステータスコードをフィルタリングし、2番目のIPを継続してチェックすることができます。

+0

これはPHPのexec()で実行できませんか?あるいは、おそらくもっと良いのですが、テキストファイルなどでIPを通るbashスクリプトを実行するだけです。 – junkfoodjunkie

+0

@junkfoodjunkieはい、私はbashも考慮しましたが、終了して既存の接続の出力を取得する方法を固執しました – fugitive

+0

このスクリプトはここに役立ちますhttp://stackoverflow.com/questions/3675897/how-to-check-by- php-if-my-script-smtp-server-to-smtp-server – unixmiah

答えて

0

次のスクリプトを使用して、サーバーへの接続があるかどうかを確認できます。

$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) ; 
+0

はい、ただし、バインドされたものではなくメインのIP経由でリクエストを送信します。 F.e.サーバーのメインIPは '192.168.1.1'で、' 10.0.0.0/24'サブネットをテストしたいと思います。だから私は '10.0.0.0/24を私のインターフェースにバインドし、それらのIPをリクエストに使うつもりです。私はちょうど例を挙げました。 – fugitive

+0

これを試して、私はこれが役に立つと思ったhttp://demo.phpipam.net/login/ https://github.com/phpipam/phpipam – unixmiah

関連する問題