## Sommaire 1. Prérequis 2. Préparation du système et mises à jour 3. Installer les paquets requis (Docker, Docker Compose) 4. Récupérer les sources de Mailcow 5. Configurer Mailcow (docker-compose) 6. Configurer le hostname, le DNS et le reverse DNS 7. Démarrer Mailcow 8. Activer HTTPS avec Let’s Encrypt 9. Configuration DNS (MX, SPF, DKIM, DMARC) 10. Configuration du pare-feu 11. Sécurisation et durcissement de Mailcow 12. Sauvegardes et mises à jour 13. Supervision et dépannage 14. Conseils utiles 15. Check-list finale --- ## 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 ```bash sudo apt update && sudo apt -y full-upgrade sudo reboot ``` Optionnel : définir le fuseau horaire correct. ```bash sudo timedatectl set-timezone Europe/Paris ``` --- ## 3. Installer les paquets requis (Docker, Docker Compose) ```bash 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 ```bash cd /opt sudo git clone https://github.com/mailcow/mailcow-dockerized cd mailcow-dockerized ``` --- ## 5. Configurer Mailcow (docker-compose) Lancer le script de configuration : ```bash 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 : ```bash 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 ```bash sudo docker compose pull sudo docker compose up -d ``` Vérifier l’état : ```bash 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 : ```bash 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 : ```bash 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 : ```bash sudo docker compose down sudo tar -czf mailcow-backup.tar.gz /var/lib/docker/volumes/mailcowdockerized_* ``` - Mettre à jour : ```bash cd /opt/mailcow-dockerized sudo git pull sudo docker compose pull sudo docker compose up -d ``` --- ## 13. Supervision et dépannage - Consulter les logs : ```bash sudo docker compose logs -f ``` - Logs d’un service particulier : ```bash sudo docker compose logs postfix-mailcow sudo docker compose logs dovecot-mailcow ``` - Redémarrer un service : ```bash 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 !