我有一个在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文档包含以下信息:
“如果包含一个或多个美元符号($),则应该将密码哈希用单引号引起来。”