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
Head of Managed Services

Sepp 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 zusammen mit Martin das Managed Services Team. Wenn er nicht gerade Server in MCollective einbindet, versucht er mit seinem Motorrad einen neuen Geschwindigkeitsrekord aufzustellen.