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 :

Code
sudo apt update
sudo apt install curl wget docker.io

2. Installation de Docker Compose#

Bash
sudo curl -L <span class="hljs-string">"https://github.com/docker/compose/releases/download/$(curl -Ls https://www.servercow.de/docker-compose/latest)/docker-compose-$(uname -s)-$(uname -m)"</span> -o /usr/local/bin/docker-compose 
sudo curl -sSL <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/github.com/docker/compose/releases/download/v</span><span class="hljs-variable">$(</span>curl -<span class="hljs-title class_">Ls</span> <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/www.servercow.de/docker</span>-compose/latest)/docker-compose-<span class="hljs-variable">$(</span>uname -s)-<span class="hljs-variable">$(</span>uname -m) |<span class="hljs-params"> sudo tee /usr/local/bin/docker-compose > /dev/null
sudo chmod +x /usr/local/bin/docker-compose
</span>

Vérifiez l'installation :

Code
docker-compose --version

Vérifiez les fichiers binaire de docker-compose :

Bash
ls /usr/local/<span class="hljs-built_in">bin</span>/docker-compose

3. Installation du serveur mail (Mailcow)#

Récupération du dépôt#

Bash
cd /opt/
sudo git <span class="hljs-keyword">clone</span> https:<span class="hljs-comment">//github.com/mailcow/mailcow-dockerized</span>
cd mailcow-dockerized

Génération de la configuration#

Code
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#

Code
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#

Code
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 :

Code
sudo docker compose down
sudo docker compose up -d

Pour uniquement redémarrer Nginx-mailcow :

Code
docker-compose restart nginx-mailcow

Configuration du virtual host Nginx#

Créez ou modifiez votre fichier de configuration Nginx :

Code
sudo nano /etc/nginx/conf.d/fredoandrianaivo.com

Exemple de configuration :

Sécurisation avec Let's Encrypt#

Code
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#

  1. Accédez à l'interface d'administration Mailcow
  2. 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#

  1. Dans l'interface d'administration, allez dans "Boîtes de réception"
  2. Cliquez sur "Ajouter une boîte de réception"

3. Renseignez :

  • Identifiant
  • Nom complet (optionnel)
  • Mot de passe


8. Configuration des alias#

  1. 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 :

  1. Envoyez un email test à mail-tester.com

  1. Vérifiez votre score SpamAssassin

Pour ma part, j’ai obtenu un score de 10/10 sur mail-tester.

  1. 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/

https://www.youtube.com/watch?v=_z6do5BSJmg

https://www.youtube.com/watch?v=4rzc0hWRSPg