SPF für Exim einrichten

Schritt-für-Schritt-Anleitung: SPF-Record für ausgehende E-Mails anlegen und SPF-Validierung eingehender Nachrichten per Exim-ACL konfigurieren.

Exim · Schritt für Schritt

SPF für Exim (selbst gehostet)

Exim ist der Standard-MTA unter Debian und Ubuntu — und verbraucht mit einem einfachen mx-Mechanismus nur 1 DNS-Lookup im SPF-Record. Bei selbst gehostetem E-Mail-Versand gibt es zwei unabhängige Aufgaben: den DNS-SPF-Record, der autorisiert, welche Server ausgehende E-Mails versenden dürfen, und die Exim-ACL, die eingehende E-Mails auf SPF prüft. Beide Bereiche werden in diesem Guide behandelt.

NIS2 Art. 21 und BSI TR-03182 fordern SPF auch für selbst gehostete Mailserver. Mit 22 von 165 Punkten ist SPF ein zentraler Faktor im Wolf-Agents Email Security Check — er zählt DNS-Lookups gegen das RFC-7208-Limit von 10 zeichengenau, bewertet Qualifier nach Ablehnungswirkung (Hard Fail vs. Soft Fail vs. Neutral) und erkennt Drift zwischen Exim-Hostnamen, sender_domains-ACL und veröffentlichtem SPF-Record.

Hardening-Pfad: Nach SPF folgt als nächster Schritt DKIM für Exim — gemeinsam bilden SPF + DKIM die Grundlage für DMARC.

1 Schritt 1 von 3

SPF-Record im DNS anlegen

Erstellen Sie einen TXT-Record bei Ihrem DNS-Provider. Für selbst gehostetes Exim empfiehlt sich der mx-Mechanismus kombiniert mit der öffentlichen IP-Adresse Ihres Mailservers — das verbraucht nur 1 DNS-Lookup.

DNS TXT-Record Exim / Self-Hosted
ihre-domain.de.  IN  TXT  "v=spf1 mx ip4:203.0.113.10 -all"
Nur 1 DNS-Lookup (mx)

Der mx-Mechanismus löst den MX-Record Ihrer Domain auf und verbraucht genau 1 Lookup. Das ip4-Direktiv zählt nicht als Lookup — es enthält die IP-Adresse direkt. Ersetzen Sie 203.0.113.10 durch die tatsächliche öffentliche IP Ihres Exim-Servers.

Mehrere Server oder IPv6?

Wenn Ihr Exim-Server mehrere öffentliche IPs hat oder IPv6 nutzt, fügen Sie alle explizit hinzu:

v=spf1 mx ip4:203.0.113.10 ip6:2001:db8::1 -all
2 Schritt 2 von 3

SPF-Validierung in der Exim-ACL aktivieren

Exim kann eingehende E-Mails per ACL auf SPF prüfen. Dafür wird das Tool spfquery benötigt, das Exim über ${run{...}} aufruft. Ab Exim 4.94 gibt es optional auch eine eingebaute SPF-Unterstützung — die ACL-Methode funktioniert auf allen gängigen Versionen.

spfquery installieren (Debian/Ubuntu)

  1. Installieren Sie das Paket libmail-spf-perl — es enthält das Kommandozeilentool spfquery
  2. Auf Debian/Ubuntu: apt install libmail-spf-perl
  3. Pfad prüfen: which spfquery sollte /usr/bin/spfquery ausgeben
  4. Alternativ: apt install spf-tools-perl (je nach Distribution)

Fügen Sie die SPF-Prüfung in Ihre Exim-Konfiguration ein — üblicherweise in /etc/exim4/exim4.conf.template oder /etc/exim4/conf.d/acl/:

/etc/exim4/exim4.conf.template — ACL-Block Exim ACL
begin acl

acl_check_rcpt:
  accept
    hosts = :

acl_check_mail:
  warn
    set acl_m_spf = ${run{/usr/bin/spfquery --ip=$sender_host_address \
                          --mail-from=$sender_address \
                          --helo=$sender_helo_name}{$value}}
  deny
    message    = SPF-Prüfung fehlgeschlagen: $acl_m_spf
    log_message = SPF fail for $sender_address from $sender_host_address
    condition  = ${if eq{$acl_m_spf}{fail}}
Nach der Änderung Exim neu starten

Konfigurationsänderungen werden erst nach einem Neustart oder Reload wirksam: systemctl reload exim4 — oder systemctl restart exim4 für einen vollständigen Neustart.

3 Schritt 3 von 3

SPF-Record verifizieren

Nach dem Anlegen des DNS-Records prüfen Sie die korrekte Propagierung. DNS-Änderungen brauchen je nach Provider 5 Minuten bis 24 Stunden.

Terminal Verifikation
# SPF-Record abfragen
dig TXT ihre-domain.de +short
# "v=spf1 mx ip4:203.0.113.10 -all"

# MX-Record prüfen (wird durch den mx-Mechanismus aufgelöst)
dig MX ihre-domain.de +short

# spfquery lokal testen (auf dem Exim-Server)
spfquery --ip=203.0.113.10 --mail-from=absender@ihre-domain.de --helo=mail.ihre-domain.de

Validieren Sie zusätzlich mit dem Wolf-Agents Email Security Check — dieser prüft SPF auf 22 Einzelkriterien inklusive Lookup-Zählung, Qualifier-Bewertung und Syntax.

Häufige Fehler bei Exim und SPF

Bei Exim gibt es drei typische Fehlerquellen — zwei davon betreffen die ACL-Konfiguration, eine den Unterschied zwischen DNS-Record und ACL.

DNS-Record vs. ACL — zwei verschiedene Dinge

Problem: Der SPF-Record im DNS autorisiert, welche Server E-Mails für Ihre Domain versenden dürfen (ausgehend). Die ACL in Exim prüft, ob eingehende E-Mails von Fremddomain einen gültigen SPF haben. Wer nur den DNS-Record anlegt, schützt die eigene Reputation — prüft aber keine eingehenden Nachrichten. Wer nur die ACL konfiguriert, ohne den DNS-Record, schützt andere vor Spoofing der eigenen Domain — aber der eigene Record fehlt im DNS.

Lösung: Beide Maßnahmen sind unabhängig voneinander und ergänzen sich: DNS-Record anlegen (ausgehend) und ACL konfigurieren (eingehend). Beide Schritte in diesem Guide sind notwendig für vollständigen SPF-Schutz.

spfquery nicht installiert — ACL-Fehler beim Mailempfang

Problem: Wenn spfquery nicht installiert ist und die ACL dennoch ${run{...}} aufruft, schlägt der Exim-Prozess mit einem Fehler fehl. Je nach ACL-Konfiguration kann das dazu führen, dass E-Mails abgelehnt werden oder der warn-Block stillschweigend fehlschlägt — ohne dass SPF tatsächlich geprüft wird.

Lösung: Vor der ACL-Aktivierung installieren: apt install libmail-spf-perl. Pfad prüfen: which spfquery muss /usr/bin/spfquery ausgeben. Falls der Pfad abweicht, den ACL-Block entsprechend anpassen.

SPF-Prüfung nicht in acl_check_mail — Prüfung greift nicht

Problem: SPF muss in der ACL acl_check_mail geprüft werden — dem Punkt, an dem der SMTP-Befehl MAIL FROM verarbeitet wird. Wer die SPF-Prüfung in acl_check_rcpt oder acl_check_data platziert, erhält entweder keine oder eine inkonsistente Prüfung, da $sender_host_address und $sender_address an diesen Punkten möglicherweise noch nicht vollständig verfügbar sind.

Lösung: Die SPF-Prüfung ausschließlich in acl_check_mail platzieren. Dieser ACL-Hook wird direkt nach dem MAIL FROM-Befehl ausgeführt — alle relevanten Variablen ($sender_host_address, $sender_address, $sender_helo_name) sind dort garantiert befüllt.

Wie steht Ihre Domain bei SPF?

Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 165 Prüfpunkte.