2015-05-06 57 views
0

我試圖在993端口上連接dovecot,但dovecot顯示下面的錯誤;如何在993端口上使用squirrelmail連接dovecot

dovecot: imap-login: Disconnected (no auth attempts in 60 secs): user=<>, rip=192.***.***.***, lip=192.***.***.***, TLS handshaking: SSL_accept() failed: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol, session=<3k6jgTwVLwDAqL+E> 

squirrelmail config;

$imap_auth_mech  = 'login'; 
$use_imap_tls   = 1; 
$imapServerAddress  = 'dovecot.server'; 
$imapPort    = 993; 

當我嘗試在squirrelmail服務器上telnet和openssl時,

[[email protected] ~]# telnet dovecot.server 993 
Trying 192.***.***.***... 
Connected to dovecot.server. 
Escape character is '^]'. 

[[email protected] ~]# openssl s_client -connect dovecot.server:993 
... 
... 
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready. 

注: 143端口的方式工作正常。

回答

0

檢查你的PHP錯誤日誌中這樣的事情:

PHP Warning: fsockopen(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed .. 
PHP Warning: fsockopen(): Failed to enable crypto .. 
PHP Warning: fsockopen(): unable to connect to tls://dovecot.server:993 (Unknown error) .. 

如果是這樣的話,OpenSSL庫無法驗證服務器的證書。通過將連接證書添加到本地證書存儲區可輕鬆修復此問題。您可以通過<PRE><?php var_dump(openssl_get_cert_locations()); ?> </pre>查看ini_cafile的設置。

你可以讓你的服務器使用此命令證書:

openssl x509 -in <(openssl s_client -connect dovecot.server:993 -prexit 2>/dev/null) > /tmp/cacert.pem 

將它添加到證書文件,你應該走了。

一個警告:證書CN必須匹配您用來連接到服務器的主機名!如果它是自簽名的,確保它使用dovecot.server作爲CN。

相關問題