Tenho uma configuração Postfix / Dovecot / Roundcube que uso pessoalmente, além de fornecer a outros usuários. Estou tentando transferir toda essa instalação para uma nova caixa, mas com alguns problemas.
O recebimento de emails está funcionando bem (apenas testado internamente, o domínio ainda não foi transferido.), Bem como IMAP e SMTP externos funcionando muito bem usando TLS / SSL (Thunderbird, por exemplo)
O problema está na minha configuração de cubo redondo, que pode usar o IMAP para 127.0.0.1 e exibe o email do usuário maravilhosamente, mas não pode enviar email, simplesmente alegando: "SMTP Error (220): Authentication failed."
Estranhamente, com a mesma configuração Postfix / Dovecot que usei no meu servidor atual, o Roundcube não pode mais acessá-lo no meu novo servidor. Aqui está a configuração do roundcube relevante:
$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';
O registro de erros / registros do Roundcube diz simplesmente:
[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)
Enquanto os logs do Roundcube / smtp log mostram:
[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
Aqui estão os trechos relevantes da minha configuração do postfix em /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
Aqui estão os trechos relevantes da minha configuração do postfix em /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
O log do Postfix /var/log/mail.log
relata os seguintes erros:
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]
Li algumas outras perguntas com códigos de erro semelhantes, mas todos parecem usar certificados autoassinados ou adicionar um link ao hash do certificado em / etc / ssl / certs / , que tentei, embora eu pode ter entendido errado e vinculado o certificado errado.
O Roundcube é atualizado para a versão 1.0.4, que deveria corrigir um problema de incompatibilidade da versão php devido ao openssl. Estou sem idéias, alguém tem alguma idéia?
Respostas:
A mensagem de erro acima parece que um cliente (script PHP chamado pelo roundcube) falha ao verificar o certificado de mesmo nível porque a CA desconhecida . Há muitas razões pelas quais esse erro ocorreu.
Em relação ao openssl, a versão 1.0-RC do Roundcube e posteriormente fornecida com a opção de conexão SSL. Parâmetro
smtp_conn_options
eimap_conn_options
foi adicionado na versão 1.0-RC e 1.0.3, respectivamente. Por padrão, o valor de ambos os parâmetros era nulo. O snippet abaixo foi retirado do arquivo roundcubeconfig/defaults.inc.php
. Você pode consultar o manual do PHP para obter uma descrição completa deste parâmetro.Em muitos sistemas que usam certificado autoassinado, o valor padrão funciona para PHP 5.5 e versões anteriores. Por padrão, o PHP 5.6 verificará o certificado de mesmo nível em relação à CA instalada e o nome do mesmo .
Agora, parece que o Debian jessie também foi enviado com a versão 5.6 do PHP padrão . Aparentemente, o PHP falha ao verificar o certificado postfix. Os possíveis motivos pelos quais o PHP falha no confirm_peer_name (porque você especifica localhost no nome do host) ou no confirm_peer (porque a CA é desconhecida)
Caso semelhante também aconteceu com o usuário do Arch Linux . A solução foi:
fonte
O PHP 5.6 faz verificação por pares SSL, o que significa que verifica o certificado do servidor SMTP se é uma CA conhecida.
A opção smtp_server deve corresponder ao campo CN do certificado! (Nome comum)
Portanto, não coloque localhost lá, coloque o nome de domínio completo qualificado que corresponda ao seu certificado.
Créditos para: https://www.blogobramje.nl/posts/Roundcube_sending_mail_broken_with_PHP_5.6_-_STARTTLS_failed/
fonte
porque eu uso dovecot minha solução foi adicionar o ca ao
/etc/dovecot/dovecot.conf
fonte
Eu tive o mesmo erro. Corrija-o adicionando o arquivo CA no arquivo main.cf do postfix. A localização em pode estar em
/etc/postfix/main.cf
.fonte
mesmo problema! Solução alternativa rápida e suja: mude em config / defaults.inc.php confirm_peer para false.
AVISO SOMENTE para teste; NÃO PARA AMBIENTES DE PRODUÇÃO
fonte
verify_peer => true
) e explicando o que ocafile
apontar deve apontar.