Roundcube password change plugin
From MS Computech
How to enable password change plugin roundcube mail (Zpanel Centos6.5)--Snifer 11:04, 29 August 2014 (ICT)
1 Create file in /etc/zpanel/panel/etc/apps/webmail/plugins/password/drivers/zpmail.php
nano /etc/zpanel/panel/etc/apps/webmail/plugins/password/drivers/zpmail.php
2 Replace SQL Authentication in config bellow.
/** * ZPanelX SQL Password Driver * * Driver for passwords stored in SQL database * * @version 1.1 * @author * */ class rcube_zpmail_password { function save($curpass, $passwd) { $rcmail = rcmail::get_instance(); $local_part = $rcmail->user->get_username('local'); $domain_part = $rcmail->user->get_username('domain'); $username = $_SESSION['username']; $host = $_SESSION['imap_host']; // convert domains to/from punnycode if ($rcmail->config->get('password_idn_ascii')) { $domain_part = rcube_idn_to_ascii($domain_part); $username = rcube_idn_to_ascii($username); $host = rcube_idn_to_ascii($host); } else { $domain_part = rcube_idn_to_utf8($domain_part); $username = rcube_idn_to_utf8($username); $host = rcube_idn_to_utf8($host); } $sql = 'SELECT password FROM mailbox WHERE username="'.$username.'"'; $host = "mysqlhost"; // Usually localhost $dbName = "zpanel_postfix"; // your ZPanelX postfix database. Default value here $dbUser = "databaseusername"; $dbPass = "databasepassword"; try { $db = new PDO("mysql:host={$host};dbname={$dbName}", $dbUser, $dbPass); $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING ); } catch (PDOException $e) { //echo 'Database error: '. $e->getMessage() . ' '; return PASSWORD_CONNECT_ERROR; } $res = $db->query($sql); $result = $res->fetch();$pass = $result["password"]; $hash = str_replace("{PLAIN-MD5}", "", $pass); if (md5($curpass) != $hash) { // echo "Password mismatch error"; return PASSWORD_ERROR; } $pass = "{PLAIN-MD5}".md5($passwd); $sql = 'UPDATE mailbox SET password="'.$pass.'" WHERE username="'.$username.'"'; $res = $db->query($sql); if ($res) { return PASSWORD_SUCCESS; } return PASSWORD_ERROR; } }
3 copy file /etc/zpanel/panel/etc/apps/webmail/plugins/password/config.inc.php.dist to config.inc.php
cp config.inc.php.dist config.inc.php
4 Change the config file.
$rcmail_config['password_driver'] = 'sql'; $rcmail_config['password_query'] = 'UPDATE zpanel_postfix.mailbox SET password=CONCAT(\'{PLAIN-MD5}\',MD5(%p)) WHERE username=%u AND password=CONCAT(\'{PLAIN-MD5}\',MD5(%o)) LIMIT 1';
5 Enable password plugin /etc/zpanel/panel/etc/apps/webmail/config/main.inc.php
$rcmail_config['plugins'] = array('password');