« Docker mailserver » : configurer un serveur de mail avec Docker
Il suffit de quelques étapes pour mettre en place son propre serveur de mail et pouvoir ainsi avoir un contrôle maximal sur ses emails. L’installation via Docker, par exemple avec la stack « docker-mailserver », est recommandée. Quelles sont les conditions à remplir ? Et comment configurer un serveur de mail exactement ?
Mettez en place votre serveur de mail professionnel en un clin d'œil avec IONOS. Bénéficiez de nombreux avantages : un espace de stockage important et modulable, votre propre nom de domaine, un chiffrement automatique, des fonctions de calendrier et de bureau ou l'archivage des emails. IONOS propose les normes de sécurité les plus élevées dans des data centers européens certifiés ISO.
Configurer son propre serveur de mail avec Docker : quel matériel est nécessaire ?
Pour pouvoir exploiter votre propre serveur de mail, vous avez tout d’abord besoin du matériel adéquat. La puissance nécessaire dépend de différents facteurs : combien d’emails sont envoyés par jour ? Combien de personnes utilisent le serveur et à quels intervalles ? La taille moyenne des emails échangés est également importante. Une puissance supplémentaire doit être prévue pour des services supplémentaires tels qu’un système de sauvegarde ou un scanner (protection contre le spam, le phishing, etc.). Dans tous les cas, vous avez également besoin d’une adresse IP statique afin de garantir une interaction fluide avec les autres serveurs de mail.
Pour trouver un environnement adapté à l’installation de votre serveur de mail, il est essentiel de savoir quelles capacités doivent être couvertes. Pour quelques emails par jour, une simple configuration de départ suffit, alors qu’un serveur de mail professionnel très utilisé doit disposer de beaucoup de RAM, de CPU et d’espace de stockage.
Que ce soit pour Windows ou Linux, n’oubliez pas de prévoir des ressources pour le système d’exploitation.
Pour illustrer nos propos, nous avons regroupé trois scénarios de serveur de mail et avons attribué à chacun un tarif de serveur IONOS adaptés.
Scénarios de serveur de mail | Matériel informatique compatible | Tarif IONOS adapté |
Serveur domestique simple avec peu de capacité | 2 vCores, 4 Go de RAM, 60 Go d’espace disque dur | VPS L |
Serveur de mail pour une petite entreprise avec jusqu’à 1000 emails par jour | 4 vCores, 8 Go de RAM, 100 Go d’espace disque dur | VPS XL |
Serveur de mail d’entreprise avec plus de 50000 emails quotidiens | 8 vCores, 16 Go de RAM, 500 Go d’espace disque dur | AR6-32 SSD |
Avec un serveur dédié de IONOS, vous avez accès à du matériel d’entreprise qui vous est exclusivement réservé. Les deux modèles « VPS » et « Serveur Cloud » reposent sur des ressources virtualisées que vous partagez avec d’autres clients, et cela sans perte de performance.
Tutoriel : configurer un serveur de mail avec Docker
Celui qui souhaite configurer un serveur de mail a plusieurs options. Dans le tutoriel suivant, nous avons par exemple opté pour un serveur basé sur le conteneur Docker « docker-mailserver ». Ce conteneur open source léger (licence MIT) fournit une stack prête à l’emploi pour la mise en place de son propre serveur de mail : tous les composants importants tels qu’un serveur SMTP, un serveur IMAP ou POP, un logiciel antispam et antivirus ou un service d’annuaires LDAP sont inclus.
Si vous souhaitez travailler avec une image Docker comme "docker-mailserver", vous devez d’abord installer la plateforme de conteneurs. Vous trouverez de plus amples informations à ce sujet dans notre tutoriel Docker.
Lisez la suite de cet article dédié pour savoir comment fonctionne exactement la configuration du serveur de mail avec « docker-mailserver ».
Étape 1 : obtenir une image Docker
Vous pouvez obtenir la dernière image de « docker-mailserver » dans le répertoire officiel de la stack sur dockerHub ou via le dépôt d’outils GitHub officiel
Si vous optez pour le répertoire dockerHub, vous obtenez l’image avec l’entrée de ligne de commande suivante :
docker pull mailserver/docker-mailserver
Pour l’installation à partir du répertoire GitHub, tapez la commande suivante :
docker pull ghcr.io/docker-mailserver/docker-mailserver:edge
Étape 2 : configurer docker-compose.yml
Dans l’étape suivante, il s’agit de préparer le conteneur « docker-mailserver » pour le démarrage. Pour cela, nous créons un répertoire pour le serveur de mail à mettre en place, par exemple « mail-server-docker ». Nous créons ensuite dans ce répertoire un nouveau fichier YAML nommé docker-compose.yml et y insérons le contenu suivant pour une configuration de base du serveur de mail Docker :
Version : ‘3.8’
services :
mailserver :
image : docker.io/mailserver/docker-mailserver:latest
container_name : mailserver
hostname : mail-server
# exemple.fr doit être remplacé par le domaine propre au serveur de mail :
domainname : exemple.fr
Ports :
- "25:25"
- "587:587"
- "465:465"
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/
# Le chemin d’accès doit être adapté :
- ./docker-data/nginx-proxy/certs/:/etc/letsencrypt/
- /etc/localtime:/etc/localtime:ro
environment :
- ENABLE_FAIL2BAN=1
# Letsencrypt doit être utilisé pour les certificats SSL/TLS (sinon, il faut l’adapter)
- 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 # For Fail2Ban to work
- SYS_PTRACE
Pour une liste détaillée des réglages possibles pour la configuration du serveur de mail Docker, voir le manuel officiel en ligne de docker-mailserver sur GitHub.
Étape 3 : libérer les ports
Le fichier YAML contient entre autres les trois ports 25, 465 et 587. Il s’agit des ports classiques du serveur SMTP, que vous devez libérer dans les paramètres du pare-feu de votre serveur pour que tout se passe sans problème. La procédure exacte à suivre dépend du système et du fournisseur. Les clients IONOS (VPS, serveur Cloud, serveur dédié) peuvent par exemple libérer les ports facilement via le Cloud Panel. Pour cela, suivez les étapes suivantes :
- Connectez-vous avec vos données client personnelles sur la page de connexion du Cloud Panel.
- Accédez à la rubrique « Serveur et Cloud ».
- Sélectionnez le matériel de serveur loué sur lequel vous souhaitez configurer votre serveur de mail Docker.
- Cliquez sur « Réseau » dans le menu latéral gauche, puis sur « Politiques de pare-feu ».
- Ajoutez successivement les trois ports TCP « 25 », « 465 » et « 587 » en cliquant sur « Ajouter une règle ».
Étape 4 : intégrer le nom d’hôte dans les paramètres DNS
Dans l’étape suivante, vous devez vous assurer que le service DNS de votre serveur utilise un enregistrement MX pour le nom d’hôte configuré à l’étape 2 (ici : « mail-server-docker »). De plus, il faut ajouter un enregistrement SPF-TXT avec le nom d’hôte et la valeur « v=spf1 mx ~all ».
En tant que client IONOS, vous pouvez également effectuer ces réglages DNS pour votre serveur via le Cloud Panel en procédant comme suit :
- Connectez-vous à nouveau sur la page de connexion du Cloud Panel, si vous n’y êtes plus connecté.
- Cliquez sur l’entrée « Domaines et SSL ».
- Appuyez sur l’icône de la roue dentée près de l’entrée du domaine sur lequel vous configurez votre serveur de mail et sélectionnez l’option « DNS ».
- En cliquant sur le bouton « Ajouter un enregistrement », vous pouvez maintenant ajouter les deux entrées pour MX et SPF-TXT.
Pour finir, il s’agit d’accepter les modifications en appuyant sur « Réinitialiser le domaine » dans le menu supérieur. Confirmez les adaptations effectuées et cliquez sur « Réinitialiser maintenant ».
Vous souhaitez conserver vos emails de manière légale et conforme au RPGD ? Utilisez l’archivage des emails de IONOS pour archiver les emails de vos messageries !
Etape 5 : générer des clés DKIM
Pour augmenter le niveau de sécurité de votre serveur de mail Docker, créez maintenant un enregistrement DKIM pour votre domaine. Cette technique de chiffrement permet de signer numériquement les messages par la suite. Pour générer les clés, utilisez le fichier de script setup.sh qui se trouve dans le répertoire de docker-mailserver. Exécutez la commande suivante :
./setup.sh config dkim
L’entrée générée, que vous trouverez dans le fichier docker-data/dms/config/opendkim/keys/exemple.fr/mail.txt, est ajoutée aux enregistrements DNS en tant qu’entrée TXT supplémentaire, afin que les serveurs de mail destinataires puissent récupérer la clé publique. La sortie se présente à peu près comme suit :
mail._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; "
"p=MIIBIjANBgkqhkiG9w0BAQEFACAQ8AMIIBCgKCAQEAaH5KuPYPSF3Ppkt466BDMAFGOA4mgqn4oPjZ5BbFlYA9l5jU3bgzRj3l6/Q1n5a9lQs5fNZ7A/HtY0aMvs3nGE4oi+LTejt1jblMhV/OfJyRCunQBIGp0s8G9kIUBzyKJpDayk2+KJSJt/lxL9Iiy0DE5hIv62ZPP6AaTdHBAsJosLFeAzuLFHQ6USyQRojefqFQtgYqWQ2JiZQ3"
"iqq3bD/BVlwKRp5gH6TEYEmx8EBJUuDxrJhkWRUk2VDl1fqhVBy8A9O7Ah+85nMrlOHIFsTaYo9o6+cDJ6t1i6G1gu+bZD0d3/3bqGLPBQV9LyEL1Rona5V7TJBGg099NQkTz1IwIDAQAB" ) ; ----- DKIM key mail for exemple.fr
Le chiffrement de la communication par mail via SSL/TLS est tout aussi important que les entrées DKIM. Les développeurs de docker-mailserver recommandent l’utilisation de letsencrypt pour l’activation, mais vous pouvez bien sûr aussi utiliser vos propres certificats déjà achetés. Vous trouverez des instructions détaillées pour l’installation dans la documentation officielle du serveur de messagerie sur GitHub.
Etape 6 : démarrer le serveur de mail Docker et créer la première adresse
Démarrez le serveur de mail configuré directement depuis le répertoire avec la commande suivante :
docker-compose up
Il s’agit maintenant de créer une première adresse email en deux minutes. Pour ce faire, utilisez la commande suivante, en adaptant le domaine ainsi que le nom d’utilisateur et le mot de passe :
./setup.sh email add user@domain password
À l’aide de cette commande, vous pouvez à tout moment créer d’autres profils afin de configurer votre serveur de mail Docker comme vous le souhaitez.
- Adresse email personnalisée
- Accès aux emails depuis n’importe où
- Normes de sécurité les plus élevées