2016-03-24 4 views
1

Ich verwende phpmailer, um eine TLS-Verbindung an Port 25 herzustellen. Ich kann keinen Benutzernamen/Passwort verwenden, also ist es eine anonyme Verbindung.PHPMailer und anonyme TLS-Verbindungen

Der Server antwortet mit den folgenden:

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 

Wenn der STARTTLS-Befehl von phpmailer gesendet wird, antwortet der Server:

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

So offensichtlich der anonyme TLS wird nicht von der angebotenen Server. Seltsame Sache ist, wenn ich mit dem Server über Telnet verbinden, es funktioniert.

Ist das ein phpmailer-Problem? Oder nur ein seltsames Verhalten des Servers ???

Antwort

2

Wenn STARTTLS nicht angekündigt wird, funktioniert es wahrscheinlich nicht - Sind Sie sicher, dass Sie sich mit demselben Server über Telnet verbinden? Es ist möglich, eine Reihe von Server-Funktionen zu erhalten, den PHPMailer sieht durch diesen Aufruf nach dem Senden:

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

Wenn Sie es manuell testen mögen, sollten Sie den openssl s_client Befehl verwenden, anstatt telnet:

openssl s_client -connect mail.example.com:25 -starttls smtp 

Das wird Ihnen mehr technische Details zeigen, wenn es funktioniert.

PHPMailer macht opportunistische TLS trotzdem - wenn er sieht, dass der Server STARTTLS ankündigt, aktiviert er die Verschlüsselung automatisch, auch wenn Sie SMTPSecure = true nicht setzen.

+0

Danke für Ihre Antwort. Der Server, mit dem ich über Telnet verbunden bin, sollte der gleiche sein, den ich über phpmailer verwende. Trotzdem habe ich, als ich openssl wie von dir vorgeschlagen, herausgefunden, dass es ein Zertifikatsproblem gibt. Das Zertifikat wird für einen anderen Server als den Server ausgestellt, mit dem ich mich verbinde (obwohl es anders kommuniziert wurde). Ich versuche das jetzt zu lösen und hoffe es klappt danach. – Swissdude