Ошибка изменения пароля в Roundcube

При попытке изменить пароль в Roundcube возникает ошибка.

В логах были зафиксированы две ошибки. Ошибка — 1.

roundcube: <gv6q21uo> PHP Error: Failed to load config from /usr/share/apache2/roundcubemail/plugins/password/config.inc.php in /usr/share/apache2/roundcubemail-1.0.4/program/lib/Roundcube/rcube_plugin.php on line 157 (POST /mail/?_task=settings&_action=plugin.password-save)

И ошибка — 2.

 DB Error: [1305] FUNCTION roundcubemail.update_passwd does not exist (SQL Query: SELECT update_passwd('$1$NfV14NIM$LdEfsQJB0qHYTTgejf5Cz.', 'roman.zakharchits@centuries-international.com')) in /usr/share/apache2/roundcubemail-1.0.4/program/lib/Roundcube/rcube_db.php on line 542 (POST /mail/?_task=settings&_action=plugin.password-save)

Похоже дело в том, что либо что-то не так с содержимым файлом config.inc.php, либо по каким-то причинам к нему нет доступа.  Решение проблемы было следующим. В каталоге /usr/share/apache2/roundcubemail/plugins/password/ есть файл config.inc.php.dist. Им надо заменить файл config.inc.php (предварительно сделав его копию!) и назначить ему нужные права (chown nginx:nginx, например). Со старого файла переписать в новый строчку с конфигурацией $config[‘password_db_dsn’].

На некоторых почтовых серверах файл config.inc.php может находится в другом каталоге.

После замены файла не факт, что всё заработает. В моём случае осталась ошибка — 2. В файле config.inc.php есть конфигурация  $config[‘password_query’]. В новом скопированном файле она может быть неверной. Вариантов тут два. Скопировать значение со старого файла config.inc.php. Но мне это не помогло и я прописал такую строчку.

$config['password_query'] = 'UPDATE mailbox SET password=%c WHERE username=%u';

Есть ещё вот такой вариант, но он у меня не заработал:

//$config['password_query'] = "UPDATE vmail.mailbox SET password=%D,passwordlastchange=NOW() WHERE username=%u LIMIT 1";

После этого ошибки в логах пропали и пароль был успешно изменён. Ещё полезным будет проверить остальные переменные  конфигурации config.inc.php, например, чтобы нельзя было делать короткий пароль вида 1234. Для этого надо отредактировать переменные:

//минимальная длина пароля

$config['password_minimum_length'] = 8;

//чтобы новый пароль обязательно содержал буквы и знаки

$config['password_require_nonalpha'] = true;

 

Добавить комментарий