Como configurar o plugin de senha roundcube com o driver sql e mysql criptografar usando sal aleatório?

5

Eu tenho um servidor de email com o postfix instalado e configurado como no link . Eu uso um banco de dados mysql maildb com uma tabela users com dois fileds id = '[email protected]' e crypt = 'salted_md5_hash' . A senha é atualizada com uma consulta como esta:

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

O Roundcube 1.0-RC é instalado de acordo com o link

Como configurar o plugin de senha do roundcube para trabalhar com a instalação acima?

    
por rda 13.02.2014 / 18:00

1 resposta

7

Edite o roundcube main config.inc.php e adicione o nome do plugin 'password' ao plugins array () como mostrado abaixo, para ativar o plugin:

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

Você também pode anotar o DSN usado pelo roundcube para conectar-se ao 'roundcube' banco de dados mysql $config['db_dsnw'] = 'mysql://user:pass@localhost/roundcube'

copie para .../roundcube_www_root/plugins/password/ e crie config.inc.php

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

Edite as seguintes linhas no config.inc.php :

do plug-in de senha
<?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('localhost');
$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';

...

Atualização: Em algumas situações, localhost parece não funcionar e precisa ser substituído por 127.0.0.1 , conforme relatado por Terry

Atualização: Recentemente tive que alterar o parâmetro $config['default_host'] na configuração principal do roundcube ( config/config.inc.php ) para o fqdn em vez de localhost . Por isso tive que alterar também o parâmetro $config['password_hosts'] na configuração do plugin ( plugins/password/config.inc.php ) para os servidores fqdn.

Veja .../plugins/password/README e .../plugins/password/config.inc.php.dist para mais informações.

Assumindo que você usará o mesmo usuário mysql para o plugin de senha para atualizar a senha, você terá que conceder privilégios SELECT e UPDATE na tabela 'usuários ' em ' maildb ' para o usuário ' roundcube ' do mysql:

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

É isso. Se você encontrar problemas, siga o log de erros do roundcube:

# tail -f ../../logs/error
    
por 13.02.2014 / 18:00