ADMIN

2021

11

2022-11-01T12:00:00

Collaboration

PRAXIS

066

Kommunikation

Open-Source-Tipp

Mail

Postfix

SPF und DKIM auf Postfix einrichten

Vertrauenswürdig

von Thorsten Scherf

Veröffentlicht in Ausgabe 11/2021 - PRAXIS

Viele Unternehmen wollen die Kontrolle über Ihre E-Mails in die eigenen Hände nehmen und betreiben deswegen einen eigenen Mailserver. In einem solchen Fall sind jedoch einige grundlegende sicherheitsrelevante Einstellungen unbedingt Pflicht. Der Open-Source-Tipp in diesem Monat schaut sich an, was es mit den beiden Technologien SPF und DKIM auf sich hat und wie Sie diese auf einem Postfix-Server einsetzen.

Die Kommunikation über E-Mail ist heutzutage in nahezu jedem Umfeld zum Standard geworden. Um so wichtiger ist es von daher auch sicherzustellen, dass der eigene Mailserver aktuelle Sicherheits-Technologien korrekt einsetzt. Das Sender Policy Framework (SPF) und DomainKeys Identified Mail (DKIM) gehören somit unbedingt zur Standardkonfiguration eines jeden Mailservers.
Das Sender Policy Framework basiert auf der Idee, dass E-Mails von einer bestimmten Domäne lediglich von bestimmten Hosts eingeliefert werden dürfen. Dabei handelt es sich um die autorisierten Mailserver, die für diese Domäne zuständig sind. Mithilfe eines Eintrags im Domain Name Systems (DNS) für diese Domäne wird eine Liste dieser autorisierten Systeme veröffentlicht.
Andere Mailserver können dann durch eine DNS-Abfrage überprüfen, ob der einlieferende Host in dieser Liste aufgeführt ist. Ist dies der Fall, ist sichergestellt, dass es sich um einen autorisierten Mailserver für diese Domäne handelt. Im Fehlerfall lässt sich die E-Mail entweder abweisen oder als nicht authentifiziert markieren.
Die Kommunikation über E-Mail ist heutzutage in nahezu jedem Umfeld zum Standard geworden. Um so wichtiger ist es von daher auch sicherzustellen, dass der eigene Mailserver aktuelle Sicherheits-Technologien korrekt einsetzt. Das Sender Policy Framework (SPF) und DomainKeys Identified Mail (DKIM) gehören somit unbedingt zur Standardkonfiguration eines jeden Mailservers.
Das Sender Policy Framework basiert auf der Idee, dass E-Mails von einer bestimmten Domäne lediglich von bestimmten Hosts eingeliefert werden dürfen. Dabei handelt es sich um die autorisierten Mailserver, die für diese Domäne zuständig sind. Mithilfe eines Eintrags im Domain Name Systems (DNS) für diese Domäne wird eine Liste dieser autorisierten Systeme veröffentlicht.
Andere Mailserver können dann durch eine DNS-Abfrage überprüfen, ob der einlieferende Host in dieser Liste aufgeführt ist. Ist dies der Fall, ist sichergestellt, dass es sich um einen autorisierten Mailserver für diese Domäne handelt. Im Fehlerfall lässt sich die E-Mail entweder abweisen oder als nicht authentifiziert markieren.
Eine DKIM-Implementierung stellt sicher, dass eine Nachricht auch auf dem Weg vom Absender in das Postfach des Empfängers nicht verändert wurde. Mailserver, die DKIM unterstützen, erzeugen hierfür eine digitale Signatur für jede Nachricht. Hierzu ist ein asymetrisches Schlüsselpaar notwendig, wovon der private Schlüsselteil dann für das Signieren der Nachricht zum Einsatz kommt.
Der öffentliche Teil des Schlüssels ist wieder im DNS veröffentlicht, sodass andere Mailserver diesen abfragen können, um damit die Signatur von eingehenden Nachrichten und damit die Integrität zu überprüfen.
DNS-Konfiguration für SPF und DKIM
Neben der Konfiguration des Mailservers sind auch Änderungen im DNS vorzunehmen. Betreiben Sie einen eigenen DNS-Server, können Sie die notwendigen Einträge in der DNS-Zonendatei ganz einfach selbst anlegen. Greifen Sie stattdessen auf den DNS-Server Ihres Providers zurück, erkundigen Sie sich dort, wie die DNS-Einträge in der Zonendatei zu hinterlegen sind. In den allermeisten Fällen stellen Provider hierfür ein Webinterface zur Verfügung, über das Sie die DNS-Zonendatei für Ihre Domäne selbstständig anpassen.
Für SPF können Sie einen Eintrag wie den folgenden in der DNS-Zonendatei für Ihre Domäne hinterlegen:
TXT @ "v=spf1 mx ~all"
Diese Zeile besagt, dass alle Systeme, die im MX-Eintrag Ihrer Domäne hinterlegt sind, Nachrichten versenden dürfen und dass alle Nachrichten, die von einem anderen System versendet wurden, als nicht vertrauenswürdig gelten. Alternativ hierzu können Sie auch sämtliche Mailserver explizit aufführen und bestimmen, dass Nachrichten von anderen Systemen zurückzuweisen sind:
TXT @ "v=spf1 a mx ipv4:1.2.3.4 5.6.78 -all"
Um den DNS-Eintrag für DKIM vorzunehmen, müssen Sie zuerst ein asymmetrisches Schlüsselpaar erzeugen. Diesen Vorgang erläutern wir im folgenden Abschnitt näher.
Postfix für SPF und DKIM einrichten
An dieser Stelle folgt ein beispielhaftes Setup für die Implementierung von SPF und DKIM auf einem Postfix-Server. Der Server sollte bereits dahingehend konfiguriert sein, dass dieser sowohl E-Mails für eine bestimmte Domäne empfangen als auch versenden kann. Die Dokumentation auf der Postfix-Webseite [1] stellt alle hierfür notwendigen Informationen zur Verfügung.
Zuerst sind natürlich die entsprechenden Pakete aus dem Repository Ihrer Distribution zu laden, sollten diese nicht bereits installiert sein. Auf einem Fedora-, Red-Hat- oder CentOS-System rufen Sie hierfür wie gewohnt "dnf" auf und sorgen im Anschluss dafür, dass der SPF-Prozess unter einem dedizierten Benutzeraccount läuft:
dnf install pypolicyd-spf opendkim
 
adduser policyd-spf --user-group --no-create-home -s /bin/false
In den beiden Postfix-Konfigurationsdateien "master.cf" und "main.cf" nehmen Sie dann die folgenden Änderungen vor, um den SPF-Policy-Server in Postfix einzubinden. Für die Datei "/etc/postfix/master.cf" verwenden Sie
policyd-spf unix - n n - 0 spawn
      user=policyd-spf argv=/usr/libexec/postfix/policyd-spf
Und für das File "/etc/postfix/main.cf"
policyd-spf_time_limit = 3600
smtpd_recipient_restrictions =
      permit_mynetworks,
      permit_sasl_authenticated,
      reject_unauth_destination,
      check_policy_service unix: private/policyd-spf
Um Postfix nun auch für DKIM fit zu machen, sind weitere Schritte notwendig. Zuerst definieren Sie einige Konfigurationsdateien in "/etc/opendkim.conf":
KeyTable /etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
Das DKIM-Schlüsselpaar erzeugen Sie mit dem folgenden Befehl und sorgen auch direkt dafür, dass der Benutzer "opendkim" der Eigentümer der Dateien wird:
# opendkim-genkey -b 2048 -d example.com -D /etc/opendkim/keys/example.com/ -s 20210826 -v
# chown -R opendkim:opendkim /etc/opendkim/keys/
Mit der Option "-s" definieren Sie einen Identifier, den Sie in den folgenden Konfigurationen immer wieder aufgreifen, um auf das soeben erzeugte Schlüsselpaar zu referenzieren. Üblicherweise wird für den Identifier einfach das Datum verwendet, zu dem Sie die Schlüssel erzeugt haben. Hat soweit alles geklappt, definieren Sie den DNS-Eintrag für Ihre Domäne und verweisen auch auf die Dateien, in denen sich die soeben erzeugten Schlüssel befinden. Im Fall von "/etc/opendkim/SigningTable" mit
*@example.com 20210826._domainkey.example.com
Und für "/etc/opendkim/KeyTable" verwenden Sie
20210826._domainkey.example.com
 
       example.com:20210826:/etc/opendkim/keys/example.com/20210826.private
sowie bei "/etc/opendkim/TrustedHosts":
*.example.com
Schließlich binden Sie den DKIM-Service mittels des Milter-Protokolls in die Postfix-Konfigurationsdatei "/etc/postfix/main.cf" ein:
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
gpasswd -a postfix opendkim
systemctl restart postfix
Vergessen Sie nicht, den zuvor erzeugten öffentlichen Schlüssel in Ihrer DNS-Zonendatei zu hinterlegen. Der Schlüssel befindet sich zusammen mit weiteren Daten im File "/etc/opendkim/keys/example.com/20210826.txt". Ob alles funktioniert hat, können Sie schließlich über das folgende Tool testen:
opendkim-testkey -d example.com -s 20210826 -vvv
In der Ausgabe sollten Sie im Erfolgsfall ein "key OK" sehen. Unter [2] finden Sie auch eine hilfreiche Webanwendung, mit der Sie das Setup Ihres Mailservers testen können. Rufen Sie die Seite auf, bekommen Sie eine temporäre E-Mail-Adresse angezeigt. Senden Sie eine Nachricht an diese Adresse und überprüfen im Anschluss das Ergebnis auf der Webseite.
Fazit
Zusammenfassend lässt sich festhalten, dass Sie mit Hilfe von SPF überprüfen können, dass Nachrichten lediglich aus autorisierten Quellen stammen, und DKIM den Inhalt einer Nachricht selbst schützt. In beiden Fällen sind hierfür Einträge im DNS zu erzeugen, die zum einen die autorisierten Mailserver einer Domäne auflisten (SPF) und zum anderen einen öffentlichen Schlüssel enthalten, mit dem der Mailserver die digitale Signatur einer Nachricht überprüfen kann.
Wer jetzt Lust auf mehr bekommen hat, der kann sich zusätzlich auch noch die Domain-based Message Authentication, Reporting and Conformance (DMARC)-Spezifikation [3] ansehen. Diese setzt auf SPF und DKIM auf und hilft dabei, die Sicherheit im E-Mail-Verkehr weiter auszubauen.
(dr)
Link-Codes