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 par défaut et devient ainsi utilisable sur les smartphones et les tablettes.

Prérequis

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

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

ImportantRoundcube 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

AstuceRoundcube 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 :

Roundcube installation

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 installation

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

Roundcube installation

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

  • smtp_port : 25
  • language : fr_FR

AstuceCette 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 installation

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

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

Roundcube installation

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 :

Roundcube installation

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.

Roundcube installation

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 :

Roundcube installation

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

Roundcube installation

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

Roundcube installation

Roundcube est désormais prêt à l’emploi :

Roundcube installation

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

Laisser un commentaire

Emplacement de l’avatar

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