我试图设置一个Dovecot / Postfix结构,依靠MySQL后端。 我遇到了SSLconfiguration的问题,它真的把我的头发撕掉了…
Dovecot监听端口993(IMAP)和995(POP3)。 我使用以下命令来testing连接:
openssl s_client -connect myserver.tld:993 openssl s_client -connect myserver.tld:995
发生以下错误:
error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
我已经做了相同的testing强制ssl2 , ssl3和tls1 ,同样的事情。 现在,当我在端口465(Postfix的SMTP)上运行相同的testing时:
openssl s_client -connect myserver.tld:465
我得到一个神奇的220 myserver.tld ESMTP Postfix (Debian/GNU). 精彩。 基于MySQL的authentication甚至可以工作! 问题是,当Postfix可以时,Dovecot不能正确地启动SSL连接。 两个服务共享相同的configuration,Postfix甚至使用Dovecotauthentication。
鸽子configuration:
ssl = required ssl_cert = </etc/ssl/myserver/myserver.tld.crt ssl_key = </etc/ssl/myserver/myserver.tld.key ssl_verify_client_cert = no ssl_protocols = !SSLv2 !SSLv3 !TLSv1 ssl_cipher_list = HIGH:!SSLv2:!SSLv3:!TLSv1.0:!aNULL:!MD5
Postfix的主要configuration:
smtpd_tls_cert_file = /etc/ssl/myserver/myserver.tld.crt smtpd_tls_key_file = /etc/ssl/myserver/myserver.tld.key smtpd_use_tls = yes smtpd_tls_auth_only = yes smtpd_tls_loglevel = 3 smtpd_tls_received_header = no smtpd_tls_security_level = may smtpd_tls_session_cache_timeout = 3600s smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
Postfix主configuration:
smtp inet n - - - - smtpd smtps inet n - - - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
SSL证书是自签名的,我自己生成了。 通过SMTP,它看起来很好。
pop3-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=xx.xx.xx.xx, lip=xx.xx.xx.xx, TLS handshaking: SSL_accept() failed: error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher, session=<ffu9UFnxZQBtvqmF>
(在使用openssl s_client实用程序尝试ssl2或tls1时,我得到一个“未知协议”)
任何人都知道我在哪里为Dovecotconfiguration错误?
您实际上禁用了dovecot中的SSLv2,SSLv3和TLSv1.0。
ssl_protocols = !SSLv2 !SSLv3 !TLSv1 ssl_cipher_list = HIGH:!SSLv2:!SSLv3:!TLSv1.0:!aNULL:!MD5
这是一个问题,因为有些客户端还没有说TLSv1.1 / TLSv1.2,你唯一剩下的select。
尝试不要禁用TLSv1.0,看看你有没有更远的地方。