Postfix, Mailman und (X)VERP

Wenn man per Mail nicht nur mit einer kleinen Zahl an Personen kommunizieren, sondern einen möglichst großen Adressatenkreis erreichen will, bietet sich der Einsatz von Mailinglisten an (wer keine Ahnung hat, was eine ML ist, der möge das jetzt bitte in dem Wikipedia-Link nachlesen). Die Software der Wahl ist in meinem Fall GNU Mailman - vor allem, weil das Tool über eine auch für unerfahrene Endnutzer geeignete Weboberfläche verfügt, über welche man sich z.B. an der Liste an- und abmelden, seine Daten ändern oder die Archive einsehen kann.

Aus administrativer Sicht hat die Software drei Vorteile:

  • Sie ist extrem schnell und einfach einzurichten und erfordert kaum Wartung.
  • Die Integration mit dem Mailserver (also eigentlich MTA) Postfix ist extrem komfortabel.
  • Die Software erkennt automatisch und sehr, sehr zuverlässig, wenn Mailadressen mit der Zeit ungültig werden und entfernt diese dann von den Verteilern.

Um den Punkt Nummer drei noch effektiver zu gestalten, kann Mailman eine Technik anwenden, die als VERO bezeichnet wird. Dabei wird, vereinfach gesagt, die Zieladresse in der Absenderadresse kodiert. Sendet die Mailingliste z.B. mit dem Absender mailingliste-bounces@lists.incertum.net eine Mail an die Adresse post@largefeed.incertum.net, so wird nach VERP aus dem Absender:

mailingliste-bounces+post=largefeed.incertum.net@lists.incertum.net

Der Vorteil liegt auf der Hand: Kommt es beim Versenden der Mail zu einem Fehler, so kann man aus der kodierten Adresse sehr schnell, also mit wenig CPU-Belastung, herauslesen, welche Adresse fehlerhaft war. Die Art und Weise, wie Mailman das VERP-Protokoll umsetzt, ist tadellos, hat aber einen enscheidenden Nachteil: Für jeden Empfänger wird eine eigene Mail generiert. Und da MTAs wie Postfix für jede Mail, die sie bearbeiten, eine temporäre Datei auf der Festplatte ablegen, das so genannte Queue-File, entsteht bei vielen Empfängern ein ganz schöner Überhang an Ein-/Ausgabe-Operationen.

Es geht aber auch eleganter: Postfix unterstützt VERP nämlich von Haus aus - und für Mailman existiert ein Patch, der die Benutzung dieses Features erlaubt. Und damit wird dann pro Nachricht auch nur noch EIN Queue-File erzeugt.