Ich hatte vor einer Weile die Aufgabe, eine Mailingsliste einzurichten. Die erwartete Funktionalität lässt sich einfach beschreiben:
- die Mailingliste hat mehrere Empfänger/Empfängerinnen; diese werden manuell verwaltet und ändern sich selten, es wird daher keine Web- oder sonstige Schnittstelle zum An- und Abmelden benötigt
- es gibt eine E-Mail-Adresse für die Mailingliste; alle Mails die an diese Adresse gesendet werden, werden zu allen Empfänger/Empfängerinnen der Mailingsliste weitergeleitet
- ein beliebiger Empfänger/eine beliebige Empfängerin soll bei einer E-Mail der Mailingliste im Mailprogramm einfach auf Antworten/Reply klicken können um eine Mail wieder an alle Listenempfänger zu senden und nicht nur an den Absender/die Absenderin
Ich wollte nach Möglichkeit nicht mit Kanonen auf Spatzen schießen und mir den Administrationsaufwand eines Mailman o. Ä. ans Bein binden, also suchte ich nach einer Möglichkeit, eine Lösung nur mit Postfix zu bauen.
Das Weiterleiten einer E-Mail an mehrere Empfänger war kein Problem, diese Funktion ist wahrscheinlich sowie so auf jedem ernstzunehmenden Mailserver vorhanden. In Postfix nutzt man dafür Virtual Alias Maps (alternativ geht das auch mit „normalen“ Alias Maps).
Damit ein Klick auf den Antworten/Reply-Button an die Adresse der Mailingliste und nicht an die Absenderadresse geschickt wird, kann man den Reply-To
Mail-Header nutzen. Dieser muss dazu in jede E-Mail eingefügt werden, die an die Mailinglisten-Empfänger gesendet wird.
Postfix bietet mit den sogenannten Header-Checks eine Möglichkeit, die Header einer E-Mail, die von Postfix zur Verarbeitung angenommen wurde, zu untersuchen und gegebenenfalls eine Aktion auszuführen. In meinem Fall sucht Postfix nach der Adresse der Mailingliste im To
-Header. Wird diese Adresse gefunden, fügt Postfix den Reply-To
-Header in die Mail ein.
Alles was man machen muss, ist eine Datei mit den entsprechenden Regeln anzulegen …
# /etc/postfix/header_checks # poor man's mailing list /^To: mailingliste@example.org/ PREPEND Reply-To: mailingliste@example.org
… und die header_checks
-Option in der Postfix-Konfigurationsdatei zu setzen:
# /etc/postfix/main.cf header_checks = regexp:/etc/postfix/header_checks
Ab jetzt erhalten alle Mails an die Mailinglisten-Adresse den passenden Reply-To
-Header und die Billig-Mailingliste ist fertig.
Dieses Setup funktioniert hier seit zwei Jahren problemlos.