Open Source im professionellen Einsatz

Workshop: Mailinglisten mit Mailman sicher betreiben

Massenversand

Wenn's um den Mailversand an viele Empfänger geht, ist Mailman die passende Software. Doch bis alles läuft, müssen Sie das komplexe System erst mal konfigurieren. Auch der Umgang mit Listenmoderation, Spammern, Querulanten jeder Art und neugierigen Suchmaschinen-Spidern will gelernt sein.

Für Open-Source-Projekte sind sie unverzichtbar: Fast jedes verfügt heute über mindestens eine, wenn nicht eine ganze Herde Mailinglisten, auf denen sich Anwender austauschen oder Entwickler über technische Fragen diskutieren. Das Tool der Wahl ist dabei häufig der Listenmanager Mailman[1], der sich in jeder gut sortierten Linux-Distribution findet. Zwar hat er durchaus noch einige Konkurrenten wie die Klassiker Majordomo[2] und Ezmlm[3] neben sich. Doch Mailman überzeugt durch gute Performance auch bei sehr großen Verteilern und vor allem durch sein komfortables Webinterface.

Per Browser verwalten Benutzer ihre Abonnements, das integrierte Tool Pipermail erzeugt HTML-Archive der Listen und auch die Administration lässt sich komplett übers Web erledigen, wenn Sie nicht auf den Satz mitgelieferter Kommandozeilentools zurückgreifen wollen. Dass Mailman in Python geschrieben ist, sollte niemanden wundern: Autor Barry Warsaw gehört zu den Python-Core-Entwicklern.

Wer Mailman partout selbst übersetzen will, findet im Kasten "Mailman kompilieren" Hinweise dazu. Einfacher ist es jedoch, das fertige Paket einer aktuellen Distribution zu nutzen. Auch hier schadet ein Blick in das zugehörige Readme nicht, zumindest müssen Sie bei den nachfolgenden Einstellungen prüfen, ob Ihre Distribution sie ordnungsgemäß vorgenommen hat. Ohne manuelle Arbeit läuft Mailman in der Regel nicht.

Apache anpassen

Als Erstes nehmen Sie das zugehörige Webinterface in Betrieb. Mailman stellt dafür einige CGI-Programme bereit, die im Regelfall unter »/usr/lib/mailman/cgi« installiert sind. Statt diese in das »cgi-bin« des Webservers zu kopieren, verwenden Sie besser im Apache die Parameter »ScriptAlias« und »Alias«. In der »httpd.conf« ergänzen Sie an passender Stelle in den Host-Einstellungen folgende Zeilen - prüfen Sie aber zuerst noch, ob Ihre Distribution das nicht bereits erledigt hat:

ScriptAlias /mailman/ 
/usr/lib/mailman/cgi-bin/
Alias       /mailmanicons/ 
/usr/lib/mailman/icons/
Alias       /pipermail/ 
/var/lib/mailman/archives/public/


Nach einem Neustart des Webservers sehen Sie unter der URL »http:// Servername/mailman/listinfo« eine leere Listenübersicht. Erhalten Sie stattdessen Warnungen über falsche User- oder CGI-IDs, beachten Sie bitte den Kasten "Mailman kompilieren".

Mailman konfigurieren

Die Datei »/usr/lib/mailman/Mailman/ Defaults.py« enthält ausführlich kommentiert alle möglichen Parameter für Mailman. Da schon das nächste Update diese Datei möglicherweise überschreibt, ändern Sie sie nicht direkt, sondern kopieren die Parameter, die Sie anpassen wollen, aus »Defaults.py« an das Ende der Konfigurationsdatei »mm_cfg.py«. Listing 1 zeigt ein Beispiel für die Grundeinstellungen.

Mailman versendet seine Nachrichten per SMTP an »localhost«, Port 25 (Zeilen 1 bis 3). »SMTP_MAX_RCPTS« in Zeile 4 legt fest, dass er bei Listen mit sehr vielen Abonnenten mehrere E-Mails mit jeweils 5000 Empfängern generiert. Die explizite Angabe des benutzten Mailservers in Zeile 5 ist für den Versand irrelevant, hilft Mailman aber später dabei, Konfigurationsdateien wie die »aliases.db« für den MTA automatisch bereitzustellen. Die Angabe von Hostnamen und URL (Zeile 7 bis 9) sorgt dafür, dass die von Mailman erzeugten E-Mails korrekte Absender tragen und das Webinterface die richtigen Links erzeugt.

Der Mail Transfer Agent (MTA) muss wissen, was er an Mailman weiterreichen soll. Der Listenmanager arbeitet mit beliebigen Mailservern zusammen, etwa Postfix, Sendmail, QMail oder Exim. Dieser Artikel erklärt die Konfiguration anhand von Postfix. Wer einen anderen Mailserver einsetzt, findet unter den Readme-Dateien im Mailman-Paket für die gebräuchlichsten MTAs jeweils eigene Anleitungen. Der Mailserver muss auf die passende Maildomain der künftigen Mailinglisten hören, zum Beispiel »listen.postfixbuch.de«.

Eine eigene Subdomain für die Mailinglisten anzulegen ist ratsam. Sollten irgendwann Postfächer und Mailinglisten auf unterschiedlichen Servern lagern, richten Sie anhand der Domains leicht das passende Routing ein.

Mailman kompilieren

Wer sich Mailman aus aktuellen Sourcen selber kompilieren möchte, tut gut daran, auf jeden Fall die mitgebrachten Readmes und vor allem die Datei »INSTALL« zu lesen. Der folgende Configure-Aufruf zeigt die Pfade, um Mailman unter Suse Linux zu installieren:

./configure --prefix=/usr/lib/mailman 
--sysconfdir=/etc --localstatedir=
/var/run --libexecdir=/usr/lib/mailman 
--mandir=/usr/share/man --with-groupname=
mailman --with-username=mailman 
--with-var-prefix=/var/lib/mailman 
--with-cgi-gid=nogroup 
--with-mail-gid=mailman


Die letzten beiden Parameter bilden die größte Gefahrenstelle bei Eigenbauten. Mailman prüft aus Sicherheitsgründen, mit welchen Userkennungen er aufgerufen wurde, und verweigert die Arbeit, wenn diese nicht mit den hier eingestellten Werten übereinstimmen. »--with-cgi-gid« gibt die Gruppenkennung an, unter der die CGI-Skripte laufen, in der Regel die Gruppe des Apache-Webservers (»nogroup«). »--with-mail-gid« hingegen gibt vor, unter welcher Gruppe Mailman gestartet werden darf, wenn der Mailserver E-Mails an ihn weiterreicht.

Wenn sich Mailman über falsche IDs beklagt und die Arbeit verweigert, lohnt es sich, die Fehlermeldungen vollständig zu lesen. Mailman führt an, welche ID er erwartet und welche ID tatsächlich benutzt wird. So lassen sich die Fehler leicht finden und die Konfiguration anpassen.

Lief das Configure-Skript fehlerfrei durch, übersetzen und installieren Sie Mailman ganz klassisch über »make« und »make install«.

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook