Un rapport DMARC agrégé est un fichier XML, généralement compressé, envoyé par un fournisseur de messagerie à l’adresse indiquée dans votre enregistrement DMARC. Il ne contient pas vos messages : il résume, pour une période donnée, les adresses IP qui ont envoyé au nom de votre domaine et le résultat de leur authentification.
Réponse directe : pour savoir qui envoie avec votre domaine, regroupez les enregistrements du rapport par source_ip, identifiez le service derrière chaque IP, puis comparez deux blocs. auth_results indique si SPF et DKIM ont réussi. policy_evaluated indique s’ils ont réussi et s’ils sont alignés avec le domaine visible, header_from. Seul ce second résultat compte pour DMARC : il réussit si dkim ou spf y vaut pass.
À retenir : un message peut réussir SPF et DKIM tout en échouant à DMARC. C’est le cas le plus fréquent d’outil légitime mal configuré, et c’est le premier à repérer dans vos rapports.
En bref
- Le rapport décrit des sources et des volumes, jamais le contenu des messages.
auth_resultsdonne le résultat brut ;policy_evaluateddonne le résultat d’alignement.- Une source légitime en échec se corrige ; une source inconnue s’identifie avant toute conclusion.
- Un seul rapport ne suffit pas : comparez plusieurs jours et plusieurs fournisseurs.
Récupérer et ouvrir le rapport
Les rapports arrivent à l’adresse de la balise rua de votre enregistrement DMARC :
_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"
Si cette adresse appartient à un autre domaine, ce domaine doit autoriser la réception en publiant un enregistrement dédié :
example.com._report._dmarc.prestataire.example. TXT "v=DMARC1"
La pièce jointe est le plus souvent compressée. Son nom suit un format normalisé, qui indique déjà qui a émis le rapport, pour quel domaine et sur quelle période :
receiver.example!example.com!1778889600!1778975999.xml.gz
Les deux nombres sont des horodatages Unix, c’est-à-dire un nombre de secondes depuis le 1er janvier 1970 UTC.
Un rapport commenté
Cet exemple suit le format de la RFC 9990. Il est volontairement réduit à trois sources.
<feedback xmlns="urn:ietf:params:xml:ns:dmarc-2.0">
<version>1.0</version>
<report_metadata>
<org_name>receiver.example</org_name>
<email>noreply-dmarc@receiver.example</email>
<report_id>20260516-a1b2c3</report_id>
<date_range>
<!-- 16 mai 2026, 00:00:00 à 23:59:59 UTC -->
<begin>1778889600</begin>
<end>1778975999</end>
</date_range>
</report_metadata>
<policy_published>
<domain>example.com</domain>
<!-- observation : rien n'est bloqué -->
<p>none</p>
<sp>none</sp>
<adkim>r</adkim>
<aspf>r</aspf>
</policy_published>
<!-- Cas A : plateforme d'emailing, 860 messages -->
<record>
<row>
<source_ip>198.51.100.25</source_ip>
<count>860</count>
<policy_evaluated>
<disposition>none</disposition>
<!-- résultat d'ALIGNEMENT, pas de signature -->
<dkim>pass</dkim>
<spf>fail</spf>
</policy_evaluated>
</row>
<identifiers>
<envelope_from>bounce.esp.example</envelope_from>
<!-- le domaine que voit le destinataire -->
<header_from>example.com</header_from>
</identifiers>
<auth_results>
<dkim>
<!-- d= aligné avec header_from -->
<domain>example.com</domain>
<selector>esp1</selector>
<result>pass</result>
</dkim>
<spf>
<domain>bounce.esp.example</domain>
<!-- SPF valide, mais sur un autre domaine -->
<result>pass</result>
</spf>
</auth_results>
</record>
<!-- Cas B : outil de facturation, 312 messages -->
<record>
<row>
<source_ip>203.0.113.40</source_ip>
<count>312</count>
<policy_evaluated>
<disposition>none</disposition>
<dkim>fail</dkim>
<spf>fail</spf>
</policy_evaluated>
</row>
<identifiers>
<envelope_from>mail.billing-tool.example</envelope_from>
<header_from>example.com</header_from>
</identifiers>
<auth_results>
<dkim>
<domain>billing-tool.example</domain>
<selector>s1</selector>
<result>pass</result>
</dkim>
<spf>
<domain>mail.billing-tool.example</domain>
<result>pass</result>
</spf>
</auth_results>
</record>
<!-- Cas C : source inconnue, 3 messages -->
<record>
<row>
<source_ip>192.0.2.77</source_ip>
<count>3</count>
<policy_evaluated>
<disposition>none</disposition>
<dkim>fail</dkim>
<spf>fail</spf>
</policy_evaluated>
</row>
<identifiers>
<envelope_from>example.com</envelope_from>
<header_from>example.com</header_from>
</identifiers>
<auth_results>
<spf>
<domain>example.com</domain>
<result>fail</result>
</spf>
</auth_results>
</record>
</feedback>
Les rapports réels varient selon le fournisseur : certains suivent encore le format de la RFC 7489, sans espace de noms et avec d’autres balises. Les champs qui servent au diagnostic restent les mêmes.
Les champs à connaître
| Champ | Ce qu’il indique | Piège à éviter |
|---|---|---|
date_range |
Période couverte, en UTC | Ne pas confondre avec la date de réception |
p |
Politique publiée au moment du rapport | Elle peut avoir changé pendant la période |
source_ip |
Serveur qui a remis le message | Sur un transfert, c’est le serveur intermédiaire |
count |
Nombre de messages regroupés dans cette ligne | Ce n’est pas un nombre de destinataires |
disposition |
Traitement appliqué : none, quarantine, reject et, dans le format RFC 9990, pass |
none ne veut pas dire que DMARC a réussi |
policy_evaluated : dkim, spf |
Résultat d’alignement | C’est lui qui détermine DMARC |
header_from |
Domaine visible par le destinataire | Sert de référence à l’alignement |
envelope_from |
Domaine de l’adresse de retour, vérifié par SPF | Champ facultatif, parfois absent |
auth_results : dkim, spf |
Résultat brut de la vérification | Peut indiquer pass sans alignement |
selector |
Clé DKIM utilisée | Aide à reconnaître la plateforme |
Interpréter chaque cas
auth_results (brut) |
policy_evaluated (alignement) |
DMARC | Lecture probable | Que faire |
|---|---|---|---|---|
| SPF pass, DKIM pass, même domaine | spf pass, dkim pass | Réussi | Source correctement configurée | Rien, vérifier qu’elle est connue |
| SPF pass sur le domaine du prestataire, DKIM pass sur le vôtre (cas A) | spf fail, dkim pass | Réussi | Situation courante avec une plateforme d’emailing | Acceptable : DKIM porte DMARC |
| SPF pass sur votre domaine, DKIM absent ou en échec | spf pass, dkim fail | Réussi | Fragile : SPF ne survit pas à un transfert | Activer une signature DKIM alignée |
| SPF fail, DKIM pass sur votre domaine, IP inconnue | spf fail, dkim pass | Réussi | Souvent un transfert ou une liste de diffusion | Vérifier, généralement rien à corriger |
| SPF pass et DKIM pass, tous deux sur le domaine du prestataire (cas B) | spf fail, dkim fail | Échec | Outil légitime non aligné | Priorité : configurer DKIM au nom de votre domaine |
| SPF fail, DKIM en échec sur votre domaine, IP de transfert | spf fail, dkim fail | Échec | Message modifié en route, ou signature cassée | Identifier l’intermédiaire ou la plateforme |
| SPF fail, aucun DKIM, IP inconnue (cas C) | spf fail, dkim fail | Échec | Outil oublié ou tentative d’usurpation | Enquêter : voir ci-dessous |
Ces lectures sont des hypothèses de départ. Le rapport ne montre pas le contenu des messages : seule l’identification de la source permet de conclure.
Identifier les expéditeurs, étape par étape
| Étape | Action | Validation |
|---|---|---|
| 1 | Décompresser les rapports d’une semaine et convertir chaque record en ligne de tableau. |
Le total de count par rapport est cohérent et aucun fichier n’a été ignoré. |
| 2 | Vérifier d’abord policy_published et, s’il existe, error. |
La politique affichée correspond à celle que vous pensez avoir publiée. |
| 3 | Regrouper les lignes par source_ip, puis par domaine DKIM et domaine SPF. |
Chaque groupe représente un seul service probable. |
| 4 | Identifier chaque source : DNS inverse, propriétaire de l’IP, selector, domaine d= et envelope_from. |
Chaque source a un nom de service, ou la mention « inconnue ». |
| 5 | Trouver le responsable interne de chaque service. | Chaque service légitime a un propriétaire nommé. |
| 6 | Classer : légitime et conforme, légitime à corriger, transfert, inconnu. | Aucune source ne reste sans classement. |
| 7 | Corriger par ordre de volume et de criticité, puis contrôler les rapports suivants. | L’alignement passe à pass pour cette source dans les nouveaux rapports. |
Schéma : enquêter sur une IP source

L’analyse d’une IP source consiste à croiser le reverse DNS, le WHOIS, le fournisseur probable et les résultats d’authentification.
Une adresse IP appartenant à Google ou à Microsoft ne prouve pas qu’il s’agit de votre messagerie : ces infrastructures sont partagées entre de nombreux clients. Fiez-vous plutôt au domaine de la signature DKIM et au résultat d’alignement.
Un faible volume ne signifie pas un faible risque, et une source inconnue n’est pas forcément une attaque. Avant de conclure, posez la question aux équipes marketing, finance et support : un ancien outil ou un prestataire oublié est une explication fréquente.
Avant de durcir la politique
- Plusieurs jours de rapports ont été analysés, chez plusieurs fournisseurs.
- Les envois peu fréquents, comme la facturation mensuelle, apparaissent dans la période observée.
- Chaque source légitime a
dkimouspfàpassdanspolicy_evaluated. - Les outils qui ne reposent que sur SPF ont été examinés, car un transfert peut leur faire perdre DMARC.
- Les sources restantes sont expliquées ou considérées comme illégitimes en connaissance de cause.
Pour passer ensuite aux corrections, voir Configurer SPF, DKIM et DMARC sans casser ses emails.
FAQ
Pourquoi DKIM affiche-t-il pass dans auth_results et fail dans policy_evaluated ?
Parce que les deux blocs ne mesurent pas la même chose. La signature est valide, mais son domaine d= ne correspond pas à header_from. C’est typique d’un outil qui signe avec son propre domaine.
Pourquoi disposition vaut-il none alors que DMARC a échoué ?
Avec p=none, aucune action n’est demandée. Le destinataire peut aussi avoir appliqué une exception locale : le champ reason l’indique alors.
Pourquoi je ne reçois aucun rapport ?
Vérifiez la syntaxe de l’enregistrement, l’adresse rua et, si elle est sur un autre domaine, l’enregistrement d’autorisation _report._dmarc. Sachez aussi que tous les fournisseurs n’émettent pas de rapports et que de très faibles volumes peuvent ne pas en produire.
Les rapports contiennent-ils le contenu de mes emails ?
Non. Les rapports agrégés contiennent des domaines, des adresses IP, des volumes et des résultats, sans objet ni corps de message. Ils restent à traiter avec soin, car ils décrivent vos flux d’envoi.
Quelle différence entre rua et ruf ?
rua reçoit les rapports agrégés décrits ici. ruf concerne les rapports d’échec, propres à un message. Ces derniers sont définis par la RFC 9991, et de nombreux fournisseurs n’en envoient pas.
Faut-il un outil pour lire ces rapports ?
Pour un ou deux rapports, non. Au-delà, la lecture manuelle devient vite difficile : un script ou une plateforme d’analyse permet de cumuler les données par source. L’important reste la même lecture : source, alignement, volume.
Conclusion
Lire un rapport DMARC revient à répondre à trois questions pour chaque source : qui est-ce, est-elle alignée, et quel volume représente-t-elle ? Si vous préférez déléguer ce suivi, voir notre prestation de monitoring DMARC.
Sources
- RFC 9990 : DMARC Aggregate Reporting (format actuel des rapports agrégés)
- RFC 9989 : DMARC (protocole et alignement, section 4.4)
- RFC 9991 : DMARC Failure Reporting (rapports d’échec)
- RFC 7489 (ancienne spécification, remplacée en mai 2026 ; format en annexe C)
