Nous avons maintenant notre solution de messagerie opérationnelle, mais il nous faut une interface pour lire nos mails. Il y a généralement deux solutions pour cela : soit on utilise un client de messagerie sur notre machine comme Outlook, Mail ou Thunderbird ; soit nous utilisons un webmail qui est un site web installé la plupart du temps directement sur le serveur de messagerie et qui permet de consulter ses mails en ligne, comme Gmail, Yahoo ou Outlook.com.
Dans notre cas, nous allons opter pour la seconde solution du webmail, bien que la première puisse être aussi utilisée, mais elle nécessiterait un peu de sécurisation complémentaire pour être efficace.
Avant de pouvoir installer notre webmail, il faut déjà que l’on ait un serveur web à notre disposition. Si vous avez bien suivi le cours depuis le premier chapitre, vous serez un pro de l’installation d’Apache2. Cependant, vu que vous êtes ici pour apprendre, nous allons utiliser un autre serveur web qui est en vogue en ce moment, il s’agit de Nginx (prononcer engineX, comme un moteur en anglais).
Installez le serveur web Ngninx
Nous allons donc installer le serveur Nginx pour pouvoir mettre en place notre webmail :
Le package pour installer Nginx est... Nginx !
root@Debian02:~# apt-get install nginx
Cependant, comme pour Apache2, par défaut, Nginx n’interprète pas le PHP, il faut pour cela installer un package complémentaire qui fera la liaison entre le serveur web et l’interpréteur PHP. Il s’agit de PHP-FPM. À vous de trouver la version correspondant à votre système. Pour ma part, il s’agit de php7.4.
root@Debian02:~# apt-get -y install php7.4-fpm
Nous pouvons vérifier si le serveur est bien en écoute :
root@Debian02:~# ss -antp State Recv-Q Send-Q Local Address:Port Peer Address:Port [...] LISTEN 0 128 *:80 *:* users:(("nginx",pid=15292,fd=6),("nginx",pid=15291,fd=6)) [...] LISTEN 0 128 :::80 :::* users:(("nginx",pid=15292,fd=7),("nginx",pid=15291,fd=7)) [...]
Le port 80 qui correspond à notre serveur web est bien en écoute. Nous pouvons donc tester notre connexion à notre serveur avec notre navigateur préféré en indiquant l’adresse IP de notre serveur :
Ça marche ! Notre serveur est en place.
Il nous reste à vérifier qu’il interprète correctement le PHP, car le webmail que l’on souhaite installer est codé en PHP. Pour cela, il va déjà falloir indiquer à notre serveur qu’il peut prendre en compte les pages d’index en PHP. Nous allons simplement ajouter index.php comme page par défaut, et cela se fait dans le virtualhost par défaut /etc/nginx/sites-available/default sur la ligne qui commence par index :
# Add index.php to the list if you are using PHP index index.php index.html index.htm index.nginx-debian.html;
Il faut ensuite ajouter la prise en compte de PHP en décommentant les lignes correspondant à PHP-FPM, dans le même fichier default :
# pass PHP scripts to FastCGI server # location ~ \.php$ { include snippets/fastcgi-php.conf; # With php-fpm (or other unix sockets): fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; # # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; }
Il faut ensuite redémarrer le serveur pour que les modifications soient prises en compte :
root@Debian02:~# systemctl restart nginx
Pour tester, nous allons simplement créer une nouvelle page en PHP à la racine du serveur.
Mais où se situe-t-elle ?
Vous avez maintenant l’habitude, toutes les informations de base sont situées dans les fichiers de configuration. Ici, notamment dans le fichier de virtualhost par défaut, nous pouvons lire :
root /var/www/html;
Les pages devraient donc se trouver dans ce répertoire :
root@Debian02:/var/www/html# ls -la /var/www/html total 3 drwxr-xr-x 4 root root 4096 avril 4 15:30 . drwxr-xr-x 3 root root 4096 mars 29 10:58 .. -rw-r--r-- 1 root root 612 mars 29 10:58 index.nginx-debian.html
On y retrouve bien notre page par défaut vue auparavant.
Pour tester si le PHP est bien interprété, nous allons créer une page PHP qui ne contient qu’un appel à une fonction de base :
root@Debian02:/var/www/html# vim /var/www/html/index.php
Puis y rentrer nos informations PHP :
<?php phpinfo(); ?>
C’est relativement succinct !
Mais regardons le résultat :
Notre fonction phpinfo() a bien été interprétée, le PHP est donc bien installé.
Nous allons pouvoir passer à l’installation du webmail.
Installez le webmail
Il existe aujourd’hui de nombreux webmails qui offrent chacun des fonctionnalités diverses et variées. L’avantage de notre solution est qu’elle peut fonctionner avec la plupart des webmails existants, donc si celui que nous allons installer ne vous plaît pas, vous restez libre d’en installer un autre, ou même d’en installer plusieurs si vous le souhaitez !
Pour notre mise en place, j’ai choisi Rainloop. C’est un webmail très simple et performant, et il a l’avantage de ne pas nécessiter d’installation de base de données, tant que l’on ne veut pas gérer de contacts. Pour l’installation de la plupart des autres webmails, il vous faudra créer les bases de données nécessaires à leur fonctionnement.
Récupérez les outils nécessaires pour installer Rainloop
Dans un premier temps, vous allez devoir installer les outils nécessaires à l’installation de Rainloop.
Il nous faut donc d’abord installer deux packages liés à PHP qui vont nous permettre par la suite d’installer facilement Rainloop.
root@Debian02:~# apt-get install php-curl php-xml curl
Il nous faut ensuite nous rendre dans /var/www/html.
Nous allons créer un dossier au nom de Rainloop avec la commande :
root@Debian02:~# mkdir -p /var/www/html/rainloop
Puis, depuis ce répertoire, on va exécuter la commande suivante afin d’installer Rainloop :
root@Debian02:~# wget -qO- https://repository.rainloop.net/installer.php | php
Il faut ensuite appliquer les bonnes permissions à Rainloop en se rendant dans /var/www/html/rainloop, puis taper les commandes suivantes :
cd /var/www/html/rainloop find . -type d -exec chmod 755 {} \; find . -type f -exec chmod 644 {} \; chown -R www-data:www-data /var/www/html/rainloop
Une fois que vous aurez réalisé cette manipulation, vous pourrez accéder à votre webmail, notamment pour le configurer !
Configurez le webmail
Pour se connecter à la console d’administration, il faut ajouter ?admin dans l’URL, ce qui donne pour nous : http://adresseIP/?admin.
Le login/mot de passe par défaut est admin/12345.
Si tout s’est bien passé, vous voilà connecté :
Changement du mot de passe admin
La première chose que nous allons faire est de changer le mot de passe d’admin pour éviter les robots qui testent au hasard le login/mot de passe de base. Pour cela, on clique dans l’encadré jaune sur "change".
Une fois la rubrique "Admin Panel Access Credentials" remplie, vous pouvez valider pour changer le mot de passe. Attention, vous avez la possibilité de changer aussi le nom de l’utilisateur administrateur de Rainloop, mais dans notre cas, je vous conseille de garder admin. De plus, si votre serveur est accessible sur Internet, je vous invite à utiliser un mot de passe complexe.
Ensuite, nous allons passer aux éléments de configuration de notre webmail.
Configuration pas à pas
Nous allons parcourir chacun des menus un à un.
D’abord, nous choisissons la langue dans le menu "Général" pour choisir le français (ou ce qu’il vous plaira !).
Nous allons ensuite aller dans la rubrique "Domaines" qui est très importante, puisque c’est là que nous allons indiquer toutes les informations de notre serveur.
Nous commençons par ajouter un domaine, puis nous allons renseigner toutes les informations IMAP et SMTP permettant de se connecter à notre serveur.
Notre serveur est ici localhost, vu que nos serveurs IMAP et SMTP sont installés sur la même machine que notre serveur web. Il faut ensuite décocher la case "Utiliser l’authentification", vu que notre serveur SMTP a été configuré sans authentification. Vous pouvez ensuite cliquer sur "Ajouter" pour ajouter le nouveau domaine, qui apparaît maintenant dans la liste des domaines :
Notre webmail est d’ores et déjà fonctionnel, mais nous allons encore ajouter quelques modifications.
Dans la rubrique "identifiant", vous pouvez indiquer le domaine itinet.fr, si vous le souhaitez, vous pourrez ainsi vous connecter en indiquant seulement le nom de l’utilisateur, comme Toto pour toto@mondomaine.local.
Dans la rubrique "Logo et marque", modifiez le titre de la page pour personnaliser ce qui s’affichera dans l’onglet, comme "Le webmail de toto", puis actualisez la page :
Enfin, le dernier point auquel vous pourrez faire attention est l’onglet "À propos" qui permet notamment de faire les mises à jour de Rainloop, ce qui est toujours un bon réflexe pour la sécurité. Votre webmail devrait être à jour, mais voici ce que vous verrez s’il ne l’est pas :
Un simple clic sur "Mettre à jour" fera toute l’installation nécessaire.
Notre webmail est prêt, il est maintenant temps de le tester !
Connectez-vous au webmail
Pour nous connecter au webmail, nous allons d’abord nous déconnecter de l’interface d’administration en cliquant en haut à droite sur le bouton de déconnexion.
Puis nous allons enlever ?admin à notre URL pour tomber à la racine de Rainloop. La page de connexion n’est pas très différente :
Nous allons indiquer nos identifiants de connexion IMAP, soit toto@mondomaine.local et motDePasseDeToto.
Et nous voilà connectés à notre webmail !
Et nous pouvons déjà voir les premiers mails que nous avions envoyés à la main lors de nos tests SMTP. En cliquant sur les mails, on accède à leur contenu.
Vous pouvez aussi envoyer des mails à la terre entière, comme nous l’avons fait pour tester notre serveur SMTP, en cliquant sur "Nouveau".
Et si tout se passe bien, notre mail devrait être reçu par notre interlocuteur !
En résumé
Voilà, nous avons une solution de messagerie complète avec :
un serveur SMTP qui peut recevoir les mails pour nos adresses et en envoyer ;
un serveur IMAP qui nous permet d’aller récupérer et lire nos mails sur le serveur ;
et un webmail qui nous permet d’accéder à ces fonctionnalités simplement à travers une interface web.
Il y a encore beaucoup d’améliorations possibles, notamment en sécurisant notre serveur SMTP, en activant l’authentification SMTP ou en passant notre webmail en HTTPS pour en chiffrer les accès.
Cela vous laisse un champ d’exploration important. Cependant, nous allons encore voir ensemble comment nous allons pouvoir simplifier l’administration de notre serveur de messagerie en automatisant une partie des tâches qu’il peut effectuer.