RoundcubeRoundcube 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 et devient ainsi utilisable sur les smartphones.

Prérequis

Configuration de SELinux

Étant donné que nous installons Roundcube en-dessous de /var/www, tous les fichiers nouvellement créés seront correctement étiquetés httpd_sys_content_t. Rien à signaler de ce côté-là.

Roundcube doit pouvoir envoyer des mails via Postfix, ce qu’il faut explicitement autoriser.

$ sudo 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.

$ sudo setsebool -P httpd_unified on

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
  ServerAlias slackbox.fr
  SSLEngine on
  SSLCertificateFile /etc/letsencrypt/live/sd-100246.dedibox.fr/cert.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/sd-100246.dedibox.fr/privkey.pem
  SSLCertificateChainFile /etc/letsencrypt/live/sd-100246.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.slack
</VirtualHost>

Configuration de PHP

En théorie, Roundcube fonctionne très bien avec la version PHP 5.4 officielle fournie par Red Hat Enterprise Linux et CentOS, supportée jusqu’en juin 2024. En pratique, j’utilise PHP 7.2 en provenance des Red Hat Software Collections sur cette machine.

Voici la liste des paquets requis pour une installation fonctionnelle de Roundcube.

  • rh-php72
  • rh-php72-php-fpm
  • rh-php72-php-mysqlnd
  • rh-php72-php-mbstring
  • rh-php72-php-intl
  • rh-php72-php-gd
  • sclo-php72-php-pecl-imagick

Rien de particulier à signaler du côté de php.ini. Veillez juste à renseigner correctement le fuseau horaire du serveur dans la variable date.timezone, faute de quoi l’assistant d’installation de Roundcube vous affichera un avertissement.

[Date]
; Defines the default timezone used by the date functions
; ; http://php.net/date.timezone
date.timezone = Europe/Paris

Téléchargement

Créer un répertoire de téléchargement approprié pour ranger Roundcube.

$ mkdir -p ~/webapps/roundcube

Télécharger Roundcube.

$ cd ~/webapps/roundcube/
$ links https://roundcube.net

Suivre le lien Download > Stable version – 1.4.1 > Complete et télécharger le fichier roundcubemail-1.4.1-complete.tar.gz.

Installation

Créer la base de données.

$ mysql -u root -p
Enter password: ********
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 5.5.52-MariaDB MariaDB Server

MariaDB [(none)]> create database `slackbox-roundcube`;
Query OK, 1 row affected (0.02 sec)

MariaDB [(none)]> grant all on `slackbox-roundcube`.* 
    -> to slackboxuser@localhost 
    -> identified by '********';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 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.4.1 résultant en html.

$ cd /var/www/
$ sudo mkdir slackbox-mail
$ sudo chown microlinux:microlinux slackbox-mail
$ cd slackbox-mail/
$ tar -xzf ~/webapps/roundcube/roundcubemail-1.4.1-complete.tar.gz
$ ls
roundcubemail-1.4.1
$ mv roundcubemail-1.4.1/ html

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.

Roundcube

L’assistant d’installation est organisé en trois pages successives.

  1. Check environment permet de tester les prérequis, notamment PHP.
  2. Create config permet de créer la configuration à proprement parler.
  3. 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.

Roundcube

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
  • identities_level : one identity with possibility to edit all params

Roundcube

Renseignez les paramètres de connexion à la base MySQL et passez à la suite.

  • smtp_port : 25
  • language : 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.

Roundcube

É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.

Roundcube

Une fois que le fichier config.inc.php est en place, cliquez sur Continue pour passer à la suite.

Roundcube

Roundcube doit pouvoir écrire dans les répertoires temp/ et logs/ de l’installation. On va donc rectifier les permissions en conséquence.

$ sudo chown microlinux:apache temp/ logs/
$ chmod 0770 temp/ logs/
$ ls -ld temp/ logs
drwxrwx---. 2 microlinux apache 4096 Dec 6 15:33 logs
drwxrwx---. 2 microlinux apache 4096 Dec 6 15:33 temp/

Quant à la base de données, il suffit de cliquer sur Initialize database pour l’initialiser.

Roundcube

Un peu plus bas sur la page, nous avons la possibilité de tester la connexion de Roundcube au serveur mail.

  1. Renseignez les paramètres de connexion SMTP pour envoyer un mail de test.
  2. Une fois que c’est bon, procédez de même pour la connexion IMAP.

Roundcube

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 de connexion de Roundcube et fournissez vos paramètres de connexion.

Roundcube

Dans la configuration par défaut, l’identité des utilisateurs n’est pas renseignée correctement.

Roundcube

Ici, il faut se rendre dans Paramètres > Identité et renseigner correctement l’identité de l’utilisateur.

Roundcube

Roundcube est désormais prêt à l’emploi. Voici à quoi ça ressemble sur mon serveur de production avec ma propre boîte mail.

Roundcube

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.

  1. Télécharger la nouvelle version de Roundcube.
  2. Décompresser l’archive.
  3. 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.4rc1 vers la version 1.4.1.

$ cd webapps/roundcube/
$ tar -xzf roundcubemail-1.4.1-complete.tar.gz
$ cd roundcubemail-1.4.1/bin/
$ ./installto.sh /var/www/slackbox-mail/html
Upgrading from 1.4-rc1. Do you want to continue? (y/N) y
...
Executing database schema update.
Updating database schema (2019092900)... [OK]
...
This instance of Roundcube is up-to-date.
Have fun!
All done.
$ cd ../..
$ rm -rf roundcubemail-1.4.1

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.

 


0 commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.