DMARC-Aggregatberichte sind XML-Dateien, die Mailbox-Anbieter Ihnen meist einmal täglich senden und die jede Quelle auflisten, die Mails im Namen Ihrer Domain versendet hat, und ob sie SPF, DKIM und Alignment bestanden hat. Mit ihrer Hilfe finden Sie jeden legitimen Absender, beheben die fehlschlagenden und entdecken, wer Ihre Domain fälscht, sodass Sie von p=none auf p=reject umstellen können, ohne echte Mails zu blockieren.
Hier beginnen. Dieser Leitfaden setzt voraus, dass Sie bereits einen DMARC-Eintrag veröffentlichen. Falls nicht, folgen Sie zuerst dem Leitfaden zur Authentifizierung einer Absenderdomain und kehren Sie zurück, sobald Berichte eintreffen.
Die Kurzfassung
- Berichte anfordern. Fügen Sie Ihrem DMARC-Eintrag eine rua-Adresse hinzu, solange die Richtlinie p=none ist.
- Warten und sammeln. Sammeln Sie zwei bis vier Wochen Berichte, einschließlich eines eventuellen monatlichen Versands.
- Quellen einordnen. Markieren Sie jede Quell-IP als legitim und im Alignment, legitim aber fehlschlagend oder unbekannt.
- Fehlerhaftes beheben. Geben Sie jedem legitimen Dienst eine DKIM-Signatur oder einen Return-Path im Alignment.
- Schrittweise durchsetzen. Quarantäne mit niedrigem Prozentsatz, dann steigern, dann auf reject umstellen.
Der DMARC-Eintrag, der Berichte anfordert
_dmarc.example.com. 3600 IN TXT "v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com; adkim=r; aspf=r"
| Tag | Bedeutung |
|---|---|
p | Richtlinie für fehlschlagende Mails: none (überwachen), quarantine oder reject |
rua | Wohin Aggregatberichte gesendet werden, als eine oder mehrere mailto:-Adressen |
adkim, aspf | Alignment-Modus: r für relaxed (eine Subdomain darf übereinstimmen), s für strict (exakte Übereinstimmung) |
sp | Richtlinie für Subdomains, falls abweichend von p |
pct | Prozentsatz der fehlschlagenden Mails, auf den die Richtlinie angewendet wird |
Nutzen Sie ein eigenes Postfach. Berichte sind zahlreich und groß. Senden Sie sie an eine dedizierte Adresse oder an einen Dienst zur Berichtsverarbeitung, nicht an eine Person.
Berichte an eine andere Domain senden
Wenn die rua-Adresse auf einer anderen Domain liegt als die, über die berichtet wird, muss diese andere Domain einen Eintrag veröffentlichen, der dies erlaubt. Andernfalls senden Anbieter keine Berichte. Für Berichte über example.com, die an reports.example.net gehen:
example.com._report._dmarc.reports.example.net. 3600 IN TXT "v=DMARC1"
Was in einem Bericht steht
Berichte kommen als Anhang, meist mit gzip oder zip komprimiert. Wenn Sie einen öffnen, finden Sie drei Teile: Informationen über den Absender des Berichts, die Richtlinie, die der Anbieter gefunden hat, und eine Liste von Zeilen, je eine pro Kombination aus Quell-IP und Ergebnis.
<feedback>
<report_metadata>
<org_name>google.com</org_name>
<report_id>1234567890</report_id>
<date_range><begin>1759708800</begin><end>1759795199</end></date_range>
</report_metadata>
<policy_published>
<domain>example.com</domain><adkim>r</adkim><aspf>r</aspf><p>none</p><pct>100</pct>
</policy_published>
<record>
<row>
<source_ip>203.0.113.10</source_ip>
<count>1250</count>
<policy_evaluated><disposition>none</disposition><dkim>pass</dkim><spf>pass</spf></policy_evaluated>
</row>
<identifiers><header_from>example.com</header_from></identifiers>
<auth_results>
<dkim><domain>example.com</domain><selector>mail1</selector><result>pass</result></dkim>
<spf><domain>bounce.example.com</domain><result>pass</result></spf>
</auth_results>
</record>
</feedback>
| Feld | Was es Ihnen sagt |
|---|---|
org_name | Welcher Mailbox-Anbieter den Bericht gesendet hat |
date_range | Der abgedeckte Zeitraum, als Unix-Zeitstempel |
policy_published | Die DMARC-Richtlinie, die der Anbieter gesehen hat, damit Sie bestätigen können, dass Ihr Eintrag aktiv ist |
source_ip und count | Der sendende Server und wie viele Nachrichten er im Zeitraum gesendet hat |
policy_evaluated | Das für DMARC maßgebliche Ergebnis: dkim und spf bedeuten hier Bestanden oder Nicht bestanden im Alignment |
auth_results | Die rohen SPF- und DKIM-Ergebnisse und die Domains, die sie authentifiziert haben und die von der From-Domain abweichen können |
header_from | Die Domain in der sichtbaren From-Adresse |
Zwei verschiedene Ergebnisse. In policy_evaluated bedeutet pass, dass die Prüfung bestanden wurde und im Alignment ist. In auth_results bedeutet pass nur, dass die Prüfung für die jeweils verwendete Domain bestanden wurde. Eine Quelle kann in auth_results bestehen und in policy_evaluated durchfallen. Diese Lücke ist ein Alignment-Problem.
Ordnen Sie jede Quelle einer von drei Gruppen zu
| Gruppe | Was Sie sehen | Was zu tun ist |
|---|---|---|
| Legitim und im Alignment | Ein bekannter Dienst, DKIM oder SPF in policy_evaluated im Alignment | Nichts. Lassen Sie es so |
| Legitim, aber fehlschlagend | Ein bekannter Dienst, dessen auth_results bestehen, aber policy_evaluated durchfällt | Richten Sie für diesen Dienst DKIM im Alignment oder einen benutzerdefinierten Return-Path ein |
| Unbekannt | Eine IP, die Sie nicht erkennen, oft mit vielen Fehlern | Untersuchen: ein vergessenes System, ein Weiterleiter oder ein Spoofer. Autorisieren Sie sie nicht, bevor Sie Bescheid wissen |
So identifizieren Sie eine Quelle
- Reverse DNS:
dig -x 203.0.113.10 +shortnennt oft den Anbieter. - Authentifizierungsdomains: Die SPF- und DKIM-Domains in auth_results verraten meist den Dienst.
- Ihr eigenes Inventar: Listen Sie jedes Tool auf, das in Ihrem Domainnamen sendet: Marketingplattform, Helpdesk, CRM, Abrechnungssystem, Website-Formulare, HR-Tools und Server.
- Volumen und Muster: Eine kleine, stetige Menge von einem bekannten Dienst ist normal; ein plötzlicher Schub von einer unbekannten IP ist verdächtig.
Berichte mit einem kurzen Skript zusammenfassen
Für einen ersten Überblick über einen Ordner mit entpackten Berichten summiert dieses Skript die Nachrichten nach Quell-IP und DMARC-Ergebnis:
import glob
import xml.etree.ElementTree as ET
from collections import defaultdict
totals = defaultdict(int)
for path in glob.glob("reports/*.xml"):
for rec in ET.parse(path).getroot().iter("record"):
row = rec.find("row")
ip = row.findtext("source_ip")
ev = row.find("policy_evaluated")
key = (ip, ev.findtext("dkim"), ev.findtext("spf"))
totals[key] += int(row.findtext("count"))
for (ip, dkim, spf), n in sorted(totals.items(), key=lambda x: -x[1]):
print(f"{ip:18} dkim={dkim:5} spf={spf:5} messages={n}")
Alignment-Fehler beheben
| Muster im Bericht | Ursache | Lösung |
|---|---|---|
| SPF besteht, DMARC schlägt fehl | SPF hat die Domain des Anbieters authentifiziert, nicht Ihre | Nutzen Sie einen benutzerdefinierten Return-Path auf Ihrer eigenen Domain |
| DKIM besteht, DMARC schlägt fehl | Die Signatur verwendet die Domain des Anbieters in d= | Signieren Sie mit Ihrer eigenen Domain: Veröffentlichen Sie den DKIM-Selektor für diesen Dienst |
| Beides schlägt bei einem bekannten Dienst fehl | Der Dienst ist nicht für Ihre Domain eingerichtet | Schließen Sie seine Domain-Authentifizierung ab |
| Schlägt nur über einen Weiterleiter fehl | Die Weiterleitung hat SPF gebrochen, und DKIM wurde verändert | Rechnen Sie mit einem kleinen Rest. Stellen Sie sicher, dass DKIM vorhanden ist und den Body signiert |
| Schlägt bei einer Subdomain fehl | Die Subdomain hat keine eigenen Einträge | Veröffentlichen Sie SPF und DKIM für diese Subdomain |
Schrittweise zur Durchsetzung übergehen
Sobald die legitimen Quellen im Alignment sind und nur unbekannte Quellen durchfallen, erhöhen Sie die Richtlinie allmählich. Warten Sie bei jeder Stufe mindestens eine Woche und lesen Sie die Berichte, bevor Sie weitergehen.
| Stufe | Eintrag | Wirkung |
|---|---|---|
| 1 | p=none | Nur überwachen. Berichte sammeln |
| 2 | p=quarantine; pct=10 | Fehlschlagende Mails von 10 Prozent der Nachrichten landen im Spam |
| 3 | p=quarantine; pct=50 | Die Hälfte der fehlschlagenden Mails kommt in Quarantäne |
| 4 | p=quarantine | Alle fehlschlagenden Mails kommen in Quarantäne |
| 5 | p=reject; pct=25 | Ein Viertel der fehlschlagenden Mails wird abgewiesen |
| 6 | p=reject | Alle fehlschlagenden Mails werden abgewiesen. Behalten Sie die rua-Adresse bei |
Hören Sie nicht bei p=none auf. Es erfüllt die Mindestregeln von Gmail, Yahoo und Outlook.com für Massenversender, verhindert aber kein Spoofing. Erst die Durchsetzung schützt Ihre Domain und Ihre Empfänger.
Nach p=reject weiter überwachen
- Prüfen Sie wöchentlich zu Beginn, später monatlich. Neue Tools, die in Ihrem Domainnamen senden, erscheinen als Fehler.
- Ergänzen Sie einen Schritt im Onboarding: Jedes neue System, das E-Mails in Ihrem Domainnamen versendet, wird authentifiziert, bevor es live geht.
- Schützen Sie geparkte Domains: Veröffentlichen Sie p=reject und einen leeren SPF-Eintrag auf Domains, von denen Sie nicht senden.
- Achten Sie auf BIMI-Bereitschaft: Eine durchgesetzte DMARC-Richtlinie ist Voraussetzung, wenn Ihr Logo später im Posteingang erscheinen soll.
Möchten Sie eine zweite Meinung zu Ihren Berichten? Senden Sie uns einen Beispielbericht und die Liste der Dienste, die in Ihrem Domainnamen senden, und wir helfen Ihnen herauszufinden, was zu beheben ist.
Weiterführende Lektüre und Quellen
Häufig gestellte Fragen
Was ist ein DMARC-Aggregatbericht?
Es ist eine meist komprimierte XML-Datei, die ein Mailbox-Anbieter an die rua-Adresse in Ihrem DMARC-Eintrag sendet, normalerweise einmal täglich. Sie fasst die Mails zusammen, die der Anbieter gesehen hat und die vorgaben, von Ihrer Domain zu stammen: die sendende IP, wie viele Nachrichten und ob SPF, DKIM und DMARC bestanden wurden. Sie enthält keine Nachrichteninhalte.
Warum erhalte ich keine DMARC-Berichte?
Prüfen Sie, ob die rua-Adresse korrekt und mit dem Präfix mailto: geschrieben ist, ob das Postfach große Anhänge akzeptiert und ob Sie mindestens einen Tag gewartet haben. Liegt die Berichtsadresse auf einer anderen Domain, muss diese Domain einen Autorisierungseintrag veröffentlichen. Nicht jeder Anbieter sendet Berichte, und kleine Domains erhalten unter Umständen nur wenige.
Was ist der Unterschied zwischen rua und ruf?
Das Tag rua fordert Aggregatberichte an, also Zusammenfassungen. Das Tag ruf fordert forensische Berichte oder Fehlerberichte zu einzelnen fehlgeschlagenen Nachrichten an. Die meisten großen Anbieter senden keine forensischen Berichte, weil sie personenbezogene Daten enthalten können, planen Sie also mit Aggregatberichten.
Kann ich DMARC-Berichte ohne Tool lesen?
Bei einer Handvoll Dateien ja, denn es ist einfaches XML. Darüber hinaus sollten Sie einen Dienst zur Berichtsverarbeitung oder ein kurzes Skript nutzen, das die Ergebnisse nach Quelle summiert, denn selbst eine bescheidene Domain erhält Dutzende Berichte pro Tag.
Was bedeutet ein Alignment-Fehler?
DMARC besteht nur, wenn SPF oder DKIM besteht und die Domain, die damit authentifiziert wurde, mit der sichtbaren From-Domain übereinstimmt. Besteht eine Quelle SPF für die Domain des Dienstanbieters, Ihre From-Domain ist aber eine andere, schlägt DMARC fehl, obwohl SPF bestanden hat. Die Lösung ist, sich mit Ihrer eigenen Domain zu authentifizieren, über einen benutzerdefinierten Return-Path oder eine DKIM-Signatur mit Ihrer Domain.
Wie lange sollte ich bei p=none bleiben?
Lange genug, um jeden legitimen Absender zu sehen, in der Regel zwei bis vier Wochen, und bei monatlichen Mails wie Rechnungen sollte ein Monatsabschluss dabei sein. Dauerhaft bei p=none zu bleiben schützt nichts, setzen Sie sich also ein Datum für den nächsten Schritt.
Was bewirkt das pct-Tag?
Das pct-Tag wendet Ihre Richtlinie nur auf einen Prozentsatz der fehlschlagenden Nachrichten an, zum Beispiel pct=25. So können Sie quarantine oder reject schrittweise einführen. Die Unterstützung ist verbreitet, aber nicht universell, betrachten Sie es also als weiche Kontrolle und beobachten Sie weiter die Berichte.
Wird p=reject meine E-Mails kaputt machen?
Es blockiert jede Nachricht, die DMARC nicht besteht, und das ist der Zweck. Legitime Mails scheitern nur, wenn ein echter Absender nicht authentifiziert und im Alignment ist. Deshalb sammeln Sie zuerst Berichte, beheben jede legitime Quelle und gehen in Stufen vor.
Was ist mit weitergeleiteten Mails und Mailinglisten?
Weiterleitung bricht SPF oft, weil der Weiterleiter nicht in Ihrem Eintrag steht, und Listen können die Nachricht verändern und DKIM brechen. Eine erhalten bleibende DKIM-Signatur und vom Weiterleiter hinzugefügte ARC-Header helfen den Empfängern bei der Entscheidung. Rechnen Sie auch bei gesundem Setup mit einem kleinen Rest an Fehlern durch Weiterleitung.
Brauchen Subdomains einen eigenen DMARC-Eintrag?
Ein DMARC-Eintrag an Ihrer Hauptdomain deckt auch Subdomains ab, sofern Sie ihn nicht überschreiben. Das sp-Tag legt eine Richtlinie für Subdomains fest, und ein Eintrag an einer Subdomain überschreibt beides. Ungenutzte Subdomains sind ein Ziel für Spoofing, daher ist eine strikte Richtlinie für sie ein schneller Gewinn.