Bonjour à tous et bienvenus dans ce nouveau post, où cette fois-ci je vais vous présenter Mailcow :
(mailcow)

Introduction

Vous ne connaissez pas Mailcow ? Je vous explique. Mailcow est un serveur mail tout-en-un, ce qui veut dire qu’il regroupe tant le serveur SMTP, IMAP, POP3, que le webmail. Mailcow utilise Docker pour faciliter le déploiement et la gestion de ses services. Parce qu’en plus des services classiques, Mailcow propose de l’analyse des spams, des virus… Tout cela, bien entendu, est sécurisé avec des mises à jour régulières.

Voilà, selon la doc, la liste complète des différents containers qui sont déployés avec Mailcow :
(fonctionnalites)

Comme vous pouvez le voir, Mailcow est super complet. On passe tant par le DNS jusqu’à l’analyse des fichiers Word, Excel… !!

En résumé, Mailcow est la solution à déployer si vous voulez quitter Gmail, Outlook, Yahoo… pour votre propre serveur mail auto-hébergé.

Dans ce post, je vais vous expliquer comment déployer Mailcow sur un serveur Debian 12. Avec les caractéristiques suivantes :

Ressource Spécification
CPU 2 vCPU
RAM 7 GB
Disque 30 GB

Note : Je vais déployer Mailcow dans mon HomeLab, donc je vais utiliser une VM sur mon Proxmox avec un DNS local. Ceci n’est pas un tuto pour le déploiement en production, mais vous pouvez l’adapter pour votre cas. Un prochain post sera consacré à la mise en place de Mailcow en production.

Mise en place

Avant de commencer à manipuler notre VM et installer Docker et Mailcow à l’intérieur, nous devons nous assurer que la configuration DNS est correcte. Moi, je suis dans mon HomeLab, donc je n’ai pas de serveur DNS public. J’utilise PiHole pour le DNS. Si jamais vous voulez un tuto pour déployer PiHole, n’hésitez pas à me le demander.

Donc, on va se rendre sur notre PiHole, et on va ajouter un enregistrement A dans le DNS local, pour pointer un domaine vers notre VM qui va héberger Mailcow :
Pi-Hole-DNS

Une fois que c’est fait, on peut passer à l’installation de Docker et Mailcow.

Installation de Docker

L’installation de Docker pour vous n’a normalement plus de secret. Il faut simplement wget le script d’installation et l’exécuter :

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Une fois que c’est fait, on peut vérifier que Docker est bien installé :

docker run hello-world

Docker inst

Installation de Mailcow

Maintenant que Docker est installé, on peut passer à l’installation de Mailcow. Pour cela, on va cloner le repo Git de Mailcow.

Mais avant ça, il faut être sûr qu’on est root dans notre machine pour ne pas avoir des problèmes de permissions :

sudo su
# umask
0022 # <- Vérifiez que c'est bien 0022

Maintenant, on peut cloner le repo (Mailcow recommande de le cloner dans /opt) :

cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized

On va maintenant générer un fichier de configuration pour Mailcow, où on va devoir définir le nom de domaine du serveur :

./generate_config.sh

Gen config

Comme vous pouvez le voir, le script m’a demandé de définir le nom de domaine. J’ai mis mail.makhal.local, qui est le domaine que j’ai ajouté dans mon PiHole. Puis, il m’a demandé quelle branche de Mailcow je veux utiliser. Il existe deux branches : la stable et la nightly. J’ai choisi la stable. Mais si vous voulez avoir les dernières fonctionnalités, vous pouvez choisir la nightly.

Maintenant, tout est prêt. Il nous reste plus qu’à pull nos images Docker et lancer Mailcow :

docker compose pull

Docker Pull

Puis, on peut lancer Mailcow :

docker compose up -d

Compose up

Et voilà, Mailcow est lancé. Vous pouvez maintenant vous connecter à l’interface web de Mailcow en allant sur https://mail.makhal.local :

WebUI

Les login par défaut sont :

  • Utilisateur : admin
  • Mot de passe : moohoo

Et voilà le dashboard de Mailcow :

Dashboard

Comme vous pouvez le voir, Mailcow est très paramétrable. Vous pouvez ajouter des domaines, des utilisateurs, des alias… Tout ce que vous voulez. Je vous laisse faire un petit tour pour découvrir toutes les fonctionnalités de Mailcow. Nous, ici, on va se contenter de créer un utilisateur pour accéder à notre webmail.

Bien entendu, la première chose qu’on doit faire, c’est de changer le mot de passe de l’utilisateur admin. Pour cela, on va dans Configuration -> Accès -> Éditer (sur admin) :

Modif pass

Cliquez sur Éditer, puis saisissez le nouveau mot de passe dans les champs prévus à cet effet. Une fois validé, le mot de passe sera immédiatement mis à jour. Cette étape est cruciale pour sécuriser votre installation, surtout si vous prévoyez de l’exposer sur Internet.

Maintenant que le mot de passe est changé, on peut ajouter un domaine. Ce domaine sera celui de nos futurs utilisateurs.

Pour cela, on va dans Courriel -> Configuration -> Ajouter un domaine :

Domaine

Une fois que vous aurez cliqué, vous verrez ce menu :

Add domain

Dans ce menu vraiment très complet, il faudra définir le domaine, des étiquettes pour organiser si jamais vous avez plusieurs domaines. Et surtout, le sélecteur DKIM, et la taille de clé qu’il va générer pour ce DKIM.

Si vous ne savez pas ce que c’est DKIM ou même SPF, je vous invite à lire mon post sur les différents protocoles de sécurisation mail.

Une fois que vous avez rempli tout ça, vous pouvez cliquer sur Ajouter le domaine et redémarrer SOGo, et vous aurez votre domaine dans la liste des domaines.

add-domain

Aussi, si vous appuyez sur le bouton DNS, vous aurez les enregistrements DNS à ajouter pour que votre domaine soit bien configuré. Dans mon cas, je suis dans mon HomeLab, donc je n’ai pas besoin de les ajouter. Mais voilà à quoi ça ressemble :

DNS

Maintenant que le domaine est ajouté, on peut ajouter un utilisateur. Pour cela, on va dans :

ADD USER

Une fois dedans, il faudra remplir le formulaire suivant :

add user 2

Maintenant que l’utilisateur est ajouté, vous pouvez vous connecter à votre webmail en allant sur https://mail.makhal.local/SOGo/ :

SOGO

Et voilà !! Nous sommes à l’intérieur de notre webmail. Vous pouvez envoyer et recevoir des mails, créer des dossiers, des règles… Tout ce que vous voulez.

SOGO - 2

Conclusion

Mailcow est une solution complète et facile à déployer pour ceux qui souhaitent quitter les services de messagerie traditionnels comme Gmail ou Outlook. Bien que ce guide soit orienté vers un déploiement en HomeLab, il peut facilement être adapté pour un usage en production avec quelques ajustements supplémentaires. N’hésitez m’envoyer vos questions si vous en avez.

Merci d’avoir lu ce post, et à bientôt pour un prochain post.