Serveur de messagerie : Comment en Créer un avec Poste.io

Voici comment créer un serveur de messagerie sécurisé et personnalisé avec Poste.io : gestion de comptes multiples, antivirus, antispam, Webmail et bien plus encore.

Quiconque a travaillé comme technicien informatique dans une grande entreprise sait très bien qu’il fallait trois jours pour installer et configurer un serveur de messagerie. Et ce n’était pas fini car les problèmes qui survenaient ensuite ne laissaient aucun répit : pensez à la gestion des boîtes aux lettres, aux spams, aux pièces jointes potentiellement dangereuses, etc. Même si c’était beaucoup d’efforts, c’était de bons moments car ce sont précisément ces efforts qui ont permis d’accumuler une richesse de connaissances qui est beaucoup plus facile à dépenser aujourd’hui.

Poste.io est un projet open source qui permet de créer un serveur de messagerie avec IMAP, POP3, SMTP, antispam basé sur RSPAMD, anti-malware (ClamAV), boîtes aux lettres accessibles via Webmail et HTTPS (grâce à Roundcube) et administration web en seulement 5 minutes de travail.

La promesse de 5 minutes, avouons-le, est probablement un peu déplacée : il est certainement possible de rendre le serveur de messagerie opérationnel dans ce laps de temps en utilisant, par exemple, Terraform, un outil open source créé qui permet de décrire l’infrastructure comme du code en spécifiant tout ce qui est nécessaire au fonctionnement d’une application.

Agir manuellement prend un peu plus de temps, mais en utilisant un serveur Linux, on peut installer Poste.io en quelques étapes simples et passer ensuite à la configuration proprement dite du serveur de messagerie.

Comment fonctionne le serveur de messagerie Poste.io

Serveur de messagerie : Comment en Créer un avec Poste.io

Un produit tel que Poste.io est conçu avec des paramètres par défaut qui vous permettent de démarrer immédiatement votre serveur de messagerie : vous n’avez plus besoin de savoir comment fonctionne chaque composant logiciel.

Dans Poste.io, les données utilisateur et la configuration sont strictement séparées des fichiers binaires : les premières sont stockées sous forme de bases de données SQLite.

L’ensemble du projet a également été développé dans un souci de sécurité : en mettant de côté toutes les méthodes d’authentification peu fiables et peu sûres, Poste.io n’utilise que des fonctionnalités répondant aux exigences de sécurité modernes. Les courriers électroniques et leur contenu sont entièrement cryptés à l’aide du protocole TLS (Transport Layer Security).

En outre, les mots de passe sont stockés sur le serveur à l’aide de l’algorithme de hachage SHA512 (5 000 tours), de sorte que le « secret » utilisé pour protéger chaque boîte aux lettres ne peut être décodé. Ce point est abordé dans l’article sur le craquage des mots de passe.

Le serveur de messagerie est hébergé dans un conteneur Docker, ce qui facilite encore plus sa gestion, sa sauvegarde et son transfert d’une machine à l’autre.

Poste.io prend nativement en charge SPF, DKIM, DMARC et SRS afin d’augmenter la délivrabilité des messages électroniques et d’empêcher les courriels d’aller dans le dossier spam des différents destinataires.

Le serveur de messagerie intègre également une fonctionnalité permettant de limiter l’espace disponible pour chaque boîte aux lettres, offre la redirection des courriels et la réponse automatique, est capable de détecter automatiquement les logiciels clients et permet de définir différents niveaux d’administration.

Les éléments suivants sont nécessaires pour installer Poste.io :

  • Une distribution Linux 64 bits (nous avons choisi Ubuntu) installée sur une machine dédiée ou un serveur cloud.
  • Au moins 4 Go de RAM et une configuration de serveur suffisante pour prendre en charge les fonctionnalités antivirus et antispam.
  • Une adresse IP publique attribuée au serveur Linux.
  • Un nom de domaine à associer au service de messagerie électronique et la possibilité de modifier les enregistrements DNS correspondants.
  • La possibilité de paramétrer la résolution inverse (reverse DNS) sur l’adresse IP publique associée au serveur.

La documentation de Poste.io est plutôt « sèche » : nous vous donnons ci-dessous les clés pour essayer vous-même cette solution sans difficulté.

Installer le serveur de messagerie Poste.io sur votre propre serveur

Nous suggérons tout d’abord d’utiliser un serveur en nuage ou en Cloud qui peut être facilement mis hors service ou réinitialisé en cas de problème. Supposons que la machine ne soit pas utilisée pour d’autres tâches et que le compte root soit utilisé (pour cette raison, nous n’utiliserons pas la commande sudo ci-dessous).

Après avoir configuré une machine Ubuntu Linux et établi une connexion SSH, nous utilisons les commandes suivantes pour mettre à jour les paquets déjà présents installer Docker à partir du dépôt officiel :

apt update && apt upgrade -y
apt install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update -y
apt-cache policy docker-ce
apt install docker-ce -y

Nous installons ensuite Docker Compose, en prenant soin de remplacer v2.16.0 par le dernier numéro de version détectable sur la page GitHub :

mkdir -p ~/.docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose
docker compose version

Nous installons ensuite le serveur web Nginx et configurons le pare-feu ufw (nous considérons son utilisation comme acquise) pour autoriser les transferts de données sur les ports TCP 80 et 443 :

apt install nginx -y
systemctl restart nginx
systemctl status nginx
ufw allow "Nginx Full"

Vous pouvez également ouvrir les différents ports utilisés par le serveur de messagerie :

ufw allow 143/tcp
ufw allow 25/tcp
ufw allow 110/tcp
ufw allow 587/tcp
ufw allow 993/tcp
ufw allow 995/tcp
ufw allow 4190/tcp

Tapez ensuite ce qui suit pour démarrer la configuration du conteneur Docker Poste.io :

mkdir -p /home/poste.io
cd /home/poste.io
nano docker-compose.yml

Dans le fichier docker-compose.yml créé avec la dernière instruction, vous pouvez coller (clic droit) ce qui suit :

version: '3'
services:
  mailserver:
        image: analogic/poste.io
        container_name: poste
        restart: always
        network_mode: host
        expose:
          - 80
          - 443
          - 25
          - 110
          - 143
          - 587
          - 993
          - 995
          - 465
          - 4190
        environment:
          - HTTPS=ON
        volumes:
          - /data/mailserver:/dataroot

Le mode réseau de l’hôte (network_mode : host) fait en sorte que les ports utilisés par le conteneur soient les mêmes que ceux qui font face à l’IP publique de la machine hôte.

Après avoir enregistré le fichier en appuyant sur CTRL+O, vous pouvez fermer l’éditeur de texte avec CTRL+X.

Enfin, tapez la commande suivante pour que Poste.io soit automatiquement configuré :

docker compose up

En cas de problème, vous pouvez lancer les commandes suivantes :

fuser -k 80/tcp
fuser -k 443/tcp
cd /home/poste.io
docker compose up

Configuration du serveur DNS

En supposant que vous disposez d’un domaine du type monentreprise.com, vous devez accéder à la gestion DNS de ce domaine et créer un nouvel enregistrement A mail.monentreprise.com en l’associant à l’adresse IP utilisée sur le serveur de courrier Poste.io.

Dans la section MX record vous devez choisir Other mail server sinon il n’est généralement pas possible d’ajouter l’enregistrement A mail.monentreprise.com au niveau du DNS.

Mail.monentreprise.com doit être spécifié comme l’enregistrement MX en définissant 5 comme priorité.

Il est également nécessaire de se connecter au panneau d’administration du serveur dédié ou du serveur cloud et de définir le reverse DNS. En d’autres termes, la commande Nslookup associée à l’IP du serveur doit renvoyer mail.monentreprise.com.

Vous pouvez voir dans l’image comment le reverse DNS a été correctement configuré :

Configuration du serveur de messagerie Poste.io

Après avoir configuré les enregistrements DNS, vous pouvez taper dans la barre d’adresse de votre navigateur web https:// suivi de l’adresse IP publique du serveur.

Vous accéderez ainsi à la page qui vous permet de configurer le serveur de messagerie Poste.io.

Dans le champ approprié, vous devez saisir mail.votreentreprise.com et dans le champ en dessous, un mot de passe suffisamment long et « fort » pour correspondre au compte admin@ votreentreprise.com.

Une fois toutes les vérifications nécessaires effectuées (laissez un peu de temps pour que les enregistrements DNS se mettent à jour correctement : la propagation DNS n’existe pas…), vous vous trouverez face à un tableau de bord comme celui de la figure.

Serveur de messagerie : Comment en Créer un avec Poste.io

Le serveur de messagerie est maintenant prêt à recevoir, envoyer et trier des e-mails vers et depuis toutes les boîtes aux lettres configurées dans le domaine.

L’envoi d’un courriel à partir de Gmail, d’Outlook ou de n’importe quel fournisseur français affichera les références du dialogue avec le serveur de messagerie distant et augmentera le nombre de courriels distribués avec succès (délivrés).

En tapant mail.votreentreprise.com dans la barre d’adresse du navigateur, le contenu de chaque boîte aux lettres gérée par Poste.io est accessible via HTTPS. En créant un certificat numérique Let’s Encrypt comme nous l’avons vu dans nos autres articles, vous pouvez éviter l’apparition du message ‘Not Secure’ (erreur ERR_CERT_AUTHORITY_INVALID).

Serveur de messagerie : Comment en Créer un avec Poste.io

Le Webmail Poste.io est librement personnalisable et permet d’accéder au contenu de la boîte aux lettres depuis n’importe quel navigateur, en plus de la possibilité d’utiliser les clients de messagerie traditionnels. Dans un autre article, nous avons vu pourquoi et quand préférer un client de messagerie au Webmail.

La version gratuite de Poste.io peut être utilisée sans restriction mais ne comprend pas toutes les fonctionnalités prises en charge par les éditions professionnelles. Les différences entre Poste.io gratuit et les éditions PRO/PRO+ sont clairement mises en évidence dans un tableau.