Ich habe ein Postfix / Dovecot / Roundcube-Setup, das ich persönlich verwende und anderen Benutzern zur Verfügung stelle. Ich versuche, das gesamte Setup auf eine neue Box zu übertragen, habe jedoch einige Probleme.
Der Empfang von E-Mails funktioniert einwandfrei (nur intern getestet, Domain wird noch nicht übertragen.) Sowie externes IMAP und SMTP funktionieren hervorragend mit TLS / SSL (z. B. Thunderbird).
Das Problem liegt in meinem Roundcube-Setup, das IMAP bis 127.0.0.1 verwenden kann und die E-Mails des Benutzers wunderbar anzeigt, aber keine E-Mails senden kann. "SMTP Error (220): Authentication failed."
Seltsamerweise kann Roundcube mit derselben Postfix / Dovecot-Konfiguration, die ich auf meinem aktuellen Server verwendet habe, auf meinem neuen Server nicht mehr darauf zugreifen. Hier ist die relevante Roundcube-Konfiguration:
$config['smtp_server'] = 'tls://localhost';
// Log SMTP conversation to <log_dir>/smtp or to syslog
$config['smtp_debug'] = true;
// SMTP port (default is 25; use 587 for STARTTLS or 465 for the
// deprecated SSL over SMTP (aka SMTPS))
$config['smtp_port'] = 587;
// SMTP username (if required) if you use %u as the username Roundcube
// will use the current username for login
$config['smtp_user'] = '%u';
// SMTP password (if required) if you use %p as the password Roundcube
// will use the current user's password for login
$config['smtp_pass'] = '%p';
Das Protokoll / Fehlerprotokoll von Roundcube sagt einfach:
[02-Jan-2015 16:55:49 America/New_York] STARTTLS failed ():
[02-Jan-2015 16:55:49 -0500]: SMTP Error: SMTP error: Authentication failure: STARTTLS failed (Code: ) in /var/wwwmail/program/lib/Roundcube/rcube.php on line 1505 (POST /?_task=mail&_unlock=loading1420235752730&_lang=undefined&_framed=1?_task=mail&_action=send)
Während Roundcubes Protokolle / SMTP-Protokoll Folgendes anzeigen:
[02-Jan-2015 17:50:01 -0500]: Recv: 220 example.net ESMTP Postfix
[02-Jan-2015 17:50:01 -0500]: Send: EHLO example.net
[02-Jan-2015 17:50:01 -0500]: Recv: 250-example.net
[02-Jan-2015 17:50:01 -0500]: Recv: 250-PIPELINING
[02-Jan-2015 17:50:01 -0500]: Recv: 250-SIZE 104857600
[02-Jan-2015 17:50:01 -0500]: Recv: 250-VRFY
[02-Jan-2015 17:50:01 -0500]: Recv: 250-ETRN
[02-Jan-2015 17:50:01 -0500]: Recv: 250-STARTTLS
[02-Jan-2015 17:50:01 -0500]: Recv: 250-ENHANCEDSTATUSCODES
[02-Jan-2015 17:50:01 -0500]: Recv: 250-8BITMIME
[02-Jan-2015 17:50:01 -0500]: Recv: 250 DSN
[02-Jan-2015 17:50:01 -0500]: Send: STARTTLS
[02-Jan-2015 17:50:01 -0500]: Recv: 220 2.0.0 Ready to start TLS
[02-Jan-2015 17:50:01 -0500]: Send: RSET
[02-Jan-2015 17:50:01 -0500]: Recv: M I A…"qhçR¸
[02-Jan-2015 17:50:01 -0500]: Send: QUIT
Hier sind die relevanten Ausschnitte meiner Postfix-Konfiguration aus /etc/postfix/main.cf
# TLS parameters for SMTP service
smtpd_tls_security_level = may
smtpd_tls_cert_file = /etc/ssl/private/example.net/example.net.crt
smtpd_tls_key_file = /etc/ssl/private/example.net/example.net.key
smtpd_tls_auth_only = yes
Hier sind die relevanten Ausschnitte meiner Postfix-Konfiguration aus /etc/postfix/master.cf
smtp inet n - - - - smtpd
-o content_filter=spamassassin
submission inet n - n - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o cleanup_service_name=cleanup_submit
smtps inet n - - - - smtpd
-o content_filter=spamassassin
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
Das Postfix-Protokoll /var/log/mail.log
meldet die folgenden Fehler:
Jan 2 17:50:01 example postfix/submission/smtpd[19959]: connect from localhost.localdomain[127.0.0.1]
Jan 2 17:50:01 example postfix/submission/smtpd[19959]: SSL_accept error from localhost.localdomain[127.0.0.1]: 0
Jan 2 17:50:01 example postfix/submission/smtpd[19959]: warning: TLS library problem: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca:s3_pkt.c:1292:SSL alert number 48:
Jan 2 17:50:01 example postfix/submission/smtpd[19959]: lost connection after STARTTLS from localhost.localdomain[127.0.0.1]
Jan 2 17:50:01 example postfix/submission/smtpd[19959]: disconnect from localhost.localdomain[127.0.0.1]
Ich habe einige andere Fragen mit ähnlichen Fehlercodes gelesen, aber alle scheinen entweder selbstsignierte Zertifikate zu verwenden oder einen Link zum Hash des Zertifikats aus / etc / ssl / certs / hinzuzufügen , den ich versucht habe, obwohl ich es getan habe Möglicherweise haben Sie das falsche Zertifikat falsch verstanden und verknüpft.
Roundcube wurde auf 1.0.4 aktualisiert, wodurch ein Problem mit der Inkompatibilität der PHP-Version aufgrund von openssl behoben werden sollte. Ich habe keine Ideen mehr, hat jemand irgendwelche Ideen?
Antworten:
Die obige Fehlermeldung sieht so aus, als ob ein Client (von Roundcube aufgerufenes PHP-Skript) das Peer-Zertifikat aufgrund einer unbekannten Zertifizierungsstelle nicht überprüfen kann . Es gibt viele Gründe, warum dieser Fehler aufgetreten ist.
In Bezug auf openssl, Roundcube Version 1.0-RC und später mit SSL-Verbindungsoption ausgeliefert. Parameter
smtp_conn_options
undimap_conn_options
wurde in Version 1.0-RC bzw. 1.0.3 hinzugefügt. Standardmäßig war der Wert beider Parameter null. Das folgende Snippet wurde aus der Roundcube-Datei entnommenconfig/defaults.inc.php
. Eine vollständige Beschreibung dieses Parameters finden Sie im PHP-Handbuch .In vielen Systemen, die ein selbstsigniertes Zertifikat verwenden, funktioniert der Standardwert für PHP 5.5 und früher. Standardmäßig überprüft PHP 5.6 das Peer-Zertifikat anhand der installierten Zertifizierungsstelle und den Peer-Namen .
Nun sieht es so aus, als ob Debian Jessie auch mit der Standard-PHP-Version 5.6 ausgeliefert wurde . Anscheinend kann PHP das Postfix-Zertifikat nicht überprüfen. Die möglichen Gründe, warum PHP in verify_peer_name (weil Sie localhost im Hostnamen angeben) oder in verify_peer (weil CA unbekannt war) fehlschlägt.
Ein ähnlicher Fall war auch bei Arch Linux-Benutzern aufgetreten . Die Lösung war entweder:
quelle
PHP 5.6 führt eine SSL-Peer-Überprüfung durch, dh es überprüft das Zertifikat des SMTP-Servers, ob es sich um eine bekannte Zertifizierungsstelle handelt.
Die Option smtp_server muss mit dem CN-Feld des Zertifikats übereinstimmen! (Gemeinsamen Namen)
Geben Sie also nicht localhost ein, sondern den vollständigen qualifizierten Domainnamen, der Ihrem Zertifikat entspricht.
Credits an: https://www.blogobramje.nl/posts/Roundcube_sending_mail_broken_with_PHP_5.6_-_STARTTLS_failed/
quelle
weil ich Taubenschlag benutze, bestand meine Lösung darin, das Ca zum hinzuzufügen
/etc/dovecot/dovecot.conf
quelle
Ich hatte den gleichen Fehler. Korrigieren Sie das Hinzufügen der CA-Datei in der Datei postfix main.cf. Der Standort in kann sein
/etc/postfix/main.cf
.quelle
gleiches Problem! Schnell eine schmutzige Problemumgehung: Ändern Sie in config / defaults.inc.php verify_peer in false.
WARNUNG NUR zum Testen; NICHT FÜR DIE PRODUKTION Umgebungen
quelle
verify_peer => true
) zu gehen und zu erklären, worauf dascafile
hinweisen sollte.