好的,所以我的快递安装问题非常奇怪..当我尝试登录时,我需要用户名和密码吗?除了我可以作为密码使用任何字符串,其前缀与我的密码相同。例如:
请说这是我的密码:
#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
哪里可能有问题?在此先感谢您的帮助
答案 0 :(得分:2)
问题是密码是使用操作系统的crypt()
函数加密的,该函数只查看密码的前8个字符来生成加密的哈希值。
正如here所述:
如果您的密码长度超过8个字符,则只要第一个 8个字符匹配,crypt()将其称为有效匹配。例如, 如果您的密码是“密码”,并将其作为加密哈希存储在 htpasswd文件,检查“passwordX”将完全相同 检查“密码”,“密码123”等;这就对了 将作为有效检查返回,因为前8个字符匹配 正常。同样,如果您的密码是“longpassword”并且您进行了检查 仅反对“长途通行证”,也将返回有效期。