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

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

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

密码以加盐的 SHA256 哈希值保存。为了生成这些,我使用命令doveadm pw -s SHA512-CRYPT。根据Dovecot wiki 身份验证密码方案页面中,该命令使用了 glibcscrypt()​​ 函数。

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

我尝试通过 Thunderbird 和基于 Web 的邮件界面登录服务器,但日志文件中均显示相同的错误消息:

dovecot:imap-login:已断开连接(身份验证失败,2 秒内尝试 1 次)...

我也尝试使用 MD5-CRYPT“加密”,结果相同。

答案1

doveadm pw 文档包含以下信息:

“如果密码哈希包含一个或多个美元符号 ($),则应将其括在单引号中。”

答案2

您可以尝试添加

auth_debug = yes
auth_debug_passwords = yes
auth_verbose_passwords = yes

到您的 Dovecot 配置。这样,您将看到 dovecot 实际从客户端接收到的密码,并与 passdb 进行比较。

相关内容