web-dev-qa-db-ja.com

ランダムソルトを使用してSQLドライバーとMySQL暗号化を使用してRoundCubeパスワードプラグインをセットアップする方法

http://flurdy.com/docs/postfix/index.html のようにpostfixがインストールおよび設定されたメールサーバーを持っています。私はmysqlデータベースmaildbとテーブルusersを2つのフィールドで使用しますid = '[email protected]'およびcrypt = 'salted_md5_hash'。パスワードは次のようなクエリで更新されます。

UPDATE users SET crypt = ENCRYPT('apassword', CONCAT('$5$', MD5(Rand()))) WHERE id = '[email protected]';

Roundcube 1.0-RCはインストールされています http://trac.roundcube.net/wiki/Howto_Install

上記のインストールで機能するようにroundcubeパスワードプラグインをセットアップする方法

5
rda

以下に示すように、roundcube main config.inc.phpを編集してプラグイン名'password'をプラグインのarray()に追加し、プラグインをアクティブにします。

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

'roundcube' mysqlデータベース$config['db_dsnw'] = 'mysql://user:pass@localhost/roundcube'に接続するためにroundcubeが使用するDSNを書き留めることもできます。

.../roundcube_www_root/plugins/password/にcdして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ユーザーを使用してパスワードを更新する場合、[〜#〜] select [〜#〜][〜#〜] updateを付与する必要があります[〜#〜]テーブルに対する権限'users' in 'maildb' to 'roundcube' mysqlユーザー:

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

それでおしまい。問題が発生した場合は、ラウンドキューブエラーログを追跡します。

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