After a lot of debuging, I finaly figured out what is going on.

Someone who wrote a ”Rondcube password changer driver for VestaCP” should convert a function to class in file /usr/share/roundcube/plugins/password/drivers/vesta.php
Plugin ‘passwod’ is expecting a class in that file, but there is only a function.

Anyway, here is a solution to fix this.

  1. Open file /usr/share/roundcube/plugins/password/drivers/vesta.php

  2. Find a line that contain: function password_save($curpass, $passwd)

  3. Delete that line

  4. On the same place, paste this:

class rcube_vesta_password {
function save($curpass, $passwd)

  1. Find a line that contain: $fp = fsockopen(‘ssl://’ . $vesta_host, $vesta_port);

  2. Delete that line

  3. On that place paste this:

$errno = "";
$errstr = "";
$context = stream_context_create();
$result = stream_context_set_option($context, 'ssl', 'verify_peer', false);
$result = stream_context_set_option($context, 'ssl', 'verify_host', false);
$result = stream_context_set_option($context, 'ssl', 'allow_self_signed', true);
$fp = stream_socket_client('ssl://' . $vesta_host . ':'.$vesta_port, $errno, $errstr, 60, STREAM_CLIENT_CONNECT, $context);

  1. At the end of file write: }

  2. Save the file.

Also, you need to change one configuration file, to make it works.

  1. Open /etc/roundcube/plugins/password/
  2. Find: $rcmail_config[‘password_vesta_host’] = ‘localhost’;
  3. Change localhost to your server hostname (if you are not sure what is your hostname, open /etc/hostname file)
  4. Also, if you changed Vesta port, change it here too, you will find in next line $rcmail_config[‘password_vesta_port’]
  5. Save the file.

Also, you need this:
Run as root in SSH console:


cp /var/lib/roundcube/plugins/jqueryui/ /var/lib/roundcube/plugins/jqueryui/

chown admin:admin /var/log/roundcube

Leave a Reply