Créez votre propre serveur mail avec iRedMail 💌

Créez votre propre serveur mail avec iRedMail 💌

Introduction

La gestion efficace des e-mails est essentielle pour de nombreuses entreprises et organisations. Dans cet article, je vais vous guider à travers les étapes nécessaires pour créer votre propre serveur mail en utilisant iRedMail. J'aborderai les prérequis, la configuration du nom d'hôte et du domaine, l'installation d'iRedMail, la configuration de la zone DNS, la gestion des certificats SSL et les redirections de port. De plus, j'explorerai des aspects importants tels que la configuration du par-feu et du DNS inversé (rDNS) pour assurer le bon fonctionnement et la sécurité de votre serveur de messagerie. Suivez ce guide pour créer votre propre serveur mail performant et sécurisé avec iRedMail.

La solution iRedMail

iRedMail est une suite logicielle complète, gratuite et open source qui permet de configurer et de gérer un serveur de messagerie électronique 🚀, il intègre plusieurs composants populaires également open source tel que:

  • ✉️ Postfix : un serveur SMTP qui gère la réception, l'acheminement et l'envoi des e-mails.
  • 📥 Dovecot : un serveur IMAP et POP3 qui permet de récupérer ses e-mails.
  • 🛡️ Amavisd-new : un logiciel anti-spam qui filtre les e-mails indésirables.
  • 🌐 Roundcube : une interface web pour accéder et gérer ses e-mails via un navigateur.

Prérequis ✅

Ce guide suppose que vous disposez déjà d'une installation fraîche d'Ubuntu Server 22.04. Vous aurez également besoin du nom d'hôte et du domaine (ou FQDN, Fully Qualified Domain Name) appropriés. Dans mon cas, je souhaite que mon serveur de messagerie soit disponible à l'adresse mail.skwal.net. Le nom d'hôte ainsi que le FQDN de mon serveurs seront donc respectivement mail et mail.skwal.net.

Configuration du nom d'hôte 💻️

Afin de configurer votre nom d'hôte, il vous faudra l'inscrire dans le ficher /etc/hostname, comme ci-dessous.

mail

Une fois que vous avez redémarré votre système, vous pouvez vérifier votre nom d'hôte en utilisant la commande suivante. Cependant, veuillez attendre d'avoir effectué l'étape suivante avant de redémarrer.

hostname

Configuration du domaine 🌐

La configuration du domaine est plus compliqué mais pas insurmontable. Elle se fait dans le fichier /etc/hosts.

Attention : Notez que le domaine doit être inscrit en première ligne du fichier.
# format : 127.0.0.1 nom-hote.domain.com nom-hote localhost
127.0.0.1 mail.skwal.net mail localhost

Apres un redémarrage, vous pourrez vérifier votre domaine en entrant la commande suivante.

hostname -f

Redémarrage 🔄

Une fois le nom d'hôte et le domaine configurés, il est nécessaire de redémarrer votre machine afin que ces changements soient prit en compte. L'installeur d'iRedMail ne fonctionnera pas si il ne détecte pas votre nouveau domaine et nom d'hôte.

sudo reboot

Installation d'iRedMail ⬇️

Une fois votre machine redémarrée, vous pourrez commencer la mise en place d'iRedMail. Mais avant il vous faudra installer les dépendances de l'assistant d'installation.

sudo apt install -y gzip dialog

Vous pourrez ensuite télécharger, extraire et exécuter l'assistant en question.

# @@@@@@@@@@@@@@@@@@@@@@@@@@
# @@ Ne pas copier/coller 
# @@ Remplacez x.x.x par la dernière version disponible à l'url
# @@ [www.iredmail.org/download.html] 
# @@@@@@@@@@@@@@@@@@@@@@@@@@

# Télécharger l'archive de l'installeur
wget https://github.com/iredmail/iRedMail/archive/refs/tags/x.x.x.tar.gz

# Extraire l'archive
tar zxf x.x.x.tar.gz

# Lancer le script d'installation
cd iRedMail-x.x.x
sudo bash iRedMail.sh
Ecran d'accueil de l'installeur

Dossier de stockage des mails

Le dossier ou les emails seront stockés ainsi que le backup quotidien, vous pouvez sans problèmes laisser cette option avec sa valeur par défaut. Cependant, notez, comme le précise l'installeur, que ce dossier prendra plus ou moins de place en fonction du traffic que reçoit votre serveur.

Serveur web à installer

Vous DEVEZ choisir Nginx, car Roundcube (le client de messagerie) et iRedMail (le panneau de gestion des comptes de messagerie) en ont besoin.

Backend utilisé pour stocker les comptes de messagerie

Utilisez celui avec lequel vous êtes le mieux familiarisé. Vous pourriez avoir besoin d'intervenir sur la base de données en cas de problème.

Mot de passe pour l'administrateur de la base de données

Premier nom de domaine de messagerie

Vous devez entrez votre nom de domaine principale, pas un sous-domaine. Dans mon cas je vais donc entrer skwal.net car je veux envoyer et recevoir des emails avec une adresse se terminant par skwal.net comme support@skwal.net

Mot de passe pour l'administrateur du domaine de messagerie

Si vous souhaitez utiliser un mot de passe contenant des caractères spéciaux, vous pouvez d'abord utiliser un mot de passe temporaire que vous changerez par la suite. Votre mot de passe temporaire doit tout de même être sécurisé car votre serveur sera disponible publiquement après l'installation.

Composants a installer

Roudcubemail et SOGo sont tout les deux des clients de messagerie web, il faut en choisir un seulement. Vous devez installer iRedAdmin pour créer et gérer facilement les comptes de messagerie et Fail2ban pour bloquer les adresses IPs suspectes.

Configuration du par-feu

Je vous recommande vivement d'utiliser les règles de par-feu délivrées par iRedMail.

Redémarrage

Une fois l'installation terminée, redémarrez votre machine une fois de plus.

sudo reboot

Configuration de la zone DNS

Afin de faire fonctionner votre serveur de messagerie et d'éviter qu'il soit ajouté aux listes noires, il est très important de configurer votre zone DNS correctement auprès de votre Bureau d'Enregistrement de Nom de Domaine, ou Registrar. Si votre serveur est derrière un réseau NAT (Par exemple si vous voulez installer votre serveur de messagerie sur le réseau de votre box internet), vous devrez configurer des redirections de ports, nous verrons ça a la fin du guide.

Entrée A

Pour commencer, vous allez enregistrer une entrée de type A pour votre serveur de messagerie et y spécifier son adresse IPv4 publique.

Les entrées MX

Maintenant, vous allez créer une entrée MX sur votre racine, pointant vers votre sous domaine, et avec une priorité de 10. Il existe plusieurs façon de créer une entrée sur la racine de votre domaine, sur Google Domains il suffit de laisser le champ vide mais vous devrez peut être entrer un @ si votre domaine est enregistré chez un autre Registrar.

Ensuite, vous allez créer une deuxième entrée MX possédant les mêmes valeurs mais avec autoconfig comme nom d'hôte. Cette entrée ainsi que la suivante permettent aux client de messagerie de détecter automatiquement les paramètres de connection.

Créez une fois une plus la même entrée mais sur l'hôte autodiscover.

Entrée SPF, DKIM et DMARC 🔐

Les entrées SPF, DKIM et DMARC sont des mécanismes de sécurité utilisés pour protéger les domaines de l'usurpation d'identité et du courrier indésirable.

Red forbidden sign
Photo by Dim Hou / Unsplash

L'entrée SPF

L'entrée SPF permet à un propriétaire de domaine d'indiquer quels serveurs de messagerie sont autorisés à envoyer des courriers électroniques en son nom. Lorsqu'un e-mail est envoyé, le serveur de messagerie du destinataire peut vérifier l'adresse IP de l'expéditeur et consulter les enregistrements SPF du domaine d'origine pour déterminer s'il est autorisé à envoyer des e-mails pour ce domaine. L'enregistrement SPF spécifie les serveurs de messagerie autorisés, ce qui permet de détecter et de rejeter les e-mails provenant de sources non autorisées.

Si vous souhaitez configurer votre entrée SPF de façon avancée, vous pouvez suivre la documentation de Google. Sinon entrez simplement cette valeur qui autorisera tous les emails provenant de votre adresse IP. N'oubliez pas de remplacer les xxx.xxx.xxx.xxx par celle-ci. Votre entrée SPF doit être de type TXT est être à la racine de votre domaine.

v=spf1 a mx ip4:xxx.xxx.xxx.xxx ~all

L'entrée DKIM

DKIM (DomainKeys Identified Mail) un mécanisme de signature numérique qui permet de vérifier l'authenticité d'un e-mail et d'assurer son intégrité lors de sa transmission. Lorsqu'un e-mail est envoyé, le serveur de messagerie du domaine d'origine signe le message avec une clé privée et ajoute une signature DKIM au message. Lorsque le courrier est reçu, le serveur de messagerie du destinataire peut vérifier la signature DKIM en utilisant la clé publique associée au domaine d'origine. Si la signature est valide et l'intégrité du message est préservée, cela indique que l'e-mail n'a pas été modifié en transit et qu'il provient réellement du domaine d'origine.

Pour obtenir votre clé publique, utilisez la commande suivante sur votre serveur de messagerie.

sudo amavisd-new showkeys

Maintenant, créer une entrée de type TXT avec l'hôte dkim._domainkey. En valeur, collez à la suite toutes les parties de la clé situées entre des "" comme suit.

L'entrée DMARC

DMARC est une politique de sécurité qui complète SPF et DKIM. Il permet aux propriétaires de domaines de spécifier comment les serveurs de messagerie doivent traiter les e-mails qui échouent aux vérifications SPF ou DKIM. Avec DMARC, le domaine d'origine peut indiquer si l'e-mail doit être rejeté, marqué comme spam ou livré normalement. De plus, DMARC fournit des mécanismes de rapport qui permettent aux propriétaires de domaines de recevoir des informations sur les tentatives d'usurpation d'identité ou d'envoi de courriers électroniques non autorisés utilisant leur domaine.

Si vous souhaitez faire une configuration avancée de votre entrée DMARC, référez vous à la documentation de Google. Sinon, enregistrez la valeur suivante pour l'hôte _dmarc.

v=DMARC1; p=none

Configuration du certificat SSL 🛡️

Cyber security image
Photo by FLY:D / Unsplash

Pour obtenir un certificat SSL gratuitement, vous allez utiliser Certbot, vous aurez donc un certificat délivré par Let's Encrypt. Pour commencer, installez certbot.

sudo apt install certbot

Puis, générez votre certificat. Le programme vous demandera de vérifier que vous possédez bien le domaine concerné, vous devrez donc ajouter une ou deux entrées temporaires a votre zone DNS. Votre certificat ainsi que sa clé privée seront ensuite disponible dans le dossier /etc/letsencrypt/live/domaine.com/

sudo cerbot certonly --manual --preferred-challenges=dns -d "skwal.net"  -d "mail.skwal.net"

Vous allez maintenant remplacer les certificats auto-signés de iRedMail par celui que vous avez généré.

# Créer un backup des anciens certificats
sudo mv /etc/ssl/certs/iRedMail.crt{,.bak}
sudo mv /etc/ssl/private/iRedMail.key{,.bak}

# Les remplacer par les nouveaux certificats
sudo ln -s /etc/letsencrypt/live/skwal.net/fullchain.pem /etc/ssl/certs/iRedMail.crt
sudo ln -s /etc/letsencrypt/live/skwal.net/privkey.pem /etc/ssl/private/iRedMail.key

Configuration des redirections de port

Si votre serveur de messagerie est situé derrière un réseau NAT, comme lorsque vous l'installez sur le réseau de votre box Internet et que vous souhaitez utiliser son adresse IP publique, vous devrez mettre en place des redirections de ports sur votre routeur.

My old work!
Photo by Misha Feshchak / Unsplash

Les redirections de ports sont nécessaires dans ce scénario afin de permettre à votre serveur de recevoir et d'envoyer des messages via Internet. Lorsque vous configurez des redirections de ports, vous indiquez à votre routeur de transférer les connexions entrantes vers le serveur de messagerie situé derrière le réseau NAT.

Cela garantit que les paquets de données destinés à votre adresse IP publique sont correctement dirigés vers votre serveur de messagerie. Sans ces redirections de ports, les connexions ne pourront pas atteindre votre serveur et vous ne pourrez pas utiliser pleinement les fonctionnalités de messagerie de votre serveur.

Pour mettre en place des redirections de ports, vous devrez accéder à l'interface de configuration de votre routeur. Les étapes spécifiques varient en fonction du modèle de votre routeur, mais généralement, vous devrez trouver la section des paramètres de redirection de ports et y ajouter les règles appropriées.

Voici les redirections de ports nécessaires pour permettre la communication avec votre serveur de messagerie :

ip_publique:25		-> serveur_mail:25
ip_publique:110		-> serveur_mail:110
ip_publique:143		-> serveur_mail:143
ip_publique:587		-> serveur_mail:587
ip_publique:993		-> serveur_mail:993
ip_publique:995		-> serveur_mail:995

Si les ports 80 et 443 de votre IP publique ne sont pas utilisés, vous pouvez alors utiliser
les redirections suivantes pour accéder a Roundcube et iRedAdmin directement depuis https://mail.votre-domaine.com

ip_publique:80		-> serveur_mail:80
ip_publique:443		-> serveur_mail:443

Sinon, vos ports 80 et 443 doivent être redirigés vers un reversé proxy qui envoiera lui-mêmes les requêtes à votre serveur de messagerie. Ou alors, vous pouvez rediriger d'autres ports vers les ports 80 et 443 de votre serveur. Par exemple :

ip_publique:4080		-> serveur_mail:80
ip_publique:4443		-> serveur_mail:443

Vous devrez donc visiter roundcube et iredadmin depuis

http://mail.domaine.com:4080
https://mail.domaine.com:4443

Attention, vous devrez faire attention a utiliser http et https sur les port correspondants.

Configuration du DNS inversé (rDNS)

DNS inversé IPv4

Le DNS classique est utilisé pour déterminer à quelle adresse IP un nom de domaine est associé. En revanche, le DNS inversé effectue l'opération inverse en permettant de déterminer quel domaine est associé à une adresse IP spécifique. L'association de votre adresse IP publique à votre domaine conférera davantage de crédibilité à votre serveur de messagerie et vous évitera d'être inscrit sur des listes noires.

DNS classique
skwal.net     ----> 82.66.235.227

DNS inversé
82.66.235.227 ----> skwal.net
Photo by NASA / Unsplash

Vous ne pouvez pas configurer de DNS inversé pour votre adresse IPv4 publique auprès de votre Registrar, vous devez le faire auprès de votre fournisseur d'access internet (FAI). Renseignez vous pour votre FAI spécifiquement. Si vous louez un VPS, vous devriez pouvoir le faire depuis votre panneau de contrôle d'hébergement.

DNS inversé IPv6

Lorsqu'il s'agit de configurer le DNS inversé pour une adresse IPv4 publique, la tâche est généralement facile. Cependant, cela devient plus complexe, voire impossible, lorsqu'il s'agit de configurer le DNS inversé pour une adresse IPv6. Dans ce cas, il est crucial d'empêcher votre serveur de messagerie d'envoyer des e-mails via IPv6. Sinon, ces e-mails risquent d'être immédiatement détectés comme du spam, car l'adresse IP d'origine du message ne serait pas associée à votre domaine.

Photo by David Pupăză / Unsplash

Pour forcer votre serveur a utiliser IPv4 seulement, éditez le fichier de configuration /etc/postfix/main.cf et remplacez la ligne inet_protocols = all par la suivante.

inet_protocols = ipv4

Un redémarrage du service postfix est nécessaire afin que ce changement soit pris en compte.

sudo systemctl restart postfix

Finalement

iRedAdmin

Si vous avez utilisé un mot de passe temporaire au début de ce guide, vous devez accéder à iRedAdmin et le changer. Utilisez l'identifiant de l'administrateur du domaine de messagerie,postmaster@domaine.com et votre mot de passe temporaire pour vous connecter.

https://mail.domaine.com/iRedAdmin

Depuis ce panneau de contrôle, vous pourrez également créer des comptes de messageries et les gérer.

Roundcube

Pour accéder a Roundcube visitez le chemin /mail. Identifiez vous toujours en utilisant l'adresse de messagerie complète, comme admin@skwal.net par exemple.

https://mail.skwal.net/mail

Obtenir de l'aide

Et voilà! Vous devriez avoir un serveur de messagerie fonctionnel! Si après avoir suivis toutes ces étapes vous rencontrez un quelconque problème, n'hésitez pas a laisser un commentaire en bas de l'article et je serai ravis de vous assister.