Nachrichten DMARC-konform mit Mailman verteilen

Abstract

DMARC verhindert effektiv Phishing-Versuche. Es stellt allerdings sehr hohe Ansprüche an die Integrität einer E-Mail. Bestimmte Bestandteile der E-Mail, wie z.B. der RFC5322.From:-Header dürfen - einmal gesetzt - nicht mehr verändert werden. Werden sie verändert, können Empfängerdomains - je nach vorgegebener DMARC-Policy - die Nachricht verwerfen und sie wird nicht…

DMARC verhindert effektiv Phishing-Versuche. Es stellt allerdings sehr hohe Ansprüche an die Integrität einer E-Mail. Der RFC5322.From:-Header muss so gesetzt sein, dass er mit der Senderdomain übereinstimmt. Ist dies nicht der Fall, können Empfänger – je nach vorgegebener DMARC-Policy der Senderdomain – die Nachricht ersatzlos verwerfen.

Das funktioniert reibungslos in direkter 1:1-Kommunikation, scheitert aber an der aktuellen Verarbeitungsweise, sobald es sich um 1:n-Kommunikation auf Mailinglisten handelt. Nahezu alle Mailinglisten-Manager (kurz: MLM) belassen den RFC5322.From:-Header.

Somit gelten die DMARC-Policies der ursprünglichen Senderdomain. Die existierende DKIM-Signatur, die fast immer auch den Subject:-Header signiert hat, werden vom MLM in der Regel durch Hinzufügen des subject_prefix zerstört. Die nun ungültige DKIM-Signatur würde dazu führen, dass Nachrichten aufgrund von Anweisungen in DMARC verworfen werden.

Alignment

Was so sinnvoll und praktisch erscheint ("Ah ja, eine Mail von der Mailingliste ...") zerstört das von DMARC geforderte Alignment – und die Mail wird verworfen. Was Alignment ist und unter welchen Bedingungen es gewahrt bleibt, zeigt ein Video-Tutorial von und mit Mike 'Madkins' Adkins:

Mailman kann DMARC-konform

Mailman 2.1.16 – es ist gerade als Release Candidate 2 erschienen und Anfang September 2013 soll das Final Release veröffentlicht werden – schafft Abhilfe. In Zusammenarbeit mit den Entwicklern von dmarc.org haben die mailman-developers@python.org Code implementiert, der das von DMARC geforderte Alignment aufrecht erhält.

Weil Patrick und ich Mitglieder des postmaster@python.org-Teams sind und auch weil ich es unbedingt wissen wollte, habe ich den Patch gleich am lebenden Objekt getestet (es hat auch nur kurz gekracht...).

Wird die neue Funktion aktiviert, erweitert Mailman die ursprüngliche Mailadresse des Senders im RFC5322.From-Header um die Bemerkung via $LISTENNAME und tauscht die Mailadresse des ursprünglichen Senders gegen die der Mailingliste aus.

Somit gelten die DKIM-Signaturen und DMARC Policies der Mailinglistendomain (sofern vorhanden), nicht des ursprünglichen Absenders.

Diese Behandlung lässt das ursprüngliche Alignment irrelevant werden. Zusätzlich setzt der Patch einen Reply-To:-Header, der auf die Adresse des wahren Absenders verweist.

Nachdem der Patch eingespielt ist, muss das neue Feature in der Konfigurationsdatei mm_cfg.py aktiviert werden:

Important

In der final veröffentlichten Version 2.1.16 wurde der Funktionsname ALLOW_AUTHOR_IS_LIST in FROM_IS_LIST umbenannt. Wenn wir im Weiteren von ALLOW_AUTHOR_IS_LIST schreiben, ist immer FROM_IS_LIST gemeint.

# 2.1.16 Pre-Release
ALLOW_AUTHOR_IS_LIST = Yes

# 2.1.16 Final
FROM_IS_LIST = Yes

Anschließend können die list-admins in Mailmans Weboberfläche im Bereich General die Policy author_is_list beziehungsweise from_is_list auf Yes setzen (die korrekte deutsche Übersetzung ist bereits in Mailman eingeflossen!).

Dies aktiviert die Funktion nur für diese Liste.

Note

Alternativ zum Patch kann man den MLM so konfigurieren, dass er DKIM-signierte Nachrichten nicht zerstört. Wie das geht, zeigt Patrick in seinem Blog-Artikel über DKIM-konforme Mailinglisten.

Ralf Hildebrandt, 11. August 2013

   Mailman    DKIM    DMARC