Zum Hauptinhalt springen
Zurück zur Kategorie

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.

Lesezeit: 15 Min. E-Mail
spfdkimdmarce-maildnssicherheitmail

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:

hljs dns
@ IN TXT "v=spf1 ip4:SERVER_IP_ADRESSE -all"

Wenn Sie mehrere Server verwenden:

hljs dns
@ IN TXT "v=spf1 ip4:IP_ADRESSE_1 ip4:IP_ADRESSE_2 include:_spf.google.com -all"

SPF-Mechanismen

MechanismusBeschreibung
ip4:Bestimmte IPv4-Adresse oder CIDR-Block
ip6:Bestimmte IPv6-Adresse oder CIDR-Block
include:SPF-Eintrag einer anderen Domain einbeziehen
aIP im A-Eintrag der Domain erlauben
mxServer im MX-Eintrag der Domain erlauben
allRichtlinie 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

hljs bash
# 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:

hljs bash
# 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:

hljs bash
sudo apt update
sudo apt install opendkim opendkim-tools -y

Schlüssel generieren:

hljs bash
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):

hljs 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:

hljs dns
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:

hljs conf
milter_protocol = 6
milter_default_action = accept
smtpd_milters = inet:localhost:8891
non_smtpd_milters = $smtpd_milters

Dienste neu starten:

hljs bash
sudo systemctl restart opendkim
sudo systemctl restart postfix

DKIM-Eintrag testen

hljs bash
# 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:

hljs dns
_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

RichtlinieBeschreibungVerwendung
p=noneNur berichten, keine AktionErste Phase — Überwachung
p=quarantineIn Spam-Ordner verschiebenMittlerer Schutz
p=rejectE-Mail vollständig ablehnenVoller 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:

hljs bash
# 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:

hljs bash
# 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

FehlerUrsacheLösung
SPF PermErrorMehr als 10 DNS-Lookupsinclude-Anzahl reduzieren, IP-Blöcke zusammenfassen
DKIM failSchlüssel-NichtübereinstimmungÖffentlicher Schlüssel im DNS muss mit privatem Schlüssel auf dem Server übereinstimmen
DMARC failSPF- und DKIM-Alignment-FehlerFrom-Header-Domain muss mit SPF/DKIM-Domain übereinstimmen
SoftfailVerwendung von ~all im SPF-EintragDurch -all ersetzen
Body hash mismatchE-Mail während der Übertragung verändertCanonicalization 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.