快递authdaemon奇怪的密码处理

时间:2013-01-02 21:46:12

标签: imap

好的,所以我的快递安装问题非常奇怪..当我尝试登录时,我需要用户名和密码吗?除了我可以作为密码使用任何字符串,其前缀与我的密码相同。例如:

请说这是我的密码:

#password#

我可以使用以下任何密码成功登录:

#password#
#password#FOO
#password#BAR

等。

我使用mysql存储用户数据,这是我的/ etc / courier / authmysqlrc

MYSQL_SERVER localhost
MYSQL_USERNAME #USER
MYSQL_PASSWORD #PASSWORD
MYSQL_PORT 0
MYSQL_DATABASE mail
MYSQL_USER_TABLE users
MYSQL_CRYPT_PWFIELD password
#MYSQL_CLEAR_PWFIELD password
MYSQL_UID_FIELD 5000
MYSQL_GID_FIELD 5000
MYSQL_LOGIN_FIELD email
MYSQL_HOME_FIELD "/home/vmail"
MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')
#MYSQL_NAME_FIELD
MYSQL_QUOTA_FIELD quota

哪里可能有问题?在此先感谢您的帮助

1 个答案:

答案 0 :(得分:2)

问题是密码是使用操作系统的crypt()函数加密的,该函数只查看密码的前8个字符来生成加密的哈希值。
正如here所述:

  

如果您的密码长度超过8个字符,则只要第一个   8个字符匹配,crypt()将其称为有效匹配。例如,   如果您的密码是“密码”,并将其作为加密哈希存储在   htpasswd文件,检查“passwordX”将完全相同   检查“密码”,“密码123”等;这就对了   将作为有效检查返回,因为前8个字符匹配   正常。同样,如果您的密码是“longpassword”并且您进行了检查   仅反对“长途通行证”,也将返回有效期。