Назад | Перейти на главную страницу

Как настроить плагин пароля roundcube с драйвером sql и шифрованием mysql с использованием случайной соли?

У меня есть почтовый сервер с установленным и настроенным postfix, как в http://flurdy.com/docs/postfix/index.html. Я использую базу данных mysql maildb со столом users с двумя полями idзнак равно'user@domain.com' и cryptзнак равно'salted_md5_hash'. Пароль обновляется с помощью такого запроса:

UPDATE users SET crypt = ENCRYPT('apassword', CONCAT('$5$', MD5(RAND()))) WHERE id = 'user@domain.tld';

Roundcube 1.0-RC устанавливается согласно http://trac.roundcube.net/wiki/Howto_Install

Как настроить плагин пароля roundcube для работы с указанной выше установкой?

Изменить основной круглый куб config.inc.php и добавьте название плагина 'пароль' в массив плагинов (), как показано ниже, чтобы активировать плагин:

// List of active plugins (in plugins/ directory)
$config['plugins'] = array('password');

Вы также можете записать DSN, используемый roundcube для подключения к 'roundcube' база данных mysql $config['db_dsnw'] = 'mysql://user:pass@localhost/roundcube'

cd в .../roundcube_www_root/plugins/password/ и создать config.inc.php

# cp config.inc.php.dist config.inc.php
# vi config.inc.php

Отредактируйте следующие строки в плагине пароля config.inc.php:

<?php

$config['password_driver'] = 'sql';
$config['password_confirm_current'] = true;
$config['password_minimum_length'] = 8;
$config['password_require_nonalpha'] = false;
$config['password_log'] = false;
$config['password_login_exceptions'] = null;
// If the server is accessed via fqdn, replace localhost by the fqdn:
$config['password_hosts'] = array('127.0.0.1');
$config['password_force_save'] = true;

// SQL Driver options
$config['password_db_dsn'] = 'mysql://user:pass@localhost/maildb';

// SQL Update Query with encrypted password using random 8 character salt
$config['password_query'] = 'UPDATE users SET crypt=ENCRYPT(%p,CONCAT(_utf8\'$5$\',RIGHT(MD5(RAND()),8),_utf8\'$\')) WHERE id=%u LIMIT 1';

...

Использовать SHA-512 хэши паролей вместо SHA-256, установить $id$ к $6$ (смотрите также man 3 crypt):

$config['password_query'] = 'UPDATE users SET crypt=ENCRYPT(%p,CONCAT(_utf8\'$6$\',RIGHT(MD5(RAND()),8),_utf8\'$\')) WHERE id=%u LIMIT 1';

Видеть .../plugins/password/README и .../plugins/password/config.inc.php.dist для получения дополнительной информации.

Предполагая, что вы будете использовать того же пользователя mysql для плагина пароля для обновления пароля, вам необходимо ПРЕДОСТАВИТЬ ВЫБРАТЬ и ОБНОВИТЬ привилегии на столе 'пользователи' в 'maildb' к 'roundcube' Пользователь mysql:

# mysql -u root -p
mysql > GRANT SELECT,UPDATE ON maildb.users TO 'roundcube'@'localhost';
mysql > FLUSH PRIVILEGES;
mysql > quit
# 

Вот и все. Если вы столкнулись с проблемами, следите за журналом ошибок roundcube:

# tail -f ../../logs/error