Rapports DMARC
Consultez les rapports DMARC agrégés et forensiques d’un domaine d’envoi, ou importez les vôtres.
- GET/domains/{id}/dmarc/reports
- GET/domains/{id}/dmarc/reports/{report_id}
- POST/domains/{id}/dmarc/reports
- GET/domains/{id}/dmarc/forensic
- GET/domains/{id}/dmarc/forensic/{report_id}
- GET/domains/{id}/dmarc/stats
- GET/domains/{id}/dmarc/sources
- GET/domains/{id}/dmarc/countries
- GET/domains/{id}/dmarc/asns
- GET/domains/{id}/dmarc/reporters
Lister les rapports agrégés
Renvoie les rapports DMARC d’un domaine d’envoi, du plus récent au plus ancien. Nécessite une clé API de portée full.
Emailit ne collecte les rapports que pour les domaines dont les rapports DMARC sont activés (dmarc_reports: true dans Mettre à jour un domaine), ce qui nécessite le forfait Pro ou supérieur. Consultez Rapports DMARC.
La liste inclut aussi les rapports forensiques. Transmettez type=aggregate pour ne lister que les rapports agrégés, ou utilisez Lister les rapports forensiques pour obtenir le détail des rapports forensiques.
/domains/{id}/dmarc/reportsParamètres de chemin
idstringobligatoiredom_…) ou le nom de domaine, par exemple acme.com.Paramètres de requête
typestringaggregate ou forensic.statusstringpending, processed, failed ou duplicate.org_namestringgoogle.com.fromstring2026-09-01.tostringlimitintegerpar défaut : 25offsetintegerpar défaut : 0matchstringall (par défaut) exige que tous les filtres correspondent. Avec or, il suffit qu’un filtre corresponde. Consultez Filtrage et tri.
orderstringClé de tri de cette liste. Consultez les clés de tri ci-dessous.
directionstringasc ou desc.
Les filtres génériques key.condition=value fonctionnent aussi sur type, status, org_name et created_at ; ce sont aussi les clés de tri disponibles pour order. Consultez Filtrage et tri.
Réponse
Renvoie data, un tableau d’objets rapport, et meta avec total, limit et offset.
idstringdmr_.typestring | nullaggregate ou forensic. null tant qu’un rapport importé n’a pas été traité.sourcestringsmtp pour les rapports reçus par Emailit à l’adresse de réception des rapports du domaine, upload pour les rapports que vous avez importés.statusstringpending, processed, failed (voir error_message) ou duplicate (le même rapport a déjà été traité).org_name, org_emailstring | nullexternal_report_idstring | nulldate_range_begin, date_range_endstring | nullpolicy_domain, adkim, aspf, p, sp, pct, fostring | integer | nullr ou s), politique et politique des sous-domaines (none, quarantine, reject), pourcentage et options de signalement des échecs.original_filenamestring | nullenvelope_tostring | nullcreated_at, updated_at, processed_atstring | nullRenvoie 404 si le domaine n’existe pas dans l’espace de travail.
{
"data": [
{
"object": "dmarc_report",
"id": "dmr_3Xu63kEs8KCiyOZ1TDgnttppitx",
"type": "aggregate",
"source": "smtp",
"status": "processed",
"org_name": "google.com",
"org_email": "noreply-dmarc-support@google.com",
"external_report_id": "4129847120347812934",
"date_range_begin": "2026-09-29 00:00:00+00",
"date_range_end": "2026-09-29 23:59:59+00",
"policy_domain": "acme.com",
"adkim": "r",
"aspf": "r",
"p": "none",
"sp": "none",
"pct": 100,
"fo": null,
"original_filename": null,
"error_message": null,
"envelope_to": "k2v9x4qa7m@dmarc.emailitmail.com",
"created_at": "2026-09-30 04:12:09.214377+00",
"updated_at": "2026-09-30 04:12:11.902154+00",
"processed_at": "2026-09-30 04:12:11.902154+00"
}
],
"meta": { "total": 1, "limit": 50, "offset": 0 }
}{
"error": "Domain not found"
}Récupérer un rapport
Récupère un rapport DMARC. Pour un rapport agrégé, la réponse inclut ses enregistrements, un par source d’envoi, triés par nombre de messages. Pour un rapport forensique, elle inclut l’échantillon de l’échec dans forensic. Nécessite une clé API de portée full.
Les rapports n’arrivent que pour les domaines dont les rapports DMARC sont activés, ce qui nécessite le forfait Pro ou supérieur.
/domains/{id}/dmarc/reports/{report_id}Paramètres de chemin
idstringobligatoiredom_…) ou le nom de domaine.report_idstringobligatoiredmr_…).Paramètres de requête
limitintegerpar défaut : 100offsetintegerpar défaut : 0Réponse
Renvoie l’objet rapport (voir Lister les rapports agrégés), ainsi que :
recordsobject[]metaobjecttotal (nombre d’enregistrements), limit et offset.forensicobject | nullChaque enregistrement comporte :
source_ipstringcountintegercountry_code, country_name, continent_code, asn, as_org, latitude, longitudestring | integer | number | nullnull si l’IP n’a pas pu être localisée.dispositionstringnone, quarantine ou reject.dkim, spfstringpass ou fail.header_from, envelope_from, envelope_tostring | nulldkim_domain, dkim_selector, dkim_resultstring | nullspf_domain, spf_resultstring | nullreason_type, reason_commentstring | nullforwarded ou mailing_list.Renvoie 404 si le domaine ou le rapport n’existe pas.
{
"object": "dmarc_report",
"id": "dmr_3Xu63kEs8KCiyOZ1TDgnttppitx",
"type": "aggregate",
"source": "smtp",
"status": "processed",
"org_name": "google.com",
"org_email": "noreply-dmarc-support@google.com",
"external_report_id": "4129847120347812934",
"date_range_begin": "2026-09-29 00:00:00+00",
"date_range_end": "2026-09-29 23:59:59+00",
"policy_domain": "acme.com",
"adkim": "r",
"aspf": "r",
"p": "none",
"sp": "none",
"pct": 100,
"fo": null,
"original_filename": null,
"error_message": null,
"envelope_to": "k2v9x4qa7m@dmarc.emailitmail.com",
"created_at": "2026-09-30 04:12:09.214377+00",
"updated_at": "2026-09-30 04:12:11.902154+00",
"processed_at": "2026-09-30 04:12:11.902154+00",
"records": [
{
"object": "dmarc_report_record",
"source_ip": "198.51.100.24",
"count": 1840,
"country_code": "US",
"country_name": "United States",
"continent_code": "NA",
"asn": 64500,
"as_org": "Example Hosting",
"latitude": 37.751,
"longitude": -97.822,
"disposition": "none",
"dkim": "pass",
"spf": "pass",
"header_from": "acme.com",
"envelope_from": "emailit.acme.com",
"envelope_to": null,
"dkim_domain": "acme.com",
"dkim_selector": "emailit",
"dkim_result": "pass",
"spf_domain": "emailit.acme.com",
"spf_result": "pass",
"reason_type": null,
"reason_comment": null
},
{
"object": "dmarc_report_record",
"source_ip": "203.0.113.77",
"count": 12,
"country_code": "NL",
"country_name": "Netherlands",
"continent_code": "EU",
"asn": 64511,
"as_org": "Example Networks",
"latitude": 52.3824,
"longitude": 4.8995,
"disposition": "none",
"dkim": "fail",
"spf": "fail",
"header_from": "acme.com",
"envelope_from": "acme.com",
"envelope_to": null,
"dkim_domain": null,
"dkim_selector": null,
"dkim_result": null,
"spf_domain": "acme.com",
"spf_result": "softfail",
"reason_type": null,
"reason_comment": null
}
],
"meta": { "total": 2, "limit": 100, "offset": 0 }
}{
"error": "Report not found"
}Importer un rapport
Importe un rapport DMARC que vous avez reçu ailleurs, par exemple dans une boîte aux lettres que vous utilisiez avant Emailit. Nécessite une clé API de portée full.
Emailit enregistre le fichier et le traite en arrière-plan : la réponse a le statut pending, et le rapport passe à processed, failed ou duplicate (déjà importé) peu après. Vérifiez-le avec Récupérer un rapport. Les rapports qu’Emailit reçoit par e-mail nécessitent que les rapports DMARC soient activés pour le domaine (forfait Pro ou supérieur) ; les rapports importés sont traités dans tous les cas.
/domains/{id}/dmarc/reportsParamètres de chemin
idstringobligatoiredom_…) ou le nom de domaine.Paramètres du corps
Envoyez exactement l’un des deux champs content_base64 ou content. Le rapport décodé peut atteindre 10 Mo.
content_base64string.xml, .xml.gz ou .zip, et rapports forensiques en .eml (AFRF).contentstringfilenamestringoriginal_filename.Réponse
Renvoie 202 Accepted avec le nouvel objet rapport. type vaut null jusqu’à ce que le traitement le détecte.
| Statut | Cas |
|---|---|
400 |
Ni content_base64 ni content n’est défini, ou la valeur est vide. |
404 |
Le domaine n’existe pas dans l’espace de travail. |
413 |
Le rapport décodé dépasse 10 Mo. |
{
"object": "dmarc_report",
"id": "dmr_3MjUXgcEBO0o7FkzeBdlrCY6NYk",
"type": null,
"source": "upload",
"status": "pending",
"org_name": null,
"org_email": null,
"external_report_id": null,
"date_range_begin": null,
"date_range_end": null,
"policy_domain": null,
"adkim": null,
"aspf": null,
"p": null,
"sp": null,
"pct": null,
"fo": null,
"original_filename": "google-acme.com-2026-09-29.xml.gz",
"error_message": null,
"envelope_to": null,
"created_at": "2026-10-01 12:03:55.607+00",
"updated_at": "2026-10-01 12:03:55.607+00",
"processed_at": null
}{
"error": "content_base64 or content is required"
}{
"error": "Report exceeds maximum size of 10485760 bytes"
}Lister les rapports forensiques
Renvoie les rapports forensiques (RUF) traités d’un domaine, du plus récent au plus ancien. Chacun décrit un message qui a échoué à DMARC. Les en-têtes ne figurent pas dans la liste ; récupérez un rapport forensique pour les consulter. Nécessite une clé API de portée full.
Les rapports n’arrivent que pour les domaines dont les rapports DMARC sont activés, ce qui nécessite le forfait Pro ou supérieur. Peu de fournisseurs de messagerie envoient des rapports forensiques, et ceux qui le font peuvent y inclure des données personnelles issues du message en échec.
/domains/{id}/dmarc/forensicParamètres de chemin
idstringobligatoiredom_…) ou le nom de domaine.Paramètres de requête
fromstringtostringlimitintegerpar défaut : 25offsetintegerpar défaut : 0Les filtres génériques key.condition=value fonctionnent aussi sur org_name et created_at, avec match, order et direction. Consultez Filtrage et tri.
Réponse
Renvoie data et meta (total, limit, offset). Chaque élément comporte :
objectstringdmarc_forensic_report.id, report_idstringdmr_…).arrival_datestring | nullsource_ipstring | nullcountry_code, country_name, continent_code, asn, as_org, latitude, longitudestring | integer | number | nullauth_failurestring | nulldmarc, spf ou dkim.authentication_resultsstring | nullAuthentication-Results du serveur destinataire.original_mail_from, original_rcpt_to, subjectstring | nulldelivery_resultstring | nullreject ou delivered.reported_domainstring | nullcreated_atstring | null{
"data": [
{
"object": "dmarc_forensic_report",
"id": "dmr_3MjUXgcEBO0o7FkzeBdlrCY6NYk",
"report_id": "dmr_3MjUXgcEBO0o7FkzeBdlrCY6NYk",
"arrival_date": "2026-09-28 17:44:02+00",
"source_ip": "203.0.113.77",
"country_code": "NL",
"country_name": "Netherlands",
"continent_code": "EU",
"asn": 64511,
"as_org": "Example Networks",
"latitude": 52.3824,
"longitude": 4.8995,
"auth_failure": "dmarc",
"authentication_results": "mx.example.net; dmarc=fail (p=none) header.from=acme.com; spf=softfail smtp.mailfrom=acme.com; dkim=none",
"original_mail_from": "billing@acme.com",
"original_rcpt_to": "ada@example.net",
"subject": "Your invoice is ready",
"delivery_result": "delivered",
"reported_domain": "acme.com",
"created_at": "2026-09-28 18:02:16.448210+00"
}
],
"meta": { "total": 1, "limit": 25, "offset": 0 }
}{
"error": "Domain not found"
}Récupérer un rapport forensique
Récupère un rapport forensique (RUF) avec les en-têtes du message qui a échoué à DMARC. Nécessite une clé API de portée full. Les rapports forensiques peuvent contenir des données personnelles, comme les adresses des destinataires et les objets des messages.
Les rapports n’arrivent que pour les domaines dont les rapports DMARC sont activés, ce qui nécessite le forfait Pro ou supérieur.
/domains/{id}/dmarc/forensic/{report_id}Paramètres de chemin
idstringobligatoiredom_…) ou le nom de domaine.report_idstringobligatoiredmr_…) d’un rapport forensique.Réponse
Renvoie le rapport forensique avec les champs décrits dans Lister les rapports forensiques, ainsi que :
headersstring | nullRenvoie 404 si le domaine n’existe pas, si le rapport n’existe pas ou s’il ne s’agit pas d’un rapport forensique traité.
{
"object": "dmarc_forensic_report",
"id": "dmr_3MjUXgcEBO0o7FkzeBdlrCY6NYk",
"report_id": "dmr_3MjUXgcEBO0o7FkzeBdlrCY6NYk",
"arrival_date": "2026-09-28 17:44:02+00",
"source_ip": "203.0.113.77",
"country_code": "NL",
"country_name": "Netherlands",
"continent_code": "EU",
"asn": 64511,
"as_org": "Example Networks",
"latitude": 52.3824,
"longitude": 4.8995,
"auth_failure": "dmarc",
"authentication_results": "mx.example.net; dmarc=fail (p=none) header.from=acme.com; spf=softfail smtp.mailfrom=acme.com; dkim=none",
"original_mail_from": "billing@acme.com",
"original_rcpt_to": "ada@example.net",
"subject": "Your invoice is ready",
"delivery_result": "delivered",
"reported_domain": "acme.com",
"headers": "From: Acme Billing <billing@acme.com>\r\nTo: ada@example.net\r\nSubject: Your invoice is ready\r\nDate: Mon, 28 Sep 2026 17:43:58 +0000\r\nMessage-ID: <20260928174358.4f1c@mail.acme.com>",
"created_at": "2026-09-28 18:02:16.448210+00"
}{
"error": "Forensic report not found"
}Récupérer les statistiques
Résume les rapports DMARC agrégés d’un domaine sur une période : le volume d’e-mails que les serveurs destinataires ont reçu de votre domaine, la part qui a réussi et sa provenance. Ce sont les données affichées dans l’onglet Overview sous Email APIDMARC reports. Nécessite une clé API de portée full.
Les rapports n’arrivent que pour les domaines dont les rapports DMARC sont activés (dmarc_reports: true dans Mettre à jour un domaine), ce qui nécessite le forfait Pro ou supérieur.
/domains/{id}/dmarc/statsParamètres de chemin
idstringobligatoiredom_…) ou le nom de domaine.Paramètres de requête
fromstring2026-09-01. Sans ce paramètre, tous les rapports sont comptés.tostringRéponse
Renvoie data avec les champs suivants. Un message est considéré comme réussi lorsque son résultat DKIM ou SPF aligné sur DMARC est pass.
total_volumeintegerpass_volume, fail_volumeintegerpass_ratenumber0 en l’absence de volume.report_countintegerdispositionsobject[]disposition (none, quarantine, reject) et volume.dkim, spfobject[]result (pass ou fail) et volume.dailyobject[]date au format YYYY-MM-DD, UTC) avec volume, pass_volume et fail_volume.daily_dispositions, daily_dkim, daily_spfobject[]date, disposition ou result, et volume.top_countriesobject[]country_code, country_name, volume, pass_volume, fail_volume.top_asnsobject[]asn, as_org, volume, pass_volume, fail_volume.unknown_geo_volumeintegerRenvoie 404 si le domaine n’existe pas dans l’espace de travail.
{
"data": {
"total_volume": 3712,
"pass_volume": 3688,
"fail_volume": 24,
"pass_rate": 99.35,
"report_count": 6,
"dispositions": [
{ "disposition": "none", "volume": 3712 }
],
"dkim": [
{ "result": "pass", "volume": 3680 },
{ "result": "fail", "volume": 32 }
],
"spf": [
{ "result": "pass", "volume": 3676 },
{ "result": "fail", "volume": 36 }
],
"daily": [
{ "date": "2026-09-28", "volume": 1860, "pass_volume": 1848, "fail_volume": 12 },
{ "date": "2026-09-29", "volume": 1852, "pass_volume": 1840, "fail_volume": 12 }
],
"daily_dispositions": [
{ "date": "2026-09-28", "disposition": "none", "volume": 1860 },
{ "date": "2026-09-29", "disposition": "none", "volume": 1852 }
],
"daily_dkim": [
{ "date": "2026-09-28", "result": "pass", "volume": 1844 },
{ "date": "2026-09-28", "result": "fail", "volume": 16 },
{ "date": "2026-09-29", "result": "pass", "volume": 1836 },
{ "date": "2026-09-29", "result": "fail", "volume": 16 }
],
"daily_spf": [
{ "date": "2026-09-28", "result": "pass", "volume": 1842 },
{ "date": "2026-09-28", "result": "fail", "volume": 18 },
{ "date": "2026-09-29", "result": "pass", "volume": 1834 },
{ "date": "2026-09-29", "result": "fail", "volume": 18 }
],
"top_countries": [
{ "country_code": "US", "country_name": "United States", "volume": 3688, "pass_volume": 3688, "fail_volume": 0 },
{ "country_code": "NL", "country_name": "Netherlands", "volume": 24, "pass_volume": 0, "fail_volume": 24 }
],
"top_asns": [
{ "asn": 64500, "as_org": "Example Hosting", "volume": 3688, "pass_volume": 3688, "fail_volume": 0 },
{ "asn": 64511, "as_org": "Example Networks", "volume": 24, "pass_volume": 0, "fail_volume": 24 }
],
"unknown_geo_volume": 0
}
}{
"error": "Domain not found"
}Lister les sources d’envoi
Regroupe les données DMARC agrégées d’un domaine par adresse IP source, du volume le plus élevé au plus faible. Utilisez-le pour repérer les serveurs qui envoient au nom de votre domaine mais échouent à SPF et à DKIM. Nécessite une clé API de portée full.
Les rapports n’arrivent que pour les domaines dont les rapports DMARC sont activés, ce qui nécessite le forfait Pro ou supérieur.
/domains/{id}/dmarc/sourcesParamètres de chemin
idstringobligatoiredom_…) ou le nom de domaine.Paramètres de requête
fromstringtostringlimitintegerpar défaut : 50offsetintegerpar défaut : 0Réponse
Renvoie data et meta (limit, offset). La réponse n’indique pas de total : demandez la page suivante jusqu’à ce que data contienne moins d’éléments que limit. Chaque source comporte :
source_ipstringcountry_code, country_namestring | nullasn, as_orginteger | string | nullvolumeintegerpass_volume, fail_volumeintegerRenvoie 404 si le domaine n’existe pas dans l’espace de travail.
{
"data": [
{
"source_ip": "198.51.100.24",
"country_code": "US",
"country_name": "United States",
"asn": 64500,
"as_org": "Example Hosting",
"volume": 3688,
"pass_volume": 3688,
"fail_volume": 0
},
{
"source_ip": "203.0.113.77",
"country_code": "NL",
"country_name": "Netherlands",
"asn": 64511,
"as_org": "Example Networks",
"volume": 24,
"pass_volume": 0,
"fail_volume": 24
}
],
"meta": { "limit": 50, "offset": 0 }
}{
"error": "Domain not found"
}Lister les pays
Regroupe les données DMARC agrégées d’un domaine par pays de l’IP d’envoi, du volume le plus élevé au plus faible. Nécessite une clé API de portée full.
Les rapports n’arrivent que pour les domaines dont les rapports DMARC sont activés, ce qui nécessite le forfait Pro ou supérieur.
/domains/{id}/dmarc/countriesParamètres de chemin
idstringobligatoiredom_…) ou le nom de domaine.Paramètres de requête
fromstringtostringlimitintegerpar défaut : 50offsetintegerpar défaut : 0Réponse
Renvoie data et meta (limit, offset). Chaque pays comporte :
country_codestring | nullnull regroupe les adresses IP qui n’ont pas pu être localisées.country_namestring | nullcontinent_codestring | nullEU.volumeintegerpass_volume, fail_volumeintegerRenvoie 404 si le domaine n’existe pas dans l’espace de travail.
{
"data": [
{
"country_code": "US",
"country_name": "United States",
"continent_code": "NA",
"volume": 3688,
"pass_volume": 3688,
"fail_volume": 0
},
{
"country_code": "NL",
"country_name": "Netherlands",
"continent_code": "EU",
"volume": 24,
"pass_volume": 0,
"fail_volume": 24
}
],
"meta": { "limit": 50, "offset": 0 }
}{
"error": "Domain not found"
}Lister les réseaux (ASN)
Regroupe les données DMARC agrégées d’un domaine par système autonome (ASN) de l’IP d’envoi, du volume le plus élevé au plus faible. Un réseau correspond généralement à un hébergeur ou à un service d’e-mail, ce qui permet de reconnaître plus facilement les expéditeurs légitimes. Nécessite une clé API de portée full.
Les rapports n’arrivent que pour les domaines dont les rapports DMARC sont activés, ce qui nécessite le forfait Pro ou supérieur.
/domains/{id}/dmarc/asnsParamètres de chemin
idstringobligatoiredom_…) ou le nom de domaine.Paramètres de requête
fromstringtostringlimitintegerpar défaut : 50offsetintegerpar défaut : 0Réponse
Renvoie data et meta (limit, offset). Chaque réseau comporte :
asninteger | nullnull regroupe les adresses IP qui n’ont pas pu être identifiées.as_orgstring | nullvolumeintegerpass_volume, fail_volumeintegerRenvoie 404 si le domaine n’existe pas dans l’espace de travail.
{
"data": [
{
"asn": 64500,
"as_org": "Example Hosting",
"volume": 3688,
"pass_volume": 3688,
"fail_volume": 0
},
{
"asn": 64511,
"as_org": "Example Networks",
"volume": 24,
"pass_volume": 0,
"fail_volume": 24
}
],
"meta": { "limit": 50, "offset": 0 }
}{
"error": "Domain not found"
}Lister les émetteurs de rapports
Liste les organisations qui ont envoyé des rapports agrégés traités pour un domaine, par nombre de rapports décroissant. Nécessite une clé API de portée full.
Les rapports n’arrivent que pour les domaines dont les rapports DMARC sont activés, ce qui nécessite le forfait Pro ou supérieur.
/domains/{id}/dmarc/reportersParamètres de chemin
idstringobligatoiredom_…) ou le nom de domaine.Paramètres de requête
fromstringtostringlimitintegerpar défaut : 50offsetintegerpar défaut : 0Réponse
Renvoie data et meta (limit, offset). Chaque émetteur comporte :
org_namestring | nullgoogle.com. Transmettez-le comme org_name à Lister les rapports agrégés pour voir ses rapports.org_emailstring | nullreport_countintegerRenvoie 404 si le domaine n’existe pas dans l’espace de travail.
{
"data": [
{ "org_name": "google.com", "org_email": "noreply-dmarc-support@google.com", "report_count": 30 },
{ "org_name": "Enterprise Outlook", "org_email": "dmarcreport@microsoft.com", "report_count": 28 },
{ "org_name": "Yahoo", "org_email": "dmarchelp@yahooinc.com", "report_count": 14 }
],
"meta": { "limit": 50, "offset": 0 }
}{
"error": "Domain not found"
}