Я думаю, проблема в том, чтобы попытаться использовать механизм аутентификации CRAM-MD5 с полем "crypt" из БД.
В вашем журнале:
Dec 31 20:14:45 localhost authdaemond: SQL query: SELECT id, **crypt**, '', uid, gid, home, concat(home,'/',maildir), '', name, '' FROM users WHERE id = 'test@example.com' AND (enabled=TRUE)
Dec 31 20:14:45 localhost authdaemond: authpgsql: REJECT - try next module
Dec 31 20:14:45 localhost authdaemond: FAIL, all modules rejected
Dec 31 20:14:45 localhost imapd-ssl: LOGIN FAILED, **method=CRAM-MD5**, ip=[::ffff:127.0.0.1]
Это означает, что в запросе SQL вы получаете поле "crypt", authdaemond не может прочитать простой пароль, тогда CRAM-MD5 не работает. Пароли в виде открытого текста позволяют реализовать аутентификацию CRAM-MD5.
Чтобы исправить:
Надеюсь, это сработает для вас.
Возможно, это конфигурация roundcube:
Я не на 100%, но конфигурация roundcube по умолчанию использует аутентификацию "PLAIN", поэтому вы можете изменить ее в файле конфигурации и протестировать:
// IMAP AUTH type (DIGEST-MD5, CRAM-MD5, LOGIN, PLAIN or null to use
// best server supported one)
// $rcmail_config['imap_auth_type'] = LOGIN;
$rcmail_config['imap_auth_type'] = null;
В старых версиях (0.3.1) roundcube у вас есть только «auth», «plain» или «check», например:
// IMAP auth type. Can be "auth" (CRAM-MD5), "plain" (PLAIN) or "check" to auto detect.
// Optional, defaults to "check"
$rcmail_config['imap_auth_type'] = "auth";
В зависимости от используемой версии.
Столкнувшись с той же самой проблемой, я сделал несколько наших Google-Foo, чтобы добраться до ее корня: Как Габриэль предположил корректность в своем ответе , это не вина Roundcube - а то, как хранится пароль и работает шифрование.
Говоря о CRAM-MD5, MD5, или CRYPT, мы говорим об одностороннем шифровании: Генерируется хэш. Мы не можем сделать это наоборот, извлечение пароля из хэша в чистом тексте (кроме брутального) невозможно и нереально для любой процедуры входа в систему. Поэтому, если пароль хранится с использованием одного из этих хэшей, мы можем проверить его только при наличии его в открытом тексте, поэтому установка $rcmail_config['imap_auth_type'] = 'PLAIN'
в круглокубной конфигурации "решает" эту проблему.
/usr/sbin/doveadm pw
), что делает пароль с открытым текстом коротко появляющимся в списке процессов каждый раз, когда он вызывается Я все еще борюсь за то, какой путь идти - только #2 определенно исключен (я не хочу делать подарки потенциальным хакерам ;)
.