Read in 3 minutes

Install and configure Roundcube Webmail

Photo by Miguel Á. Padriñán from Pexels

This is the last part of the Setting up and configuring a mail server series where will cover how to install and configure Roundcube Webmail. Roundcube is a web-based IMAP email client with a very intuitive and modern user interface written in PHP. To use Roundcube you only need a Web browser. RoundCube includes all the features which you need in an email client such as richtext/HTML message composing, address book, support for MIME/HTML emails, multiple sender identities, spell checking, three column View, drag & drop message management and more.

PHP dependencies

We’ll start off by installing all required PHP dependencies:

sudo apt install php-auth php-intl php-mail-mime php-mail-mimedecode php-mcrypt php-net-smtp php-net-socket php-pear php-xml php7.0-intl php7.0-mcrypt php7.0-xml php7.0-gd php7.0-gd php-imagick

Set the date.timezone value to UTC:

sed -i "s/;date.timezone.*/date.timezone = UTC/" /etc/php/7.0/fpm/php.ini

Restart the PHP FPM service for changes to take effect.

systemctl php7.0-fpm restart

Create MySQL Database

Roundcube uses MySQL to store its configuration. Create a new database and user and grant privileges to that user over the newly created database:

mysql -u root -p
CREATE DATABASE roundcubemail;
GRANT ALL ON roundcubemail.* TO 'roundcubemail'@'localhost' IDENTIFIED BY 'P4ssvv0rD';

Download Roundcube

At the time of the writing, 1.3.4 is the latest stable version of Roundcube. Download and extract the Roundcube archive to the /var/www directory:

wget -q${VERSION}/roundcubemail-${VERSION}-complete.tar.gz
tar xzf roundcubemail-${VERSION}-complete.tar.gz
sudo mv roundcubemail-${VERSION}/ /var/www/roundcubemail
rm -f roundcubemail-${VERSION}-complete.tar.gz

Nginx and PHP-FPM are running under the www-data user so we need to change the ownership of the /var/www/postfixadmin to that user:

sudo chown -R www-data: /var/www/roundcubemail

Configure Nginx

In the first part of this series, we created an Nginx server block for the PostfixAdmin instance. Open the configuration file and add the following location directives, the ones highlighted in yellow:

location /roundcubemail {
   index index.php;
   try_files $uri $uri/ /roundcubemail/index.php;
   deny all;
location ~ ^/roundcubemail/(bin|SQL|config|temp|logs)/ {
   deny all;

Reload the Nginx service for changes to take effect:

sudo systemctl reload nginx

Configure Roundcube

Open your browser and navigate to

You will be presented with the following screen:

If all required PHP extensions are loaded we can proceed to the next step, where we can configure our Roundcube installation:

The most important part here is to enter the correct MySQL database settings.

Once you are done with the configuration step, proceed to the next step and import Roundcube’s MySQL database structure by clicking on the Initialize database button.

Once the database structure is created we need to to delete the installer directory to prevent reconfiguration and/or unauthorized access.

sudo rm -rf /var/www/roundcubemail/installer

Enabling Roundcube’s automatic cache-cleaning is optional but reccomended:

sudo crontab -u www-data -l | { cat; echo "18 11 * * * /var/www/roundcubemail/bin/"; } | sudo crontab -u www-data -

Verify your Roundcube Installation

Open your web browser, navigate to: and log in using your email account’s username and password.

Enable Roundcube plugins

Roundcube comes with a number of plugins which are disabled by default. In this guide we will enable password and managesieve plugins. This plugins will allow users to create sieve filters and change their passwords from within the Roundcube interface.

// Enable plugins
$config['plugins'] = array('managesieve','password');
// Configure managesieve plugin
$rcmail_config['managesieve_port'] = 4190;
// Configure password plugin
$config['password_driver'] = 'sql';
$config['password_db_dsn'] = 'mysql://postfixadmin:[email protected]/postfixadmin';
$config['password_query'] = 'UPDATE mailbox SET password=%c WHERE username=%u';

This is the last post of this series. If you have any questions feel free to leave a comment.

This is a post in the Setting up and configuring a mail server series.
Other posts in this series:

Install and configure Roundcube Webmail