DMARC-Berichte
Aggregierte und forensische DMARC-Berichte einer Versanddomain lesen oder eigene hochladen.
- 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
Aggregierte Berichte auflisten
Gibt die DMARC-Berichte einer Versanddomain zurück, die neuesten zuerst. Erfordert einen API-Schlüssel mit dem Scope full.
Emailit sammelt Berichte nur für Domains mit aktivierten DMARC-Berichten (dmarc_reports: true in Domain aktualisieren); dafür benötigen Sie mindestens den Tarif Pro. Siehe DMARC-Berichte.
Die Liste enthält auch forensische Berichte. Übergeben Sie type=aggregate, um nur aggregierte Berichte aufzulisten, oder nutzen Sie Forensische Berichte auflisten für forensische Details.
/domains/{id}/dmarc/reportsPfadparameter
idstringerforderlichdom_…) oder der Domainname, zum Beispiel acme.com.Query-Parameter
typestringaggregate oder forensic.statusstringpending, processed, failed oder duplicate.org_namestringgoogle.com.fromstring2026-09-01.tostringlimitintegerStandardwert: 25offsetintegerStandardwert: 0matchstringall (Standardwert) verlangt, dass alle Filter zutreffen. or trifft zu, wenn ein beliebiger Filter passt. Siehe Filtern und Sortieren.
orderstringSortierschlüssel für diese Liste. Siehe die Sortierschlüssel unten.
directionstringasc oder desc.
Die allgemeinen Filter key.condition=value funktionieren auch für type, status, org_name und created_at; das sind auch die Sortierschlüssel für order. Siehe Filtern und Sortieren.
Rückgabe
Gibt data zurück, ein Array von Bericht-Objekten, sowie meta mit total, limit und offset.
idstringdmr_.typestring | nullaggregate oder forensic. null, bis ein hochgeladener Bericht verarbeitet ist.sourcestringsmtp für Berichte, die Emailit an der Berichtsadresse der Domain empfangen hat, upload für Berichte, die Sie hochgeladen haben.statusstringpending, processed, failed (siehe error_message) oder duplicate (derselbe Bericht wurde bereits verarbeitet).org_name, org_emailstring | nullexternal_report_idstring | nulldate_range_begin, date_range_endstring | nullpolicy_domain, adkim, aspf, p, sp, pct, fostring | integer | nullr oder s), Richtlinie und Subdomain-Richtlinie (none, quarantine, reject), Prozentsatz und Optionen für Fehlerberichte.original_filenamestring | nullenvelope_tostring | nullcreated_at, updated_at, processed_atstring | nullGibt 404 zurück, wenn die Domain im Workspace nicht existiert.
{
"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"
}Bericht abrufen
Ruft einen DMARC-Bericht ab. Bei einem aggregierten Bericht enthält die Antwort seine Datensätze, einen pro sendender Quelle, sortiert nach Anzahl der Nachrichten. Bei einem forensischen Bericht enthält sie das Fehlerbeispiel in forensic. Erfordert einen API-Schlüssel mit dem Scope full.
Berichte gehen nur für Domains mit aktivierten DMARC-Berichten ein; dafür benötigen Sie mindestens den Tarif Pro.
/domains/{id}/dmarc/reports/{report_id}Pfadparameter
idstringerforderlichdom_…) oder der Domainname.report_idstringerforderlichdmr_…).Query-Parameter
limitintegerStandardwert: 100offsetintegerStandardwert: 0Rückgabe
Gibt das Bericht-Objekt (siehe Aggregierte Berichte auflisten) zurück, dazu:
recordsobject[]metaobjecttotal (Anzahl der Datensätze), limit und offset.forensicobject | nullJeder Datensatz hat:
source_ipstringcountintegercountry_code, country_name, continent_code, asn, as_org, latitude, longitudestring | integer | number | nullnull, wenn sich die IP nicht lokalisieren ließ.dispositionstringnone, quarantine oder reject.dkim, spfstringpass oder fail.header_from, envelope_from, envelope_tostring | nulldkim_domain, dkim_selector, dkim_resultstring | nullspf_domain, spf_resultstring | nullreason_type, reason_commentstring | nullforwarded oder mailing_list.Gibt 404 zurück, wenn die Domain oder der Bericht nicht existiert.
{
"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"
}Bericht hochladen
Lädt einen DMARC-Bericht hoch, den Sie anderswo erhalten haben, zum Beispiel in einem Postfach, das Sie vor Emailit genutzt haben. Erfordert einen API-Schlüssel mit dem Scope full.
Emailit speichert die Datei und verarbeitet sie im Hintergrund: Die Antwort hat den Status pending, kurz darauf wechselt der Bericht zu processed, failed oder duplicate (bereits importiert). Prüfen Sie ihn mit Bericht abrufen. Berichte, die Emailit per E-Mail empfängt, setzen aktivierte DMARC-Berichte für die Domain voraus (ab Pro); hochgeladene Berichte werden in jedem Fall verarbeitet.
/domains/{id}/dmarc/reportsPfadparameter
idstringerforderlichdom_…) oder der Domainname.Body-Parameter
Senden Sie genau eines der Felder content_base64 oder content. Der dekodierte Bericht darf bis zu 10 MB groß sein.
content_base64string.xml, .xml.gz oder .zip und forensische Berichte als .eml (AFRF).contentstringfilenamestringoriginal_filename.Rückgabe
Gibt 202 Accepted mit dem neuen Bericht-Objekt zurück. type ist null, bis die Verarbeitung den Typ erkennt.
| Status | Wann |
|---|---|
400 |
Weder content_base64 noch content ist gesetzt oder der Wert ist leer. |
404 |
Die Domain existiert im Workspace nicht. |
413 |
Der dekodierte Bericht ist größer als 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"
}Forensische Berichte auflisten
Gibt die verarbeiteten forensischen Berichte (RUF) einer Domain zurück, die neuesten zuerst. Jeder beschreibt eine Nachricht, die DMARC nicht bestanden hat. Die Header fehlen in der Liste; um sie zu sehen, rufen Sie einen forensischen Bericht ab. Erfordert einen API-Schlüssel mit dem Scope full.
Berichte gehen nur für Domains mit aktivierten DMARC-Berichten ein; dafür benötigen Sie mindestens den Tarif Pro. Nur wenige Postfachanbieter senden forensische Berichte, und diese können personenbezogene Daten aus der fehlgeschlagenen Nachricht enthalten.
/domains/{id}/dmarc/forensicPfadparameter
idstringerforderlichdom_…) oder der Domainname.Query-Parameter
fromstringtostringlimitintegerStandardwert: 25offsetintegerStandardwert: 0Die allgemeinen Filter key.condition=value funktionieren auch für org_name und created_at, zusammen mit match, order und direction. Siehe Filtern und Sortieren.
Rückgabe
Gibt data und meta (total, limit, offset) zurück. Jeder Eintrag hat:
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 oder dkim.authentication_resultsstring | nullAuthentication-Results des Empfangsservers.original_mail_from, original_rcpt_to, subjectstring | nulldelivery_resultstring | nullreject oder 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"
}Forensischen Bericht abrufen
Ruft einen forensischen Bericht (RUF) mit den Headern der Nachricht ab, die DMARC nicht bestanden hat. Erfordert einen API-Schlüssel mit dem Scope full. Forensische Berichte können personenbezogene Daten enthalten, etwa Empfängeradressen und Betreffzeilen.
Berichte gehen nur für Domains mit aktivierten DMARC-Berichten ein; dafür benötigen Sie mindestens den Tarif Pro.
/domains/{id}/dmarc/forensic/{report_id}Pfadparameter
idstringerforderlichdom_…) oder der Domainname.report_idstringerforderlichdmr_…) eines forensischen Berichts.Rückgabe
Gibt den forensischen Bericht mit den unter Forensische Berichte auflisten beschriebenen Feldern zurück, dazu:
headersstring | nullGibt 404 zurück, wenn die Domain oder der Bericht nicht existiert oder es kein verarbeiteter forensischer Bericht ist.
{
"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"
}Statistiken abrufen
Fasst die aggregierten DMARC-Berichte einer Domain über einen Zeitraum zusammen: wie viele E-Mails Empfangsserver von Ihrer Domain gesehen haben, wie viele davon bestanden haben und woher sie kamen. Auf diesen Daten basiert der Tab Overview unter Email APIDMARC reports. Erfordert einen API-Schlüssel mit dem Scope full.
Berichte gehen nur für Domains mit aktivierten DMARC-Berichten ein (dmarc_reports: true in Domain aktualisieren); dafür benötigen Sie mindestens den Tarif Pro.
/domains/{id}/dmarc/statsPfadparameter
idstringerforderlichdom_…) oder der Domainname.Query-Parameter
fromstring2026-09-01. Ohne diesen Parameter werden alle Berichte gezählt.tostringRückgabe
Gibt data mit diesen Feldern zurück. Eine Nachricht gilt als bestanden, wenn ihr DKIM- oder SPF-Ergebnis mit DMARC-Alignment pass ist.
total_volumeintegerpass_volume, fail_volumeintegerpass_ratenumber0, wenn kein Volumen vorliegt.report_countintegerdispositionsobject[]disposition (none, quarantine, reject) und volume.dkim, spfobject[]result (pass oder fail) und volume.dailyobject[]date als YYYY-MM-DD, UTC) mit volume, pass_volume und fail_volume.daily_dispositions, daily_dkim, daily_spfobject[]date, disposition bzw. result und volume.top_countriesobject[]country_code, country_name, volume, pass_volume, fail_volume.top_asnsobject[]asn, as_org, volume, pass_volume, fail_volume.unknown_geo_volumeintegerGibt 404 zurück, wenn die Domain im Workspace nicht existiert.
{
"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"
}Versandquellen auflisten
Gruppiert die aggregierten DMARC-Daten einer Domain nach Quell-IP-Adresse, das höchste Volumen zuerst. So erkennen Sie Server, die im Namen Ihrer Domain senden, aber SPF und DKIM nicht bestehen. Erfordert einen API-Schlüssel mit dem Scope full.
Berichte gehen nur für Domains mit aktivierten DMARC-Berichten ein; dafür benötigen Sie mindestens den Tarif Pro.
/domains/{id}/dmarc/sourcesPfadparameter
idstringerforderlichdom_…) oder der Domainname.Query-Parameter
fromstringtostringlimitintegerStandardwert: 50offsetintegerStandardwert: 0Rückgabe
Gibt data und meta (limit, offset) zurück. Die Antwort enthält keine Gesamtzahl; rufen Sie die nächste Seite ab, bis data weniger Einträge als limit enthält. Jede Quelle hat:
source_ipstringcountry_code, country_namestring | nullasn, as_orginteger | string | nullvolumeintegerpass_volume, fail_volumeintegerGibt 404 zurück, wenn die Domain im Workspace nicht existiert.
{
"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"
}Länder auflisten
Gruppiert die aggregierten DMARC-Daten einer Domain nach dem Land der sendenden IP, das höchste Volumen zuerst. Erfordert einen API-Schlüssel mit dem Scope full.
Berichte gehen nur für Domains mit aktivierten DMARC-Berichten ein; dafür benötigen Sie mindestens den Tarif Pro.
/domains/{id}/dmarc/countriesPfadparameter
idstringerforderlichdom_…) oder der Domainname.Query-Parameter
fromstringtostringlimitintegerStandardwert: 50offsetintegerStandardwert: 0Rückgabe
Gibt data und meta (limit, offset) zurück. Jedes Land hat:
country_codestring | nullnull fasst IP-Adressen zusammen, die sich nicht lokalisieren ließen.country_namestring | nullcontinent_codestring | nullEU.volumeintegerpass_volume, fail_volumeintegerGibt 404 zurück, wenn die Domain im Workspace nicht existiert.
{
"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"
}Netzwerke (ASNs) auflisten
Gruppiert die aggregierten DMARC-Daten einer Domain nach dem autonomen System (ASN) der sendenden IP, das höchste Volumen zuerst. Ein Netzwerk entspricht meist einem Hosting-Anbieter oder E-Mail-Dienst, wodurch sich legitime Absender leichter erkennen lassen. Erfordert einen API-Schlüssel mit dem Scope full.
Berichte gehen nur für Domains mit aktivierten DMARC-Berichten ein; dafür benötigen Sie mindestens den Tarif Pro.
/domains/{id}/dmarc/asnsPfadparameter
idstringerforderlichdom_…) oder der Domainname.Query-Parameter
fromstringtostringlimitintegerStandardwert: 50offsetintegerStandardwert: 0Rückgabe
Gibt data und meta (limit, offset) zurück. Jedes Netzwerk hat:
asninteger | nullnull fasst IP-Adressen zusammen, die sich nicht zuordnen ließen.as_orgstring | nullvolumeintegerpass_volume, fail_volumeintegerGibt 404 zurück, wenn die Domain im Workspace nicht existiert.
{
"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"
}Berichtende Organisationen auflisten
Listet die Organisationen auf, die verarbeitete aggregierte Berichte für eine Domain gesendet haben, die mit den meisten Berichten zuerst. Erfordert einen API-Schlüssel mit dem Scope full.
Berichte gehen nur für Domains mit aktivierten DMARC-Berichten ein; dafür benötigen Sie mindestens den Tarif Pro.
/domains/{id}/dmarc/reportersPfadparameter
idstringerforderlichdom_…) oder der Domainname.Query-Parameter
fromstringtostringlimitintegerStandardwert: 50offsetintegerStandardwert: 0Rückgabe
Gibt data und meta (limit, offset) zurück. Jede Organisation hat:
org_namestring | nullgoogle.com. Übergeben Sie ihn als org_name an Aggregierte Berichte auflisten, um ihre Berichte zu sehen.org_emailstring | nullreport_countintegerGibt 404 zurück, wenn die Domain im Workspace nicht existiert.
{
"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"
}