在数据库中从MD5密码切换到CRAM-MD5密码有什么风险,尤其是考虑到以下情况,以及如何解决现有安装(只要知道明文密码)?
随着(切换到)CRAM-MD5,
doveadm pw在用户创build和密码更改时恢复为外部工具( doveadm pw ) 项目2可能不是什么大不了的,因为我不打算取代Dovecot(即使它有很好的文件迁移path恕我直言)。 项目3还没有什么大不了的(因为我不知道这样的工具)。 在幕后,还有SASL,IIRC,在Dovecot的帮助下完成了这部分工作(例如,Postfixconfiguration中的smtpd_sasl_type=dovecot )。 但可能是我错过了一些东西 – 不pipe是更麻烦还是其他的select。
任何提示? 你会推荐什么(除了完全不同的设置)?
我正在使用Dovecot,Postfix,PostfixAdmin,Sieve,一些额外的组件(所有与MySQL连接的后端)安装新的邮件服务器。 到目前为止,我已经完成了所有的工作,但是后来发现它只提供PLAIN和LOGIN来进行IMAP身份validation。 对于本地连接(例如同一台机器上的Roundcubenetworking邮件程序)和其他“encryption连接”(HTTPS / IMAPS / POP3S / SMTPS)不是什么大问题 – 但是恐怕有些用户会使用未encryption的连接,我不想完全禁用(有些情况下可能需要这些)。
所以我在Dovecot中启用了CRAM-MD5和DIGEST-MD5 – 这当然不能工作:PostfixAdmin使用其内部MD5程序将密码存储在数据库中,因此Dovecot无法匹配它们(请参阅我的答案以了解详细信息)。 这基本上让我有3个选项,其中一个甚至不是这样的:
从调查“参与者”,这里是可能性的比较:
PwdStore MD5 PwdStore CRAM-DM5 Webmail(Roundcube) 仅客户端/服务器HTTPS(HTTP请求将被升级,所以PLAIN = OK) IMAP PLAIN PLAIN / CRAM-MD5(内部)² SMTP PLAIN PLAIN / CRAM-MD5(内部)² 本地客户端(连接到Postfix / Dovecot) IMAP³PLAIN / LOGIN PLAIN / LOGIN / CRAM-MD5 SMTP³PLAIN / LOGIN PLAIN / LOGIN / CRAM-MD5 POP3³PLAIN / LOGIN PLAIN / LOGIN / CRAM-MD5 IMAPS PLAIN / LOGIN PLAIN / LOGIN / CRAM-MD5 SMTPS PLAIN / LOGIN PLAIN / LOGIN / CRAM-MD5 POP3S PLAIN / LOGIN PLAIN / LOGIN / CRAM-MD5 PostfixAdmin 创build/更新MD5(内部)CRAM-MD5(通过dovecotadm)⑷
1:我刚刚检查了源代码,在postfixadmin/functions.inc.php的第928行find了以下内容:
Use proc_open call to avoid safe_mode problems and to prevent showing plain password in process table
所以这个反驳的论点似乎在下降。
2: roundcube/program/lib/Roundcube/rcube_imap_generic.php行90ff,在function authenticate()
3: PLAIN / LOGIN通常在未encryption的连接上被禁用
4:可能会使用来自Roundcube的代码重写 ,因为两者都是用PHP编写的 – 但PostfixAdmin
由于我没有得到答案,我已经尝试了自己,最后做了开关 – 顺利进行。 正如开始所说的那样,至less有CRAM-MD5可用于未encryption传输的身份validation,因此,如果encryption传输不可用(是的,发生了这种情况),加上已经使用CRAM-MD5的旧服务器的迁移更加顺畅那里。 除此之外,我还没有看到任何副作用 – 虽然这可能需要一段时间才能出现:)
所以对于那些感兴趣的,这里是要执行的步骤:
/etc/dovecot/dovecot-mysql.conf (或者你正在使用的相应文件) /etc/dovecot/dovecot-mysql.conf default_pass_scheme从MD5-CRYPT更改为CRAM-MD5 ,然后将cram-md5添加到/etc/dovecot/dovecot.conf auth_mechanisms /etc/dovecot/dovecot.conf smtpd_sasl_type=dovecot ) – 在这里没有什么可做的 config.inc.php变化: $CONF['encrypt'] = 'md5crypt'; 必须改成$CONF['encrypt'] = 'dovecot:CRAM-MD5'; 。 还要检查$CONF['dovecotpw'] = "/usr/sbin/doveadm pw"; – 例如在Debian Wheezy上, doveadm驻留在/usr/bin ,因此需要对此设置进行调整 完成。 现在你可以validation一切是否还在工作。 在我的情况下是这样的:Roundcube仍然可以authenticationPLAIN – 现在一个远程客户端可以使用CRAM-MD5。 案件解决了,对我来说。