Roundcube est un webmail, une interface web pour consulter le courrier électronique. Le monde de l’Open Source offre une série de solutions dans ce domaine, du webmail simple jusqu’à l’interface intégrée dans un groupware. Roundcube fait partie des webmails simples qui obéissent au fameux principe KISS (Keep It Simple Stupid). Son installation n’est pas trop compliquée, et dans mon expérience, même les utilisateurs frileux face à l’outil informatique ont vite fait de l’apprivoiser au vu de son ergonomie intuitive.
Depuis la version 1.4, Roundcube a intégré le thème responsive elastic
par défaut et devient ainsi utilisable sur les smartphones et les tablettes.
Prérequis
- un serveur dédié sous Rocky Linux 8
- un domaine valide, par exemple
mail.slackbox.fr
- un certificat SSL/TLS pour ce domaine
- un serveur LAMP fonctionnel
- un serveur mail fonctionnel
Je me suis servi du dépôt tiers de Remi Collet pour configurer PHP. Voici tous les paquets nécessaires pour faire fonctionner Roundcube correctement :
# rpm -qa | grep ^php | sort php-7.4.33-10.el8.remi.x86_64 php-cli-7.4.33-10.el8.remi.x86_64 php-common-7.4.33-10.el8.remi.x86_64 php-fpm-7.4.33-10.el8.remi.x86_64 php-gd-7.4.33-10.el8.remi.x86_64 php-intl-7.4.33-10.el8.remi.x86_64 php-json-7.4.33-10.el8.remi.x86_64 php-ldap-7.4.33-10.el8.remi.x86_64 php-mbstring-7.4.33-10.el8.remi.x86_64 php-mysqlnd-7.4.33-10.el8.remi.x86_64 php-opcache-7.4.33-10.el8.remi.x86_64 php-pdo-7.4.33-10.el8.remi.x86_64 php-pecl-imagick-im6-3.7.0-7.el8.remi.7.4.x86_64 php-pecl-zip-1.22.3-1.el8.remi.7.4.x86_64 php-sodium-7.4.33-10.el8.remi.x86_64 php-xml-7.4.33-10.el8.remi.x86_64
Configuration de SELinux
L’utilisation de SELinux en mode renforcé (Enforcing
) améliore de façon significative la sécurité de notre installation OwnCloud, mais elle nécessite de procéder à quelques petits ajustements.
Roundcube doit pouvoir envoyer des mails via Postfix, ce qu’il faut explicitement autoriser :
# setsebool -P httpd_can_sendmail on
Apache possède les droits d’écriture sur les répertoires temp/
et logs/
de l’arborescence /var/www/slackbox-mail/html
. Ces droits d’écriture seront définis par le biais des permissions Unix classiques, mais il faut également le spécifier du côté de SELinux :
# setsebool -P httpd_unified on
Pour afficher la liste complète des booléens SELinux personnalisés, on pourra utiliser la commande semanage boolean -lC
.
Configuration de l’hôte virtuel
La documentation officielle est quelque peu laconique sur ce sujet. Roundcube doit pouvoir gérer sa configuration par une série de fichiers .htaccess
, ce qu’il faudra autoriser en conséquence.
Roundcube utilise les iframes (inline frames) pour l’affichage des messages. Lors de mes premiers tests, j’ai eu quelques blocages mystérieux dus à une configuration trop restrictive de l’en-tête X-Frame-Options
sur mon serveur.
Voici la configuration que j’utilise sur ma machine de test :
# /etc/httpd/conf.d/10-mail.slackbox.fr-ssl.conf # http://mail.slackbox.fr -> https://mail.slackbox.fr <VirtualHost *:80> ServerName mail.slackbox.fr Redirect / https://mail.slackbox.fr </VirtualHost> # https://mail.slackbox.fr <VirtualHost _default_:443> Header always set X-Frame-Options "SAMEORIGIN" ServerAdmin info@microlinux.fr DocumentRoot "/var/www/slackbox-mail/html" <Directory "/var/www/slackbox-mail/html"> Options +FollowSymlinks AllowOverride All </Directory> ServerName mail.slackbox.fr:443 SSLEngine on SSLCertificateFile /etc/letsencrypt/live/sd-155842.dedibox.fr/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/sd-155842.dedibox.fr/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/sd-155842.dedibox.fr/fullchain.pem BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 ErrorLog logs/mail.slackbox.fr-error_log CustomLog logs/mail.slackbox.fr-access_log common </VirtualHost>
Téléchargement
Créer un répertoire de téléchargement en un endroit approprié :
# mkdir -v ~/webapps/roundcube mkdir: created directory '/root/webapps/roundcube'
- Ouvrir le site de Roundcube dans un navigateur web.
- Suivre le lien Download.
- Repérer la section LTS versions.
- Copier le lien de téléchargement de la dernière version LTS en date.
- Retourner dans le terminal et coller le lien pour récupérer l’archive avec
wget
.
# cd webapps/roundcube/ # wget -c https://github.com/roundcube/lien/vers/roundcubemail-1.5.x-complete.tar.gz
Roundcube est actuellement proposé en deux moutures :
- la version stable 1.6.x
- la version LTS 1.5.x
Pour mes tests, j’ai opté pour la version LTS.
Installation
Créer la base de données :
# mysql -u root -p Enter password: ********** Welcome to the MariaDB monitor. MariaDB [(none)]> create database `slackbox-roundcube`; Query OK, 1 row affected (0.001 sec) MariaDB [(none)]> grant all on `slackbox-roundcube`.* -> to slackboxuser@localhost -> identified by '**********'; Query OK, 0 rows affected (0.001 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.001 sec) MariaDB [(none)]> quit; Bye
L’hôte virtuel se situera dans /var/www/slackbox-mail/html
. Créer le répertoire parent, décompresser l’archive téléchargée à l’intérieur de ce répertoire et renommer le répertoire roundcubemail-1.5.6
résultant en html
. En passant, on en profite pour une première définition des permissions :
# cd /var/www/ # mkdir -v slackbox-mail mkdir: created directory 'slackbox-mail' # cd slackbox-mail/ # tar -xzf /root/webapps/roundcube/roundcubemail-1.5.6-complete.tar.gz # ls roundcubemail-1.5.6 # mv -v roundcubemail-1.5.6/ html renamed 'roundcubemail-1.5.6/' -> 'html' # chown -R nobody:nobody /var/www/slackbox-mail/
Configuration
À présent on peut ouvrir l’assistant d’installation dans un navigateur web. Il est accessible via le sous-répertoire installer/
de Roundcube :
L’assistant d’installation est organisé en trois pages successives :
- Check environment permet de tester les prérequis, notamment PHP.
- Create config permet de créer la configuration à proprement parler.
- Test config permet de tester cette configuration.
Sur la première page, on pourra vérifier la présence des prérequis de PHP dont on a effectivement besoin. Ne vous tracassez donc pas si votre installation pour une TPE locale ne supporte pas les bases Oracle.
Cliquez sur Next une fois que tout semble correct :
La deuxième page de l’assistant de configuration propose une longue liste de paramètres de configuration, avec une série de valeurs par défaut. Je ne vais pas tous les passer en revue, vous avez la documentation officielle pour ça. Je mentionnerai uniquement les valeurs que je modifie par rapport à la configuration proposée par défaut :
product_name
: Slackbox Webmail (le nom de votre webmail)support_url
:https://www.slackbox.fr
(votre site principal)enable_spellcheck
: décochez cette option si elle est cochéeidentities_level
: one identity with possibility to edit all params
Renseignez les paramètres de connexion à la base MySQL et passez à la suite :
smtp_port
: 25language
: fr_FR
Cette configuration initiale mérite quelques remarques.
- Indiquez votre propre site pour
support_url
. Les développeurs Roundcube sont excédés par les demandes de support des simples utilisateurs de Roundcube. - Le correcteur d’orthographe configuré par défaut utilise le service correspondant de Google. Autrement dit, le contenu de vos messages est envoyé à Google pour la vérification orthographique. Ce n’est donc pas une mauvaise idée de désactiver cette fonctionnalité hautement intrusive pour la remplacer par le correcteur orthographique intégré à votre navigateur.
- La langue de l’interface est censée être auto-détectée, mais dans la pratique quotidienne il vaut mieux définir explicitement le français, faute de quoi vous vous retrouvez avec des menus de navigation en anglais.
Cliquez sur Create Config tout en bas de la page pour afficher la suite :
Étant donné que mes permissions sont assez restrictives, le serveur n’a pas les droits d’écriture sur l’arborescence de l’installation. Je dois donc copier la configuration générée et la coller vers un fichier config/config.inc.php
:
Une fois que le fichier config.inc.php
est en place, cliquez sur Continue pour passer à la suite :
Roundcube doit pouvoir écrire dans les répertoires temp/
et logs/
de l’installation. On va donc rectifier les permissions en conséquence :
# cd /var/www/slackbox-mail/html/ # chown nobody:apache temp/ logs/ # chmod 0770 temp/ logs/ # ls -ld temp/ logs/ drwxrwx---. 2 nobody apache 4096 Nov 5 10:11 logs/ drwxrwx---. 2 nobody apache 4096 Nov 5 10:11 temp/
Quant à la base de données, il suffit de cliquer sur Initialize database pour l’initialiser :
Un peu plus bas sur la page, nous avons la possibilité de tester la connexion de Roundcube au serveur mail :
- Renseignez les paramètres de connexion SMTP pour envoyer un mail de test.
- Une fois que c’est bon, procédez de même pour la connexion IMAP.
L’installation arrive à son terme. Il ne nous reste plus qu’à supprimer l’assistant d’installation, dont la présence constitue un risque de sécurité pour notre webmail :
# rm -rf installer/
Première connexion
Rendez-vous sur la page d’accueil de Roundcube et fournissez vos paramètres de connexion :
Dans la configuration par défaut, l’identité des utilisateurs n’est pas renseignée correctement :
Ici, il faut se rendre dans Paramètres > Identité et renseigner correctement l’identité de l’utilisateur :
Roundcube est désormais prêt à l’emploi :
Mise à jour
La procédure de mise à jour de Roundcube est considérablement simplifiée par un petit script shell installto.sh
que l’on trouve dans le répertoire bin/
de l’installation.
- Télécharger la nouvelle version de Roundcube.
- Décompresser l’archive.
- Lancer le script
bin/installto.sh
en fournissant la cible de l’installation comme argument.
Dans l’exemple suivant, j’effectue une mise à jour de Roundcube 1.4.11 vers la dernière version LTS 1.5.6 :
# cd ~/webapps/roundcube/ # tar -xzf roundcubemail-1.5.6-complete.tar.gz # cd roundcubemail-1.5.6/bin/ # ./installto.sh /var/www/slackbox-mail/html Upgrading from 1.4.11. Do you want to continue? (y/N) y ... Executing database schema update. Updating database schema (2020020100)... [OK] Updating database schema (2020020101)... [OK] Updating database schema (2020091000)... [OK] Updating database schema (2020122900)... [OK] ... This instance of Roundcube is up-to-date. Have fun! All done. # cd ../.. # rm -rf roundcubemail-1.5.6
Pour finir, il suffit de corriger les permissions :
# cd /var/www/slackbox-mail/html/ # chown -R nobody:nobody . # chown -R nobody:apache temp/ logs/ # chmod 0660 logs/*.log
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.
2 commentaires
tuxmika · 4 mars 2024 à 17 h 31 min
Bonjour
Quel est l’intérêt de mettre chown nobody:apache au lieu de chown apache:apache ?
cdt
kikinovak · 4 mars 2024 à 18 h 07 min
La logique, c’est un peu celle-ci : l’ensemble des fichiers n’appartient à personne en particulier (
nobody
). Mais sur certains, il faut que le serveur web (apache
) ait les droits d’écriture. Après, différents chemins mènent à Saint-Saint-Bauzille-de-Putois. J’ai juste fait jouer mon bon sens. :o)