Report DMARC
Leggi i report DMARC aggregati e forensi di un dominio di invio, o carica i tuoi.
- 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
Elenca i report aggregati
Restituisce i report DMARC di un dominio di invio, a partire dal più recente. Richiede una chiave API con il permesso full.
Emailit raccoglie i report solo per i domini con i report DMARC attivati (dmarc_reports: true in Aggiorna un dominio), che richiedono il piano Pro o superiore. Vedi Report DMARC.
L’elenco include anche i report forensi. Passa type=aggregate per elencare solo i report aggregati, oppure usa Elenca i report forensi per i dettagli forensi.
/domains/{id}/dmarc/reportsParametri di percorso
idstringobbligatoriodom_…) o il nome del dominio, ad esempio acme.com.Parametri di query
typestringaggregate o forensic.statusstringpending, processed, failed o duplicate.org_namestringgoogle.com.fromstring2026-09-01.tostringlimitintegerpredefinito: 25offsetintegerpredefinito: 0matchstringall (predefinito) richiede che corrispondano tutti i filtri. or richiede che ne corrisponda almeno uno. Vedi Filtri e ordinamento.
orderstringChiave di ordinamento di questo elenco. Vedi le chiavi di ordinamento qui sotto.
directionstringasc o desc.
I filtri generici key.condition=value funzionano anche su type, status, org_name e created_at, che sono anche le chiavi di ordinamento per order. Vedi Filtri e ordinamento.
Restituisce
Restituisce data, un array di oggetti report, e meta con total, limit e offset.
idstringdmr_.typestring | nullaggregate o forensic. null finché un report caricato non viene elaborato.sourcestringsmtp per i report che Emailit ha ricevuto all’indirizzo di raccolta dei report del dominio, upload per i report che hai caricato.statusstringpending, processed, failed (vedi error_message) o duplicate (lo stesso report era già stato elaborato).org_name, org_emailstring | nullexternal_report_idstring | nulldate_range_begin, date_range_endstring | nullpolicy_domain, adkim, aspf, p, sp, pct, fostring | integer | nullr o s), policy e policy dei sottodomini (none, quarantine, reject), percentuale e opzioni per i report di errore.original_filenamestring | nullenvelope_tostring | nullcreated_at, updated_at, processed_atstring | nullRestituisce 404 se il dominio non esiste nel workspace.
{
"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"
}Recupera un report
Recupera un report DMARC. Per un report aggregato, la risposta include i suoi record, uno per sorgente di invio, ordinati per numero di messaggi. Per un report forense, include il campione dell’errore in forensic. Richiede una chiave API con il permesso full.
I report arrivano solo per i domini con i report DMARC attivati, che richiedono il piano Pro o superiore.
/domains/{id}/dmarc/reports/{report_id}Parametri di percorso
idstringobbligatoriodom_…) o il nome del dominio.report_idstringobbligatoriodmr_…).Parametri di query
limitintegerpredefinito: 100offsetintegerpredefinito: 0Restituisce
Restituisce l’oggetto report (vedi Elenca i report aggregati) più:
recordsobject[]metaobjecttotal (numero di record), limit e offset.forensicobject | nullOgni record ha:
source_ipstringcountintegercountry_code, country_name, continent_code, asn, as_org, latitude, longitudestring | integer | number | nullnull quando non è stato possibile localizzare l’IP.dispositionstringnone, quarantine o reject.dkim, spfstringpass o fail.header_from, envelope_from, envelope_tostring | nulldkim_domain, dkim_selector, dkim_resultstring | nullspf_domain, spf_resultstring | nullreason_type, reason_commentstring | nullforwarded o mailing_list.Restituisce 404 se il dominio o il report non esiste.
{
"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"
}Carica un report
Carica un report DMARC che hai ricevuto altrove, ad esempio in una casella che usavi prima di Emailit. Richiede una chiave API con il permesso full.
Emailit salva il file e lo elabora in background: la risposta ha lo stato pending, e poco dopo il report diventa processed, failed o duplicate (già importato). Controllalo con Recupera un report. Per i report che Emailit riceve via email, il dominio deve avere i report DMARC attivati (piano Pro o superiore); i report caricati vengono elaborati in ogni caso.
/domains/{id}/dmarc/reportsParametri di percorso
idstringobbligatoriodom_…) o il nome del dominio.Parametri del corpo
Invia uno solo tra content_base64 e content. Il report decodificato può pesare fino a 10 MB.
content_base64string.xml, .xml.gz o .zip, e report forensi in .eml (AFRF).contentstringfilenamestringoriginal_filename.Restituisce
Restituisce 202 Accepted con il nuovo oggetto report. type è null finché l’elaborazione non lo rileva.
| Stato | Quando |
|---|---|
400 |
Non è impostato né content_base64 né content, oppure il valore è vuoto. |
404 |
Il dominio non esiste nel workspace. |
413 |
Il report decodificato supera i 10 MB. |
{
"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"
}Elenca i report forensi
Restituisce i report forensi (RUF) elaborati per un dominio, a partire dal più recente. Ognuno descrive un messaggio che non ha superato DMARC. Gli header non sono inclusi nell’elenco; per vederli, recupera un report forense. Richiede una chiave API con il permesso full.
I report arrivano solo per i domini con i report DMARC attivati, che richiedono il piano Pro o superiore. Pochi provider di posta inviano report forensi, e quelli che lo fanno possono includere dati personali del messaggio non riuscito.
/domains/{id}/dmarc/forensicParametri di percorso
idstringobbligatoriodom_…) o il nome del dominio.Parametri di query
fromstringtostringlimitintegerpredefinito: 25offsetintegerpredefinito: 0I filtri generici key.condition=value funzionano anche su org_name e created_at, con match, order e direction. Vedi Filtri e ordinamento.
Restituisce
Restituisce data e meta (total, limit, offset). Ogni elemento ha:
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 o dkim.authentication_resultsstring | nullAuthentication-Results del server ricevente.original_mail_from, original_rcpt_to, subjectstring | nulldelivery_resultstring | nullreject o 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"
}Recupera un report forense
Recupera un report forense (RUF) con gli header del messaggio che non ha superato DMARC. Richiede una chiave API con il permesso full. I report forensi possono contenere dati personali, come gli indirizzi dei destinatari e gli oggetti.
I report arrivano solo per i domini con i report DMARC attivati, che richiedono il piano Pro o superiore.
/domains/{id}/dmarc/forensic/{report_id}Parametri di percorso
idstringobbligatoriodom_…) o il nome del dominio.report_idstringobbligatoriodmr_…).Restituisce
Restituisce il report forense con i campi descritti in Elenca i report forensi, più:
headersstring | nullRestituisce 404 se il dominio non esiste, se il report non esiste o se non è un report forense elaborato.
{
"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"
}Recupera le statistiche
Riepiloga i report DMARC aggregati di un dominio in un intervallo di date: quanta posta dal tuo dominio hanno visto i server riceventi, quanta ha superato il controllo e da dove proveniva. Sono i dati alla base della scheda Overview in Email APIDMARC reports. Richiede una chiave API con il permesso full.
I report arrivano solo per i domini con i report DMARC attivati (dmarc_reports: true in Aggiorna un dominio), che richiedono il piano Pro o superiore.
/domains/{id}/dmarc/statsParametri di percorso
idstringobbligatoriodom_…) o il nome del dominio.Parametri di query
fromstring2026-09-01. Se lo ometti, vengono contati tutti i report.tostringRestituisce
Restituisce data con questi campi. Un messaggio supera il controllo quando il suo esito DKIM o SPF allineato a DMARC è pass.
total_volumeintegerpass_volume, fail_volumeintegerpass_ratenumber0 quando non c’è volume.report_countintegerdispositionsobject[]disposition (none, quarantine, reject) e volume.dkim, spfobject[]result (pass o fail) e volume.dailyobject[]date nel formato YYYY-MM-DD, UTC) con volume, pass_volume e fail_volume.daily_dispositions, daily_dkim, daily_spfobject[]date, disposition o result, e volume.top_countriesobject[]country_code, country_name, volume, pass_volume, fail_volume.top_asnsobject[]asn, as_org, volume, pass_volume, fail_volume.unknown_geo_volumeintegerRestituisce 404 se il dominio non esiste nel workspace.
{
"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"
}Elenca le sorgenti di invio
Raggruppa i dati DMARC aggregati di un dominio per indirizzo IP di origine, a partire dal volume più alto. Usalo per individuare i server che inviano a nome del tuo dominio ma non superano SPF e DKIM. Richiede una chiave API con il permesso full.
I report arrivano solo per i domini con i report DMARC attivati, che richiedono il piano Pro o superiore.
/domains/{id}/dmarc/sourcesParametri di percorso
idstringobbligatoriodom_…) o il nome del dominio.Parametri di query
fromstringtostringlimitintegerpredefinito: 50offsetintegerpredefinito: 0Restituisce
Restituisce data e meta (limit, offset). La risposta non contiene un totale: richiedi la pagina successiva finché data non ha meno elementi di limit. Ogni sorgente ha:
source_ipstringcountry_code, country_namestring | nullasn, as_orginteger | string | nullvolumeintegerpass_volume, fail_volumeintegerRestituisce 404 se il dominio non esiste nel workspace.
{
"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"
}Elenca i paesi
Raggruppa i dati DMARC aggregati di un dominio per paese dell’IP mittente, a partire dal volume più alto. Richiede una chiave API con il permesso full.
I report arrivano solo per i domini con i report DMARC attivati, che richiedono il piano Pro o superiore.
/domains/{id}/dmarc/countriesParametri di percorso
idstringobbligatoriodom_…) o il nome del dominio.Parametri di query
fromstringtostringlimitintegerpredefinito: 50offsetintegerpredefinito: 0Restituisce
Restituisce data e meta (limit, offset). Ogni paese ha:
country_codestring | nullnull raggruppa gli indirizzi IP che non è stato possibile localizzare.country_namestring | nullcontinent_codestring | nullEU.volumeintegerpass_volume, fail_volumeintegerRestituisce 404 se il dominio non esiste nel workspace.
{
"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"
}Elenca le reti (ASN)
Raggruppa i dati DMARC aggregati di un dominio per sistema autonomo (ASN) dell’IP mittente, a partire dal volume più alto. Una rete corrisponde di solito a un provider di hosting o a un servizio email, e questo rende più facile riconoscere i mittenti legittimi. Richiede una chiave API con il permesso full.
I report arrivano solo per i domini con i report DMARC attivati, che richiedono il piano Pro o superiore.
/domains/{id}/dmarc/asnsParametri di percorso
idstringobbligatoriodom_…) o il nome del dominio.Parametri di query
fromstringtostringlimitintegerpredefinito: 50offsetintegerpredefinito: 0Restituisce
Restituisce data e meta (limit, offset). Ogni rete ha:
asninteger | nullnull raggruppa gli indirizzi IP che non è stato possibile identificare.as_orgstring | nullvolumeintegerpass_volume, fail_volumeintegerRestituisce 404 se il dominio non esiste nel workspace.
{
"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"
}Elenca i mittenti dei report
Elenca le organizzazioni che hanno inviato report aggregati elaborati per un dominio, a partire da quella con più report. Richiede una chiave API con il permesso full.
I report arrivano solo per i domini con i report DMARC attivati, che richiedono il piano Pro o superiore.
/domains/{id}/dmarc/reportersParametri di percorso
idstringobbligatoriodom_…) o il nome del dominio.Parametri di query
fromstringtostringlimitintegerpredefinito: 50offsetintegerpredefinito: 0Restituisce
Restituisce data e meta (limit, offset). Ogni mittente ha:
org_namestring | nullgoogle.com. Passalo come org_name a Elenca i report aggregati per vederne i report.org_emailstring | nullreport_countintegerRestituisce 404 se il dominio non esiste nel workspace.
{
"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"
}