プロキシの背後から外部SMTPサーバーに接続しようとしています。 fsockopenにプロキシの背後からウェブサイトを取得させる方法を考えましたが、SMTPサーバーに接続する方法は分かりませんでした。 SMTPサーバーには、TLS接続とユーザー名とパスワードの認証が必要です。fsockopenを使用してSMTPサーバーに接続すると、PHPでプロキシとして動作しません。
プロキシの背後からウェブページを取得するために必要なものは、次のコードです。
<?
$proxy_fp = fsockopen('111.111.111.111', '80');
if (!$proxy_fp) {
return false;
}
fputs($proxy_fp, "GET http://wwww.google.com HTTP/1.0\r\nHost: 111.111.111.111\r\n\r\n");
while (!feof($proxy_fp)) {
$proxy_cont .= fread($proxy_fp, 4096);
}
fclose($proxy_fp);
$proxy_cont = substr($proxy_cont, strpos($proxy_cont, "\r\n\r\n") + 4);
return $proxy_cont;
?>
ここで、プロキシをSMTPサーバーに接続させる方法を教えてください。
--- EDIT ---
<?
$s = "\r\n";
$proxy = '24.47.131.253';
$port = 8123;
$fp = fsockopen($proxy, $port);
socket_set_timeout($fp, 10, 0);
fputs($fp, "CONNECT smtp.domain.com:25 HTTP/1.0".$s.$s);
while(!feof($fp)){
$line = fgets($fp, 4000);
echo $line."\n";
}
fclose($fp);
?>
私は今、回答に基づいてこれを持っています。問題は、SMTPサーバーからの応答が得られず、空の行だけが表示されることです。誰かが私を正しい方向に向けることができますか?
はい、HTTP CONNECTメソッドを使用できます。 – arnaud576875
@ user576875:信頼性の低い - HTTPS接続の転送にCONNECTが実装されました。それを他のプロトコルに使用することはせいぜい信頼できません。 – Piskvor
これは信頼できないものではなく、SSHアクセスの場合でも魅力的です。唯一の問題は、ファイアウォールがアウトバウンドSMTP接続を受け入れるかどうかです。それはそれがうまくいくかどうかを判断するためです。 – wimvds