<?xml version="1.0" encoding="utf-8"?>
<rfcdesc title="Domain-Based Message Authentication, Reporting, and Conformance (DMARC) Failure Reporting" num="9991" status="standards" wg="dmarc">
  <authors><author>S. Jones (DMARC.org)</author><author>A. Vesely (Tana)</author></authors>
  <rfcdate><month>May</month><year>2026</year></rfcdate>
  <date>2026-05-20</date>
<content>
  <p><wikipedia>DMARC</wikipedia> (<rfc num="9989" local="true"/>)
  permet de demander l'envoi, par les destinataires des messages, de
  rapports indiquant les éventuels problèmes notés, afin de diminuer
  le nombre de faux positifs (messages légitimes incorrectement
  considérés comme invalides). Cette demande de rapports se fait en
  ajoutant l'option <computer>ruf</computer> à l'enregistrement
  DMARC. Ce <wikipedia name="Request for comments">RFC</wikipedia>
  décrit ces rapports.</p>
  <p>Il y a au moins deux raisons de demander ces rapports :
  <enum>
    <item>Comprendre pourquoi certains des messages qu'on envoie sont
    classés comme invalides alors qu'ils ne devraient pas
    l'être. On va donc analyser des rapports concernant des messages
    qu'on a réellement envoyés.</item>
    <item>Détecter les tentatives d'usurpation du domaine. On va donc
    analyser des rapports concernant des messages qu'on ne connaissait
    pas, et qu'un méchant a envoyés.</item>
  </enum>
  Notez qu'il existe aussi des rapports agrégés (<rfc num="9990"
  local="false"/>, avec un format très différent, fondé sur <wikipedia
  name="Extensible Markup Language">XML</wikipedia>) et qu'on demande
  parfois des rapports individuels parce qu'on note dans les rapports
  agrégés qu'il y a beaucoup d'erreurs et qu'on voudrait comprendre
  leur origine.</p>
  <p>Le format normalisé ici dérive du format ARF (<foreign>Abuse
  Reporting Format</foreign>, <rfc num="6591" local="true"/>), qui
  décrivait les rapports pour les problèmes <wikipedia name="Sender
  Policy Framework">SPF</wikipedia> et <wikipedia name="DomainKeys
  Identified Mail">DKIM</wikipedia>.  L'option
  <computer>ruf</computer> dans l'enregistrement DMARC (<rfc
  num="9989" local="true"/>, section 4.7) indique à quelle adresse de
  <wikipedia name="Courrier électronique">courrier</wikipedia> le
  rapport doit être envoyé. Voici par exemple l'enregistrement DMARC
  de <computer>afnic.fr</computer> :
  <code>
dig +short _dmarc.afnic.fr TXT
"v=DMARC1; p=quarantine; pct=100; ruf=mailto:dmarc-feedback@afnic.fr; rua=mailto:dmarc-feedback@afnic.fr; fo=1"
</code>
  Vous voyez le <computer>ruf</computer> ? Il indique que les rapports
  doivent être envoyés à
  <computer>dmarc-feedback@afnic.fr</computer>. Attention, j'ai écrit
  « doivent » mais, évidemment, les récepteurs de courrier ne sont
  <emphasis>pas</emphasis> obligés d'envoyer ces rapports, qui peuvent
leur coûter des ressources et poser des problèmes de vie privée.</p>
  <p>Pour DMARC, notre RFC ajoute au format du <rfc num="6591"
  local="true"/> les champs (section 4, ils sont listés dans <link
  url="https://www.iana.org/assignments/marf-parameters/marf-parameters.xml#marf-parameters-1">un
  registre IANA</link>) :
  <enum>
    <item><computer>Identity-Alignment:</computer>, qui liste les
    mécanismes d'authentification où il n'y a pas d'alignement avec l'expéditeur,</item>
    <item><computer>Delivery-Result:</computer>,</item>
    <item><computer>DKIM-Domain:</computer>, et quelques autres au
    sujet de DKIM,</item>
    <item><computer>SPF-DNS:</computer>.</item>
  </enum>
  </p>
  <p>Il y a un autre piège avec les rapports, c'est la possibilité
  d'indiquer dans <computer>ruf</computer> l'adresse de quelqu'un
  d'autre, pour l'embêter avec beaucoup de rapports qui ne le
  concernent pas. La section 4 du <rfc num="9990" local="false"/>
  explique les précautions que devrait prendre un receveur de courrier
  avant d'envoyer un rapport vers une adresse qui n'est pas dans le
  domaine concerné, comme de tester le sous-domaine
  <computer>_report._dmarc</computer>. (Dans l'exemple
  <computer>afnic.fr</computer> plus haut, il n'y avait pas de
  problème, le destinataire des rapports est dans le domaine
  concerné.)</p>
  <p>J'ai mentionné un peu plus haut la question de <wikipedia
  name="Vie privée">la vie privée</wikipedia>. Les rapports détaillés,
  contrairement à leurs copains agrégés du <rfc num="9990"
  local="false"/>, peuvent être très indiscrets, notamment parce
  qu'ils contiennent souvent des <wikipedia name="Données personnelles">données
  personnelles</wikipedia>, par exemple dans les champs indiquant
  l'expéditeur et le destinataire. Et il ne suffit pas de se dire
  « Bon, de toute façon, le gestionnaire du système envoyeur avait
  accès au message quand il est parti de son système » car le message
  a pu être transmis et re-transmis et le rapport donnera des
  informations sur des destinataires finaux. Une section 7, trés
  détaillée, couvre donc ce problème. Elle note par exemple que
  beaucoup de gros receveurs de courrier n'envoient pas du tout de
  rapport individuel, seulement des rapports agrégés. Et elle
  recommande que, même si on envoie les rapports, on en supprime les
  éléments les plus sensibles (voir le <rfc num="6590"
  local="true"/>).</p>
  <p>Enfin, à envoyer un rapport par message, on noiera l'expéditeur
  supposé sous des rapports qui concerneront des
  <wikipedia name="Spam">spams</wikipedia> envoyés en nombre. Donc, prudence.</p>
  <p>Un point amusant, que je vois pour la première fois dans un
  <wikipedia name="Request for comments">RFC</wikipedia> : ce <rfc
  num="9991"/> recommande de modifier les <wikipedia name="Uniform
  Resource Locator">URL</wikipedia> présents dans les rapports en
  remplaçant <computer>http</computer> par
  <computer>hxxp</computer>. Cette convention est assez courante dans
  le monde de la sécurité Internet, pour éviter qu'un humain ne clique
  trop vite sur un lien malveillant.</p>
  <p>L'annexe A du RFC donne un exemple de rapport, je ne montre ici
  que la partie <wikipedia name="Multipurpose Internet Mail
  Extensions">MIME</wikipedia> qui concerne le rapport proprement
  dit¸:
  <code>
   --=_mime_boundary_
   Content-Type: message/feedback-report
   Content-Transfer-Encoding: 7bit

   Feedback-Type: auth-failure
   Version: 1
   User-Agent: DMARC-Filter/1.2.3
   Auth-Failure: dmarc
   Authentication-Results: gen.example;
     dmarc=fail header.from=consumer.example
   Identity-Alignment: dkim
   DKIM-Domain: consumer.example
   DKIM-Identity: @consumer.example
   DKIM-Selector: epsilon
   Original-Envelope-Id: 65E1A3F0A0
   Original-Mail-From: author=gen.example@forwarder.example
   Source-IP: 192.0.2.2
   Source-Port: 12345
   Reported-Domain: consumer.example
  </code>
  Le message prétend venir de <computer>consumer.example</computer>
  mais aucune signature <wikipedia name="DomainKeys Identified
  Mail">DKIM</wikipedia> n'est valide, sans doute suite à des
  modifications chez <computer>forwarder.example</computer> ou bien
  parce que la clé DKIM n'a pu être récupérée dans le <wikipedia
  name="Domain Name System">DNS</wikipedia>.
  </p>
  <p>Apparemment, <link url="http://opendkim.org/">OpenDKIM</link> est capable de
  générer ces rapports, mais je n'ai pas testé.</p>
  <!-- développement en
       https://github.com/ietf-wg-dmarc/draft-ietf-dmarc-failure-reporting -->
</content>
</rfcdesc>
