Mysql
Dovecot 握手失敗,Postfix 成功
我正在嘗試設置 Dovecot/Postfix 結構,依賴於 MySQL 後端。我遇到了 SSL 配置的問題,這真的讓我毛骨悚然……
情況
Dovecot 偵聽埠 993 (IMAP) 和 995 (POP3)。我使用以下命令來測試連接:
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
我做了同樣的測試,強迫
ssl2
,ssl3
和tls1
, 同樣的事情。現在,當我在埠 465(Postfix 的 SMTP)上執行相同的測試時:openssl s_client -connect myserver.tld:465
我得到一個神奇的
220 myserver.tld ESMTP Postfix (Debian/GNU).
Wonderful。基於 MySQL 的身份驗證甚至可以工作!問題是 Dovecot 無法正確啟動 SSL 連接,而 Postfix 可以。兩種服務共享相同的配置,Postfix 甚至使用 Dovecot 身份驗證。配置
鴿舍配置:
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主要配置:
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
後綴主配置:
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 時,我得到一個“未知協議” )有誰知道我在哪裡犯了 Dovecot 的配置錯誤?
您實際上已經在 dovecot 中禁用了 SSLv2、SSLv3 和 TLSv1.0。
ssl_protocols = !SSLv2 !SSLv3 !TLSv1 ssl_cipher_list = HIGH:!SSLv2:!SSLv3:!TLSv1.0:!aNULL:!MD5
這是一個問題,因為一些客戶端還不會說 TLSv1.1/TLSv1.2,這是您唯一剩下的選擇。
嘗試不禁用 TLSv1.0,看看你是否能走得更遠。