SPF, DKIM und DMARC Konfigurationsanleitung
Vollständige Anleitung zur Konfiguration von SPF-Einträgen, DKIM-Signierung, DMARC-Richtlinien, DNS-Einträgen und Testtools zur Verbesserung der E-Mail-Zustellbarkeit und Sicherheit.
Inhaltsverzeichnis
Einführung
Die Zustellbarkeit und Vertrauenswürdigkeit von E-Mails hängt von der korrekten DNS-Konfiguration ab. SPF (Sender Policy Framework), DKIM (DomainKeys Identified Mail) und DMARC (Domain-based Message Authentication, Reporting & Conformance) verhindern, dass Ihre E-Mails im Spam-Ordner landen, und schützen vor Domain-Spoofing.
In dieser Anleitung konfigurieren wir Schritt für Schritt SPF-, DKIM- und DMARC-Einträge, um Ihre E-Mail-Versandinfrastruktur auf Ihrem REXE-Server abzusichern.
Was ist SPF (Sender Policy Framework)?
SPF ist ein DNS-Eintrag, der festlegt, welche Server berechtigt sind, E-Mails im Namen Ihrer Domain zu versenden. Der empfangende Mailserver prüft, ob die eingehende E-Mail von einer im SPF-Eintrag angegebenen IP-Adresse stammt.
SPF-Eintrag erstellen
Fügen Sie ihn als TXT-Eintrag in Ihrem DNS-Verwaltungspanel hinzu:
@ IN TXT "v=spf1 ip4:SERVER_IP_ADRESSE -all"
Wenn Sie mehrere Server verwenden:
@ IN TXT "v=spf1 ip4:IP_ADRESSE_1 ip4:IP_ADRESSE_2 include:_spf.google.com -all"
SPF-Mechanismen
| Mechanismus | Beschreibung |
|---|---|
ip4: | Bestimmte IPv4-Adresse oder CIDR-Block |
ip6: | Bestimmte IPv6-Adresse oder CIDR-Block |
include: | SPF-Eintrag einer anderen Domain einbeziehen |
a | IP im A-Eintrag der Domain erlauben |
mx | Server im MX-Eintrag der Domain erlauben |
all | Richtlinie für alle anderen Quellen |
SPF-Qualifizierer
+all → Pass (alle erlauben — NICHT EMPFOHLEN)
~all → SoftFail (nicht autorisierte markieren, aber nicht ablehnen)
-all → Fail (nicht autorisierte ablehnen — EMPFOHLEN)
?all → Neutral (keine Prüfung)
Verwenden Sie immer -all oder mindestens ~all in Ihrem SPF-Eintrag. Die Verwendung von +all macht Ihre Domain anfällig für Spoofing.
SPF-Eintrag testen
# SPF-Eintrag mit dig abfragen
dig TXT beispieldomain.de +short
# Mit nslookup abfragen
nslookup -type=TXT beispieldomain.de
Online-Tools:
Was ist DKIM (DomainKeys Identified Mail)?
DKIM ist ein Protokoll, das ausgehenden E-Mails eine digitale Signatur hinzufügt und überprüft, dass die Nachricht während der Übertragung nicht verändert wurde. Der sendende Server signiert mit einem privaten Schlüssel, der empfangende Server verifiziert mit dem öffentlichen Schlüssel im DNS.
DKIM-Schlüsselpaar generieren
Erstellen Sie ein 2048-Bit-RSA-Schlüsselpaar mit OpenSSL:
# Privaten Schlüssel generieren
openssl genrsa -out dkim_private.pem 2048
# Öffentlichen Schlüssel extrahieren
openssl rsa -in dkim_private.pem -pubout -out dkim_public.pem
# Öffentlichen Schlüssel in DNS-Format konvertieren
cat dkim_public.pem | grep -v '^-' | tr -d '\n'
DKIM-Konfiguration mit Postfix (OpenDKIM)
OpenDKIM installieren:
sudo apt update
sudo apt install opendkim opendkim-tools -y
Schlüssel generieren:
sudo mkdir -p /etc/opendkim/keys/beispieldomain.de
sudo opendkim-genkey -b 2048 -d beispieldomain.de -D /etc/opendkim/keys/beispieldomain.de -s default -v
sudo chown -R opendkim:opendkim /etc/opendkim
OpenDKIM-Konfigurationsdatei (/etc/opendkim.conf):
AutoRestart Yes
AutoRestartRate 10/1h
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
Key-Table-Datei (/etc/opendkim/key.table):
default._domainkey.beispieldomain.de beispieldomain.de:default:/etc/opendkim/keys/beispieldomain.de/default.private
Signing-Table-Datei (/etc/opendkim/signing.table):
*@beispieldomain.de default._domainkey.beispieldomain.de
Trusted-Hosts-Datei (/etc/opendkim/trusted.hosts):
127.0.0.1
localhost
beispieldomain.de
DKIM-DNS-Eintrag hinzufügen
Fügen Sie den generierten öffentlichen Schlüssel als TXT-Eintrag im DNS hinzu:
default._domainkey IN TXT "v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhki...(OEFFENTLICHER_SCHLUESSEL)..."
DKIM-Schlüssel sollten 2048-Bit sein. 1024-Bit-Schlüssel gelten nicht mehr als sicher.
Postfix-Integration
Zur Postfix-Konfiguration (/etc/postfix/main.cf) hinzufügen:
milter_protocol = 6
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = $smtpd_milters
Dienste neu starten:
sudo systemctl restart opendkim
sudo systemctl restart postfix
DKIM-Eintrag testen
# DKIM-Eintrag aus DNS abfragen
dig TXT default._domainkey.beispieldomain.de +short
# OpenDKIM-Testtool
opendkim-testkey -d beispieldomain.de -s default -vvv
Was ist DMARC (Domain-based Message Authentication)?
DMARC kombiniert SPF- und DKIM-Ergebnisse und gibt Domain-Inhabern die Möglichkeit, E-Mail-Authentifizierungsrichtlinien festzulegen und Berichte zu erhalten. Der empfangende Server handelt gemäß der DMARC-Richtlinie bei E-Mails, die die SPF- oder DKIM-Überprüfung nicht bestehen.
DMARC-Eintrag erstellen
Als TXT-Eintrag im DNS hinzufügen:
_dmarc IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@beispieldomain.de; ruf=mailto:dmarc-forensic@beispieldomain.de; fo=1; adkim=r; aspf=r; pct=100"
DMARC-Richtlinienebenen
| Richtlinie | Beschreibung | Verwendung |
|---|---|---|
p=none | Nur berichten, keine Aktion | Erste Phase — Überwachung |
p=quarantine | In Spam-Ordner verschieben | Mittlerer Schutz |
p=reject | E-Mail vollständig ablehnen | Voller Schutz |
Schrittweise DMARC-Implementierungsstrategie
Die schrittweise Implementierung von DMARC ist der sicherste Ansatz:
# Phase 1: Überwachung (2-4 Wochen)
_dmarc IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@beispieldomain.de; fo=1"
# Phase 2: Quarantäne (2-4 Wochen)
_dmarc IN TXT "v=DMARC1; p=quarantine; pct=25; rua=mailto:dmarc@beispieldomain.de"
# Phase 3: Quarantäne erhöhen
_dmarc IN TXT "v=DMARC1; p=quarantine; pct=100; rua=mailto:dmarc@beispieldomain.de"
# Phase 4: Voller Schutz
_dmarc IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc@beispieldomain.de; ruf=mailto:dmarc-forensic@beispieldomain.de"
Sie können kostenlose Tools wie dmarcian.com, postmarkapp.com/dmarc oder easydmarc.com verwenden, um DMARC-Berichte zu analysieren.
Alle Einträge überprüfen
Überprüfen Sie alle E-Mail-Sicherheitseinträge auf einmal:
# SPF-Prüfung
dig TXT beispieldomain.de +short | grep spf
# DKIM-Prüfung
dig TXT default._domainkey.beispieldomain.de +short
# DMARC-Prüfung
dig TXT _dmarc.beispieldomain.de +short
# MX-Eintrag-Prüfung
dig MX beispieldomain.de +short
E-Mail-Versandtest
Senden Sie eine Test-E-Mail über die Kommandozeile:
# Detaillierter Test mit swaks
sudo apt install swaks -y
swaks --to test@gmail.com --from info@beispieldomain.de --server localhost --tls
Häufige Fehler und Lösungen
| Fehler | Ursache | Lösung |
|---|---|---|
| SPF PermError | Mehr als 10 DNS-Lookups | include-Anzahl reduzieren, IP-Blöcke zusammenfassen |
| DKIM fail | Schlüssel-Nichtübereinstimmung | Öffentlicher Schlüssel im DNS muss mit privatem Schlüssel auf dem Server übereinstimmen |
| DMARC fail | SPF- und DKIM-Alignment-Fehler | From-Header-Domain muss mit SPF/DKIM-Domain übereinstimmen |
| Softfail | Verwendung von ~all im SPF-Eintrag | Durch -all ersetzen |
| Body hash mismatch | E-Mail während der Übertragung verändert | Canonicalization auf relaxed/relaxed setzen |
Fazit
Das SPF-, DKIM- und DMARC-Trio bildet das Fundament der E-Mail-Sicherheit. Die korrekte Konfiguration dieser drei Protokolle verbessert die E-Mail-Zustellbarkeit, verhindert Domain-Spoofing und schützt den Ruf Ihrer Marke. Implementieren Sie DMARC schrittweise, analysieren Sie Berichte und stellen Sie sicher, dass alle legitimen Versandquellen mit SPF und DKIM kompatibel sind, bevor Sie zum vollen Schutz übergehen.
Verwandte Artikel
Mail-Server-Einrichtung: Postfix und Dovecot
Vollständige Anleitung zur Einrichtung von Postfix MTA, Dovecot IMAP/POP3, SSL/TLS-Konfiguration, virtueller Domain-Unterstützung, Spam-Filterung und Docker Mail Server.
E-Mail-Blacklist-Entfernung: Anleitung
Anleitung zur Blacklist-Prüfung, Delisting-Anträgen, Spamhaus/Barracuda/SORBS-Verfahren und IP-Reputationsmanagement.