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.

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 !