Les emails utilisent plusieurs protocoles : SMTP pour l’envoi, IMAP ou POP3 pour la réception. Pour éviter que vos emails arrivent en spam, vous devez configurer SPF, DKIM et DMARC. Ce guide vous explique l’architecture email complète, les ports à utiliser, et comment diagnostiquer les problèmes de délivrabilité courants.
TL;DR — L’essentiel en 30 secondes
Section intitulée « TL;DR — L’essentiel en 30 secondes »- SMTP (port 587) = envoi d’emails, IMAP (port 993) = réception synchronisée
- MX = enregistrement DNS qui indique le serveur mail d’un domaine
- SPF/DKIM/DMARC = mécanismes anti-spam (vérifiez-les si vos mails arrivent en spam)
- Port 25 souvent bloqué par les FAI pour éviter le spam
Je sais que c’est bon si…
Section intitulée « Je sais que c’est bon si… »-
dig MX domaine.com +shortretourne des serveurs mail -
dig TXT domaine.commontre un enregistrement SPF (v=spf1…) - Je sais que 587 = submission (avec auth), 25 = relay entre serveurs
Commandes minimales à retenir
Section intitulée « Commandes minimales à retenir »# 1. Trouver le serveur mail d'un domainedig MX gmail.com +short
# 2. Vérifier l'enregistrement SPFdig TXT gmail.com +short | grep spf
# 3. Tester la connexion SMTP (port 587)openssl s_client -starttls smtp -connect smtp.gmail.com:587Prérequis
Section intitulée « Prérequis »- Connaissances de base en DNS (enregistrements TXT, MX)
- Un terminal avec
digounslookup - Optionnel :
telnetouncpour tester SMTP
Architecture email : les acteurs
Section intitulée « Architecture email : les acteurs »Un email traverse plusieurs composants avant d’arriver à destination. Comprendre cette chaîne est essentiel pour diagnostiquer les problèmes.
Les composants
Section intitulée « Les composants »| Composant | Nom complet | Rôle | Exemple |
|---|---|---|---|
| MUA | Mail User Agent | Client email de l’utilisateur | Thunderbird, Gmail, Outlook |
| MTA | Mail Transfer Agent | Serveur qui transfère les emails | Postfix, Sendmail, Exchange |
| MDA | Mail Delivery Agent | Stocke l’email dans la boîte | Dovecot, Cyrus |
| MSA | Mail Submission Agent | Reçoit les emails du MUA | Souvent intégré au MTA |
Le parcours d’un email
Section intitulée « Le parcours d’un email »-
Rédaction
L’utilisateur écrit son email dans son MUA (Thunderbird, Gmail…).
-
Soumission (SMTP)
Le MUA envoie l’email au serveur SMTP de l’expéditeur (port 587).
-
Routage (SMTP)
Le MTA de l’expéditeur consulte le DNS (enregistrement MX) pour trouver le serveur de destination.
-
Transfert (SMTP)
L’email est transmis au MTA du destinataire (port 25).
-
Livraison locale
Le MTA transmet l’email au MDA qui le stocke dans la boîte aux lettres.
-
Consultation (IMAP/POP3)
Le destinataire récupère l’email avec son MUA via IMAP ou POP3.
SMTP : le protocole d’envoi
Section intitulée « SMTP : le protocole d’envoi »SMTP (Simple Mail Transfer Protocol) est le protocole utilisé pour envoyer des emails. Il fonctionne en mode texte, avec une série de commandes simples.
Les ports SMTP
Section intitulée « Les ports SMTP »| Port | Usage | Chiffrement | Authentification |
|---|---|---|---|
| 25 | MTA → MTA (relay) | STARTTLS optionnel | Non requise |
| 587 | Client → serveur (submission) | STARTTLS requis | Requise |
| 465 | Client → serveur (submissions) | TLS implicite | Requise |
Le dialogue SMTP
Section intitulée « Le dialogue SMTP »Une session SMTP suit un protocole textuel simple :
Client: EHLO mail.example.comServeur: 250-smtp.destinataire.com Hello 250-SIZE 52428800 250 AUTH LOGIN PLAIN
Client: MAIL FROM:<expediteur@example.com>Serveur: 250 OK
Client: RCPT TO:<destinataire@autre.com>Serveur: 250 OK
Client: DATAServeur: 354 Start mail input
Client: Subject: Test From: expediteur@example.com To: destinataire@autre.com
Ceci est le contenu de l'email. .Serveur: 250 OK: queued
Client: QUITServeur: 221 ByeTester SMTP
Section intitulée « Tester SMTP »Vérifier que le port répond (bannière uniquement)
Section intitulée « Vérifier que le port répond (bannière uniquement) »nc -zv smtp.example.com 587# outelnet smtp.example.com 587Réponse attendue : 220 smtp.example.com ESMTP.
Tester STARTTLS (port 587)
Section intitulée « Tester STARTTLS (port 587) »openssl s_client -starttls smtp -connect smtp.example.com:587Vous verrez le certificat du serveur et pourrez taper des commandes SMTP après le handshake TLS.
Tester TLS implicite (port 465)
Section intitulée « Tester TLS implicite (port 465) »openssl s_client -connect smtp.example.com:465La connexion TLS s’établit immédiatement, sans commande STARTTLS.
IMAP vs POP3 : les protocoles de réception
Section intitulée « IMAP vs POP3 : les protocoles de réception »Pour récupérer vos emails, deux protocoles existent : IMAP et POP3.
| Aspect | IMAP | POP3 |
|---|---|---|
| Port standard | 143 (993 avec TLS) | 110 (995 avec TLS) |
| Stockage | Emails sur le serveur | Emails téléchargés localement |
| Multi-appareils | ✅ Synchronisé | ❌ Problématique |
| Dossiers | ✅ Gérés sur le serveur | ❌ Locaux uniquement |
| Hors ligne | Partiel (cache) | ✅ Complet (téléchargé) |
| Bande passante | Plus élevée | Plus faible |
Vérifier qu’IMAP/POP3 répondent
Section intitulée « Vérifier qu’IMAP/POP3 répondent »# IMAP avec TLS (port 993)openssl s_client -connect imap.example.com:993
# POP3 avec TLS (port 995)openssl s_client -connect pop.example.com:995Après le handshake TLS, vous pouvez taper des commandes IMAP (A001 LOGIN user pass) ou POP3 (USER xxx).
Note : IMAP4rev2 (RFC 9051) est la version moderne du protocole, mais IMAP4rev1 reste largement déployé.
Niveau 2 : SPF, DKIM, DMARC — la délivrabilité
Section intitulée « Niveau 2 : SPF, DKIM, DMARC — la délivrabilité »Ces trois mécanismes protègent contre le spam et le phishing en vérifiant l’authenticité des emails.
SPF (Sender Policy Framework)
Section intitulée « SPF (Sender Policy Framework) »SPF (RFC 7208) liste les serveurs autorisés à envoyer des emails pour votre domaine. C’est un enregistrement DNS TXT évalué sur l’envelope-from (MAIL FROM / Return-Path), pas sur le header From: visible.
Exemple d’enregistrement SPF :
v=spf1 include:_spf.google.com include:sendgrid.net -all| Élément | Signification |
|---|---|
v=spf1 | Version du protocole SPF |
include:... | Serveurs autorisés (ex: Google, SendGrid) |
ip4:203.0.113.5 | IP spécifique autorisée |
-all | Rejeter (hard fail) |
~all | Marquer suspect (soft fail) — recommandé au début |
?all | Neutre (pas de politique) |
Vérifier le SPF d’un domaine :
dig TXT example.com +short | grep spfStratégie de déploiement : commencez par ~all (soft fail) pour monitorer, puis passez à -all une fois la configuration validée.
DKIM (DomainKeys Identified Mail)
Section intitulée « DKIM (DomainKeys Identified Mail) »DKIM (RFC 6376) ajoute une signature cryptographique à chaque email. Le destinataire vérifie cette signature avec une clé publique publiée dans le DNS.
Ce que DKIM signe :
- Certains headers (From, To, Subject, Date…) après canonisation
- Le body de l’email (ou un hash partiel)
Fonctionnement :
- Le serveur expéditeur signe l’email avec sa clé privée
- La signature est ajoutée dans le header
DKIM-Signature - Le destinataire récupère la clé publique dans le DNS
- Il vérifie que la signature correspond au contenu
Trouver le selector dans un email :
Dans les headers de l’email, cherchez DKIM-Signature :
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=selector1;Le champ s= indique le selector (ici selector1).
Vérifier la clé DKIM :
# Format : selector._domainkey.domainedig TXT selector1._domainkey.example.com +shortSelectors courants : google, default, s1, s2, selector1, k1.
DMARC (Domain-based Message Authentication)
Section intitulée « DMARC (Domain-based Message Authentication) »DMARC (RFC 7489) définit la politique à appliquer si SPF ou DKIM échoue. Mais surtout, il introduit le concept d’alignment : le domaine validé par SPF/DKIM doit correspondre au domaine du header From:.
Le concept clé : l’alignment
Section intitulée « Le concept clé : l’alignment »DMARC ne dit pas simplement “SPF ou DKIM doivent passer”. Il exige que le domaine validé soit aligné avec le domaine visible dans le header From:.
Exemple de “SPF pass mais DMARC fail” :
- Email envoyé par
newsletter.example.com(SPF pass) - Header
From: contact@example.com - → SPF valide
newsletter.example.commais leFrom:estexample.com→ pas d’alignment → DMARC fail
| Paramètre | Valeur | Signification |
|---|---|---|
adkim | r (relaxed) | Sous-domaine DKIM accepté |
adkim | s (strict) | Domaine exact requis |
aspf | r (relaxed) | Sous-domaine SPF accepté |
aspf | s (strict) | Domaine exact requis |
Exemple d’enregistrement DMARC
Section intitulée « Exemple d’enregistrement DMARC »v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; pct=100; adkim=r; aspf=r| Élément | Signification |
|---|---|
v=DMARC1 | Version |
p=none | Pas d’action (monitoring) |
p=quarantine | Mettre en spam |
p=reject | Rejeter l’email |
rua=mailto:... | Rapports agrégés (quotidiens) |
ruf=mailto:... | Rapports forensic (par échec) |
pct=100 | Appliquer à 100% des emails |
Vérifier le DMARC :
dig TXT _dmarc.example.com +shortPrérequis délivrabilité (checklist)
Section intitulée « Prérequis délivrabilité (checklist) »Avant de diagnostiquer des problèmes de spam, vérifiez ces fondamentaux souvent oubliés :
| Élément | Vérification | Commande |
|---|---|---|
| PTR (reverse DNS) | L’IP d’envoi a un PTR cohérent | dig -x 203.0.113.5 +short |
| HELO/EHLO | Le serveur s’annonce avec un FQDN valide | Logs Postfix/Exim |
| SPF | Enregistrement publié et valide | dig TXT example.com |
| DKIM | Clé publiée et signature active | dig TXT selector._domainkey.example.com |
| DMARC | Politique définie | dig TXT _dmarc.example.com |
| Réputation IP | IP non blacklistée | MXToolbox, multirbl.valli.org |
Diagnostic des problèmes de délivrabilité
Section intitulée « Diagnostic des problèmes de délivrabilité »Vos emails arrivent en spam
Section intitulée « Vos emails arrivent en spam »-
Vérifier SPF
Fenêtre de terminal dig TXT votredomaine.com +short | grep spfAssurez-vous que le serveur d’envoi est listé.
-
Vérifier DKIM
Fenêtre de terminal dig TXT selector._domainkey.votredomaine.com +shortUne clé publique doit être retournée.
-
Vérifier DMARC
Fenêtre de terminal dig TXT _dmarc.votredomaine.com +shortUne politique doit être définie.
-
Vérifier la réputation de l’IP
Utilisez des outils comme MXToolbox ou mail-tester.com pour vérifier si votre IP est blacklistée.
-
Analyser les headers de l’email
Dans l’email reçu, examinez le header
Authentication-Results:Authentication-Results: mx.google.com;dkim=pass header.d=example.com header.s=selector1;spf=pass (google.com: domain of bounce@example.com designates 203.0.113.5 as permitted sender);dmarc=pass (p=QUARANTINE sp=QUARANTINE) header.from=example.comInterprétation :
dkim=pass: signature DKIM validespf=pass: IP autorisée par SPFdmarc=pass: alignment OK + politique respectée
Si vous voyez
dmarc=failavecspf=pass, c’est probablement un problème d’alignment.
Erreurs SMTP courantes
Section intitulée « Erreurs SMTP courantes »| Code | Signification | Solution |
|---|---|---|
| 421 | Service temporairement indisponible | Réessayer plus tard |
| 450 | Boîte mail temporairement indisponible | Greylisting, réessayer |
| 550 | Adresse email n’existe pas | Vérifier l’adresse |
| 551 | Utilisateur non local | Mauvais serveur de destination |
| 552 | Quota dépassé | Boîte pleine |
| 553 | Syntaxe incorrecte | Vérifier le format de l’adresse |
| 554 | Transaction échouée | Souvent lié au spam/blacklist |
Codes DSN (Delivery Status Notification)
Section intitulée « Codes DSN (Delivery Status Notification) »Les codes DSN étendus (format X.Y.Z) donnent plus de détails :
| Code DSN | Signification | Action |
|---|---|---|
| 5.1.1 | Adresse invalide | Vérifier l’adresse destinataire |
| 5.2.2 | Boîte pleine | Attendre ou contacter le destinataire |
| 5.7.1 | Relaying denied | Configurer l’authentification SMTP |
| 5.7.23 | SPF fail | Vérifier l’enregistrement SPF |
| 5.7.26 | DMARC fail | Vérifier alignment et politique |
| 4.7.0 | Temporairement rejeté (greylisting) | Réessayer dans 5-15 min |
Email non reçu du tout
Section intitulée « Email non reçu du tout »| Symptôme | Cause probable | Vérification |
|---|---|---|
| Aucune erreur, email disparu | Filtré en spam ou quarantaine | Vérifier les dossiers spam |
| Bounce “550 User unknown” | Adresse invalide | Confirmer l’adresse avec le destinataire |
| Timeout à la connexion | Port bloqué | nc -zv smtp.dest.com 25 |
| ”421 Too many connections” | Rate limiting | Espacer les envois |
| ”550 5.7.1 Relaying denied” | Auth manquante | Activer l’authentification SMTP |
| SPF pass, DMARC fail | Problème d’alignment | Vérifier que le From: correspond au domaine SPF/DKIM |
Enregistrements DNS email
Section intitulée « Enregistrements DNS email »Pour configurer les emails d’un domaine, vous avez besoin de plusieurs enregistrements DNS :
| Type | Nom | Exemple | Rôle |
|---|---|---|---|
| MX | example.com | 10 mail.example.com | Serveur de réception |
| A | mail.example.com | 203.0.113.5 | IP du serveur mail |
| TXT | example.com | v=spf1 ... | Politique SPF |
| TXT | selector._domainkey.example.com | v=DKIM1; k=rsa; p=... | Clé DKIM |
| TXT | _dmarc.example.com | v=DMARC1; p=... | Politique DMARC |
Vérifier l’enregistrement MX :
dig MX example.com +shortRésultat typique :
10 mail.example.com.20 backup.example.com.Le nombre (10, 20) est la priorité : le plus bas est essayé en premier.
Scénarios courants en production
Section intitulée « Scénarios courants en production »Scénario 1 : Application → SMTP submission → Gmail/Outlook (spam)
Section intitulée « Scénario 1 : Application → SMTP submission → Gmail/Outlook (spam) »Symptôme : Vos emails transactionnels arrivent en spam chez les destinataires Gmail/Outlook.
Diagnostic :
# 1. Vérifier SPFdig TXT votredomaine.com +short | grep spf
# 2. Vérifier DKIM (trouvez le selector dans vos emails)dig TXT selector._domainkey.votredomaine.com +short
# 3. Vérifier DMARCdig TXT _dmarc.votredomaine.com +short
# 4. Vérifier le PTR de l'IP d'envoidig -x VOTRE_IP_SMTP +shortSolutions courantes :
- Ajouter l’IP/domaine du service d’envoi dans SPF
- Activer DKIM sur votre provider (SendGrid, SES…)
- Passer de
p=noneàp=quarantineune fois configuré
Scénario 2 : Serveur on-prem → Port 25 bloqué
Section intitulée « Scénario 2 : Serveur on-prem → Port 25 bloqué »Symptôme : Timeout ou connexion refusée sur le port 25.
nc -zv smtp.destinataire.com 25# Connection timed out ou refusedCause : La plupart des FAI/cloud providers bloquent le port 25 sortant pour éviter le spam.
Solutions :
- Utiliser un relais SMTP externe (SendGrid, Mailgun, SES) sur le port 587
- Demander le déblocage du port 25 à votre provider (justification requise)
- Utiliser un VPS dédié à l’envoi d’emails
Configurer un relais SMTP
Section intitulée « Configurer un relais SMTP »Pour une application qui doit envoyer des emails (alertes, mails transactionnels), vous avez plusieurs options :
Recommandé pour la plupart des cas.
Utilisez un service comme SendGrid, Mailgun, SES :
# Variables d'environnement typiquesSMTP_HOST=smtp.sendgrid.netSMTP_PORT=587SMTP_USER=apikeySMTP_PASSWORD=SG.xxxxxxxxxxxxxAvantages :
- Délivrabilité optimisée
- Réputation d’IP gérée
- Statistiques et tracking
Pour un contrôle total ou des contraintes spécifiques.
Configuration /etc/postfix/main.cf minimale :
myhostname = mail.example.commydomain = example.commyorigin = $mydomaininet_interfaces = allmydestination = $myhostname, localhost.$mydomain, localhostrelayhost =Avantages :
- Contrôle total
- Pas de dépendance externe
Inconvénients :
- Gestion de la réputation IP
- Maintenance du serveur
Validation des acquis
Section intitulée « Validation des acquis »-
Vérifier les enregistrements email d’un domaine
Fenêtre de terminal dig MX github.com +shortdig TXT github.com +short | grep spfdig TXT _dmarc.github.com +short -
Tester la connectivité SMTP
Fenêtre de terminal nc -zv smtp.gmail.com 587Attendu :
Connection to smtp.gmail.com port 587 [tcp/submission] succeeded! -
Analyser un header d’email
Ouvrez un email reçu, affichez les headers complets et cherchez
Authentication-Resultspour voir le statut SPF/DKIM/DMARC.
Dépannage rapide
Section intitulée « Dépannage rapide »| Symptôme | Cause probable | Solution |
|---|---|---|
| Emails en spam | SPF/DKIM/DMARC manquants | Configurer les enregistrements DNS |
| ”550 5.7.1 Relaying denied” | Authentification manquante | Activer l’auth SMTP |
| IP blacklistée | Spam envoyé depuis cette IP | Demander le delist, utiliser un relais |
| Timeout port 25 | Bloqué par le FAI | Utiliser port 587 ou un relais |
| ”DKIM signature invalid” | Clé mal configurée | Vérifier le sélecteur et la clé publique |
Outils avancés (pour aller plus loin)
Section intitulée « Outils avancés (pour aller plus loin) »swaks : Swiss Army Knife for SMTP
Section intitulée « swaks : Swiss Army Knife for SMTP »swaks est l’outil de référence pour tester SMTP en détail :
# Test basique avec AUTHswaks --to dest@example.com --from exp@votredomaine.com \ --server smtp.example.com:587 --tls --auth-user apikey --auth-password "$SMTP_PASSWORD"
# Test STARTTLS expliciteswaks --to dest@example.com --server smtp.example.com:587 --tlsInstallation : apt install swaks ou brew install swaks
Analyser les logs serveur
Section intitulée « Analyser les logs serveur »Sur un serveur Postfix, les logs sont dans /var/log/mail.log :
# Suivre les envois en temps réeltail -f /var/log/mail.log | grep -E "(status=|reject|warning)"
# Chercher un email par queue IDgrep "QUEUE_ID" /var/log/mail.logÀ retenir
Section intitulée « À retenir »- SMTP (port 587 submission, 465 submissions) sert à envoyer des emails ; le port 25 est réservé au relay MTA↔MTA
- IMAP (port 993) est préféré à POP3 pour la réception multi-appareils synchronisée
- SPF déclare les serveurs autorisés (attention : limite de 10 DNS lookups, cassé par le forwarding)
- DKIM signe cryptographiquement les emails ; le selector permet la rotation de clés
- DMARC exige l’alignment entre le domaine du From: et celui validé par SPF/DKIM
- Le PTR (reverse DNS) de l’IP d’envoi est souvent vérifié par les serveurs destinataires
- Utilisez
openssl s_client -starttls smtppour tester STARTTLS, pas justenc
Testez vos connaissances
Section intitulée « Testez vos connaissances »Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications