2016-03-24 19 views
1

私はポート25でTLS接続を確立するためにphpmailerを使用しています。 私はユーザー名とパスワードを使用できませんので、匿名接続です。PHPMailerと匿名のTLS接続

サーバーは次のように応答します

250-SIZE 
             250-PIPELINING 
             250-DSN 
             250-ENHANCEDSTATUSCODES 
             250-XXXXXXXA 
             250-XXXXXXXXXXXXXB 
             250-AUTH NTLM 
             250-XXXXXXXXXXXXXXXXXC 
             250-8BITMIME 
             250-BINARYMIME 
             250-XXXXXXXD 
             250-XXXXXXE 
             250-XXXXF 
             250 XXXXXXG 

STARTTLSコマンドがphpmailerので送信されると、サーバーが応答:だから明らかに、匿名TLSはによって提供されていない

CLIENT -> SERVER: STARTTLS 
SERVER -> CLIENT: 500 5.3.3 Unrecognized command 
SMTP ERROR: STARTTLS command failed: 500 5.3.3 Unrecognized command 

サーバ。 奇妙なことは、私がtelnetでサーバに接続している場合、それが動作しているということです。

これはphpmailerの問題ですか?または単にサーバーのいくつかの奇妙な動作ですか?

答えて

2

STARTTLSを宣伝していない場合、動作しそうもありません。同じサーバーにtelnetで接続していますか?あなたはそれを手動でテストしたい場合は、telnetのではなく、opensslのs_clientコマンドを使用する必要があり、

var_dump($mail->getSMTPInstance()->getServerExtList()); 

openssl s_client -connect mail.example.com:25 -starttls smtp 
これは、送信後phpmailerのがこれを呼び出すことによって、見ているサーバー機能の配列を取得することが可能です

これは、技術的な詳細が表示されます。

PHPMailerは、とにかく便宜的なTLSを行います。サーバがSTARTTLSを宣伝していると見なした場合、SMTPSecure = trueを設定しなくても自動的に暗号化が有効になります。

+0

あなたの答えをありがとう。私がtelnet経由で接続しているサーバは、phpmailer経由で使用しているサーバと同じでなければなりません。それにもかかわらず、あなたが提案したようにopensslを使用したとき、私は証明書の問題があることを知りました。証明書は、私が接続しているサーバーとは別のサーバーで発行されます(別の方法で通信されたものの)。私は今これを解決しようとしているし、それが後に動作することを願っています。 – Swissdude