LINUX:RoundCubeMail


retour au menu de concernant la messagerie


But

C'est un interface Web (WUI) permettant de consulter, d'envoyer et de gérer nos messages électroniques.

Nous nous placerons dans le contexte restreint de notre service de messagerie privée.


Architecture

Pour pouvoir utiliser cette application, il faut disposer de diverses pièces. Dans notre approche simple, tous ces composants seront concentrés dans la même machine mais il est parfaitement possible de les disperser sur diverses machines y compris celles se trouvant sur internet.

Voici le schéma adopté:



On y observe divers postes:

  • Au centre l'application RoundCubeMail
  • qui est une application gérée par le service Web Apache via les ports TCP 80 (HTTP) ou 443 (HTTPS).
  • Cette application a besoin d'un service de base de données MariaDB, compatible Mysql pour y stocker ses propres informations via le port TCP 3306.
  • Comme cette application a pour but de consulter les messages électroniques, elle doit avoir accès au PostOffice en utilisant le service Dovecot via les ports TCP 143 (IMAP) ou 993 (IMAPS).
  • Elle doit pouvoir envoyer des messages électroniques en utilisant le service Postfix via les ports TCP 25 (SMTP), 587 (submission) ou 465 (SMTPS).
  • L'application est accessible en utilisant tout explorateur Internet tel Firefox à partir de votre PC par exemple.

Notons que nous avons utilisé des services courants mais d'autres peuvent être utilisés.


Installation

Il faut installer le logiciel par la commande suivante:

dnf install roundcubemail


Configuration d'Apache

L'installation procure un fichier de configuration Tout fait "/etc/httpd/conf.d/roundcubemail.conf".

Il est nécessaire de modifier ce fichier sinon l'application ne sera accessible qu'à partir de la machine hébergeant le service Apache.

Le bloc suivant s'y retrouve à deux endroits pour notre version d'Apache de version 2.4:


   <IfModule mod_authz_core.c>
       # Apache 2.4
       Require local
   </IfModule>

La première occurrence concerne directement l'utilisation de l'application RoundCubeMail dans le bloc:


<Directory /usr/share/roundcubemail/>
 ...
</Directory>

La seconde est nécessaire lors de la phase d'installation. Ce bloc pourra être remis dans son état d'origine dès la configuration terminée pour une question évidente de sécurité. A l'extrême, ce répertoire pourra être éliminé.


<Directory /usr/share/roundcubemail/installer/>
 ...
</Directory>


On remplace ces directives par:


   <IfModule mod_authz_core.c>
       # Apache 2.4
       Require all denied
       Require local
       Require ip 192.168.1
   </IfModule>

qui ajoute une ligne pour donner accès aux machines de notre réseau local "192.168.1.0/24".


Si vous avez plusieurs versions de PHP actives sous Apache, n'oubliez pas de faire référence à la bonne version comme expliqué dans l'article Coexistence de plusieurs versions de PHP. RoundCubeMail supporte la version 8.1 de PHP.


Pour rendre actif cette configuration, il faut redémarrer le service Apache:

systemctl restart httpd.service


Configuration de MariaDB

Avant d'aborder la configuration de l'application RoundCubeMail, il faut créer l'utilisateur et le schéma dans la base de données MariaDB. Nous exposons une méthode sous forme de script mais on peut utiliser des interfaces Web pour le faire interactivement tels PHPMyAdmin ou Adminer.


Création du schéma

Pour créer le schéma dans la base de données Mysql, nous nous basons sur les informations suivantes:

  • Nom du schéma: dbroundcube
  • Mot de passe de l'utilisateur root (à adapter): ZZZZZZZZ

Ces paramètres peuvent être adaptés à votre guise.


Ensuite il nous faut 2 fichiers.

Le premier fichier que l'on nomme "schema.sql", sert à créer le schéma vide:


DROP SCHEMA IF EXISTS dbroundcube ;
CREATE SCHEMA dbroundcube ;


Le second fichier que l'on nomme "import.bat", va créer ce schéma:


#!/bin/bash
dbuser=root
dbpw=ZZZZZZZZ
mysql --user=$dbuser --password=$dbpw < schema.sql

Donnez les droits d'exécution au script Bash:

chmod 700 import.bat

et exécutez le:

./import.bat


Création de l'utilisateur

Pour créer de l'utilisateur MySql qui permettra à l'application RoundCubeMail, nous nous basons sur les informations suivantes:

  • Nom du schéma: dbroundcube
  • Nom d'utilisateur: userroundcube
  • Mot de passe de l'utilisateur userroundcube (à adapter): TTTTTTTT
  • Mot de passe de l'utilisateur root (à adapter): ZZZZZZZZ

Ces paramètres peuvent être adaptés à votre guise.

On ne donne accès à cet utilisateur à la base de données qu'à ce schéma dbroundcube à partir seulement de la machine hôte, locale.


Pour y arriver, on crée 4 fichiers.

Le premier fichier que l'on nomme "dropuser.sql", sert à effacer un utilisateur préexistant:


drop user 'userroundcube'@'localhost' ;
drop user 'userroundcube'@'127.0.0.1' ;
drop user 'userroundcube'@'::1' ;


Le second que l'on nomme "createuser.sql", permet de créer l'utilisateur:


create user 'userroundcube'@'localhost'      identified by 'TTTTTTTT' ;
create user 'userroundcube'@'127.0.0.1'      identified by 'TTTTTTTT' ;
create user 'userroundcube'@'::1'            identified by 'TTTTTTTT' ;


Le troisième que l'on nomme "grant.sql", va donner tous les droits sur ce schéma:


grant all privileges on dbroundcube.* to 'userroundcube'@'localhost';
grant all privileges on dbroundcube.* to 'userroundcube'@'127.0.0.1';
grant all privileges on dbroundcube.* to 'userroundcube'@'::1';


Enfin le dernier que l'on nomme "user.bat", va mettre en oeuvre cet ensemble:


#!/bin/bash 
dbuser=root
dbpw=ZZZZZZZZ
mysql --user=$dbuser --password=$dbpw  < dropuser.sql
mysql --user=$dbuser --password=$dbpw  < createuser.sql
mysql --user=$dbuser --password=$dbpw  < grant.sql

Donnez les droits d'exécution au script Bash:

chmod 700 user.bat

et exécutez le:

./user.bat


Configuration de RoundCubeMail par WUI

La configuration des paramètres de l'application RoundCubeMail peut se faire via l'interface Web. Il faut lancer lancer l'Url suivante: http://servermail.home.dom/roundcubemail/installer . Le nom de la machine est à adapter selon votre cas. Le nom repris correspond à celui que l'on trouve sur le schéma.


Vérification des dépendances

Le premier écran vérifie que tous les paquets dépendants sont bien installés. Si ce n'est pas le cas, résolvez ces cas.


 


Configuration des options

On clique ensuite sur le second onglet "Create config" ou sur le bouton "NEXT" situé en bas de l'écran.

L'écran , qui apparaît, permet de remplir la majorité des options importantes. Les plus importantes sont à déduire des configurations des services MariaDB, Postfix et Dovecot.


 


Sauvegarde de la configuration

En bas de cet écran, dès que les zones sont remplies, cliquez sue le bouton "UPDATE CONFIG". Apparaît alors le contenu du fichier de configuration. Ce contenu est à placer dans le nouveau fichier "/etc/roundcubemail/config.inc.php". Attention, ce fichier doit être accessible par l'utilisateur du service "httpd.service": "apache":

chown root:apache /etc/roundcubemail/config.inc.php
chmod 640 /etc/roundcubemail/config.inc.php

Dès que ce fichier est présent, tout nouvel accès à l'Url http://servermail.home.dom/roundcubemail/installer devient interdit par défaut si par mégarde, on abandonne l'écran. Ceci peut être évité si dans le fichier de configuration que l'on vient de créer, la ligne suivante est ajoutée:


$config['enable_installer'] = true;

En production, cette ligne doit être éliminée.


 


Initialisation du contenu du schéma

On clique ensuite sur le second onglet "Test config" ou sur le bouton "CONTINUE" situé plus bas dans l'écran.

On passe alors à l'étape finale. En premier lieu, on remarque que le shéma dans la base de données n'est pas initialisé. On appuie sur le bouton "Initialize database".


 


Test de messagerie

L'écran se rafraichit. Le schéma est maintenant actif.

La partie "Test SMTP config" permet de tester l'envoi de message et la partie "Test IMAP config" permet de tester l'accès à notre boîte à messages électroniques.


 


Mais à ce stade, vous rencontrerez divers problèmes. Nous allons affiner cette configuration brute.


Configuration finale de RoundCubeMail

A ce stade, vous risquez de rencontrer quelques problèmes. Tout se joue dans le fichier de configuration "/etc/roundcubemail/config.inc.php". J'ai divisé ce fichier en six parties. Chaque option est reprise sous la forme:

$config['<option>'] = valeur ;


Clé de cryptage interne

Une première option des_key concerne la clé de cryptage générée ci-dessus et déjà sauvée. Je ne conseille pas de la changer dès que vous aurez débuté l'utilisation de RoundCubeMail.


Schéma de base de données

Cette option concerne le mot db_dsnw.

Si vous avez pu ci-dessus initialiser le schéma, la ligne est correcte; on ne la bouge pas.

Dans notre exemple, nous avons:


$config['db_dsnw'] = 'mysql://userroundcube:TTTTTTTT@localhost/dbroundcube';

On peut y retrouver diverses informations introduites dans l'écran WUI de configuration:

  • "mysql" : Le gestionnaire de base de données est MySQL.
  • "localhost" : La base de données se trouve sur la machine locale.
  • "dbroundcube" : Le schéma utilisé
  • "userroundcube" : Le nom d'utilisateur ayant tous les droits sur ce shéma
  • "TTTTTTTT" : Le mot de passe de cet utilisateur


IMAP

Ce bloc d'options concerne les protocoles IMAP (port TCP 143 par défaut) et IMAPS (port TCP 993 par défaut)). Tout dépend de la configuration du serveur Dovecot. Dans RoundCubeMail, il sert en premier lieu à pouvoir rentrer dans cet applicatif et ensuite de pouvoir gérer sa boîte de messagerie électronique après s'être authentifié grâce au nom d'utilisateur et son mot de passe d'IMAP.

Voici diverses options utilisées:

  • imap_host

La valeur a le format: <protocol>://<nom de machine>:<port> Dans l'exemple, nous avons.


$config['imap_host'] = 'ssl://servermail.home.dom:993';

  • imap_conn_options

Cette option permet de régler le mode de vérification du certificat du serveur Dovecot en cas de cryptage. Si le certificat est officiel, ce n'est pas nécessaire. Il a la forme:


$config['imap_conn_options'] = [
 'ssl' => [
   ... <paramètres> ...
  ],
];

La description des différents paramètres peut être consultée à l'URL https://www.php.net/manual/fr/context.ssl.php

  • imap_vendor

Cette option spécifie le logiciel IMAP utilisé pour faciliter la conversation entre RoundCubeMail et ce logiciel. Cette valeur n'est pas absolument requise. Dans l'exemple, nous avons.


$config['imap_vendor'] = 'dovecot';

  • imap_auth_type

Il permet de spécifier le mode d'authentification à utiliser. Par défaut, RoundCubeMail utilise le plus sécurisé. Le plus souvent, on trouve les protocoles DIGEST-MD5, CRAM-MD5, LOGIN et PLAIN. La valeur "IMAP" recouvre "LOGIN" et "PLAIN", les plus classiques. Normalement cette option n'est pas nécessaire sauf cas spécifique ou erreur sur le serveur. Voici un exemple:


$config['imap_auth_type'] = 'IMAP';


SMTP

Ce bloc d'options concerne les protocoles SMTP (port TCP 25 par défaut), SMTPS (port TCP 465 par défaut)) et SUBMISSION (port TCP 587 par défaut). Tout dépend de la configuration du serveur Postfix. Dans RoundCubeMail, il sert à l'envoi de mails.



Options diverses

J'ai remarqué que nombre d'options remplies lors la configuration par le WUI, ne se retrouvent pas dans le fichier de configuration. Je conseille de passer en revue le fichier "/etc/roundcubemail/defaults.inc.php" qui reprend les options par défaut afin d'affiner votre configuration.

Les problèmes principaux consistent à créer le schéma dans la base de données, à se connecter et à pouvoir visualiser et envoyer les mails. Ces changements peuvent être faits à postériori.

Voici quelques paramètres retenus:

  • enable_installer

Dès que ce fichier de configuration existe, l'accès à l'URL de configuration http://servermail.home.dom/roundcubemail/installer ci-dessus sera inaccessible sauf si vous ajoutez la ligne:


$config['enable_installer'] = true;

Pour une question évidente de sécurité, elle ne doit pas exister sauf lors de la phase de configuration éventuellement.

  • enable_spellcheck

Elle active la vérification orthographique.


$config['enable_spellcheck'] = true;

  • spellcheck_engine

Elle spécifie le mécanisme utilisé pour la vérification orthographique. Il a été ajouté lors de l'installation de roundCubeMail.


$config['spellcheck_engine'] = 'enchant';

  • username_domain

S'il est spécifié, il ajoute automatiquement le nom de domaine au nom d'utilisateur. Par exemple si je me connecte avec l'utilisateur "adebast", il adaptera la connexion à "adebast@home.dom" selon la valeur reprise ci-dessous. Les deux connexions sont équivalentes.


$config['username_domain'] = 'home.dom';

  • plugins

Il permet d'activer divers Plugins. Je n'en ai pas utilisé.


$config['plugins'] = [];




retour au menu de concernant la messagerie