前言

最近针对邮件系统进行SMTPPOP3账号密码的破解攻击非常猖狂,帮助客户调整封禁策略后一天能封锁几千个攻击的IP地址;今天客户又提出要求,配置Zimbra邮件系统关闭了明文(text plain)身份验证的支持,强制客户端必须使用TLS/SSL加密模式收发邮件,以进一步提升系统安全;配置完毕后Outlook客户端收发一切正常,但用Foxmail(官网下载的7.2最新版)客户端就死活无法连接上服务器的奇葩问题;

配置过程

详细的配置过程不是本文的重点,就不详述了,大概就是如下几个步骤:

  1. Zimbra上安装部署了客户的商业SSL证书,保证客户端连接时能自动信任服务器身份;
  2. ZimbraAdmin界面设置关闭明文登陆,并确保POP3/IMAPSSL服务状态为启用;
  3. 重启 mailboxd 服务,并使用客户端进行验证;

问题呈现

用最新版本的Foxmail 7.2正常配置创建邮箱账号,并针对SMTPPOP3服务器均启用SSL连接,测试失败!这是什么提示 WTF ??

服务器不支持ssl,请检查服务器配置, errorCode: 1

Foxmail-SSL-Error.png

怀疑过Zimbra上的配置问题,但公司一半以上用Outlook的人都正常收发没有任何问题;
又测试了在Foxmail上配置标准的明文的方式收发,结果直接会报服务器拒绝明文验证的错误提示,因此也排除了其他Outlook用户是以非加密方式发送的可能性;

Debug过程

考虑从FoxmailZimbra之间的交互开始入手检查,看问题出在哪。
因此在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能正常收发加密邮件,且没有任何证书异常的提示可排除;
  • 加密协议的问题:需要分别考虑FoxmailZimbra他们所支持的加密协议是否一致,

Foxmail从其配置界面上看SSL有配置选项,应该确定是支持SSL协议的,至于TLS没有看到相关配置选项,不能确定是否支持;

Zimbra所支持的加密协议,可以直接在服务器上用zimbra账号身份执行 zmprov gcf zimbraMailboxdSSLProtocols命令查询当前的mailboxd服务所支持的加密协议(Zimbra内部提供POP3/IMAP服务的进程就是mailboxd)查询结果如下:
Zimbra-check-ssl-mode.png

再一次 WTF!! Zimbra8.6默认配置下的加密模式竟然只有TLS,这让SSL情何以堪?

其实我有查了Zimbra官方的 wiki 是由于SSLv3存在严重的设计缺陷,是一个非常不安全的加密协议,因此从Zimbra8.6.0开始官方就默认统一关闭和弃用SSLv3了。

ZimbraWiki页面: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大家只需要看这个配置界面的选项就可以了。除了支持SSLTLS以外还可以根据服务器所支持的加密模式智能选择,确保可正常工作;
Outlook-SSL-Setting.png

解决问题

为了兼容Foxmail就必须开启ZimbraSSL支持,鉴于SSLv3存在严重安全问题,那么可以只开启支持SSLv2

Zimbra8.6.0添加SSLv2支持的配置方法如下:

#增加SSLv2Hello配置
zmprov mcf +zimbraMailboxdSSLProtocols SSLv2Hello
#查看修改后的配置,确保已存在SSLv2Hello
zmprov gcf zimbraMailboxdSSLProtocols
#重启mailboxd服务
zmmailboxdctl restart

执行结果如下:
Config-Zimbra-SSL-Model.png

再次使用Foxmail配置SSL模式邮箱账号,成功实现加密模式的邮件收发!

Last modification:March 10, 2019
如果觉得我的文章对你有用,请随意赞赏