Pendant des années, j’ai tout fait passer par Gmail : courriels professionnels, notifications serveur, échanges clients. Pratique, fiable… mais un problème persistant : mes données et celles de mes clients transitaient par les serveurs de Google. Pour une agence IT qui conseille des PME togolaises sur la sécurité numérique, ça devenait difficile à justifier.
Alors, il y a quelques mois, j’ai franchi le pas : j’ai installé Roundcube sur mon infrastructure Docker/Proxmox, connecté à un domaine professionnel, et j’ai migré tous mes courriels professionnels. Aujourd’hui, [email protected] tourne entièrement sur mon propre serveur hébergé en Europe sur un VPS Contabo, accessible via un tunnel Cloudflare depuis Lomé.
Dans cet article, je vous partage mon retour d’expérience complet : pourquoi j’ai fait ce choix, comment j’ai configuré l’ensemble, et ce que cela a changé concrètement pour mon activité.
Pourquoi quitter Gmail pour un serveur mail auto-hébergé
La question de la confidentialité des données
Google est gratuit parce que vous êtes le produit. Pour Gmail, cela signifie que le contenu de vos courriels est analysé pour personnaliser les publicités et améliorer les modèles d’IA. Pour une agence IT au Togo qui traite des contrats clients, des mots de passe temporaires, des devis, ce n’est pas acceptable.
Avec un serveur mail auto-hébergé, vous êtes le seul administrateur. Vos données restent sur votre infrastructure. Aucun algorithme publicitaire n’y accède.
L’image professionnelle
Recevoir un courriel de [email protected] vs [email protected] la différence est immédiate aux yeux d’un client. Un nom de domaine professionnel dans votre adresse mail inspire confiance et sérieux, surtout pour une agence qui vend justement des services numériques.
Le coût sur le long terme
Google Workspace coûte environ 3 000 à 6 000 FCFA par utilisateur et par mois. Pour une petite agence avec 3 à 5 comptes, ça représente jusqu’à 360 000 FCFA par an pour de la messagerie uniquement. Mon VPS Contabo à 2 vCPU/4 Go RAM me revient à approximativement 8 000 FCFA/mois et fait tourner WordPress, Roundcube, et d’autres services en parallèle.
La dépendance à un tiers
Gmail peut désactiver votre compte sans préavis. C’est arrivé à des agences entières, parfois pour de fausses raisons. Quand votre activité dépend de vos courriels professionnels, cette dépendance est un risque réel.
Prérequis : ce qu’il vous faut avant de commencer
Matériel et infrastructure
- Un VPS dédié : minimum 2 vCPU / 4 Go RAM / 20 Go SSD. Contabo (8 000 FCFA/mois) ou Hetzner (6 500 FCFA/mois) sont d’excellents choix depuis l’Afrique. Évitez les hébergeurs partagés les serveurs mails partagés sont blacklistés.
- Un nom de domaine : idéalement un .tg ( 15 000 FCFA/an) ou .com Le domaine doit être géré via Cloudflare pour simplifier la suite.
- Un onduleur si vous hébergez localement (voir section adaptations locales).
Logiciels requis
- Docker + Docker Compose installés sur le VPS (Ubuntu 22.04 ou Debian 12 recommandés)
- Mailcow version communautaire gratuite
- Roundcube 1.6.x webmail open source
- Cloudflare compte gratuit pour DNS et tunnel
Compétences techniques requises
- Niveau intermédiaire : vous savez utiliser SSH, éditer des fichiers de configuration, et comprendre les bases du DNS
- Connaissance de base de Docker (docker-compose up, docker logs, etc.)
- Notions de DNS (A, MX, TXT records)
Accès et permissions
- Accès root SSH au VPS
- Accès au panneau DNS de votre domaine (Cloudflare recommandé)
- Accès à votre registrar pour les enregistrements MX
⚠️ Attention : Le port 25 (SMTP sortant) est souvent bloqué par défaut par les hébergeurs. Vérifiez avec votre VPS fournisseur avant de commencer. Hetzner le débloque sur demande via ticket support.
Architecture choisie : Mailcow + Roundcube + Docker
J’aurais pu installer uniquement Roundcube, mais Roundcube est un webmail, il a besoin d’un serveur mail derrière lui (comme Postfix, un IMAP comme Dovecot). Mailcow embarque tout ça dans une suite Docker cohérente.
Pourquoi Mailcow plutôt que iRedMail ou Mail-in-a-Box ?
- Interface admin moderne et intuitive
- Gestion antispam (Rspamd) intégrée
- Renouvellement SSL automatique
- Communauté active et documentation excellente
- Compatible avec Roundcube en webmail frontal ou en remplacement de l’interface SOGo incluse
Installation de Mailcow sur VPS
Étape 1: Préparer le serveur
# Mise à jour du système
apt update && apt upgrade -y
# Installation des dépendances
apt install -y curl git wget nano ufw
# Installation Docker
curl -fsSL https://get.docker.com | sh
systemctl enable docker && systemctl start docker
# Vérification
docker --version
docker compose versionBashÉtape 2: Cloner Mailcow
# Cloner le dépôt officiel dans /opt
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized.git mailcow
cd mailcowBashÉtape 3: Générer la configuration
# Lancer le script de configuration interactif
./generate_config.shBashLe script vous pose deux questions :
- Hostname : entrez votre hostname mail, ex. mail.it-admin.tg
- Timezone : entrez Africa/Lome
Cela génère le fichier mailcow.conf :
# Vérifier la configuration générée
cat mailcow.conf | grep -E "MAILCOW_HOSTNAME|TZ|HTTP_PORT|HTTPS_PORT"BashRésultat attendu :
MAILCOW_HOSTNAME=mail.it-admin.tg
TZ=Africa/Lome
HTTP_PORT=80
HTTPS_PORT=443BashÉtape 4: Démarrer Mailcow
# Démarrer tous les conteneurs (première fois : ~5-10 min)
docker compose pull
docker compose up -d
# Vérifier que tous les conteneurs sont UP
docker compose psBash💡 Astuce : Si vous avez une connexion instable (fréquent avec certains FAI togolais), ajoutez –timeout 300 au pull pour éviter les interruptions.
Étape 5 : Accéder à l’interface admin
Une fois démarré, accédez à https://mail.it-admin.tg (ou l’IP de votre VPS en attendant le DNS).
- Login :
admin - Mot de passe :
moohoo(à changer immédiatement !)
Dans l’interface admin :
- Créez votre domaine :
it-admin.tg - Créez votre boîte mail :
[email protected] - Définissez un mot de passe fort
Configuration de Roundcube comme webmail
Mailcow inclut SOGo comme webmail par défaut, mais Roundcube est plus léger et plus familier pour la plupart des utilisateurs.
Option A: Utiliser Roundcube intégré dans Mailcow
Mailcow inclut Roundcube. Il est accessible via https://mail.it-admin.tg/rc/ par défaut. Pas de configuration supplémentaire nécessaire.
Option B: Déployer Roundcube séparé (mon choix)
J’ai préféré déployer Roundcube dans un conteneur séparé sur mon LXC Proxmox local, exposé via Cloudflare Tunnel. Voici le docker-compose.yml :
version: "3.8"
services:
roundcube:
image: roundcube/roundcubemail:1.6.x-apache
container_name: itadmin_roundcube
restart: unless-stopped
ports:
- "127.0.0.1:9090:80"
environment:
- ROUNDCUBEMAIL_DEFAULT_HOST=tls://mail.it-admin.tg
- ROUNDCUBEMAIL_DEFAULT_PORT=993
- ROUNDCUBEMAIL_SMTP_SERVER=tls://mail.it-admin.tg
- ROUNDCUBEMAIL_SMTP_PORT=587
- ROUNDCUBEMAIL_DB_TYPE=sqlite
- ROUNDCUBEMAIL_SKIN=elastic
volumes:
- roundcube_data:/var/roundcube/db
- roundcube_config:/var/roundcube/config
volumes:
roundcube_data:
roundcube_config:YAML# Démarrer Roundcube
docker compose up -d
# Vérifier les logs
docker logs itadmin_roundcube --tail 30Bash✅ Bonne Pratique : Liez toujours le port sur 127.0.0.1 (pas 0.0.0.0) pour éviter d’exposer le service directement sur Internet. Laissez Cloudflare Tunnel gérer l’exposition publique.
Sécurisation : SPF, DKIM, DMARC et rDNS
C’est l’étape la plus importante pour que vos courriels arrivent en boîte de réception (et non en spam) chez vos destinataires Gmail, Yahoo, ou Orange.
SPF (Sender Policy Framework)
Dites à Gmail quels serveurs sont autorisés à envoyer en votre nom. Dans Cloudflare DNS, créez un enregistrement TXT :
Type : TXT
Nom : it-admin.tg (ou @)
Valeur : v=spf1 mx a ip4:VOTRE_IP_VPS ~allPlaintextRemplacez VOTRE_IP_VPS par l’adresse IPv4 de votre VPS Contabo.
DKIM (DomainKeys Identified Mail)
Mailcow génère automatiquement les clés DKIM. Récupérez-les dans l’interface admin :
- Mailcow Admin → Domaines → it-admin.tg → DNS
- Copiez l’enregistrement TXT DKIM fourni
- Créez-le dans Cloudflare DNS
L’enregistrement ressemble à :
Type : TXT
Nom : dkim._domainkey.it-admin.tg
Valeur : v=DKIM1; k=rsa; p=MIIBIjANBgk... (longue clé)
DMARC (Domain-based Message Authentication)
DMARC indique aux serveurs destinataires quoi faire si SPF ou DKIM échouent :
Type : TXT
Nom : _dmarc.it-admin.tg
Valeur : v=DMARC1; p=quarantine; rua=mailto:[email protected]; pct=100
rDNS (Reverse DNS)
Le rDNS est critique pour éviter d’être blacklisté. Il faut que l’IP de votre VPS pointe vers votre hostname mail. Configurez-le dans le panneau Contabo :
- Panneau Contabo → Votre VPS → PTR Record →
mail.it-admin.tg
⚠️ Attention : Sans rDNS correctement configuré, la majorité de vos courriels arriveront en spam chez les grands fournisseurs comme Gmail ou Yahoo.
Vérifier votre configuration
Utilisez ces outils pour valider avant d’envoyer :
# Tester SPF depuis le terminal
dig TXT it-admin.tg | grep spf
# Tester DKIM
dig TXT dkim._domainkey.it-admin.tgBashOu utilisez mail-tester.com, envoyez un courriel à l’adresse fournie et obtenez un score sur 10. Visez 9/10 ou plus.
Exposer Roundcube via Cloudflare Tunnel {#exposer-cloudflare-tunnel}
💡 Pourquoi Cloudflare Tunnel ? Pas besoin d’ouvrir des ports sur votre firewall, pas d’IP exposée, SSL automatique, et ça fonctionne même derrière un NAT. C’est ma méthode préférée pour tous mes services je n’utilise jamais Traefik.
Installation du daemon cloudflared
# Sur le serveur hébergeant Roundcube
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o /usr/local/bin/cloudflared
chmod +x /usr/local/bin/cloudflared
# Authentification
cloudflared tunnel loginBashCréation du tunnel
# Créer le tunnel nommé
cloudflared tunnel create roundcube-mail
# Récupérer l'UUID du tunnel (noté UUID_TUNNEL)
cloudflared tunnel listBashConfiguration du tunnel
Créez /etc/cloudflared/config.yml :
tunnel: UUID_TUNNEL
credentials-file: /root/.cloudflared/UUID_TUNNEL.json
ingress:
- hostname: webmail.it-admin.tg
service: http://127.0.0.1:9090
- service: http_status:404BashDNS et démarrage
# Créer l'enregistrement DNS automatiquement
cloudflared tunnel route dns roundcube-mail webmail.it-admin.tg
# Démarrer le tunnel comme service systemd
cloudflared service install
systemctl enable cloudflared
systemctl start cloudflared
# Vérifier le statut
systemctl status cloudflaredBashRoundcube est maintenant accessible sur https://webmail.it-admin.tg avec SSL Cloudflare automatique.
Gestion des coupures électriques CEET
Si vous hébergez localement (Proxmox maison ou bureau), un onduleur est non négociable. Les coupures fréquentes à Lomé peuvent corrompre les bases de données mail si le serveur s’arrête brutalement.
- Onduleur recommandé : 650VA minimum pour un NUC + switch (45 000 à 65 000 FCFA au marché de Lomé)
- Configurez un arrêt gracieux automatique si la batterie tombe sous 20% :
# Script d'arrêt gracieux (à configurer avec votre UPS NUT)
# /etc/nut/upsmon.conf
NOTIFYCMD /usr/sbin/upssched
POWERDOWNFLAG /etc/killpower
SHUTDOWNCMD "/sbin/shutdown -h +2 'Coupure courant, arrêt dans 2 minutes'"Bash🔌 Spécificité Locale : Pour un service mail critique en production, préférez un VPS Contabo ou Hetzner. Le coût (8 000 FCFA/mois) est largement compensé par la disponibilité 24h/24 sans dépendre de la CEET.
Optimisation pour bande passante limitée
Roundcube avec le thème Elastic est déjà très léger. Mais activez la compression côté serveur :
# Dans la configuration Apache du conteneur Roundcube
# Activer mod_deflate pour compresser HTML/CSS/JS
a2enmod deflateBashEt côté Cloudflare, activez :
- Speed → Optimization → Auto Minify (HTML, CSS, JS)
- Caching → Cache Level → Standard
Résultat : le webmail charge en moins de 2 secondes même sur une connexion 4G MOOV AFRIKA à Lomé.
Sauvegarde des mails
Les mails de vos clients sont irremplaçables. Configurez une sauvegarde automatique quotidienne :
#!/bin/bash
# /usr/local/bin/backup-mail.sh
DATE=$(date +%Y%m%d)
BACKUP_DIR="/mnt/backups/mail"
# Sauvegarde des volumes Mailcow
docker run --rm \
-v mailcow_vmail-vol-1:/data \
-v $BACKUP_DIR:/backup \
alpine tar czf /backup/vmail-$DATE.tar.gz /data
# Rotation (garder 7 jours)
find $BACKUP_DIR -name "vmail-*.tar.gz" -mtime +7 -delete
echo "Backup mail $DATE terminé"Bash# Planifier via cron (chaque nuit à 2h)
crontab -e
# Ajouter :
0 2 * * * /usr/local/bin/backup-mail.sh >> /var/log/backup-mail.log 2>&1Bash💡 Astuce Locale : Stockez une copie des backups sur un disque externe local en plus du VPS. Au Togo, les problèmes de connectivité peuvent rendre inaccessible un backup uniquement cloud au mauvais moment.
Dépannage : les problèmes que j’ai rencontrés
Problème 1: Les mails arrivent en spam
Cause : SPF/DKIM/DMARC mal configurés, ou rDNS manquant.
Solution :
# Vérifier le score de délivrabilité
# Envoyez un mail de test à : [email protected]
# Vous recevrez un rapport détaillé
# Ou utilisez mail-tester.com pour un score visuelLangage du code : PHP (php)
Vérifiez aussi que votre IP n’est pas sur une blacklist :
# Tester sur MXToolbox
# https://mxtoolbox.com/blacklists.aspxLangage du code : PHP (php)
Problème 2 : Port 25 bloqué par Hetzner
Cause : Hetzner bloque le port 25 (SMTP) par défaut sur les nouveaux VPS.
Solution : Ouvrez un ticket support Hetzner en demandant le déblocage du port 25. Mentionnez que vous hébergez un serveur mail légitime. Délai : 24 à 48h.
En attendant, configurez Mailcow pour utiliser le port 587 (SMTP submission) pour l’envoi.
Problème 3: Roundcube affiche « Connection failed »
Cause : Roundcube ne peut pas joindre le serveur IMAP Mailcow.
Solution :
# Vérifier que Dovecot écoute bien sur le port 993
docker exec -it mailcowdockerized-dovecot-mailcow-1 \
ss -tlnp | grep 993
# Tester la connexion IMAP depuis le conteneur Roundcube
docker exec -it itadmin_roundcube \
nc -zv mail.it-admin.tg 993BashSi la connexion échoue, vérifiez les règles firewall sur le VPS Mailcow :
ufw allow 993/tcp
ufw allow 587/tcp
ufw reloadBashProblème 4 — Erreur SSL dans Roundcube
Cause : Certificat SSL auto-signé ou expiré côté Mailcow.
Solution :
# Renouveler le certificat Let's Encrypt dans Mailcow
cd /opt/mailcow
docker compose exec acme-mailcow /root/acme.sh --renew -d mail.it-admin.tg
# Redémarrer les services concernés
docker compose restart nginx-mailcow dovecot-mailcow postfix-mailcowBashProblème 5: Mails entrants bloqués
Cause : Enregistrement MX manquant ou mal configuré.
Solution : Vérifiez dans Cloudflare DNS :
Type : MX
Nom : it-admin.tg (ou @)
Valeur : mail.it-admin.tg
Priorité : 10
Proxy : OFF (nuage gris — jamais proxifié pour MX !)Langage du code : CSS (css)
⚠️ Attention : L’enregistrement MX ne doit jamais être proxifié par Cloudflare (nuage orange). Laissez-le en DNS uniquement (nuage gris), sinon les mails entrants échoueront.
Problème 6 : Cloudflare Tunnel déconnecté après coupure
Cause : Le service cloudflared n’a pas redémarré automatiquement après une coupure.
Solution :
# S'assurer que cloudflared est en mode restart always
systemctl enable cloudflared
systemctl daemon-reload
# Vérifier le statut après redémarrage
systemctl status cloudflaredBashProblème 7: Interface Roundcube lente depuis Lomé
Cause : Latence réseau élevée vers le VPS européen (~150-200ms depuis Lomé).
Solution : Activez la mise en cache Cloudflare et le HTTP/2 Push. Dans Roundcube, désactivez les plugins inutiles :
// /var/roundcube/config/config.inc.php
$config['plugins'] = ['archive', 'zipdownload', 'managesieve'];
// Retirez tous les plugins non utilisés pour alléger le chargementPHPMaintenance et bonnes pratiques
Vérifications hebdomadaires
#!/bin/bash
# /usr/local/bin/check-mail.sh — À lancer chaque semaine
echo "=== Statut Mailcow ==="
cd /opt/mailcow && docker compose ps
echo "=== Espace disque mails ==="
docker exec mailcowdockerized-dovecot-mailcow-1 du -sh /var/vmail
echo "=== Derniers rejets Rspamd ==="
docker logs mailcowdockerized-rspamd-mailcow-1 --since 168h | grep -i "reject" | tail -20
echo "=== Certificats SSL ==="
docker exec mailcowdockerized-acme-mailcow-1 /root/acme.sh --listPHPMises à jour Mailcow
# Mettre à jour Mailcow (à faire chaque mois)
cd /opt/mailcow
./update.shPHPSurveiller la réputation IP
Configurez une alerte mensuelle pour vérifier votre IP sur les blacklists :
# Script de vérification blacklist
IP="VOTRE_IP_VPS"
echo "Vérification blacklist pour $IP"
curl -s "https://api.mxtoolbox.com/api/v1/Lookup/blacklist/$IP" | python3 -m json.toolPHPConclusion : en valait-il la peine ?
Après plusieurs mois d’utilisation, la réponse est oui, sans hésitation. Voici ce que j’ai gagné concrètement :
- Confidentialité totale : aucun tiers n’accède à mes courriels professionnels
- Image professionnelle : [email protected] inspire confiance aux clients
- Coût réduit : 8 000 FCFA/mois pour le VPS vs 18 000+ FCFA/mois pour Google Workspace 3 utilisateurs
- Contrôle total : je gère les boîtes, les alias, les filtres sans dépendre d’une interface tierce
- Compétences acquises : je comprends maintenant vraiment comment fonctionne le mail (SPF, DKIM, DMARC, SMTP, IMAP)
Les seuls inconvénients : la maintenance demande du temps, et la délivrabilité nécessite une configuration rigoureuse au départ. Mais une fois en place, le système tourne seul.
Prochaine étape suggérée : si vous souhaitez aller plus loin, configurez Chatwoot connecté à votre boîte mail pour gérer les demandes clients depuis une interface unifiée avec WhatsApp, courriel, et Telegram.
Vous souhaitez déléguer l’installation de votre serveur mail professionnel ? IT-ADMIN propose un service clé en main : installation, configuration SPF/DKIM/DMARC, migration depuis Gmail, et formation à l’utilisation à partir de 75 000 FCFA. Contactez-nous pour un devis personnalisé.
Et vous ? Avez-vous déjà tenté d’héberger votre propre serveur mail au Togo ? Partagez votre expérience dans les commentaires, les difficultés que vous avez rencontrées et les solutions que vous avez trouvées aideront la communauté.
Ressources complémentaires
Articles connexes sur it-admin.tg
Documentation officielle
- Mailcow Documentation
- Roundcube Documentation
- Cloudflare Tunnel Getting Started
- mail-tester.com Tester la délivrabilité de vos mails
- MXToolbox Blacklist Check
