J'ai une configuration Postfix / Dovecot / Roundcube que j'utilise personnellement et que je fournis à d'autres utilisateurs. J'essaie de transférer cette configuration entière vers une nouvelle boîte, mais j'ai quelques problèmes.
La réception du courrier fonctionne correctement (uniquement testé en interne, le domaine n'est pas encore transféré), ainsi que les protocoles IMAP et SMTP externes fonctionnent très bien avec TLS / SSL (Thunderbird, par exemple)
Le problème est avec ma configuration de roundcube, qui peut utiliser IMAP à 127.0.0.1, et affiche à merveille le courrier électronique de l'utilisateur, mais ne peut pas envoyer de courrier électronique, en affirmant simplement: "SMTP Error (220): Authentication failed."
Curieusement, avec la même configuration Postfix / Dovecot que j'ai utilisée sur mon serveur actuel, Roundcube ne peut plus y accéder sur mon nouveau serveur. Voici la configuration de roundcube pertinente:
$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';
Le journal des erreurs / journaux de Roundcube indique simplement:
[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)
Alors que le journal de Roundcube / journal smtp affiche:
[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
Voici les extraits pertinents de ma configuration postfix de /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
Voici les extraits pertinents de ma configuration postfix depuis /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
Le journal de Postfix /var/log/mail.log
signale les erreurs suivantes:
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]
J'ai lu quelques autres questions avec des codes d'erreur similaires, mais elles semblent toutes utiliser soit des certificats auto-signés, soit ajouter un lien vers le hachage du certificat à partir de / etc / ssl / certs / , que j'ai essayé, bien que je peut avoir mal compris et lié le mauvais certificat.
Roundcube est mis à jour vers 1.0.4, ce qui était censé résoudre un problème d'incompatibilité de version php dû à openssl. Je suis à court d'idées, quelqu'un a des idées?
Réponses:
Le message d'erreur ci-dessus ressemble à un client (script PHP invoqué par roundcube) qui ne parvient pas à vérifier le certificat d'homologue en raison d'une autorité de certification inconnue . Il y a plusieurs raisons pour lesquelles cette erreur s'est produite.
Concernant openssl, Roundcube version 1.0-RC et plus tard livré avec l'option de connexion SSL. Paramètre
smtp_conn_options
et aimap_conn_options
été ajouté dans la version 1.0-RC et 1.0.3 respectivement. Par défaut, la valeur des deux paramètres était nulle. L'extrait ci-dessous est extrait du fichier roundcubeconfig/defaults.inc.php
. Vous pouvez vous référer au manuel PHP pour obtenir une description complète de ce paramètre.Dans de nombreux systèmes utilisant un certificat auto-signé, la valeur par défaut fonctionne pour PHP 5.5 et versions antérieures. Par défaut, PHP 5.6 vérifie le certificat d'homologue par rapport à l'autorité de certification installée et vérifie le nom d'homologue .
Maintenant, il semble que Debian Jessie soit également livrée avec la version 5.6 de PHP par défaut . Apparemment, PHP ne parvient pas à vérifier le certificat postfix. Les raisons possibles, PHP échoue dans verify_peer_name (parce que vous spécifiez localhost dans hostname) ou dans verify_peer (parce que CA était inconnu)
Un cas similaire s'est également produit pour un utilisateur d'Arch Linux . La solution était soit:
la source
PHP 5.6 effectue une vérification SSL par les pairs, ce qui signifie qu'il vérifie le certificat du serveur SMTP s'il s'agit d'une autorité de certification connue.
L'option smtp_server doit correspondre au champ CN du certificat! (Nom commun)
Donc, ne mettez pas localhost là-dedans, mettez-y le nom de domaine complet qui correspond à votre certificat.
Crédits à: https://www.blogobramje.nl/posts/Roundcube_sending_mail_broken_with_PHP_5.6_-_STARTTLS_failed/
la source
parce que j'utilise pigeonnier ma solution était d'ajouter le ca au
/etc/dovecot/dovecot.conf
la source
J'ai eu la même erreur. Corrigez-le en ajoutant le fichier CA dans le fichier postfix main.cf. L'emplacement en peut être à
/etc/postfix/main.cf
.la source
même problème! Solution de contournement rapide: changez config / defaults.inc.php verify_peer en false.
AVERTISSEMENT UNIQUEMENT pour les tests; PAS POUR LES ENVIRONNEMENTS DE PRODUCTION
la source
verify_peer => true
) et d'expliquer à quoi celacafile
devrait pointer.