📍 Article principal de la série : Mailcow 2026 : guide complet.
Une heure pour transformer un VPS vide en serveur mail Mailcow opérationnel avec premier domaine fonctionnel. Méthode validée chez plusieurs PME francophones.
Prérequis
- VPS Hetzner CX22 minimum (4 Go RAM nécessaire pour ClamAV).
- Domaine avec accès complet aux DNS.
- Un sous-domaine type
mail.votre-entreprise.comqui pointera vers le VPS. - Niveau attendu : intermédiaire/avancé.
- Temps estimé : 60-90 minutes.
Étape 1 — Demande whitelist ports SMTP Hetzner
Hetzner bloque ports 25/465/587 sortants par défaut sur VPS récents. Avant tout, demande de whitelist :
- Hetzner Cloud Console → Support → Open ticket.
- Sujet : « Unblock outgoing SMTP ports 25/465/587 ».
- Justification : « Self-hosted mail server (Mailcow) for legitimate business use ».
- Réponse en 24-48h. Confirmation par email.
Étape 2 — Configurer Reverse DNS (PTR)
Hetzner Cloud Console → VPS → Networking → Reverse DNS. Définir : mail.votre-entreprise.com. Vérifier :
dig -x VOTRE_IP +short
# Doit retourner mail.votre-entreprise.com
Étape 3 — Configurer DNS A et MX
Sur votre DNS provider :
mail.votre-entreprise.com. A VOTRE_IP_VPS
votre-entreprise.com. MX 10 mail.votre-entreprise.com.
Vérifier propagation : dig MX votre-entreprise.com.
Étape 4 — Préparer le VPS
apt update && apt upgrade -y
apt install -y curl git docker.io docker-compose-plugin
systemctl enable --now docker
ufw allow 22/tcp
ufw allow 25/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 465/tcp
ufw allow 587/tcp
ufw allow 993/tcp
ufw allow 995/tcp
ufw allow 4190/tcp
ufw enable
Étape 5 — Cloner Mailcow
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
./generate_config.sh
# Saisir : mail.votre-entreprise.com
# Timezone : Africa/Casablanca (ou Africa/Dakar, etc.)
Étape 6 — Configurer mailcow.conf
nano mailcow.conf
Ajustements typiques :
SKIP_LETS_ENCRYPT=n
SKIP_CLAMD=n # Garder antivirus actif
SKIP_SOGO=n
HTTP_BIND=
HTTP_PORT=80
HTTPS_PORT=443
TZ=Africa/Casablanca
COMPOSE_PROJECT_NAME=mailcow
DOCKER_COMPOSE_VERSION=native
Étape 7 — Lancer Mailcow
docker compose pull
docker compose up -d
# Comptez 5-10 minutes pour pull toutes les images
Suivre les logs : docker compose logs -f.
Étape 8 — Premier login admin
Ouvrir https://mail.votre-entreprise.com/admin. Login : admin / password : moohoo. Changer immédiatement le mot de passe.
Étape 9 — Activer 2FA admin
Edit profile → Two-factor authentication → TOTP. Scanner avec Aegis, sauvegarder recovery codes dans Vaultwarden.
Étape 10 — Premier domaine
Configuration → Mail Setup → Domain → Add. Saisir :
- Domain :
votre-entreprise.com. - Description.
- Aliases : 400 (max alias par domaine).
- Mailbox : 50 (max boîtes).
- Quota : 5120 MB par boîte.
Étape 11 — Première boîte
Mailbox → Add Mailbox. Email : contact@votre-entreprise.com. Password fort. Quota 1 GB.
Étape 12 — Test envoi/réception
Ouvrir SOGo : https://mail.votre-entreprise.com/SOGo/. Login avec contact@votre-entreprise.com. Envoyer email vers Gmail/Outlook. Vérifier réception (peut atterrir en spam au début, normal sans warmup IP).
Étape 13 — Sauvegardes
# Helper Mailcow
cd /opt/mailcow-dockerized
./helper-scripts/backup_and_restore.sh backup all
# Cron quotidien
0 3 * * * /opt/mailcow-dockerized/helper-scripts/backup_and_restore.sh backup all --delete-days 30 >> /var/log/mailcow-backup.log 2>&1
Erreurs fréquentes
| Erreur | Cause | Solution |
|---|---|---|
| Email pas envoyé | Port 25 bloqué Hetzner | Whitelist via support |
| Email en spam Gmail | SPF/DKIM manquant | Configurer DNS (voir tutoriel dédié) |
| Container mailcow-clamd OOM | RAM insuffisante | CX22 (4 Go) minimum, ou désactiver ClamAV |
| Let’s Encrypt échec | Port 80 bloqué | UFW allow 80 |
| SOGo 502 | Container memcached pas prêt | Attendre 2 min ou restart |
| Disk plein rapide | Logs verbose | logrotate + Docker cleanup |
Adaptation au contexte ouest-africain
Trois précisions. Choix datacenter : Falkenstein (FSN1) Allemagne préféré. Latence acceptable depuis Afrique Ouest. Ne pas utiliser US-East (latence + IP réputation parfois souillée). Domaine .ci, .sn, .ma : tous fonctionnent comme .com. Configuration DNS identique. Coût total an 1 : VPS 54 € + domaine 12 € + Backblaze backup 6 € = 72 €. Versus Google Workspace 25 utilisateurs : 3 600 USD.
Tutoriels frères
FAQ
Migration sans downtime ? Mode hybride : Mailcow + Google MX simultanés via priority MX. Migration progressive boîte par boîte.
Multi-tenant ? Oui, plusieurs domaines = plusieurs branding/quotas/admin distincts.
App mobile officielle ? Apps mail iOS/Android natives via IMAP/SMTP. ActiveSync via Z-Push pour Outlook desktop.
Mises à jour ? ./update.sh dans /opt/mailcow-dockerized. Updates trimestrielles typiques.
Performance VPS ? CX22 = 80 boîtes confortable. CCX13 pour 200+.
Pour aller plus loin
- 🔝 Retour au guide général : Guide complet Mailcow 2026
- Documentation : docs.mailcow.email