User Tools

This is an old revision of the document!


Roundcube Webmail

Roundcube is a well proven webmail client written in PHP.

Note: i installed roundcube on my external server, together with the mail server, and not on the home server. The unusual approach you might note here are due to that noticeable differences.

Prerequisites

Since i don't want to oberate the external server with containers, i will show you how to install Roundcube on bare metal. It's relatively easy anyway.

You need PHP and NGINX installed. PHP requires some extensions like PDO and zip, so:

echo app-eselect/eselect-php fpm >> /etc/portage/package.use/php
echo dev-lang/php fpm sqlite zip spell intl pdo curl exif gd xmlreader writer >> /etc/portage/package.use/php
emerge -vp php
# The following is optional, if you haven't yet created a web user:
# useradd --shell /sbin/nologin web

Since i use NGINX, the fpm flag needs also to be enabled.

If you haven't yet done so, ensure your php-fpm is running as user web by checking the rows:

user = web
group = web

in file /etc/php/fpm-php8.2/fpm.d/www.conf

Installation

Let's follow this installation guide, and let's personalize it a bit.

Since i want to share PHP between Rouncube and other public services, due to the limited resources of the external server, i will not create a dedicated user, which would require also to run multiple PHP copies.

The webmail will be installed under /home/web/roundcube:

mkdir -p /home/web/roundcube
cd /home/web/roundcube

Download the latest complete package from https://roundcube.net/download/ and decompress it. Since this is the complete package, there is no need to install dependencies using composer.

Set proper permissions and create the folder to store the SQLite database (mysql or postgres are overkill for small needs):

cd /home/web/roundcube
mkdir db logs temp
chown web:web db logs temp

Done! Now setup the NGINX webserver.

NGINX setup

Assuming that PHP-FPM is on port 9000, the following configuration should be enough:

roundcube.conf
        server {
                server_name webmail.mydomain.com;
                listen 443 ssl;

                index index.php;

                root /home/web/roundcube/roundcubemail-1.6.10;

                access_log /var/log/nginx/webmail.mydomain.com_access_log main;
                error_log /var/log/nginx/webmail.mydomain.com_error_log info;

# The following lines should be uncommented after initial setup is complete!
#        location ~ /(config/|temp/|logs/|installer) {
#                deny all;
#                alias /home/web/roundcube/roundcubemail-1.6.10;
#        }

                location ~ /.*\.php$ {
                        try_files $uri =404;
                        fastcgi_split_path_info ^(.+\.php)(/.+)$;
                        include fastcgi_params;
                        fastcgi_param SCRIPT_FILENAME $request_filename;
                        fastcgi_pass 127.0.0.1:9000;
                }

                include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
                ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
                ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
                ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
        }

Restart your NGINX and configure Roundcube.

Configuration

Point your browser to https://webmail.mydomain.com/installer and follow the onscreen instructions

Double check the temp and logs paths, you need to change the path to point to the folders you created in the previous step.

When asked for database, use this as file path /home/web/roundcube/db/roundcube.db.

Save the settings by copying the produced config file as /home/web/roundcube/roundcubemail-<version>/config/config.inc.php.

At this point the installation is complete,

Autostart

Roundcube only depends on PHP-FPM and NGINX, ensure they are both autostarting:

rc-update add php-fpm default
rc-update add nginx default

This website uses technical cookies only. No information is shared with anybody or used in any way but provide the website in your browser.

More information