У меня есть сервер dovecot, работающий на сервере Ubuntu 14.04, который считывает данные для входа (пользователь / домен / пароль) из базы данных mysql.
Пароли сохраняются как соленые хэши SHA256. Для их создания я использую команду doveadm pw -s SHA512-CRYPT
. В соответствии с Dovecot wiki Схемы аутентификации паролей страница, команда использует glibcs crypt()
функция.
Теперь, когда я использую пароль без специальных символов (прописные / строчные буквы и цифры), например «t3st», я могу успешно войти в соответствующую учетную запись электронной почты. Но как только пароль будет содержать любые другие символы (например, t3$t
), Я больше не могу войти в систему. doveadm будет в обоих случаях возвращать кажущиеся действительными хэши (например, $6$iADbo7odiTlVjYgl$fi0X/kIHSUmAHAAiHIsXU6ow3j9dshL9mX.VTCDFOBMt.aV/.ZWpadLk3AFPD30EZ7SiyaqAR66YlTPoeQrcH/
).
Я попытался войти на сервер через Thunderbird и почтовый веб-интерфейс, и оба они дали одно и то же сообщение об ошибке в файлах журнала:
dovecot: imap-login: отключен (ошибка аутентификации, 1 попытка за 2 секунды) ...
Я также пробовал использовать «шифрование» MD5-CRYPT с теми же результатами.
Документация doveadm pw содержит следующую информацию:
«Вы должны заключить хэш пароля в одинарные кавычки, если он содержит один или несколько знаков доллара ($)».
Вы можете попробовать добавить
auth_debug = yes
auth_debug_passwords = yes
auth_verbose_passwords = yes
в вашу конфигурацию Dovecot. Таким образом, вы увидите, какие пароли dovecot фактически получает от клиентов и сравнивает с passdb.