Développement Web

Configuration DNS Mailcow : SPF, DKIM, DMARC, MX, PTR (tutoriel 2026)

12 min de lecture

📍 Article principal de la série : Mailcow 2026 : guide pratique.

Sans configuration DNS correcte, vos emails Mailcow partent en spam Gmail et Outlook. Ce tutoriel détaille les 5 enregistrements essentiels (SPF, DKIM, DMARC, MX, PTR) avec templates copier-coller, validés en production sur 20+ domaines de PME francophones.

Prérequis

  • Mailcow installé (voir tutoriel installation).
  • Premier domaine ajouté dans Mailcow.
  • Accès complet aux DNS du domaine.
  • Niveau attendu : intermédiaire.
  • Temps estimé : 30-45 minutes + propagation 24-48h.

Étape 1 — Comprendre l’enjeu délivrabilité

Gmail, Outlook, Yahoo notent les serveurs sortants sur 4 critères :

  • Authentification : SPF + DKIM + DMARC alignés.
  • Réputation IP : pas de blacklist (Spamhaus, Barracuda).
  • PTR cohérent : reverse DNS = hostname annoncé HELO.
  • Contenu et engagement : non-spam, ouverture par destinataires.

Étape 2 — Enregistrement A et MX

mail.votre-entreprise.com.   IN  A     VOTRE_IP_VPS
votre-entreprise.com.         IN  MX 10 mail.votre-entreprise.com.

# Pour autodiscovery clients mail
autodiscover.votre-entreprise.com.   IN  CNAME mail.votre-entreprise.com.
autoconfig.votre-entreprise.com.     IN  CNAME mail.votre-entreprise.com.

Vérifier : dig MX votre-entreprise.com.

Étape 3 — Reverse DNS (PTR)

Hetzner Cloud Console → VPS → Networking → Reverse DNS → mail.votre-entreprise.com. Vérifier :

dig -x VOTRE_IP +short
# Doit retourner mail.votre-entreprise.com

Étape 4 — SPF (Sender Policy Framework)

Déclare quels serveurs ont droit d’envoyer. Enregistrement TXT à la racine :

votre-entreprise.com.   IN  TXT  "v=spf1 mx -all"

mx = autorise les serveurs MX. -all = rejet strict de tout autre. Pour ajouter Brevo/Sendgrid pour newsletters :

"v=spf1 mx include:spf.brevo.com -all"

Vérifier : dig TXT votre-entreprise.com | grep spf1.

Étape 5 — DKIM (DomainKeys Identified Mail)

Mailcow génère DKIM auto. Récupérer :

  1. Mailcow admin → Configuration → Mail Setup → Domain → cliquer sur le domaine.
  2. Section ARC/DKIM keys → générer si absent (par défaut 2048 bits).
  3. Copier le selector (par défaut dkim) et le record DNS.

Ajouter sur DNS :

dkim._domainkey.votre-entreprise.com.   IN  TXT  "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAO..."

Test : dig TXT dkim._domainkey.votre-entreprise.com.

Étape 6 — DMARC (Domain-based Message Authentication)

Politique de validation. Démarrer en mode none (rapport seulement), passer à quarantine puis reject après 30 jours stable :

# Mode initial (recommandé 30 premiers jours)
_dmarc.votre-entreprise.com.   IN  TXT  "v=DMARC1; p=none; rua=mailto:dmarc@votre-entreprise.com; ruf=mailto:dmarc@votre-entreprise.com; pct=100; aspf=r; adkim=r"

# Après 30 jours stable
"v=DMARC1; p=quarantine; rua=mailto:dmarc@votre-entreprise.com; pct=100"

# Mode strict final
"v=DMARC1; p=reject; rua=mailto:dmarc@votre-entreprise.com"

Créer la boîte dmarc@votre-entreprise.com dans Mailcow pour recevoir les rapports.

Étape 7 — MTA-STS (optionnel mais recommandé)

Force TLS sur SMTP entrant. Créer fichier sur webmail HTTPS :

# /var/www/.well-known/mta-sts.txt
version: STSv1
mode: enforce
mx: mail.votre-entreprise.com
max_age: 86400
_mta-sts.votre-entreprise.com.   IN  TXT  "v=STSv1; id=20260427"

Étape 8 — Vérification complète mxtoolbox

Outil de référence : mxtoolbox.com.

  • SuperTool → MX Lookup : doit retourner mail.votre-entreprise.com.
  • SPF Lookup : pass.
  • DKIM Lookup : pass.
  • DMARC Lookup : pass.
  • Blacklist Check : aucune.

Étape 9 — Test délivrabilité réelle

Service mail-tester.com :

  1. Envoyer email de Mailcow vers test-XXX@mail-tester.com.
  2. Score sur 10. Objectif : 9-10/10.
  3. Détail des problèmes pondérés.

Étape 10 — IP warmup

Nouvelle IP a réputation neutre. Pour éviter spam massif au début :

  • Semaine 1 : envoyer 50 emails/jour vers contacts internes.
  • Semaine 2 : 200/jour, dont 50 externes.
  • Semaine 3 : 500/jour.
  • Semaine 4+ : usage normal.

Erreurs fréquentes

Erreur Cause Solution
SPF softfail Gmail ~all au lieu de -all Passer -all après tests
DKIM signature missing Selector différent Vérifier selector Mailcow vs DNS
DMARC report jamais reçu Boîte rua n’existe pas Créer dmarc@… dans Mailcow
PTR ne match pas Hetzner panel non sauvegardé Réappliquer + attendre 30 min
IP blacklistée d’emblée Précédent locataire VPS Demander Hetzner nouvelle IP
MTA-STS errors HTTPS pas valide Vérifier cert sur _mta-sts

Réalités locales : ce qui change à Dakar et Abidjan

Trois précisions. Domaines locaux : .ci, .sn, .ma, .tn fonctionnent identique. Vérifier que registre permet TXT records longs (1024 caractères pour DKIM 2048 bits). Délais propagation : 4-24h selon registre. .sn parfois 48h. Tests Gmail/Outlook : tester depuis comptes Gmail.com et Outlook.com créés manuellement, pas depuis comptes pros déjà whitelisted.

Tutoriels frères

FAQ

SPF -all vs ~all ? Démarrer ~all (softfail), passer -all (strict) après 30 jours stable.

DKIM 1024 vs 2048 bits ? 2048 standard 2026. 1024 obsolète.

Multiple SPF records ? NON. Concaténer dans un seul record TXT.

Subdomains hériter SPF ? Oui via redirection : "v=spf1 redirect=votre-entreprise.com".

BIMI logo dans Gmail ? Configuration optionnelle. VMC certificate à 1 500 USD/an. Skip pour PME.

Pour étoffer le tableau

Etape 1 : Comprendre pourquoi SPF, DKIM et DMARC sont indispensables avant de toucher au DNS

Sans ces trois enregistrements, vos courriers Mailcow finissent en spam chez Gmail, Outlook et Yahoo en moins de 48 heures. SPF declare quels serveurs sont autorises a emettre pour votre domaine, DKIM signe cryptographiquement chaque message, DMARC dit aux destinataires quoi faire quand SPF ou DKIM echoue. Depuis fevrier 2024, Gmail et Yahoo refusent simplement les expediteurs en volume sans DMARC valide. C’est non negociable, meme pour une PME de Dakar qui envoie 50 mails par jour.

Resultat attendu de ce tutoriel : un score 10/10 sur mail-tester.com et un PASS DMARC visible dans les en-tetes recus chez Gmail.

Etape 2 : Recuperer les bonnes valeurs depuis Mailcow avant de toucher au registrar

Connectez-vous a Mailcow, allez dans Configuration puis E-mail puis Domaines, cliquez sur l’icone DNS a cote de votre domaine. Mailcow affiche la liste exacte des enregistrements a creer : MX, SPF (TXT), DKIM (TXT avec selecteur dkim), DMARC (TXT _dmarc), AutoConfig, AutoDiscover, et SRV. Copiez chaque ligne dans un fichier texte avant de quitter cette page, c’est votre source de verite.

# Recuperer la cle DKIM publique en CLI sur le serveur Mailcow
docker compose exec dovecot-mailcow doveadm pw -s ARGON2ID
# Pour la cle DKIM, utilisez plutot l'API :
curl -s -H "X-API-Key: VOTRE_CLE"   https://mail.votredomaine.sn/api/v1/get/dkim/votredomaine.sn | jq

Sortie attendue : un JSON contenant pubkey, c’est la valeur a copier dans l’enregistrement TXT DKIM. Ne modifiez jamais cette cle a la main.

Etape 3 : Creer l’enregistrement MX prioritaire chez votre registrar

Connectez-vous a la zone DNS de votre registrar (OVH, Gandi, Cloudflare, Namecheap, ou un revendeur a Dakar comme Sentranet). Creez un enregistrement MX avec : nom @, priorite 10, valeur mail.votredomaine.sn. (avec le point final). Supprimez tous les anciens MX qui pointaient vers votre ancien fournisseur (Workspace, Zoho, OVH), sinon les serveurs distants enverront 50 pour cent du trafic au mauvais endroit.

Cas typique : si vous quittez Google Workspace, vous avez 5 enregistrements MX a supprimer (aspmx.l.google.com et ses 4 variantes). Faites-le en heures creuses, les caches DNS prennent jusqu’a 24 heures pour s’aligner.

Etape 4 : Publier le SPF (TXT) qui autorise uniquement Mailcow

Creez un enregistrement TXT, nom @, valeur v=spf1 mx a -all. Le -all en mode hardfail dit explicitement : tout autre serveur qui pretend envoyer pour mon domaine est rejete. C’est plus strict que ~all (softfail) mais c’est ce que recommandent Gmail et Microsoft pour 2026.

# Verification SPF apres propagation
dig +short TXT votredomaine.sn | grep spf
# Sortie attendue : "v=spf1 mx a -all"

Si vous utilisez aussi un service tiers (Sendinblue, Mailjet, Brevo), ajoutez son include : v=spf1 mx include:spf.brevo.com -all. Limite dure : 10 lookups DNS dans un SPF, au-dela il devient invalide.

Etape 5 : Publier le DKIM avec le selecteur dkim

Creez un enregistrement TXT, nom dkim._domainkey, valeur la chaine complete v=DKIM1; k=rsa; t=s; s=email; p=MIIBIjANBgkqh... exactement comme affichee par Mailcow. Attention : certains panneaux DNS coupent les valeurs TXT a 255 caracteres et il faut alors les decouper en plusieurs chaines entre guillemets dans la zone.

# Verifier que la cle publique repond
dig +short TXT dkim._domainkey.votredomaine.sn
# Doit afficher la chaine complete commencant par v=DKIM1

Si la sortie est vide, l’enregistrement n’est pas encore propage ou le nom du selecteur est faux. Verifiez aussi que votre registrar n’a pas ajoute de point final automatique qui casse la resolution.

Etape 6 : Publier le DMARC en mode none, puis durcir progressivement

Creez un TXT, nom _dmarc, valeur initiale v=DMARC1; p=none; rua=mailto:dmarc@votredomaine.sn; ruf=mailto:dmarc@votredomaine.sn; pct=100; adkim=r; aspf=r. Le mode p=none ne bloque rien mais fait remonter des rapports XML quotidiens dans la boite dmarc@. Lisez ces rapports pendant 2 a 4 semaines avant de passer a p=quarantine puis p=reject.

Pourquoi cette progression : passer directement en p=reject sans rapports prealables, c’est risquer de bloquer vos propres mails legitimes envoyes via un service oublie (CRM, application metier, formulaire de contact WordPress).

Etape 7 : Publier les enregistrements complementaires AutoConfig et AutoDiscover

Pour que Thunderbird et Outlook configurent automatiquement les boites des utilisateurs, ajoutez deux CNAME : autoconfig.votredomaine.sn vers mail.votredomaine.sn, et autodiscover.votredomaine.sn vers mail.votredomaine.sn. Sans cela, vos collaborateurs doivent saisir manuellement IMAP, SMTP, ports et options TLS, ce qui genere systematiquement des tickets de support.

Verification rapide depuis Thunderbird : nouveau compte, saisir juste l’adresse mail et le mot de passe, le client doit detecter automatiquement IMAP 993 SSL et SMTP 587 STARTTLS.

Etape 8 : Verifier de bout en bout avec mail-tester et MXToolbox

Envoyez un mail depuis une boite Mailcow vers l’adresse generee par mail-tester.com. Attendez 30 secondes puis cliquez Verifier le score. Vous devez obtenir 10/10. Si le score est inferieur, le rapport indique exactement quel enregistrement manque ou est mal configure.

# Verification combinee SPF + DKIM + DMARC en CLI
swaks --to test-XXX@mail-tester.com --from contact@votredomaine.sn   --server mail.votredomaine.sn --port 587 --tls   --auth-user contact@votredomaine.sn --auth-password 'MotDePasse'

Sortie attendue : 250 2.0.0 Ok: queued. Sur mail-tester, les trois lignes SPF, DKIM, DMARC doivent etre vertes. Comptez 3 EUR/mois (1 968 FCFA) pour un compte Pro mail-tester si vous testez plus de 3 fois par jour.

Etape 9 : Passer DMARC en mode reject une fois les rapports propres

Apres 2 a 4 semaines de rapports p=none sans alertes inattendues, passez la valeur a v=DMARC1; p=reject; rua=mailto:dmarc@votredomaine.sn; pct=100; adkim=s; aspf=s. Le passage de r (relaxed) a s (strict) impose que le domaine d’envoi corresponde exactement au domaine signe DKIM. C’est la configuration recommandee par l’ANSSI et par Microsoft pour les domaines en production.

Pour étoffer le tableau, voyez aussi notre tutoriel sur la creation de boites, alias et groupes Mailcow, et notre guide DNS reverse PTR pour les VPS heberges en Europe utilises depuis Dakar, Abidjan ou Lome.

Etape 10 : Activer ARC pour preserver l’authentification a travers les forwards

Si vos boites font suivre des messages vers Gmail ou Outlook (cas frequent en Afrique de l’Ouest ou un commercial garde sa boite Yahoo personnelle), le forward casse SPF et parfois DKIM. ARC (Authenticated Received Chain) signe la chaine de transit pour preserver le verdict initial. Mailcow active ARC par defaut a partir de la version 2024-08, verifiez dans Configuration puis Options de configuration que ARC est bien sur On.

# Verifier l'en-tete ARC sur un mail recu
grep -i "ARC-" /var/log/mail.log | tail -20

Sortie attendue : trois en-tetes ARC-Seal, ARC-Message-Signature et ARC-Authentication-Results. Sans ARC, un mail forward depuis votredomaine.sn vers gmail.com perd son score DMARC et tombe en spam dans 60 pour cent des cas.

Etape 11 : Mettre en place les rapports DMARC dans une boite dediee

Creez une boite dmarc@votredomaine.sn avec un quota de 2 Go. Les rapports XML quotidiens envoyes par Gmail, Microsoft, Yahoo et Mail.ru s’y accumulent. Pour les lire confortablement, utilisez un parseur comme parsedmarc ou un service en ligne comme Postmark DMARC Digests qui transforme les XML en tableau lisible.

# Installer parsedmarc localement et generer un rapport HTML
pip install parsedmarc
parsedmarc /path/to/dmarc-reports/*.xml.gz --output-format json,csv

Lisez les rapports chaque lundi pendant les 4 premieres semaines. Vous y reperez tres vite les services tiers oublies (CRM, formulaire WordPress, application metier) qui envoient avec votre domaine sans etre dans le SPF.

Etape 12 : Ajouter MTA-STS et TLS-RPT pour le chiffrement opportuniste fort

MTA-STS force le TLS entre serveurs SMTP, TLS-RPT vous fait remonter les echecs de chiffrement. Creez un sous-domaine mta-sts.votredomaine.sn qui sert un fichier /.well-known/mta-sts.txt avec la politique version: STSv1\nmode: enforce\nmx: mail.votredomaine.sn\nmax_age: 604800. Publiez aussi un TXT _mta-sts et un TXT _smtp._tls pour le RPT.

Resultat attendu : score MTA-STS Pass sur l’outil hardenize.com et sur internet.nl. Cette etape est devenue un pre-requis pour le label de confiance des grands comptes europeens depuis 2025.

Etape 13 : Audit annuel de la rotation des cles DKIM

Une cle DKIM RSA 2048 bits reste robuste plusieurs annees, mais il est sain de la regenerer une fois par an et de changer le selecteur (par exemple dkim2026 puis dkim2027). Mailcow gere la rotation depuis Configuration puis E-mail puis Cles ARC/DKIM. Generez la nouvelle paire, publiez le nouveau TXT, attendez 48 heures de propagation, puis activez le nouveau selecteur cote Mailcow et supprimez l’ancien TXT au bout de 7 jours supplementaires.

# Forcer la regeneration via API
curl -X POST -H "X-API-Key: VOTRE_CLE" -H "Content-Type: application/json"   -d '{"domain":"votredomaine.sn","dkim_selector":"dkim2026","key_size":2048}'   https://mail.votredomaine.sn/api/v1/add/dkim

Resultat attendu : un nouveau JSON avec la cle publique a publier. Notez la date dans votre calendrier pour la rotation suivante. Comptez environ 30 minutes de travail effectif par rotation, etale sur 8 jours pour respecter la propagation DNS.

Partager