如果使用特殊的charactare,doveadm pw可能会生成无效的密码

我有一个在Ubuntu 14.04服务器上运行的dovecot服务器,它从mysql数据库读取login数据(用户/域/密码)。

密码保存为盐渍SHA256散列。 要生成这些,我使用命令doveadm pw -s SHA512-CRYPT 。 根据Dovecot wiki Authentication PasswordSchemes页面,该命令使用glibcs​​的crypt()函数。

现在,当我使用不带特殊字符(大写/小写字母和数字)的密码,如“t3st”,我可以成功login到相应的邮件帐户。 但只要密码包含任何其他字符(例如t3$t ),我就不能再login了。 doveadm将在两种情况下返回看似有效的哈希(例如$6$iADbo7odiTlVjYgl$fi0X/kIHSUmAHAAiHIsXU6ow3j9dshL9mX.VTCDFOBMt.aV/.ZWpadLk3AFPD30EZ7SiyaqAR66YlTPoeQrcH/ )。

我尝试通过Thunderbird和一个基于Web的邮件接口login到服务器,并在日志文件中给出相同的错误消息:

dovecot:imap-login:断开(auth失败,2秒内1次尝试)…

我也尝试使用MD5-CRYPT“encryption”,具有相同的结果。

你可以尝试添加

 auth_debug = yes auth_debug_passwords = yes auth_verbose_passwords = yes 

到您的达夫科特configuration。 因此,您将看到实际从客户端接收的密码,并从passdb中进行比较。

doveadm pw文档包含以下信息:

“如果包含一个或多个美元符号($),则应该将密码哈希用单引号引起来。”