How to Install and Configure RoundCube Webmail Client with Virtual Users in Postfix – Part 4
In Parts 1 through 3 of this Postfix series we explained, step by step, how to set up and configure an email server with virtual users. We also showed you how to access one of those accounts using Thunderbird as email client.
- Setting Up Postfix Mail Server and Dovecot with MariaDB – Part 1
- Configure Postfix and Dovecot Virtual Domain Users – Part 2
- Install and Integrate ClamAV and SpamAssassin to Postfix Mail Server – Part 3
In this era of connectivity when you are likely to need access to your inbox from anywhere (and not just from your home computer), server-side software known as webmail clients make it possible for you to read and send emails through a web interface.
Roundcube is one of such programs, and given its many features (which you can read more about in the project’s website) it is the one we have chosen to use in this tutorial.
Install Roundcube Webmail for Postfix
In CentOS 7 and based distributions such as RHEL and Fedora, installing Roundcube is as easy as doing:
# yum update && yum install roundcubemail
Note: Please keep in mind that Roundcube is included in the EPEL repository, which we must have already enabled as outlined in Part 1.
In Debian 8 and its derivatives such as Ubuntu and Mint, you will need to enable the Jessie backports (web) first:
# echo "deb http://http.debian.net/debian jessie-backports main" >> /etc/apt/sources.list
Then install Roundcube as follows:
# aptitude update && aptitude install roundcube
Regardless of the distribution we’re using, we now need to create a database to store Roundcube’s internal structure.
In Debian 8, the installation process will take care of this:
Choose Yes when prompted whether you want to configure the Roundcube database using dbconfig-common:
Choose mysql as database type:
Provide the password for the MariaDB root user:
And choose a password for roundcube to register with the database server, then click Ok:
Confirm the password you entered during the previous step:
And before long, you will have a database named roundcube and its corresponding tables created automatically for you:
MariaDB [(none)]> USE roundcube; MariaDB [(none)]> SHOW TABLES;
In CentOS 7, you will need to create the database manually by either logging on to phpMyAdmin or via the command line. For brevity, we will use the second proposed method here:
# mysql -u root -p MariaDB [(none)]> CREATE DATABASE RoundCube_db;
Then exit the MariaDB prompt and run the following SQL script:
# mysql -u root -p RoundCube_db < /usr/share/roundcubemail/SQL/mysql.initial.sql
Please note that in Debian you can also perform these steps manually. Thus, you get to rename your database if you want to instead of having it named automatically “roundcube” as seen before.
Configure Roundcube for Postfix
To begin, you should note that from RoundCube v1.0 and onwards, the configuration settings are included in one file only, as opposed to previous versions where they were split between two files.
First, locate the following file and make a copy named
config.inc.php in the same directory. Use the -p option to preserve mode, ownership, and original timestamp:
# cp -p /etc/roundcubemail/defaults.inc.php /etc/roundcubemail/config.inc.php
Next, make sure Roundcube can access the database we created previously. In
db_dsnw, replace user and password with an username and password with permissions to access the RoundCube_db.
For example, you could use the same administrative account you utilized to log on to phpMyAdmin in Part 1, or you can just use root if you want.
$config['db_dsnw'] = 'mysql://user:password@localhost/RoundCube_db';
The following settings refer to the hostname, ports, authentication type, and so on (they are self-explanatory, but you can find more details by reading the comments in the configuration file):
$config['default_host'] = 'ssl://mail.linuxnewz.com'; $config['default_port'] = 143; $config['smtp_server'] = 'tls://mail.linuxnewz.com'; $config['smtp_port'] = 587; $config['smtp_user'] = '%u'; $config['smtp_pass'] = '%p'; $config['smtp_auth_type'] = 'LOGIN';
These last two settings (product_name and useragent) refer to the header in the web interface and to the email headers sent with the messages.
$config['product_name'] = 'Linuxnewz Webmail - Powered by Roundcube'; $config['useragent'] = 'Linuxnewz Webmail';
In order for Roundcube to use virtual user’s authentication for outgoing mail, we need to activate the
virtuser_query plugin (which can be found in /usr/share/roundcubemail/plugins):
$config['plugins'] = array('virtuser_query'); $config['virtuser_query'] = "SELECT Email FROM EmailServer_db.Users_tbl WHERE Email = '%u'";
Note how the SQL query above points to the
EmailServer_db database we set up initially in Part 1, which is where the information about the virtual users is stored.
Finally, similarly to what we did in Part 1 to be able to access phpMyAdmin’s web interface using a web browser, let’s dive into the Roundcube / Apache configuration file at:
# vi /etc/httpd/conf.d/roundcubemail.conf # CentOS 7 # nano /etc/roundcube/apache.conf # Debian 8
And place the following lines inside the indicated tags:
<IfVersion >= 2.3> Require ip AAA.BBB.CCC.DDD Require all granted </IfVersion>
<IfModule mod_authz_core.c> # Apache 2.4 Require ip AAA.BBB.CCC.DDD Require all granted </IfModule>
Though not strictly required, it’s a good idea to change the alias of the Roundcube directory in order to protect yourself from bots that target
/roundcube as a well-known door to break into your system. Feel free to choose an alias that suits your needs (we will go with webmail here):
Alias /webmail /usr/share/roundcubemail # CentOS 7 Alias /webmail /var/lib/roundcube # Debian 8
Save changes, exit the configuration file and restart Apache:
# systemctl restart httpd # CentOS 7 # systemctl restart apache2 # Debian 8
Now you can open a web browser and point it to
https://mail.yourdomain.com/webmail and you should see something similar to:
You can now log on with one of the accounts we configured in the previous articles and start sending and receiving emails using Roundcube from anywhere!
Customizing Roundcube Webmail
Fortunately, Roundcube’s interface is fairly intuitive and easy to configure. At this point, you could spend some 15-30 minutes configuring the environment and becoming familiar with it. Go to Settings for more details:
Please note that the above image shows the emails that we have received in this account (firstname.lastname@example.org).
You can click Compose and start writing an email to an external email address:
Then hit Send and check the destination to see if it arrived correctly:
Congratulations! You have successfully setup Roundcube to send and receive emails!
In this article we have explained how to setup and configure Roundcube as web client. As you explore Roundcube’s interface you will see how easy it is to use, as described in the Webmail help.
However, don’t hesitate to let us know if you have any questions or concerns – just drop us a note using the comment form below. We look forward to hearing from you!