email

Email outils

Comment fonctionne réellement l'authentification du courriel : les deux adresses From, ce que prouvent SPF, DKIM et DMARC, comment lire une chaîne Received, et quel outil utiliser sur des en-têtes ou un .eml.

3 outils

§01 GUIDE DU DOMAINE

Les deux adresses From

Presque toute question d’usurpation de courriel se ramène à la confusion de deux identités d’expéditeur. L’expéditeur d’enveloppe est l’adresse fournie dans la commande SMTP MAIL FROM : les rejets y sont dirigés, et les destinataires l’enregistrent comme Return-Path: ou smtp.mailfrom= à l’intérieur de Received-SPF:. L’expéditeur d’en-tête est le champ From: à l’intérieur du message — le seul qu’un humain voie. Rien dans SMTP n’exige que les deux correspondent.

SPF autorise l’enveloppe : l’IP qui se connecte était-elle autorisée à émettre pour le domaine du MAIL FROM ? DKIM autorise le contenu : l’expéditeur signe une liste choisie de champs d’en-tête (h=) plus une empreinte du corps (bh=), et publie la clé publique dans le DNS. Ni l’un ni l’autre ne dit quoi que ce soit de l’adresse que le destinataire lit. DMARC comble cet écart en exigeant l’alignement — le domaine du From: visible doit correspondre au domaine SPF ou au domaine d= de DKIM. Un spf=pass sur un courriel se réclamant de votre banque est parfaitement normal pour un hameçonnage ; un dmarc=pass ne l’est pas.

La troisième chose à intégrer : ce n’est pas vous qui vérifiez tout cela. Le MTA destinataire exécute les contrôles au moment de la remise et inscrit son verdict dans un en-tête Authentication-Results:. Ensuite, le résultat n’est qu’une affirmation dans un fichier texte — digne de confiance seulement si le saut qui l’a écrit appartient à votre propre infrastructure. Un en-tête écrit par le serveur d’un inconnu a pu être inventé par cet inconnu. Lisez vers l’extérieur à partir de votre MTA de frontière et traitez tout ce qui est au-delà comme une saisie non fiable.

Ce que chaque mécanisme prouve

MécanismePublié àAuthentifieSurvit au transfertEmpêche l’usurpation du From: visible
SPFTXT sur le domaine d’enveloppe, v=spf1 …L’IP qui se connecte pour le MAIL FROMNon — l’IP du relais n’est pas listéeNon
DKIMTXT à <sélecteur>._domainkey.<d=>Les en-têtes de h= + l’empreinte du corps bh=Oui, sauf si le corps ou le Subject est altéréSeulement s’il y a alignement
DMARCTXT à _dmarc.<domaine>L’alignement du From: avec SPF ou DKIM, plus la politiqueOui, via le DKIM survivantOui — c’est toute sa raison d’être
ARCEn-têtes ARC-Seal / ARC-Message-SignaturePréserve les résultats amont à travers un relaisConçu exactement pour celaNon — et seuls les scelleurs de confiance comptent
MTA-STS / DANETXT à _mta-sts.<domaine> / TLSALe transport : que TLS était obligatoiresans objetNon

Les jetons de résultat forment un vocabulaire commun aux trois contrôles, et chacun désigne un correctif différent :

JetonSignificationCause habituelle
passContrôle réussi
failNon autorisé, en dur (-all)Usurpation, ou un relais émetteur absent de l’enregistrement
softfailNon autorisé, marquage seulement (~all)Enregistrement laissé permissif en cours de déploiement
neutralExplicitement sans avis (?all)La politique n’énonce rien d’utile
noneAucun enregistrement publiéLe domaine n’a jamais configuré SPF ni DMARC
temperrorÉchec DNS, réessayableRésolveur ou serveur autoritaire instable
permerrorL’enregistrement ne peut pas être évaluéPlus de 10 recherches DNS, v=spf1 en double, erreur de syntaxe

Quel outil pour quel travail

Si vous disposez du bloc d’en-têtes brut — « Afficher l’original » dans Gmail, « Afficher la source » ailleurs — commencez par Analyse d’En-têtes. Il déplie les lignes de continuation, inverse la pile Received: pour que le saut 1 soit le serveur d’origine et le dernier saut votre fournisseur, et montre les secondes entre sauts adjacents, si bien que Delay: 1800s désigne le relais qui a gardé le message une demi-heure. Sous le chemin, il imprime Authentication-Results, Received-SPF, DKIM-Signature et ARC-Authentication-Results mot pour mot — le verdict DMARC vit à l’intérieur du premier, sous la forme dmarc=pass (p=REJECT …). L’analyse reste dans le navigateur, et c’est bien là l’essentiel : ces en-têtes portent des IP d’expéditeurs et des noms d’hôtes internes.

Avec un fichier .eml entier à la place — un rejet, une pièce jointe enregistrée, la sortie d’un formulaire d’envoi — utilisez la Visionneuse EML. Elle sépare les en-têtes du corps, décode les mots encodés de la RFC 2047 (=?UTF-8?B?…?=) pour que les sujets non ASCII se lisent comme du texte, et met en avant From, To, Cc, Subject, Date, Reply-To et Message-ID. Un Reply-To sur un domaine différent du From: est un signe classique de fraude au président. Le corps est affiché brut, les frontières MIME restent donc visibles ; passez les parties en base64 dans Base64 pour en lire une.

Avec seulement un domaine et aucun message, passez au DNS. DNS Lookup résout TXT (votre chaîne v=spf1), MX (le routage, avec priorité) et davantage, avec le TTL qui détermine combien de temps un correctif met à prendre effet — le hub dns traite la mise en cache en profondeur. C’est un outil serveur : le nom de domaine part vers api.sitekits.dev pour la résolution et n’est pas conservé. Il n’accepte que des étiquettes de nom d’hôte, si bien que les noms à tiret bas comme _dmarc.example.com et selector._domainkey.example.com sont rejetés — lisez ceux-là avec dig TXT _dmarc.example.com.

Pour les liens à l’intérieur d’un message suspect, le Parseur d’URL décompose une URL en hôte, chemin et paramètres de requête décodés sans jamais la charger, et le Convertisseur IDN expose les domaines homographes en montrant la forme xn-- réellement résolue. Les deux s’exécutent dans le navigateur, et tous deux sont rassemblés sur /fr/for/security/ aux côtés de l’analyseur d’en-têtes et de la visionneuse .eml. Les horodatages de sauts exprimés dans des décalages étrangers s’alignent plus vite avec le Convertisseur de Fuseau Horaire — également local au navigateur, mais rassemblé sur /fr/for/sre/ plutôt que sur la page sécurité. Avant de joindre des preuves à un ticket, expurgez à la main — le Nettoyeur HAR couvre les exports HAR, pas les en-têtes de courriel.

Là où ça dérape habituellement

p=none ne protège rien

p=none ne fait que demander des rapports. Le publier est le bon premier pas, mais tant que vous n’atteignez pas p=quarantine ou p=reject, les destinataires n’appliquent aucune politique en cas d’échec. Vérifiez aussi pct= — un déploiement partiel n’applique la politique qu’à cette proportion du courrier.

Faire sauter le budget de dix recherches

include:, a, mx, ptr et redirect= coûtent chacun des recherches DNS, et les chaînes d’include: imbriquées venant de prestataires SaaS ajoutent les leurs récursivement. Dépassez dix et l’enregistrement devient permerror, ce que les destinataires lisent comme l’absence totale de SPF. Aplatissez-le ou retirez les prestataires inutilisés.

Lire chaque échec comme une attaque

Les transferts et les listes de diffusion cassent l’authentification de façon légitime : l’IP du relais échoue au SPF, et un préfixe de sujet [liste] ou un pied de message ajouté invalide l’empreinte du corps DKIM. Jugez sur l’alignement et sur le relais scelleur, pas sur un unique fail.

Faire confiance à des sauts qui ne sont pas les vôtres

Seules les lignes Received: et Authentication-Results: ajoutées au niveau de votre MTA de frontière ou après signifient quelque chose ; les sauts antérieurs sont du texte contrôlé par l’attaquant. Des délais négatifs ou affichés sont une dérive d’horloge ou un horodatage manquant, pas une preuve.

Laisser ouverts les domaines qui n’envoient pas

Les domaines en parking et les sous-domaines qui n’envoient jamais de courriel ont tout de même besoin de v=spf1 -all, d’un enregistrement DMARC à _dmarc.<domaine> avec p=reject, et idéalement d’un MX nul (MX 0 .). p= est l’étiquette de politique obligatoire : un enregistrement ne portant que sp=reject est invalide, les destinataires n’appliquent donc rien et le domaine en parking lui-même reste sans protection. Ajoutez sp=reject à côté de p= quand vous voulez énoncer explicitement la politique des sous-domaines — en l’absence de sp=, les sous-domaines héritent de toute façon de p=. Laissé ouvert, le domaine est du matériau d’usurpation gratuit portant votre marque.

FAQ
SPF suffit-il à empêcher quelqu'un d'usurper mon domaine ?
Non. SPF n'autorise que l'expéditeur d'enveloppe (le MAIL FROM de SMTP), que le destinataire ne voit jamais. Un attaquant peut réussir SPF sur un domaine qu'il contrôle tout en plaçant votre domaine dans l'en-tête From: visible. Seul DMARC relie les deux en exigeant un alignement entre le From: et le domaine SPF ou DKIM, et seul p=quarantine ou p=reject amène les destinataires à agir sur un échec.
Pourquoi un courriel légitime échoue-t-il au SPF après avoir été transféré ?
Le transfert change l'IP qui se connecte : le serveur destinataire compare donc l'IP du transitaire à votre enregistrement SPF et ne l'y trouve pas. DKIM survit généralement, car il signe des en-têtes et le contenu du corps plutôt que le chemin — sauf si une liste de diffusion réécrit le Subject ou ajoute un pied de message, ce qui casse l'empreinte du corps. C'est pourquoi DMARC accepte un succès de l'un ou l'autre mécanisme, et pourquoi ARC existe pour transporter le verdict d'origine à travers un relais de confiance.
Un domaine qui n'envoie jamais de courriel a-t-il tout de même besoin de SPF et DMARC ?
Oui — un domaine en parking non protégé est du matériau d'usurpation gratuit portant votre marque, et les attaquants cherchent précisément ceux-là. Publiez v=spf1 -all, un enregistrement DMARC à _dmarc.<domaine> avec p=reject, et idéalement un MX nul (MX 0 .) pour que le courrier entrant soit refusé d'emblée. Attention à l'étiquette de politique : p= est obligatoire, si bien qu'un enregistrement ne portant que sp=reject est invalide et que les destinataires n'appliquent rien du tout. Ajouter sp=reject à côté de p= ne fait qu'énoncer explicitement la politique des sous-domaines — en l'absence de sp=, les sous-domaines héritent de toute façon de p=.
Que signifie réellement dmarc=pass dans Authentication-Results ?
Cela signifie que le serveur de messagerie destinataire a vérifié que le domaine de l'en-tête From: s'aligne avec un domaine ayant réussi SPF ou DKIM, et qu'il a appliqué la politique trouvée à _dmarc.<domaine>. C'est le verdict du destinataire inscrit dans le message après coup, pas une signature que vous pouvez revérifier depuis le texte. Ne lui faites confiance que si le saut qui l'a écrit est votre propre MTA de frontière.
Pourquoi mon enregistrement SPF rapporte-t-il permerror plutôt que pass ou fail ?
permerror signifie que l'enregistrement n'a pas pu être évalué. Les causes habituelles sont le dépassement de la limite de 10 recherches DNS que consomment include:, a, mx et redirect=, la publication de deux enregistrements TXT v=spf1 distincts au même nom, ou une erreur de syntaxe telle qu'un point-virgule parasite. Les destinataires traitent permerror comme l'absence de SPF exploitable : une politique DMARC dépend alors entièrement de DKIM.