Table des matières

DMARC

Le principe

"Domain-based Message Authentication, Reporting, and Conformance", défini par le RFC 7489.

En quelque sorte un outil de synthèse entre SPF, DKIM et l'adresse fournie dans le champ «From:» de l'en-tête d'un message. Alors que SPF et DKIM ne s'intéressent qu'au domaine affiché dans l'adresse du champ «RCPT-TO» de l'enveloppe du message, DMARC est en mesure d’analyser les résultats du test SPF, du test DKIM, de vérifier l'alignement des domaines retrouvés dans le champ «Return-Path:», la signature DKIM et le champ «From:».

Il y a ici deux volets à traiter:

  1. informer les MTA destinataires de messages issus de notre domaine de la conduite à tenir dans le cas de messages considérés comme frauduleux,
  2. configurer nitre MTA pour qu'il soit en mesure d'appliquer la conduite à tenir lorsqu'il reçoit des messages considérés comme frauduleux de la part de domaines exposant des directives DMARC

Le MTA destinataire du message implémente le filtre DMARC qui va effectuer les contrôles suivants:

L'analyse

Reprenons l'en-tête d'un message propre, transmis par un MTA dont le domaine fournit une information SPF et un chiffrement DKIM:

X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <untel@nain-t.net>
Received: from zimbra-e1-04.priv.proxad.net (LHLO
 zimbra-e1-04.priv.proxad.net) (172.20.243.152) by
 zimbra-e1-04.priv.proxad.net with LMTP; Thu, 22 May 2025 18:47:16 +0200
 (CEST)
Received: from smtp.nain-t.net (mx28-g26.priv.proxad.net [172.20.243.98])
	by zimbra-e1-04.priv.proxad.net (Postfix) with ESMTP id 954A47837B8
	for <untel@free.fr>; Thu, 22 May 2025 18:47:16 +0200 (CEST)
Received-SPF: pass (mx28-g26.free.fr: domain of nain-t.net designates 51.68.121.59 as permitted sender) client-ip=51.68.121.59; envelope-from=untel@nain-t.net; helo=smtp.nain-t.net;
Received: from smtp.nain-t.net ([51.68.121.59])
	by mx1-g20.free.fr (MXproxy) for untel@free.fr;
	Thu, 22 May 2025 18:47:16 +0200 (CEST)
X-ProXaD-SC: state=HAM score=0
X-ProXaD-Cause: dmFkZTGnFuBuUvZ6qEBSZre++A1wUK3ylK8vjLGBtIhQslyFJZd4DyBafNYVfRZAwgn0l9MbmOS6c5uwFMt1Dq9BRPGtAscCpn/7s+5lfE85OEemqrGRDfrgd3MAZQ/L0wO8cqRu/evQ53yTQZLDdNqERWv/yg1ymPv9x/JgKSm0bwwitwsO2sjHdQneC2cAyayjtJiR8i9HcKMs0P8PyzTyvfYukzUT0xw5+N/cexmvMfrMb7Pvcu+oRpSppmT/JMV5T08w2qKdH5azyvAdFGICvu1xoBfCn9RuFv9uRzR+v3KCwALMT3h9iWhRGPV9Rmg/gyg65riEF+mJoU/5xZN6vJsQNLu+MsagZ7qzOg88kdI7lgTIosgb7mFw7tyxWYSTmfghEkU1oDfR5KU3qEXQEaY2Gy5WkMKhIH9wUPI7sbgoPestjy1FGYM5Vx6zkGy7IgXxdEcVKanXKyKBoG2fZzXSwvAZmptBQt+pEkIxUofyi2o0Yi5HsP6Zc9cvLHrLzbgvLKZwyagOJlQEwBcuz6U+JeeSu2WxooZZAgrVzMBBHuVfS/AbrQ5KTUKhXyZ6lpXHF7iOUUkBn/+Nq/vLg54xY60iIaGiOLd6lC/ZvuDJfnKISBad6IjrRMGI+oGRTLyHzzRmXpX3ozdmrGuQPCgRGIVt5Me6MfvUuB91vym6HQ
X-ProXaD-Context: 
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=nain-t.net; s=052025;
	t=1747932436; bh=wAKMWuDJ20BVhKNhwgzlkaFVNh/AchJTf2EZuTqS4kQ=;
	h=Date:Reply-To:To:From:Subject:From;
	b=iMBYZNA5f/nXYPgFkpbQCGWMF4FEbW1DP752d6lPwtaMhnl7QbObfg74ZHzjv1YVa
	 HtjxNYnUdarkx0+NJjxDLIrv6ODS1OjBTDVer/SMSQSLQWlEqM1NjIX+8BbhZMvM5d
	 Lgi+pJH+DBFqUKZ0i0jCy2jx/NZc3jFFw4wqdFsyKIB6CqoySQt0AI+KCkPy7xIPED
	 NqYNPQCO5eTGOVzcI0CnsXeQi0lDFty9b+EEWNN981T1VbrUtrAVdFx55cFU/JAQ47
	 BQ4a5mxqMsioMga632tU5QlI0EtojvCTMQsrUYsxiZ8TcPFiD/Vg4GkbbQ4UV5s6ru
	 7Azi+q87YO1Og==
Received: from [192.168.60.47] (stratus.nain-t.net [82.65.67.204])
	(using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
	 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
	(No client certificate requested)
	by smtp.nain-t.net (Postfix) with ESMTPSA id 1FFD51FC7E
	for <untel@free.fr>; Thu, 22 May 2025 18:47:16 +0200 (CEST)
Message-ID: <93764524-7ec3-4534-9b70-ebde40251bbd@nain-t.net>
Date: Thu, 22 May 2025 18:47:15 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Reply-To: prof@nain-t.net
Content-Language: fr
To: untel <untel@free.fr>
From: untel <untel@nain-t.net>
Subject: test dkim
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

hop!
Dans ce message:

  1. le domaine de l'enveloppe (Return-Path:) présente une règle SPF qui est respectée,
  2. c'est le même domaine qui est indiqué dans la signature DKIM,
  3. c'est encore le même que l'on retrouve dans l'adresse fournie dans le champ From:

Pour DMARC tout est bon, tous les domaines sont identiques.

La décision

L'originalité de DMARC, c'est que le MTA va décider quoi faire de la conclusion de l'analyse en fonction des directives fournies par le gestionnaire du domaine récupéré dans le «Return-Path» si, bien entendu, cette information est fournie. Encore une fois, par l'intermédiaire d'un enregistrement TXT dans la zone du domaine émetteur.

Les directives du domaine émetteur

L'enregistrement DMARC dans la zone DNS est de la forme:

_dmarc.nain-t.net   TXT  "v=DMARC1; p=quarantine; rua=mailto:postmaster@nain-t.net; ruf=mailto:postmaster@nain-t.net; fo=1;"
Balise Valeurs possibles Signification
v DMARC1 Version DMARC
p none, quarantine ou reject Politique à appliquer en cas d'échec
rua mailto:utilisateur@domaine.tld destinataire à qui envoyer des rapports de filtrage
ruf mailto:utilisateur@domaine.tld URI pour le destinataire à qui envoyer les rapports forensiques. Il peut y en avoir plusieurs.
pct de 0 à 100 pourcentage de messages subissant la règle «p» si le test échoue.
100 est la valeur par défaut.
sp none, quarantine ou reject politique à appliquer aux sous-domaines
aspf «r», «s» Mode «relaxed» ou «strict» utilisé pour l'analyse de l'alignement des différentes écritures des domaines retrouvés dans «Return-Path» et «From:».
«s» par défaut
adkim «r», «s» Mode «relaxed» ou «strict» utilisé pour l'analyse de l'alignement des différentes écritures des domaines retrouvés dans la signature DKIM et «From:».
«r» par défaut
fo «0», «1», «d» ou «s» Options pour les rapports forensiques.
« 0 » génère des rapports si tous les mécanismes d’authentification sous-jacents échouent à produire un résultat DMARC positifs,
« 1 » génère des rapports si l’un des mécanismes échoue,
« d » génère des rapports si la signature DKIM n’a pas été vérifiée,
« s » génère des rapports si SPF échoue.
Plusieurs valeurs peuvent être combinées en les séparant par «:».
Exemple: fo=0:d:s
rf «arfr» désigne le format des rapports forensiques. Actuellement la seule valeur possible et donc valeur par défaut.
ri nombre entier de secondes intervalle entre deux rapports agrégés.
86400 (24 heures) par défaut.

Voici un exemple de rapport :

<?xml version="1.0"?>	
<feedback>	
  <report_metadata>	
    <org_name>Yahoo</org_name>	
    <email>dmarchelp@yahooinc.com</email>	
    <report_id>1748136146.312007</report_id>	
    <date_range>	
      <begin>1748044800</begin>	
      <end>1748131199</end>	
    </date_range>	
  </report_metadata>	
  <policy_published>	
    <domain>nain-t.net</domain>	
    <adkim>r</adkim>	
    <aspf>r</aspf>	
    <p>none</p>	
    <pct>100</pct>	
  </policy_published>	
  <record>	
    <row>	
      <source_ip>209.85.128.103</source_ip>	
      <count>1</count>	
      <policy_evaluated>	
        <disposition>none</disposition>	
        <dkim>fail</dkim>	
        <spf>fail</spf>	
      </policy_evaluated>	
    </row>	
    <identifiers>	
      <header_from>nain-t.net</header_from>	
    </identifiers>	
    <auth_results>	
      <spf>	
        <domain>dispor.com.ar</domain>	
        <result>softfail</result>	
      </spf>	
    </auth_results>	
  </record>	
</feedback>

Super! c'est du XML. Et encore, il est bien présenté.

Un petit outil nommé dmarc-cat peut nous venir en aide pour afficher plutôt ceci à la place:

Reporting by: Yahoo — dmarchelp@yahooinc.com
From 2025-05-24 02:00:00 +0200 CEST to 2025-05-25 01:59:59 +0200 CEST

Domain: nain-t.net
Policy: p=none; dkim=r; spf=r

Reports(1):
IP                        Count   From       RFrom         RDKIM   RSPF     
mail-wm1-f103.google.com. 1       nain-t.net dispor.com.ar         softfail 

Comme Dans la directive DMARC affichée par «nain-t.net», p=none, donc le message a pu être transmis.

https://dmarcadvisor.com/fr/dmarc-tags/

https://glockapps.com/blog/dmarc-tags/

Le milter pour Postfix

apt install opendmarc

L'installation propose de créer une base de données «mysql». Cette base est conseillée pour générer les rapports d'activité. Pour les curieux, le schéma de cette base se trouve dans /usr/share/dbconfig-common/data/opendmarc/install/mysql.

Configuration

https://www.cyberpunk.rs/dmarc-postfix-setup