Zum Inhalt springen
Alle Artikel
E-Mail-ServerSPF DKIM DMARCPostfix

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.

15. März 20267 Min. Lesezeit

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 reject setzen: Starte immer mit p=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. Nutze ip4/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.