Seite wählen

DomainKeys Identified Mail

von | Dez 6, 2011 | Web Services

Dass das SMTP-Protokoll in die Jahre gekommen und vielen Fällen nicht mehr unbedingt zeitgemäß ist, ist eigentlich nichts Neues. Das Fälschen der Absenderadresse bzw. das Verifizieren des Absenders in Kombination mit dem sendenden SMTP-Servers ist alleine mit SMTP nicht möglich.
Ein Beispiel:
Würde man mit einer fremden Mailadresse E-Mails verschicken oder gar Spammen, kann es durchaus vorkommen, dass Bounce-Emails an den vermeindlichen Absender zurückgeschickt werden. D.h die betroffen Person würde in so einem Fall plötzlich mehrere tausende ungewollte Bounce-Emails erhalten, obwohl er eigentlich mit dieser Aktion nichts zu tun hat. Auch Auto-Responder würden der falschen Person antworten.
Um das zu verhindern, wurden Maßnahmen entwickelt mit denen Absenderadresse geprüft werden können: DKIM und SPF.
Das „Sender Policy Framework“ funktioniert indem man in seinem DNS-Zone-File einen SPF-Record erstellt und die erlaubten MTA-Mailserver-IP-Adressen hinterlegt. Die Gegenstelle kann somit prüfen, ob die Mail mit der Absenderadresse bzw. Domain auch tatsächlich von einem der gelisteten Mailserver gesendet wurde.
Das „DomainKeys Identified Mail“ Verfahren funktioniert etwas anders. Jede Email, die über einen ‚offiziellen‘ MTA gesendet wird, wird in ihrem Header signiert. Die Signatur wird anhand eines Private-Key generiert, der auf dem Server abgelegt ist. Im DNS-Zone-File muss zum Prüfen der Signatur der Public-Key als DKIM-Record (TXT) hinterlegt sein. Der empfangende Mailserver prüft somit die Signatur in der Mail gegen den in der DNS-Zone hinterlegten öffentlichen Schlüssel. Handelt es sich um eine gültige Signatur, so ist der Absender und dessen Mailserver verifiziert.
Für den Einsatz von DKIM muss der Mailserver entsprechend konfiguriert werden. Auf einem Debian-System mit Postfix sind folgende Schritte durchzuführen:
Die Schlüssel generieren und den Private-Key entsprechend ablegen.

openssl genrsa -out beispiel.private 1024
openssl rsa -in beispiel.private -out beispiel.public -pubout -outform PEM
mkdir /etc/postfix/dkim
cp beispiel.private /etc/postfix/dkim/beispiel

Das Paket dkim-filter aus den Paketquellen installieren.

aptitude install dkim-filter

Den dkim-filter daemon auf einen Port lauschen lassen, damit sich Postfix später verbinden kann.

/etc/default/dkim-filter
SOCKET="inet:12345@localhost"

Die Datei dkim-filter.conf muss nicht weiter bearbeitet werden, für mehrere Domains mit mehreren Keys ist allerdings der Eintrag einer KeyList notwendig.

/etc/dkim-filter.conf
KeyList /etc/dkim-keys.conf

Die Domains in der KeyList werden nach diesem Schema eingetragen: „Absenderadresse:Domain:Pfad/zum/privatekey“

/etc/dkim-keys.conf
*@beispiel.de:beispiel.de:/etc/postfix/dkim/beispiel

dkim-filter mit neuer Konfiguration neu starten.

/etc/init.d/dkim-filter restart

Postfix muss noch angepasst werden, damit Mails zum Signieren an dkim-filter weitergereicht werden. Das wird mit Hilfe der Option „smtpd_milters“ für smtp Verbindungen bzw. „non_smtp_milters“ für Mails via local inject.

/etc/postfix/main.cf
smtpd_milters = inet:localhost:12345
non_smtpd_milters = inet:localhost:12345
/etc/init.d/postfix restart

Nachdem Postfix neugestartet wurde, werden die Mails, die für die Signierung mit DKIM konfiguriert wurden, mit einer entsprechenden Signatur versehen. Damit die Arbeit auch Früchte trägt, darf man natürlich den DNS-Zonen-Eintrag nicht vergessen! Für das Ausfiltern von Emails ohne gültigen DKIM-Header muss z.B. Spamassassin konfiguriert werden.
Beide Verfahren haben natürlich ihre Vor- und Nachteile. Die großen Provider bevorzugen teils SPF und teils DKIM oder auch beides. Um die Zustellung von Mails sicherzustellen sollte man beide Verfahren nutzen und unterstützen.

Sebastian Saemann
Sebastian Saemann
CEO Managed Services

Sebastian kam von einem großen deutschen Hostingprovider zu NETWAYS, weil ihm dort zu langweilig war. Bei uns kann er sich nun besser verwirklichen, denn er leitet das Managed Services Team. Wenn er nicht gerade Cloud-Komponenten patched, versucht er mit seinem Motorrad einen neuen Rundenrekord aufzustellen.

0 Kommentare

Trackbacks/Pingbacks

  1. Weekly Snap: inGraph release, Gude hardware, IPv6 & DKIM tips › NETWAYS Blog - [...] Managed Services, Sebastian explained Domain Keys Identified mail for the verification of sender email addresses, contrasting it to the…
  2. Segfault bei dkim-filter und libmilter1.0.1 < 8.14.4-1 › NETWAYS Blog - [...] hatten ja schon ausführlich über die Einrichtung und die Nutzung von Dkim berichtet. Mit der Zeit zeigten sich jedoch…

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Mehr Beiträge zum Thema Web Services

CfgMgmtCamp 2024: Unser Rückblick

Vergangene Woche fuhr ein Teil unseres Teams bei NWS bis nach Ghent in Belgien, um am ConfigManagementCamp 2024 teilzunehmen. Hierbei handelt es sich um eine kostenlose Konferenz, direkt im Anschluss an die FOSDEM, was Jahr für Jahr für ein großes Publikum aus Fans...

Effektive Zugriffskontrolle für GitLab Pages

Grundlagen von GitLab Pages GitLab Pages sind eine facettenreiche Funktion, die es ermöglicht, statische Webseiten direkt aus einem GitLab-Repository heraus zu hosten. Diese Funktionalität eröffnet eine breite Palette von Anwendungsmöglichkeiten, von der Erstellung...

Why We’re Excited About DevOps Camp 2023!

This year, our NETWAYS Web Services Team is highly motivated to participate in DevOps Camp in Nuremberg! After a short break since stackconf in Berlin, we are back at a conference. We are delighted to be able to support DevOps Camp once again. In this article, we...