L'installation d'un serveur mail peut s'avérer complexe, particulièrement lorsqu'on évite d'utiliser des outils spécialisés. Dans ce guide, nous allons mettre en place un serveur mail avec Docker sur un VPS.
Prérequis
- Un VPS sous Debian
- Un accès root ou sudo
- Un nom de domaine configuré
1. Installation de Docker
Commençons par installer Docker et ses dépendances :
sudo apt update sudo apt install curl wget docker.io
2. Installation de Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -Ls https://www.servercow.de/docker-compose/latest)/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo curl -sSL https://github.com/docker/compose/releases/download/v$(curl -Ls https://www.servercow.de/docker-compose/latest)/docker-compose-$(uname -s)-$(uname -m) | sudo tee /usr/local/bin/docker-compose > /dev/null
sudo chmod +x /usr/local/bin/docker-compose
Vérifiez l'installation :
docker-compose --version
Vérifiez les fichiers binaire de docker-compose :
ls /usr/local/bin/docker-compose
3. Installation du serveur mail (Mailcow)
Récupération du dépôt
cd /opt/
sudo git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
Génération de la configuration
sudo ./generate_config.sh
Note importante : Si vous utilisez une version de Docker inférieure à 24, vous pourriez rencontrer des problèmes de compatibilité. Dans ce cas, consultez la documentation officielle de Docker pour mettre à jour vers une version plus récente.
Démarrage du serveur
sudo docker-compose pull sudo docker-compose up -d
PS :
Parfois il y a un problème de support de version « docker » lorsque l’on exécute ce commande « ./generate_config.sh ». Si vous utilisez une version de docker inférieur à 24 peut-être que vous rencontreriez ce problème de support de version. Dans ce cas, rendez-vous sur cette page pour installer une version plus récente de « docker ».
Démarrer le serveur mail
sudo docker-compose pull sudo docker-compose up -d
Le Server mail est maintenant démarré.
4. Configuration de Nginx (Optionnel)
Si vous utilisez déjà Nginx sur votre machine, vous devrez peut-être gérer les conflits de ports. Les configurations de Mailcow se trouvent dans le fichier mailcow.conf.
Pour appliquer les modifications de configuration :
sudo docker compose down sudo docker compose up -d
Pour uniquement redémarrer Nginx-mailcow :
docker-compose restart nginx-mailcow
Configuration du virtual host Nginx
Créez ou modifiez votre fichier de configuration Nginx :
sudo nano /etc/nginx/conf.d/fredoandrianaivo.com
Exemple de configuration :
Sécurisation avec Let's Encrypt
sudo certbot --nginx -d mail.fredoandrianaivo.com
Maintenant je peux accéder à mail-cow administration avec ce lien : https://fredoandrianaivo.com:8443/ (avec SSL)
Pour plus de détails sur les configurations à mettre :
https://docs.mailcow.email/post_installation/reverse-proxy/r_p-nginx/
https://www.bennetrichter.de/en/tutorials/mailcow-dockerized/
5. Configuration du domaine mail
- Accédez à l'interface d'administration Mailcow
- Dans le menu "Courriel", sélectionnez "Configuration"
3. Cliquez sur "Ajouter un domaine"
4. Remplissez les informations de votre domaine
5. Cliquez sur "Ajouter le domaine et redémarrer SOGo"
6. Configuration DNS
Configurez les enregistrements DNS suivants dans votre zone DNS (de votre hebergeur):
- autodiscover
- autoconfig
- SPF
- DMARC
- DKIM
Dans la Zone DNS de mon hébergeur ça ressemble à ca:
Vérifiez les valeurs exactes dans l'interface Mailcow sous l'onglet "DNS".
7. Création des boîtes mail
- Dans l'interface d'administration, allez dans "Boîtes de réception"
- Cliquez sur "Ajouter une boîte de réception"
3. Renseignez :
- Identifiant
- Nom complet (optionnel)
- Mot de passe
8. Configuration des alias
- Accédez à l'onglet "Aliases"
2. Cliquez sur "Ajouter un alias"
3. Configurez les redirections souhaitées
Rappelez-vous qu’au moment où nous avons ajouté l’enregistrement DNS pour le « DMARC », nous avons utilisé « dmarc@fredoanadrianaivo.com » afin de capturer tous les emails sans appliquer de règle de « reject » ou « quarantine » pour bloquer certains emails. Nous allons renseigner l’adresse « dmarc » ici. Ensuite, cliquez sur « Ajouter » pour enregistrer l’alias.
9. Test et validation
Pour tester notre configuration, nous allons envoyer un email à mail-tester et vérifier notre score. Cela nous permettra d'évaluer l'indésirabilité (spam) des emails envoyés depuis notre serveur mail.
Déconnectez-vous de « mailcow » et connectez-vous avec « webmail ».
Pour vérifier votre configuration :
- Envoyez un email test à mail-tester.com
- Vérifiez votre score SpamAssassin
Pour ma part, j’ai obtenu un score de 10/10 sur mail-tester.
- Testez l'envoi et la réception avec différents fournisseurs de messagerie
J'ai fait un autre test avec un email Google personnel et ça marche parfaitement.
Et voilà, nous avons maintenant un email opérationnel et fonctionnel que nous pouvons utiliser.
Conclusion
La mise en place d'un serveur mail avec Mailcow et Docker offre une solution robuste et professionnelle pour gérer sa propre infrastructure mail. Bien que l'installation puisse sembler complexe au premier abord, l'utilisation de Docker simplifie grandement le processus de déploiement et de maintenance.
Les avantages principaux de cette solution sont :
- Une installation standardisée grâce à Docker
- Une interface d'administration complète et intuitive
- Une configuration automatisée des services essentiels (DKIM, SPF, DMARC)
- Une excellente protection contre le spam
- La possibilité de gérer plusieurs domaines
Il est important de maintenir régulièrement votre serveur à jour et de surveiller les logs pour assurer un fonctionnement optimal. N'oubliez pas également de mettre en place une stratégie de sauvegarde pour protéger vos données.
Avec cette configuration, vous disposez maintenant d'un serveur mail professionnel, sécurisé et entièrement sous votre contrôle.
Ressources utiles :
https://docs.mailcow.email/post_installation/reverse-proxy/r_p-nginx/