Un serveur de mes­sa­ge­rie dédié vous offre un contrôle total sur vos échanges nu­mé­riques. Ce guide vous explique comment con­fi­gu­rer votre propre serveur mail à l’aide de Docker. Il couvre l’ensemble du processus : des prérequis système aux conseils de sécurité, en passant par un tutoriel détaillé étape par étape. Avec des con­te­neurs prêts à l’emploi comme Docker Mail­ser­ver, déployer une solution de mes­sa­ge­rie sécurisée et évolutive n’a jamais été aussi simple.

Qu’est-ce qu’un serveur mail Docker ?

Un serveur mail Docker est une solution de mes­sa­ge­rie auto-hébergée déployée dans des con­te­neurs via Docker. Il permet l’envoi, la réception et le stockage des emails tout en offrant un contrôle total sur la con­fi­den­tia­lité des données, les po­li­tiques de sécurité et la con­fi­gu­ra­tion du système. Con­trai­re­ment aux services tiers comme Gmail ou Outlook, un serveur mail Docker vous donne la maîtrise complète de votre in­fras­truc­ture ; il s’agit d’une solution idéale pour les dé­ve­lop­peurs, les uti­li­sa­teurs soucieux de leur vie privée et les petites en­tre­prises.

Pourquoi utiliser Docker pour un serveur mail ?

L’hé­ber­ge­ment d’un serveur de mes­sa­ge­rie avec Docker présente plusieurs avantages majeurs :

  • Isolation et sécurité : les con­te­neurs Docker isolent le serveur mail, réduisant les risques de com­pro­mis­sion du système global et ren­for­çant la sécurité.
  • Por­ta­bi­lité : les con­te­neurs peuvent être fa­ci­le­ment déplacés d’un en­vi­ron­ne­ment à un autre, assurant une con­fi­gu­ra­tion cohérente entre les serveurs locaux et Cloud.
  • Dé­ploie­ment simplifié : Docker propose des stacks pré­con­fi­gu­rés, ce qui simplifie con­si­dé­ra­ble­ment l’ins­tal­la­tion et évite les con­fi­gu­ra­tions manuelles complexes.
  • Sca­la­bi­lité : il est facile de faire évoluer les con­te­neurs Docker pour répondre à une aug­men­ta­tion du trafic mail ou à de nouveaux besoins en res­sources.
  • Gestion des versions : vous pouvez spécifier les versions des images Docker pour éviter les problèmes de com­pa­ti­bi­lité et faciliter un retour à une version an­té­rieure si né­ces­saire.
  • Cohérence entre les en­vi­ron­ne­ments : Docker garantit des con­fi­gu­ra­tions iden­tiques en dé­ve­lop­pe­ment, test et pro­duc­tion.
Serveur mail pro­fes­sion­nel
  • Standards de sécurité les plus élevés
  • Chif­fre­ment des données avec SSL/TLS
  • Data centers certifiés ISO 27001 et géo-re­don­dants
  • Pro­to­coles IMAP et SMTP

Con­fi­gu­rer son propre serveur de mail avec Docker : quelles sont les con­di­tions requises ?

Note

Ce guide s’adresse aux uti­li­sa­teurs à l’aise avec Linux et Docker, qui sou­hai­tent disposer d’une in­fras­truc­ture de mes­sa­ge­rie privée et flexible. Il est par­ti­cu­liè­re­ment utile pour les dé­ve­lop­peurs, les ad­mi­nis­tra­teurs systèmes et les petites en­tre­prises.

Pour héberger votre propre serveur mail Docker, vous devez disposer de res­sources ma­té­rielles adaptées au volume d’emails que vous prévoyez de traiter. Une adresse IPv4 statique est in­dis­pen­sable pour assurer des échanges de mes­sa­ge­rie fiables et fluides. Il est également essentiel de con­fi­gu­rer cor­rec­te­ment les en­re­gis­tre­ments DNS : MX, SPF, DKIM et DMARC. Enfin, le support de l’IPv6 devient un atout important pour améliorer la com­pa­ti­bi­lité et renforcer la ré­pu­ta­tion de votre serveur d’envoi.

Les re­com­man­da­tions actuelles :

  • Image Docker : docker-mailserver/docker-mailserver:v13.2+
  • Pro­to­coles de mes­sa­ge­rie : SMTP (ports 25, 587, 465), IMAPS (993), POP3S (995)
  • Normes de sécurité : TLS 1.3, DKIM, SPF, DMARC, DNSSEC (si pris en charge)
  • Système d’ex­ploi­ta­tion hôte : Ubuntu 22.04 LTS, Debian 12 ou autres dis­tri­bu­tions Linux stables équi­va­lentes
Conseil

Sim­pli­fiez la con­fi­gu­ra­tion de votre serveur mail avec Docker Mail­ser­ver, un stack open source populaire maintenu par la com­mu­nauté. Il réunit Postfix, Dovecot, rspamd, ClamAV et, en option, une in­té­gra­tion LDAP ; le tout dans un conteneur prêt à l’emploi !

Con­fi­gu­rer son propre serveur de mail avec Docker : quels sont les éléments à prendre en compte ?

Pa­ra­mètres de sécurité

Pour sécuriser ef­fi­ca­ce­ment votre serveur de mes­sa­ge­rie, veillez à appliquer sys­té­ma­ti­que­ment les réglages suivants :

  • Utiliser des cer­ti­fi­cats TLS à jour (au minimum TLS 1.2, idéa­le­ment TLS 1.3)
  • Définir et appliquer les règles SPF, DKIM et DMARC
  • Mettre en place un contrôle du nombre de con­nexions (rate limiting) et activer l’au­then­ti­fi­ca­tion via SASL
  • Chiffrer les con­nexions IMAP/POP3 et SMTP
  • Con­fi­gu­rer la jour­na­li­sa­tion avec des outils comme rsyslog, ac­com­pag­née d’une rotation régulière et struc­tu­rée des logs
Note

Même avec une con­fi­gu­ra­tion en conteneur via Docker, une sécurité in­dé­pen­dante du système reste in­dis­pen­sable. Docker simplifie l’ins­tal­la­tion, mais ne remplace pas le ren­for­ce­ment du système : pare-feu, droits uti­li­sa­teurs stricts, jour­na­li­sa­tion (par exemple avec rsyslog) et mises à jour ré­gu­lières sont es­sen­tiels.

Pa­ra­mètres de con­fi­gu­ra­tion

La con­fi­gu­ra­tion d’un serveur mail Docker nécessite des com­pé­tences tech­niques solides et une attention par­ti­cu­lière à la sécurité. Voici les étapes à ne pas négliger :

  • Choisir une image Docker et un stack de mes­sa­ge­rie adaptés (par ex. docker-mailserver/docker-mailserver)
  • Con­fi­gu­rer les en­re­gis­tre­ments DNS (MX, SPF, DKIM, DMARC)
  • Sécuriser l’hôte Docker (pare-feu, Fail2Ban, chif­fre­ment)
  • Sé­lec­tion­ner les bons outils d’ad­mi­nis­tra­tion et de sur­veil­lance
  • Mettre à jour ré­gu­liè­re­ment le système et effectuer des sau­ve­gardes (y compris les images Docker)
  • Con­fi­gu­rer les entrées DNS inversées et activer la prise en charge de l’IPv6
  • Respecter les obli­ga­tions légales (ex. : RGPD, archivage légal des emails)

Pa­ra­mètres matériels

Pour exécuter votre propre serveur mail Docker, un matériel adapté est in­dis­pen­sable. Les per­for­mances né­ces­saires dépendent de plusieurs facteurs, notamment du nombre d’emails envoyés chaque jour et du nombre d’uti­li­sa­teurs. Bien que les con­te­neurs Docker soient légers, vous devez tout de même prendre en compte la RAM, le pro­ces­seur et l’espace de stockage. Des res­sources sup­plé­men­taires peuvent être né­ces­saires si vous utilisez des services ad­di­tion­nels comme des systèmes de sau­ve­garde ou des outils de filtrage de contenu (contre le spam ou le phishing). De plus, une adresse IPv4 statique est in­dis­pen­sable pour garantir des échanges fiables avec d’autres serveurs mail, car les adresses IP dy­na­miques posent souvent des problèmes de dé­li­vra­bi­lité.

Conseil

Vous souhaitez donner à votre serveur mail Docker une touche in­di­vi­duelle et pro­fes­sion­nelle ? Avoir votre propre adresse dédiée est alors essentiel. En­re­gis­trez dès aujourd’hui votre propre nom de domaine chez IONOS et recevez par la même occasion un cer­ti­fi­cat SSL/TLS pour votre serveur de mes­sa­ge­rie !

Le choix de l’en­vi­ron­ne­ment pour héberger votre serveur mail Docker doit tenir compte de la capacité né­ces­saire. Une con­fi­gu­ra­tion simple peut suffire pour quelques emails par jour, tandis qu’un serveur pro­fes­sion­nel très sollicité demandera des res­sources im­por­tantes en mémoire vive, pro­ces­seur et stockage.

Note

Que vous utilisiez Windows ou Linux, pensez à prendre en compte les res­sources né­ces­saires pour le système d’ex­ploi­ta­tion.

Scénario de serveur de mail Matériel in­for­ma­tique com­pa­tible Tarif IONOS adapté
Serveur do­mes­tique simple (faible volume d’emails) 2 vCores, 8 Go de RAM, 240 Go SSD [VPS Linux L](https://www.ionos.fr/serveurs/vps “VPS
Serveur pour une petite en­tre­prise (jusqu’à 1 000 emails par jour) 8 vCores, 16 Go de RAM, 480 Go SSD [VPS Linux XL](https://www.ionos.fr/serveurs/vps “VPS
Serveur d’en­tre­prise (plus de 50 000 emails par jour) 6 vCores, 32 Go de RAM, 2 x 480 Go SSD en RAID Serveur dédié AMD
Note

Avec un serveur dédié IONOS, vous avez accès à du matériel d’en­tre­prise qui vous est ex­clu­si­ve­ment réservé. Les deux modèles de serveurs dédiés virtuels et serveurs Cloud reposent sur des res­sources vir­tua­li­sées que vous partagez avec d’autres clients, et cela sans perte de per­for­mance.

Con­fi­gu­rer son propre serveur de mail avec Docker : tutoriel

Il existe plusieurs options pour con­fi­gu­rer votre serveur mail. Dans le tutoriel suivant, nous avons par exemple opté pour un serveur basé sur le conteneur Docker docker-mail­ser­ver. Ce conteneur open source léger (licence MIT) fournit une stack modulaire et prête à l’emploi pour la mise en place de son propre serveur de mail : tous les com­po­sants im­por­tants tels qu’un serveur SMTP, un serveur IMAP ou POP, un logiciel antispam et antivirus ou un service d’annuaires LDAP sont inclus.

Note

Si vous souhaitez tra­vail­ler avec une image Docker comme docker-mailserver, vous devez d’abord installer la pla­te­forme de con­te­neurs. Vous trouverez de plus amples in­for­ma­tions à ce sujet dans notre tutoriel Docker.

Étape 1 : obtenir une image Docker

Vous pouvez obtenir la dernière image de docker-mailserver dans le ré­per­toire officiel du stack sur dockerHub ou via le dépôt d’outils GitHub officiel.

L’approche re­com­man­dée consiste à utiliser une version stable, comme v13.2, plutôt que les balises :latest ou :edge.

Exécutez la commande suivante pour récupérer l’image :

docker pull mailserver/docker-mailserver:v13.2
# or:
docker pull ghcr.io/docker-mailserver/docker-mailserver:v13.2
bash

Étape 2 : con­fi­gu­rer docker-compose.yml

Ensuite, vous devez con­fi­gu­rer le fichier docker-compose.yml afin de définir les services et volumes né­ces­saires à votre conteneur Docker.

Voici un exemple de con­fi­gu­ra­tion pour votre serveur de mes­sa­ge­rie :

version: '3.8'
services:
    mailserver:
        image: docker.io/mailserver/docker-mailserver:v13.2
        container_name: mailserver
        hostname: mail-server
        domainname: exemple.fr
        ports:
            - "25:25"
            - "587:587"
            - "465:465"
            - "993:993"
        volumes:
            - ./docker-data/dms/mail-data/:/var/mail/
            - ./docker-data/dms/mail-state/:/var/mail-state/
            - ./docker-data/dms/mail-logs/:/var/log/mail/
            - ./docker-data/dms/config/:/tmp/docker-mailserver/
            - ./docker-data/nginx-proxy/certs/:/etc/letsencrypt/
            - /etc/localtime:/etc/localtime:ro
        environment:
            - ENABLE_FAIL2BAN=1
            - SSL_TYPE=letsencrypt
            - PERMIT_DOCKER=network
            - ONE_DIR=1
            - ENABLE_POSTGREY=0
            - ENABLE_CLAMAV=0
            - ENABLE_SPAMASSASSIN=0
            - SPOOF_PROTECTION=0
        cap_add:
            - NET_ADMIN
            - SYS_PTRACE
yaml

Cette con­fi­gu­ra­tion garantit que votre conteneur Docker utilise les ports ap­pro­priés pour SMTP (25 et 465), IMAPS (993) et la sou­mis­sion SMTP (587), et que les volumes sont cor­rec­te­ment montés pour assurer une con­ser­va­tion per­sis­tante des données. Des fonc­tion­na­li­tés de sécurité comme Fail2Ban et Let’s Encrypt SSL sont également activées.

Note

Pour une liste détaillée des options con­fi­gu­rables du serveur de mail Docker, consultez le manuel officiel en ligne de docker-mail­ser­ver sur GitHub.

Étape 3 : libérer les ports

Dans votre fichier YAML docker-compose.yml, vous re­mar­que­rez que les ports utilisés par le serveur de mes­sa­ge­rie sont men­tion­nés : 25, 465 et 587 pour SMTP, ainsi que 993 pour IMAPS. Ces ports doivent être ouverts dans le pare-feu de votre serveur** afin d’assurer un trafic email fiable.

Si vous utilisez un service comme IONOS pour l’hé­ber­ge­ment, vous pouvez fa­ci­le­ment ouvrir ces ports via le Cloud Panel :

  1. Connectez-vous avec vos données client per­son­nelles sur la page de connexion du Cloud Panel.
  2. Accédez à la rubrique « Serveurs & Cloud ».
  3. Sé­lec­tion­nez le matériel de serveur loué sur lequel vous souhaitez héberger votre serveur de mail Docker.
  4. Cliquez sur « Réseau » dans le menu latéral gauche, puis sur « Réglages du pare-feu ».
  5. Ajoutez suc­ces­si­ve­ment les trois ports TCP 25, 465 et 587 en cliquant sur « Ajouter une règle ».
Image: IONOS Cloud Panel : ajouter une règle de pare-feu
Suivez les ins­truc­tions indiquées ci-dessus afin d’autoriser les ports demandés.

Étape 4 : intégrer le nom d’hôte dans la con­fi­gu­ra­tion DNS

À cette étape, vous devez vous assurer que le service DNS de votre domaine est cor­rec­te­ment configuré :

  • En­re­gis­tre­ment MX : il doit pointer vers le serveur de mes­sa­ge­rie (par exemple mail-server.exemple.fr) que vous avez défini dans les champs hostname (nom d’hôte) et domainname (nom du domaine) de votre fichier docker-compose.yml.
  • En­re­gis­tre­ment SPF : il s’agit d’un en­re­gis­tre­ment TXT pour le domaine (et non pour le nom d’hôte), par exemple : v=spf1 mx ~all.
Note

~all indique une « Softfail » ; vous pouvez aussi utiliser -all si vous souhaitez appliquer une politique plus stricte.

Comment con­fi­gu­rer le DNS dans IONOS Cloud Panel ?

En tant que client IONOS, vous pouvez effectuer ces réglages DNS pour votre serveur via le Cloud Panel en procédant comme suit :

  1. Connectez-vous à nouveau sur la page de connexion du Cloud Panel si ce n’est pas déjà fait.
  2. Cliquez sur l’entrée « Domaines & SSL ».
  3. Appuyez sur l’icône de la roue dentée près de l’entrée du domaine sur lequel vous con­fi­gu­rez votre serveur de mail et sé­lec­tion­nez l’option « DNS ».
  4. Sé­lec­tion­nez « Ajouter un en­re­gis­tre­ment », puis ajoutez les deux entrées suivantes :
    • MX : Cible = mail-server.exemple.fr, Priorité = 10
    • TXT (SPF) : Type = TXT, Valeur = v=spf1 mx ~all
Image: IONOS Cloud Panel : ajouter un enregistrement DNS
Con­fi­gu­rez les en­re­gis­tre­ments MX et SPF de votre domaine dans le Cloud Panel IONOS pour garantir le bon ache­mi­ne­ment des emails.

Pour finir, il s’agit d’accepter les mo­di­fi­ca­tions en appuyant sur « Réi­ni­tia­li­ser le domaine » dans le menu supérieur. Confirmez les adap­ta­tions ef­fec­tuées et cliquez sur « Réi­ni­tia­li­ser main­te­nant ».

Conseil

Vous souhaitez archiver vos emails pro­fes­sion­nels en toute sécurité, con­for­mé­ment à la ré­gle­men­ta­tion eu­ro­péenne ? Avec la solution d’archivage d’emails de IONOS, vous pouvez au­to­ma­ti­ser la con­ser­va­tion de vos boîtes de réception dans un format in­vio­lable et conforme au RGPD.

Étape 5 : générer des clés DKIM

Pour augmenter le niveau de sécurité de votre serveur de mail Docker, créez main­te­nant un en­re­gis­tre­ment DKIM (Do­main­Keys Iden­ti­fied Mail) pour votre domaine. Cette méthode de chif­fre­ment permet de signer nu­mé­ri­que­ment les messages, afin que les serveurs de réception puissent en vérifier l’au­then­ti­cité.

Pour générer les clés, utilisez le fichier de script setup.sh qui se trouve dans le ré­per­toire de docker-mailserver. Exécutez la commande suivante :

./setup.sh config dkim
bash

La clé publique générée sera en­re­gis­trée dans le fichier suivant (à condition que le volume ait été monté cor­rec­te­ment) :

docker-data/dms/config/opendkim/keys/exemple.fr/mail.txt
swift

Ouvrez le fichier et copiez son contenu pour créer un en­re­gis­tre­ment TXT dans la con­fi­gu­ra­tion DNS de votre domaine. L’en­re­gis­tre­ment pourrait res­sem­bler à ceci :

mail._domainkey.exemple.fr. IN TXT (
    "v=DKIM1; h=sha256; k=rsa; "
    "p=MIIBIjANBgkqhkiG9w0BAQEFAAOC...continuedPublicKey...IDAQAB"
)
java
  • mail est le sélecteur et peut être nommé comme vous le souhaitez (par exemple : default, key2025, etc.).
  • Si votre four­nis­seur DNS limite la longueur à 255 ca­rac­tères par chaîne, vous devrez diviser la clé (comme montré dans l’exemple).
  • Assurez-vous que le type d’en­re­gis­tre­ment est bien TXT et qu’il s’applique au domaine complet : mail._domainkey.exemple.fr.
Note

En plus de DKIM, pensez également à con­fi­gu­rer un en­re­gis­tre­ment SPF et un en­re­gis­tre­ment DMARC afin d’assurer une pro­tec­tion complète contre l’usur­pa­tion d’adresse email.

Étape 6 : démarrer le serveur de mail Docker et créer votre première adresse

Démarrez le serveur de mail configuré di­rec­te­ment depuis le ré­per­toire avec la commande suivante :

docker-compose up -d
bash

Ces ins­truc­tions vous per­met­tent de mettre en place un en­vi­ron­ne­ment de mes­sa­ge­rie sécurisé et efficace, qu’il soit basé sur des con­te­neurs modernes ou sur une con­fi­gu­ra­tion plus tra­di­tion­nelle.

Serveur mail pro­fes­sion­nel
  • Standards de sécurité les plus élevés
  • Chif­fre­ment des données avec SSL/TLS
  • Data centers certifiés ISO 27001 et géo-re­don­dants
  • Pro­to­coles IMAP et SMTP
Aller au menu principal