Tengo una configuración Postfix / Dovecot / Roundcube que uso personalmente, así como también la proporciono a otros usuarios. Estoy intentando transferir toda esta configuración a una nueva caja, pero tengo algunos problemas.
La recepción de correo funciona bien (solo se probó internamente, el dominio aún no se transfiere), así como el IMAP y SMTP externos funcionan muy bien usando TLS / SSL (Thunderbird, por ejemplo)
El problema es con mi configuración de cubo redondo, que puede usar IMAP a 127.0.0.1, y muestra el correo electrónico del usuario maravillosamente, pero no puede enviar correo electrónico, simplemente afirmando: "SMTP Error (220): Authentication failed."
Curiosamente, con la misma configuración Postfix / Dovecot que utilicé en mi servidor actual, Roundcube ya no puede acceder a ella en mi nuevo servidor. Aquí está la configuración relevante del cubo redondo:
$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';
El registro de registros / errores de Roundcube simplemente dice:
[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)
Mientras que los registros de Roundcube / smtp log muestran:
[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
Aquí están los fragmentos relevantes de mi configuración de 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
Aquí están los fragmentos relevantes de mi configuración de postfix de /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
El registro de Postfix /var/log/mail.log
informa los siguientes errores:
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]
He leído algunas otras preguntas con códigos de error similares, pero todas parecen estar utilizando certificados autofirmados o agregando un enlace al hash del certificado desde / etc / ssl / certs / , que he probado, aunque puede haber entendido mal y vinculado el certificado incorrecto.
Roundcube se actualiza a 1.0.4, que supuestamente solucionaría un problema con la incompatibilidad de la versión de php debido a openssl. Me he quedado sin ideas, ¿alguien tiene alguna idea?
Respuestas:
El mensaje de error anterior parece que un cliente (secuencia de comandos PHP invocada por roundcube) no puede verificar el certificado de igual debido a una CA desconocida . Hay muchas razones por las que ocurrió este error.
En cuanto a openssl, Roundcube versión 1.0-RC y posterior se entregó con la opción de conexión SSL. Parámetro
smtp_conn_options
yimap_conn_options
se agregó en la versión 1.0-RC y 1.0.3 respectivamente. Por defecto, el valor de ambos parámetros era nulo. El fragmento a continuación fue tomado del archivo de cubo redondoconfig/defaults.inc.php
. Puede consultar el manual de PHP para obtener una descripción completa de este parámetro.En muchos sistemas que usan un certificado autofirmado, el valor predeterminado funciona para PHP 5.5 y versiones anteriores. De forma predeterminada, PHP 5.6 verificará el certificado de igual con respecto a la CA instalada y verificará el nombre de igual .
Ahora, parece que Debian jessie también se envió con la versión predeterminada de PHP 5.6 . Aparentemente, PHP no puede verificar el certificado postfix. Las posibles razones, PHP falla en verificado_peer_name (porque especifica localhost en hostname) o en verificar_peer (porque CA era desconocido)
Un caso similar también le sucedió al usuario de Arch Linux . La solución fue:
fuente
PHP 5.6 realiza la verificación por pares SSL, lo que significa que verifica el certificado del servidor SMTP si es una CA conocida.
¡La opción smtp_server debe coincidir con el campo CN del certificado! (Nombre común)
Así que no coloque localhost allí, coloque el nombre de dominio completo que coincida con su certificado.
Créditos a: https://www.blogobramje.nl/posts/Roundcube_sending_mail_broken_with_PHP_5.6_-_STARTTLS_failed/
fuente
porque uso palomar mi solución fue agregar el ca a la
/etc/dovecot/dovecot.conf
fuente
Yo tenía el mismo error. Arreglalo agregando el archivo CA en el archivo postfix main.cf. La ubicación puede estar en
/etc/postfix/main.cf
.fuente
¡el mismo problema! Solución rápida y sucia: cambio en config / defaults.inc.php verificar_peer a falso.
ADVERTENCIA SOLO para pruebas; NO PARA PRODUCCIÓN Ambientes
fuente
verify_peer => true
) y explicar a quécafile
debería apuntar.