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 !



















