E-Mail-Server absichern: SPF, DKIM und DMARC Guide
SPF, DKIM und DMARC richtig einrichten: So schützt du deinen E-Mail-Server vor Spoofing und Spam und verbesserst die Zustellbarkeit deiner Mails.
Wer einen eigenen E-Mail-Server betreibt, kennt das Problem: Mails landen im Spam-Ordner des Empfängers, oder schlimmer noch – Dritte versenden gefälschte Nachrichten im Namen der eigenen Domain. Die Lösung liegt in drei DNS-basierten Authentifizierungsverfahren: SPF, DKIM und DMARC. In diesem Guide erfährst du Schritt für Schritt, wie du alle drei Mechanismen auf einem Postfix-Server einrichtest und damit sowohl die Zustellbarkeit als auch die Sicherheit deiner E-Mails deutlich verbesserst.
Warum SPF, DKIM und DMARC unverzichtbar sind
Ohne diese Schutzmechanismen kann praktisch jeder Server E-Mails mit deiner Absenderdomain verschicken. Das nennt sich E-Mail-Spoofing und ist die Grundlage für Phishing-Angriffe, CEO-Fraud und Spam-Kampagnen. Große Provider wie Google, Microsoft und Yahoo prüfen seit 2024 konsequent, ob eingehende Mails korrekt authentifiziert sind. Fehlen SPF, DKIM oder DMARC, sinkt die Zustellrate drastisch – im schlimmsten Fall werden deine Mails komplett abgelehnt.
Die drei Verfahren ergänzen sich dabei gegenseitig:
- SPF definiert, welche Server für deine Domain senden dürfen
- DKIM signiert jede ausgehende Mail kryptografisch
- DMARC legt fest, was mit Mails passieren soll, die beide Prüfungen nicht bestehen
SPF einrichten: Autorisierte Absender definieren
Das Sender Policy Framework (SPF) ist der einfachste Baustein. Du hinterlegst einen TXT-Record in deiner DNS-Zone, der alle IP-Adressen und Server auflistet, die im Namen deiner Domain E-Mails versenden dürfen.
DNS-Record anlegen
Für eine Domain beispiel.de mit einem Mailserver unter mail.beispiel.de sieht der SPF-Record so aus:
beispiel.de. IN TXT "v=spf1 mx a:mail.beispiel.de ip4:203.0.113.10 -all"
Die einzelnen Bestandteile bedeuten:
| Mechanismus | Bedeutung |
|---|---|
v=spf1 |
SPF-Version 1 |
mx |
Alle MX-Server der Domain sind autorisiert |
a:mail.beispiel.de |
Der A-Record dieses Hosts ist autorisiert |
ip4:203.0.113.10 |
Diese IPv4-Adresse ist autorisiert |
-all |
Alle anderen Server werden abgelehnt |
Wichtig: Verwende -all (Hard Fail) statt ~all (Soft Fail). Nur so werden nicht autorisierte Mails zuverlässig abgewiesen. Falls du zusätzlich einen externen Dienst wie einen Newsletter-Provider nutzt, ergänze dessen SPF-Include:
beispiel.de. IN TXT "v=spf1 mx ip4:203.0.113.10 include:spf.newsletter-anbieter.de -all"
SPF-Record testen
dig +short TXT beispiel.de | grep spf
Alternativ kannst du Online-Tools wie MXToolbox verwenden, um die korrekte Syntax zu validieren.
DKIM einrichten: E-Mails digital signieren
DomainKeys Identified Mail (DKIM) fügt jeder ausgehenden E-Mail eine kryptografische Signatur hinzu. Der empfangende Server prüft diese Signatur gegen einen öffentlichen Schlüssel in deiner DNS-Zone. So wird sichergestellt, dass die Mail tatsächlich von deinem Server stammt und unterwegs nicht manipuliert wurde.
OpenDKIM installieren und konfigurieren
Auf einem Debian/Ubuntu-System mit Postfix installierst du OpenDKIM wie folgt:
sudo apt update
sudo apt install opendkim opendkim-tools
Erstelle die benötigten Verzeichnisse und generiere ein Schlüsselpaar:
sudo mkdir -p /etc/opendkim/keys/beispiel.de
sudo opendkim-genkey -b 2048 -d beispiel.de -D /etc/opendkim/keys/beispiel.de -s mail -v
sudo chown -R opendkim:opendkim /etc/opendkim
Bearbeite nun die Hauptkonfiguration /etc/opendkim.conf:
AutoRestart Yes
AutoRestartRate 10/1h
Syslog Yes
SyslogSuccess Yes
LogWhy Yes
Canonicalization relaxed/simple
Mode sv
SubDomains No
OversignHeaders From
KeyTable refile:/etc/opendkim/key.table
SigningTable refile:/etc/opendkim/signing.table
ExternalIgnoreList /etc/opendkim/trusted.hosts
InternalHosts /etc/opendkim/trusted.hosts
Socket inet:8891@localhost
PidFile /run/opendkim/opendkim.pid
UMask 007
UserID opendkim
Erstelle die Zuordnungsdateien:
# /etc/opendkim/key.table
mail._domainkey.beispiel.de beispiel.de:mail:/etc/opendkim/keys/beispiel.de/mail.private
# /etc/opendkim/signing.table
*@beispiel.de mail._domainkey.beispiel.de
# /etc/opendkim/trusted.hosts
127.0.0.1
::1
localhost
beispiel.de
Postfix mit OpenDKIM verbinden
Füge folgende Zeilen in /etc/postfix/main.cf ein:
milter_protocol = 6
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
Starte beide Dienste neu:
sudo systemctl restart opendkim
sudo systemctl restart postfix
DKIM-Schlüssel im DNS veröffentlichen
Den öffentlichen Schlüssel findest du in der generierten Datei:
cat /etc/opendkim/keys/beispiel.de/mail.txt
Die Ausgabe fügst du als TXT-Record in deine DNS-Zone ein:
mail._domainkey.beispiel.de. IN TXT "v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhki..."
DKIM testen
Sende eine Testmail und prüfe den Header beim Empfänger. Du solltest einen Eintrag wie diesen finden:
Authentication-Results: mx.google.com;
dkim=pass header.d=beispiel.de header.s=mail
Oder nutze die Kommandozeile:
opendkim-testkey -d beispiel.de -s mail -vvv
DMARC einrichten: Die Richtlinie festlegen
DMARC (Domain-based Message Authentication, Reporting and Conformance) baut auf SPF und DKIM auf. Es definiert eine Richtlinie, die dem Empfänger-Server sagt, wie mit Mails umgegangen werden soll, die die Authentifizierung nicht bestehen. Außerdem liefert DMARC Berichte über fehlgeschlagene Zustellversuche.
DNS-Record anlegen
Beginne mit einer moderaten Richtlinie und steigere schrittweise:
Phase 1 – Monitoring (keine Ablehnung, nur Berichte):
_dmarc.beispiel.de. IN TXT "v=DMARC1; p=none; rua=mailto:[email protected]; ruf=mailto:[email protected]; fo=1"
Phase 2 – Quarantäne (verdächtige Mails in Spam):
_dmarc.beispiel.de. IN TXT "v=DMARC1; p=quarantine; pct=50; rua=mailto:[email protected]"
Phase 3 – Reject (voller Schutz):
_dmarc.beispiel.de. IN TXT "v=DMARC1; p=reject; rua=mailto:[email protected]; adkim=s; aspf=s"
Die Parameter im Überblick:
| Parameter | Bedeutung |
|---|---|
p=none/quarantine/reject |
Richtlinie für fehlgeschlagene Mails |
rua |
Adresse für aggregierte Berichte (XML) |
ruf |
Adresse für forensische Berichte |
pct |
Prozentsatz der Mails, auf die die Policy angewendet wird |
adkim=s |
Strict Alignment für DKIM |
aspf=s |
Strict Alignment für SPF |
DMARC-Berichte auswerten
Die täglichen XML-Berichte lassen sich mit Tools wie parsedmarc automatisiert auswerten:
pip install parsedmarc
parsedmarc -i /pfad/zu/dmarc-bericht.xml.gz
Für eine grafische Auswertung empfiehlt sich die Kombination aus parsedmarc, Elasticsearch und Grafana. So erkennst du sofort, ob legitime Mails fälschlicherweise abgelehnt werden oder ob jemand deine Domain für Spoofing missbraucht.
Gesamtkonfiguration überprüfen
Nach der Einrichtung aller drei Mechanismen solltest du eine umfassende Prüfung durchführen:
# SPF prüfen
dig +short TXT beispiel.de | grep spf
# DKIM prüfen
dig +short TXT mail._domainkey.beispiel.de
# DMARC prüfen
dig +short TXT _dmarc.beispiel.de
Sende außerdem eine Testmail an [email protected] – du erhältst einen automatisierten Bericht mit dem Status aller drei Prüfungen. Eine weitere gute Anlaufstelle ist mail-tester.com, das dir einen Score von 1 bis 10 für die Zustellbarkeit gibt.
Häufige Fehler vermeiden
- Mehrere SPF-Records: Pro Domain darf nur ein SPF-TXT-Record existieren. Mehrere Einträge führen zu einem PermError.
- DNS-Propagation ignorieren: Nach Änderungen an DNS-Records kann es bis zu 48 Stunden dauern, bis diese weltweit verfügbar sind. Teste deshalb mit niedrigen TTL-Werten.
- DMARC sofort auf
rejectsetzen: Starte immer mitp=none, analysiere die Berichte mindestens zwei Wochen lang und steigere dann schrittweise. - SPF-Lookup-Limit überschreiten: SPF erlaubt maximal 10 DNS-Lookups. Zu viele
include-Anweisungen führen zu Fehlern. Nutzeip4/ip6-Bereiche, um Lookups zu reduzieren. - DKIM-Schlüssel zu kurz: Verwende mindestens 2048 Bit. Schlüssel mit 1024 Bit gelten als unsicher.
Fazit
Die Kombination aus SPF, DKIM und DMARC ist der Goldstandard für die Absicherung eines E-Mail-Servers. SPF kontrolliert, wer senden darf. DKIM garantiert die Integrität der Nachricht. DMARC verknüpft beide Verfahren und gibt dir volle Kontrolle über den Umgang mit nicht authentifizierten Mails. Die Einrichtung auf einem Postfix-Server ist mit den gezeigten Schritten innerhalb einer Stunde erledigt – der Schutz vor Spoofing und die verbesserte Zustellbarkeit wirken dagegen dauerhaft. Starte heute mit p=none, analysiere deine DMARC-Berichte und arbeite dich konsequent zu p=reject vor. Deine Empfänger und deren Mailserver werden es dir danken.