前言
最近针对邮件系统进行SMTP
和POP3
账号密码的破解攻击非常猖狂,帮助客户调整封禁策略后一天能封锁几千个攻击的IP地址;今天客户又提出要求,配置Zimbra
邮件系统关闭了明文(text plain)身份验证的支持,强制客户端必须使用TLS/SSL
加密模式收发邮件,以进一步提升系统安全;配置完毕后Outlook
客户端收发一切正常,但用Foxmail
(官网下载的7.2最新版)客户端就死活无法连接上服务器的奇葩问题;
配置过程
详细的配置过程不是本文的重点,就不详述了,大概就是如下几个步骤:
- 在
Zimbra
上安装部署了客户的商业SSL
证书,保证客户端连接时能自动信任服务器身份; - 在
ZimbraAdmin
界面设置关闭明文登陆,并确保POP3/IMAP
的SSL
服务状态为启用; - 重启 mailboxd 服务,并使用客户端进行验证;
问题呈现
用最新版本的Foxmail 7.2
正常配置创建邮箱账号,并针对SMTP
和POP3
服务器均启用SSL
连接,测试失败!这是什么提示 WTF ??
服务器不支持ssl,请检查服务器配置, errorCode: 1
怀疑过Zimbra
上的配置问题,但公司一半以上用Outlook
的人都正常收发没有任何问题;
又测试了在Foxmail
上配置标准的明文的方式收发,结果直接会报服务器拒绝明文验证的错误提示,因此也排除了其他Outlook
用户是以非加密方式发送的可能性;
Debug过程
考虑从Foxmail
与Zimbra
之间的交互开始入手检查,看问题出在哪。
因此在Foxmail
测试失败的时候,动态跟踪Zimbra
上的mailbox.log
日志,结果发现每次连接测试都只有出现一条如下日志,没有任何后续交互:
2018-08-13 22:17:54,575 ERROR [Pop3SSLServer-3] [ip=124.79.xx.xx;] pop3 - Error detected by SSL subsystem, dropping connection:javax.net.ssl.SSLHandshakeException: SSL handshake failed.
看到SSL handshake failed
就基本明白了,就是SSl
的加密协商没成功,通常就是2个原因:
- 证书问题:基于
Outlook
能正常收发加密邮件,且没有任何证书异常的提示可排除; - 加密协议的问题:需要分别考虑
Foxmail
和Zimbra
他们所支持的加密协议是否一致,
Foxmail
从其配置界面上看SSL
有配置选项,应该确定是支持SSL
协议的,至于TLS
没有看到相关配置选项,不能确定是否支持;
Zimbra
所支持的加密协议,可以直接在服务器上用zimbra
账号身份执行 zmprov gcf zimbraMailboxdSSLProtocols
命令查询当前的mailboxd
服务所支持的加密协议(Zimbra
内部提供POP3/IMAP
服务的进程就是mailboxd
)查询结果如下:
再一次 WTF!! Zimbra8.6
默认配置下的加密模式竟然只有TLS
,这让SSL
情何以堪?
其实我有查了Zimbra
官方的 wiki 是由于SSLv3
存在严重的设计缺陷,是一个非常不安全的加密协议,因此从Zimbra8.6.0
开始官方就默认统一关闭和弃用SSLv3
了。
Zimbra
Wiki页面:How to disable SSLv3
Last Update: 2:00, 15 January 2015 (UTC)
Due to the recent discovery of a new SSLv3 vulnerability ( CVE-2014-3566: Poodle SSLv3 ), this protocol has been considered unsafe. This is a protocol flaw and Zimbra will include patches or configuration changes in future releases. Please check existing Bug https://bugzilla.zimbra.com/show_bug.cgi?id=95976 for more information.
As a workaround, this guide helps show how to disable SSLv3 in Zimbra where possible. This has been tested on both ZCS 8.0.8 and 8.5.0 releases.Warnings:
The published attack vector as shown by the researchers works with controlling the plaintext sent to the server using Javascript being run on the victim's machine. Attacks via other vectors exist with varying levels of difficulty, and the use of SSLv3 will be deprecated in a future version of ZCS. This document includes information on how to disable SSLv3 for Postfix (MTA), nginx (POP3-SSL and IMAP-SSL) for customers want to do this now. At the moment, it's not possible to disable SSLv3 with mailboxd (Jetty) for POP3-SSL and IMAP-SSL (this will be fixed in 8.6.0, ref https://bugzilla.zimbra.com/show_bug.cgi?id=96040 ). Bug https://bugzilla.zimbra.com/show_bug.cgi?id=96041 is tracking the deprecation of SSLv3 in ZCS.
现在基本弄清楚问题原因了Zimbra8.6.0
默认禁用了SSLv3
只支持TLS
加密协议,而我们国产最知名的Foxmail
邮件客户端确刚刚好只支持SSL
加密模式,不支持TLS
;所以就死活无法和Zimbra
之间进行加密的邮件收发传输;
至于Outlook
不愧是世界大厂出品的软件,兼容性那可不是一般的强大,对比于Foxmail
大家只需要看这个配置界面的选项就可以了。除了支持SSL
和TLS
以外还可以根据服务器所支持的加密模式智能选择,确保可正常工作;
解决问题
为了兼容Foxmail
就必须开启Zimbra
的SSL
支持,鉴于SSLv3
存在严重安全问题,那么可以只开启支持SSLv2
;
为Zimbra8.6.0
添加SSLv2
支持的配置方法如下:
#增加SSLv2Hello配置
zmprov mcf +zimbraMailboxdSSLProtocols SSLv2Hello
#查看修改后的配置,确保已存在SSLv2Hello
zmprov gcf zimbraMailboxdSSLProtocols
#重启mailboxd服务
zmmailboxdctl restart
执行结果如下:
再次使用Foxmail
配置SSL
模式邮箱账号,成功实现加密模式的邮件收发!