ITSkillsCenter
Développement Web

Déployer Mailcow sur Hetzner VPS : tutoriel complet 2026

4 min de lecture

📍 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.com qui 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 :

  1. Hetzner Cloud Console → Support → Open ticket.
  2. Sujet : « Unblock outgoing SMTP ports 25/465/587 ».
  3. Justification : « Self-hosted mail server (Mailcow) for legitimate business use ».
  4. 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

Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 250.000 FCFA
Parlons de Votre Projet
Publicité