Installer et sécuriser Mailcow sur Debian

Mailcow: dockerized est une suite de serveur mail moderne construite sur Postfix, Dovecot et d'autres composants, entièrement gérée avec Docker. Ce guide vous accompagne dans l’installation, le durcissement et la maintenance sur Debian 12.
1. Prérequis
- Serveur Debian 12 (installation fraîche recommandée)
- Accès root ou sudo
- Minimum : 2 vCPU, 4 Go RAM (8 Go recommandé), 40 Go stockage
- Un nom de domaine (ex. exemple.com)
- Accès DNS pour le domaine
- Ports ouverts : 25, 80, 443, 587, 993, 995
2. Préparation du système et mises à jour
sudo apt update && sudo apt -y full-upgrade
sudo reboot
Optionnel : définir le fuseau horaire correct.
sudo timedatectl set-timezone Europe/Paris
3. Installer les paquets requis (Docker, Docker Compose)
sudo apt install -y curl git apt-transport-https ca-certificates gnupg lsb-release
# Ajouter la clé GPG officielle de Docker
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg
# Ajouter le dépôt Docker
echo "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
# Installer Docker et Compose
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Activer et vérifier Docker
sudo systemctl enable --now docker
sudo docker --version
sudo docker compose version
4. Récupérer les sources de Mailcow
cd /opt
sudo git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
5. Configurer Mailcow (docker-compose)
Lancer le script de configuration :
sudo ./generate_config.sh
Questions posées :
- Nom d’hôte (ex. mail.exemple.com)
- Fuseau horaire
- Chemin optionnel pour les volumes mail
Cela génère le fichier mailcow.conf.
6. Configurer le hostname, le DNS et le reverse DNS
- Vérifier que le serveur a le bon hostname :
hostnamectl set-hostname mail.exemple.com
- Ajouter un enregistrement A dans votre DNS : mail.exemple.com → IP_du_serveur
- Configurer le PTR (reverse DNS) chez le fournisseur : IP_du_serveur → mail.exemple.com
7. Démarrer Mailcow
sudo docker compose pull
sudo docker compose up -d
Vérifier l’état :
sudo docker compose ps
8. Activer HTTPS avec Let’s Encrypt
Par défaut, Mailcow demande automatiquement un certificat Let’s Encrypt pour votre hostname si les ports 80/443 sont disponibles.
- Vérifiez la propagation DNS.
- Accédez à https://mail.exemple.com après ~5 minutes.
Si le certificat n’est pas généré, consulter les logs :
sudo docker compose logs acme-mailcow
9. Configuration DNS (MX, SPF, DKIM, DMARC)
À configurer dans le DNS du domaine :
- MX Record
exemple.com. IN MX 10 mail.exemple.com.
- A Record
mail.exemple.com. IN A IP_du_serveur
- SPF (TXT Record)
exemple.com. IN TXT "v=spf1 mx -all"
- DKIM : générer dans l’interface Mailcow → Configuration → ARC/DKIM Keys → publier dans le DNS
- DMARC (TXT Record)
_dmarc.exemple.com. IN TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]"
- Autodiscover / Autoconfig (optionnel)
autodiscover.exemple.com → mail.exemple.com
autoconfig.exemple.com → mail.exemple.com
10. Configuration du pare-feu
Autoriser uniquement les ports nécessaires :
sudo apt install -y ufw
sudo ufw allow OpenSSH
sudo ufw allow 25,80,443,587,993/tcp
sudo ufw enable
sudo ufw status
11. Sécurisation et durcissement de Mailcow
- Forcer HTTPS (activé par défaut)
- Activer Fail2ban (Mailcow inclut déjà des protections via Rspamd)
- Utiliser des mots de passe solides + 2FA dans l’interface Mailcow
- Mettre à jour régulièrement les conteneurs (docker compose pull)
- Surveiller les logs contre les attaques bruteforce
12. Sauvegardes et mises à jour
- Sauvegarder les volumes : /var/lib/docker/volumes/mailcowdockerized_*
- Arrêter la stack avant sauvegarde complète :
sudo docker compose down
sudo tar -czf mailcow-backup.tar.gz /var/lib/docker/volumes/mailcowdockerized_*
- Mettre à jour :
cd /opt/mailcow-dockerized
sudo git pull
sudo docker compose pull
sudo docker compose up -d
13. Supervision et dépannage
- Consulter les logs :
sudo docker compose logs -f
- Logs d’un service particulier :
sudo docker compose logs postfix-mailcow
sudo docker compose logs dovecot-mailcow
- Redémarrer un service :
sudo docker compose restart rspamd-mailcow
14. Conseils utiles
- Utiliser le compte admin pour se connecter → https://mail.exemple.com → Identifiants définis dans mailcow.conf
- Activer le webmail SOGo : accessible via /SOGo
- Utiliser ActiveSync/IMAP/SMTP sur Outlook/Thunderbird
- Surveiller via /api/ ou le tableau de bord intégré
15. Check-list finale
- Système mis à jour et redémarré
- Docker & Compose installés
- Configuration Mailcow générée
- Hostname + DNS + rDNS corrects
- Conteneurs Mailcow actifs
- HTTPS opérationnel (Let’s Encrypt)
- Enregistrements DNS MX/SPF/DKIM/DMARC configurés
- Pare-feu restreint aux ports mail
- Stratégie de sauvegarde en place
- Logs surveillés
Votre serveur mail Mailcow est maintenant opérationnel sur Debian 12 !


















