Здравствуйте!Имеем: Dovecot 2.1.3, авторизацию mysql, пароли в схеме CRYPT и запрос пароля вида:
password_query = SELECT email as user, password FROM users WHERE email = '%n@%d'
Для создания пароля используется mysql-функция ENCRYPT.
-------------Проблема 1: при авторизации, если дописать к паролю какую-нибудь абракадабру, то авторизация выполняется успешно.
Проблема 2: если пароль 'mysecretcity' изменить на 'mysecretcity495', то авторизация будет и дальше происходить успешно по паролю 'mysecretcity'.
Если изменить пароль на совсем другой '4sdfgwdsfs', то авторизация уже не происходит.Подскажите кто знает, куда копать?
Вот что понял: он считает пароль верным, если совпадают первые 8 символов!
> Вот что понял: он считает пароль верным, если совпадают первые 8 символов!http://forums.mysql.com/read.php?30,7208,8396
> Вот что понял: он считает пароль верным, если совпадают первые 8 символов!""The traditional DES-crypt scheme only uses the first 8 characters of the password, the rest are ignored."" - http://wiki.dovecot.org/Authentication/PasswordSchemes
>> Вот что понял: он считает пароль верным, если совпадают первые 8 символов!
> ""The traditional DES-crypt scheme only uses the first 8 characters of the
> password, the rest are ignored."" - http://wiki.dovecot.org/Authentication/PasswordSchemesДа вот тоже читаю это сейчас и никак не пойму что же мне теперь делать.
У знакомого в Linux с такой же схемой нет таких глюков.
Вот думаю надо этой строкой из вики:
"Dovecot uses libc's crypt() function, which means that CRYPT is usually able to recognize MD5-CRYPT and possibly also other password schemes. Please see the notes below regarding glibc's crypt() and SHA-256/512 support. "
> Да вот тоже читаю это сейчас и никак не пойму что же
> мне теперь делать.Я на локалхосте ни до чего не додумался :( - положил пароли плейнтекстом.
> Вот думаю надо этой строкой из вики:
> "Dovecot uses libc's crypt() function, which means that CRYPT is usually able
> to recognize MD5-CRYPT and possibly also other password schemes. Please see
> the notes below regarding glibc's crypt() and SHA-256/512 support. "Посмотреть (как?), что умеет имеющийся на руках libc и его сrypt().
Попробовать хеши паролей, например, в "других" схемах, те что $1$ / $5$ / $6$ / чего там ещё?...
)))
$ echo 'CRYPT MD5 MD5-CRYPT SHA SHA1 SMD5 SSHA PLAIN CLEARTEXT CRAM-MD5 HMAC-MD5 DIGEST-MD5 PLAIN-MD4 PLAIN-MD5 LDAP-MD5 LANMAN NTLM RPA'|xargs -n1 /usr/sbin/dovecotpw -p 1 -u x -s
> Попробовать хеши паролей, например, в "других" схемах, те что $1$ / $5$
> / $6$ / чего там ещё?...
> )))
> $ echo 'CRYPT MD5 MD5-CRYPT SHA SHA1 SMD5 SSHA PLAIN CLEARTEXT CRAM-MD5
> HMAC-MD5 DIGEST-MD5 PLAIN-MD4 PLAIN-MD5 LDAP-MD5 LANMAN NTLM RPA'|xargs -n1 /usr/sbin/dovecotpw
> -p 1 -u x -sНо у меня уже в базе существует >300 юзеров в CRYPT.
> Но у меня уже в базе существует >300 юзеров в CRYPT.Во http://wiki2.dovecot.org/HowTo/ConvertPasswordSchemes , шайтан-арба!
Добавляет к старому CRYPY хэшу новый SSHA256 шпионскимВ)) скриптом прямо _во _время логина пользователя, внутри pop3 сервера.
При этом оно "едет" и на _"перемешанных"_ хешах: старые лежат с префиксом {CRYPT}, новые - уже с {SSHA256.hex}.
> Добавляет к старому CRYPY хэшу новый SSHA256_Заменяет старый новым, точнее.
ЗЫ:
- $ echo 'CRYPT MD5 MD5-CRYPT SHA SHA1 SMD5 SSHA PLAIN CLEARTEXT CRAM-MD5 HMAC-MD5 DIGEST-MD5 PLAIN-MD4 PLAIN-MD5 LDAP-MD5 LANMAN NTLM RPA'|xargs ...
+ $ /usr/sbin/dovecotpw -l |xargs ...Надо было man почитать ещё немного, предже чем копипастить %)ашлело.
> ...
> + $ /usr/sbin/dovecotpw -l |xargs ...
> Надо было man почитать ещё немного, предже чем копипастить %)ашлело.А у меня нет dovecotpw. :(
find /usr -type f -name 'dovecotpw'
...и ничего
>> Но у меня уже в базе существует >300 юзеров в CRYPT.
> Во http://wiki2.dovecot.org/HowTo/ConvertPasswordSchemes , шайтан-арба!Оо! Спасибо) Проглядел в вики эту страничку )
Я так понимаю, этим способом из вики можно сконвертить все пароли в md5, а потом юзать md5 при создания пароля через SQL-функцию... А то что-то я не нашел другого типа шифрования, чтобы и Dovecot и MySQL 5.1 поддерживали из коробки.
> то что-то я не нашел другого типа шифрования, чтобы и Dovecot
> и MySQL 5.1 поддерживали из коробки.А зачем тебе поддержка именно в mysql? Хранит себе _строку и хранит.
Давкот хеши по {ИМЕНАМ} схемы понимает/различает.
Так что единственная проблема - тот, кто _добавляет/изменяет пароли пользователей в базе.
Postfixadmin, например, умеет всяние схемы, в т.ч. все, что умеет dovecotpw, явно (через него и пропускает, видимо).
>> то что-то я не нашел другого типа шифрования, чтобы и Dovecot
>> и MySQL 5.1 поддерживали из коробки.
> А зачем тебе поддержка именно в mysql? Хранит себе _строку и хранит.
> Давкот хеши по {ИМЕНАМ} схемы понимает/различает.
> Так что единственная проблема - тот, кто _добавляет/изменяет пароли пользователей в базе.
> Postfixadmin, например, умеет всяние схемы, в т.ч. все, что умеет dovecotpw, явно
> (через него и пропускает, видимо).Дело в том, что юзеры добавляются через phpmyadmin - там просто выбираешь функцию ENCRYPT и не надо ничего шаманить.
Нужно чтобы и эникейщики могли справиться с генерацией пароля :)