Aus Linux-Magazin 02/2010

Mailinglisten-Software Sympa 6

© terex, Fotolia.com

Mailinglisten sind komplexer, als sie zunächst aussehen – gerade wenn sie ihren Anwendern und Admins einen gewissen Komfort bieten wollen. Bei Sympa 6.0 reicht ein Passwort pro Benutzer, es bietet ein Webportal zur Verwaltung an und modelliert auch komplexe Berechtigungsmodelle.

Menschen arbeiten meist in Teams, sei es im Beruf, Studium oder an einem Open-Source-Projekt. Da sich die Zusammensetzung dieser Gruppen oft ändert und nur wenige in homogenen Softwarelandschaften arbeiten, bilden Mailinglisten oft den Minimalkonsens für eine Groupware. Sie beheben zumindest die größten Ärgernisse wie manuell gepflegte Verteilerlisten oder Mehrfachzustellungen.

Ganzheitliche Mailinglisten

Yahoo, Google & Co. bieten zwar jedem Listendienste an, wer jedoch die Kontrolle über die Archivierung und Datenauswertung behalten möchte, installiert einen eigenen Server [1]. Mit Blick auf die Welt des Web 2.0 mangelt es vielen dieser Programme aber an Benutzerfreundlichkeit. Die neue Version 6.0 des Listenmanagers Sympa will dies ändern [2].

Gerade die Weboberfläche ist oft eine Quelle für Verdruss, ist sie doch selten mehr als ein Wrapper um eine ehemalige Kommandozeilenschnittstelle. Sie geht beispielsweise davon aus, dass die Benutzer selten mehr als eine Liste abonnieren und dass Listeneigentümer nur wenige Listen verwalten. Jede Liste hat ihre eigene Homepage sowie eigene Passwörter für Abonnenten und Eigentümer.

Die Welt sieht aber anders aus: In Universitäten, Softwareprojekten und größeren Unternehmen gehören Benutzer typischerweise vielen Gruppen und damit auch Mailinglisten an. Letztlich verwalten wenige Listenadmins das Gros der Listen und wünschen sich gestufte Kompetenzen zu vergeben, um auch weniger technikaffine Nutzer als Listenverwalter einzusetzen.

Seit 1997 entwickeln französische Hochschulen die Software für ihre eigenen Bedürfnisse, nämlich den Umgang mit vielen Listen, Abonnenten, Rechteinhabern und Rollenüberschneidungen. Anwender bedienen Sympa in erster Linie per Browser. Die Oberfläche orientiert sich mit einer Listenübersicht als Seitenleiste und einer Leiste von Navigationsreitern am oberen Rand weitgehend an Konventionen für Webportale (siehe Abbildung 1). Benutzer melden sich mit ihrer E-Mail-Adresse und einem Passwort bei Sympa an und verwalten so alle Listen, denen sie als Abonnent, Moderator oder Eigentümer angehören (siehe Abbildung 2).

Abbildung 1: Nach einer optischen Entschärfung verwaltet Sympas Oberfläche viele Listen der Uni Marburg.

Abbildung 1: Nach einer optischen Entschärfung verwaltet Sympas Oberfläche viele Listen der Uni Marburg.

Abbildung 2: Sympa fügt einen »Admin«-Knopf bei Listen ein, wenn der angemeldete User sie besitzt.

Abbildung 2: Sympa fügt einen »Admin«-Knopf bei Listen ein, wenn der angemeldete User sie besitzt.

Darüber hinaus brauchen sie keine weiteren Passwörter, da die Software Rechte verwaltet. Auf Wunsch bezieht Sympa diese Informationen auch aus einem Verzecihnisdienst per LDAP. Wer zum Beispiel zehn Listen abonniert und zwei davon verwaltet, benötigt also nur ein statt ein Dutzend Kennwörter.

Auch sonst bemüht sich Sympa um Überschaubarkeit bei großen Installationen. Deshalb ist es bei Hochschulen, Forschungsinstitutionen, internationalen Organisationen wie der Unesco sowie bei HP und Fujifilm Deutschland so beliebt. Dazu kommt, dass Sympa als Zuckerguss Funktionen mitbringt, die Anwender eher von Forensoftware her kennen: Benutzerbilder, Avatare genannt, Funktionen, um Listenarchive anzuzeigen und zu durchsuchen, sowie ein rudimentäres Filesharing hat es eingebaut.

Versand aus der Datenbank

Seine Neuerungen im Vergleich zum Vorgänger versteckt Sympa 6.0 vornehmlich unter der Haube: Betreiber großer Systeme freut, dass die Software ausgehende Mails nicht direkt verschickt, sondern in einer Datenbank ablegt. Der Daemon »bulk.pl« nimmt sie dort heraus und versendet sie. Er hält Mailinhalte und Zieladressen in getrennten Tabellen, sodass er eine Nachricht nur einmal ablegt, egal wie viele Empfänger sie hat.

Das Skript »bulk.pl« ist parallelisierbar und startet bei Bedarf weitere Prozesse. Es ist prinzipiell möglich, mehrere Instanzen auf unterschiedlichen Servern zu betreiben und so Versand-Cluster einzurichten. Allerdings stellt sich die Frage, wie viele Listen und Teilnehmer Sympa verwalten soll, da es bereits ohne größere Kunstgriffe mit Millionen von Abonnenten zurechtkommt.

Ausfallsicher

Der neue Versand hat jenseits von Skalierung und Performance den Vorteil, dass er bei Systemabstürzen oder Neustarts die Zustellung an der Stelle fortsetzt, an der sie abbrach. Das erspart lästige Doppelungen. Weil nun eine Datenbank die abzuarbeitenden Versandaufträge verwaltet, weiß die Software ziemlich genau, wo der Abbruch erfolgte.

Sympa erlaubt es seinen Admins, Tag und Uhrzeit anzugeben, also wann es anstehende Nachrichten versenden soll. Voluminöse Rundbriefe versendet es dann in Schwachlastzeiten, zu denen die hausinternen Listen wenig frequentiert sind.

Späte Einsicht

Den sicherheitsbewussten Benutzer freut die Änderung, dass Sympa keine Klartextpasswörter mehr verschickt. Egal ob er ein Passwort erstmalig beantragt oder es vergessen hat, erhält er nur eine Nachricht per E-Mail mit einer Einweg-URL. Klickt er sie an, darf er dort ein neues Passwort festlegen. Solche URLs nutzt der Listenmanager auch für Reaktionen, die früher einen Antwortcode per Mail benötigten. Dazu gehört das Annehmen oder Ablehnen zu moderierender Nachrichten oder das Bestätigen einer Adressenänderung. Außerdem verschlüsselt Sympa die Passwörter in der Benutzerdatenbank nun auch nicht mehr reversibel – eigentlich eine Selbstverständlichkeit, aber besser spät als nie.

Wenn die größere Passwortsicherheit auch am wichtigsten sein mag: Die sichtbarste Änderung für Sympa-Benutzer besteht im neuen Design der Weboberfläche (Abbildung 3), die mit dem neuen Logo, den Bonbonfarben und vielen abgerundeten Ecken etwas verspielt daherkommt. Auch die Schriftformatierung ist nicht jedermanns Sache. Die Universität Marburg hat das Layout daher etwas entfeinert und im Aussehen wieder der Vorgängerversion angenähert (Abbildung 1).

Abbildung 3: Sympa im Standard-Design kommt ziemlich poppig daher. Im oberen Bereich wählt der Anwender einen Anwendungsbereich aus, in den Reitern darunter die konkreten Listen. Details oder Operationen blendet die Software bei Bedarf in der linken Spalte ein, falls sich der Anwender angemeldet hat.

Abbildung 3: Sympa im Standard-Design kommt ziemlich poppig daher. Im oberen Bereich wählt der Anwender einen Anwendungsbereich aus, in den Reitern darunter die konkreten Listen. Details oder Operationen blendet die Software bei Bedarf in der linken Spalte ein, falls sich der Anwender angemeldet hat.

Die neue Oberfläche sieht aber nicht nur anders aus, sie gliedert auch die Administrationsoptionen übersichtlicher und bietet eine leidliche, kontextbasierte Hilfe durch Knöpfe neben den Optionsüberschriften. Die direkte Konfiguration des Designs über die Weboberfläche ist gegenwärtig noch eine Spielerei, denn außer den Farben für das Stylesheet lässt sich noch nichts verstellen. Die Entwickler beabsichtigen jedoch in Zukunft alle Konfigurationsdaten in die Datenbank umzusiedeln.

Neben der üblichen Wagenladung Bugfixes sind noch kleinere Features dazugekommen: So lassen sich Listen jetzt kopieren und Moderatoren dürfen bei moderierten Listen mehrere Vorlagen für Ablehnungsnachrichten anlegen und später auswählen (zum Berechtigungsmodell siehe Kasten “Rollen in Sympa”). Die Entwickler haben die Lokalisierung deutlich verbessert, insbesondere ist die ursprünglich aus dem Französischen übernommene Konvention, Leerzeichen vor viele Satzzeichen zu setzen, nicht mehr hart kodiert.

Admins wird interessieren, dass das bereits angekündigte Sympa 6.1 in der Lage sein soll, Muster in ausgehenden Mails empfängerabhängig zu bearbeiten. Das ermöglicht es, »Click to unsubscribe«-Links in den Fuß von Nachrichten einzufügen – seit Jahren ganz oben auf dem Wunschzettel vieler Anwender.

Rollen in Sympa

Sympa kennt fünf verschiedene Benutzerrollen: Listmaster, privilegierte Eigentümer, einfache Eigentümer, Moderatoren und Abonnenten. Moderatoren dürfen Nachrichten ihrer Liste moderieren. Eigentümer konfigurieren ihre Liste und ernennen auch weitere Eigentümer oder Moderatoren, wenn sie privilegiert sind. Listmaster haben unbeschränkte Befugnisse. Szenarien sind aber in der Lage, die Rechte neu zu verteilen.

Eine Liste hat immer mindestens einen Eigentümer, wovon nicht notwendigerweise einer privilegiert sein muss. Wenn eine Liste keine Moderatoren hat (und auch nur dann), übernehmen die Eigentümer deren Aufgabe.

Persönliche Ansprache

Darüber hinaus könnte Sympa beispielsweise die Empfänger eines Kunden-Newsletter persönlich ansprechen. Der Listenmanager wird so zu einer Mailing-Engine mit SQL-Backend, denn schon immer konnte die Software ihren Abonnenten freie Datenfelder zuordnen. Ebenfalls mit Sympa 6.1 dürfen Benutzer alle Abonnements auf einen Schlag suspendieren, später wieder aufnehmen und generierte Listen abbestellen. Das geht derzeit nicht für solche, die ihre Empfänger aus LDAP-Quellen, SQL-Datenbanken, Textdateien oder aus anderen Listen speisen. Zukünftig verwaltet dann das Programm auch Ausschlüsse von Listen.

Sympa ist, von kleineren C-Wrappern abgesehen, in Perl geschrieben und verwendet eine beeindruckende Reihe von Modulen. Auch weil diese Abhängigkeiten erst mal paketiert sein wollen, gibt es für Version 6.0 derzeit außer für Mandriva noch keine Distributionspakete.

Der Admin installiert Sympa aus dem Quellcode, indem er »./configure« aufruft. Die Installation hat sich gegenüber Sympa 5 vereinfacht und zieht sogar die Perl-Module halbautomatisch per CPAN nach. Bei einer Aktualisierung der Vorversion nach der Installation ist nicht nur der Aufruf »sympa.pl –upgrade« nötig, sondern auch das irreversible Überführen zur neuen Passwortverschlüsselung durch »sympa.pl –md5_encode_password«. Es empfiehlt sich, vorher die Datenbank zu sichern.

Die Verzeichnisstruktur ändert sich zwar mit Sympa 6, bleibt aber nach wie vor unkonventionell. Wer damit unzufrieden ist, gibt die Pfade einzeln per Option zu »configure« an oder verwendet den Schalter »–enable-fhs«.

Sympa läuft normalerweise unter einem eigenen User »sympa«. Wer die Installation unvermeidlich als Root durchführen muss, sollte beachten, dass das Skript nicht selbstständig die Eigentümerschaften und Rechte der installierten Dateien zurücksetzt: Der Admin muss die Berechtigungen von Hand zurechtbiegen.

Gut angebunden

Der Listenserver benötigt eine SQL-Datenbank. Obwohl Anwender Sympa auch produktiv mit Oracle oder PostgreSQL einsetzen, ist die Anpassung an MySQL die beste. Bei anderen Backends muss der Admin einige Tabellen von Hand anlegen, bei MySQL kümmert sich Sympa selbst um die Datenbankstruktur. Da Sympa 6 ausgehende Mails in der Datenbank zwischenspeichert, stellt der Systemverwalter deren Puffergröße so groß ein, dass Nachrichten mit der maximal erlaubten Größe noch hineinpassen.

Die Weboberfläche läuft als »fcgi«-Skript auf einem Apache-Webserver und nutzt dazu Perls Template Toolkit (TT2, [3]). Schablonendateien dienen als Grundlage, das eigentliche Layout haben die Entwickler in ein CSS-Stylesheet ausgelagert. Zumindest theoretisch ist es möglich, Sympa jedes erdenkliche Kleid anzuziehen. In der Praxis bedeutet allerdings jede Änderung, die über kleine Eingriffe in das Stylesheet hinausgeht, ziemlich viel Arbeit.

Statt die Präsentation umzustricken, lässt sich Sympa auch als Webservice von eigenen Anwendungen aus aufrufen: Der mitgelieferte SOAP-Server ist recht einfach zu bedienen und anzusprechen. Französische Bildungsinstitute, Sympas Heimatdomäne, benutzen die Software mittlerweile sogar als Backend zur Gruppenverwaltung oder als Authentifizierungsdienst für Webportale. Manchem Anwender scheinen dies aber Fälle zu sein, bei denen ein Hammer jedes Problem wie einen Nagel aussehen lässt.

Eine Szene machen

Sympa ist eine ereignisgetriebene Software: Nahezu alles, was der Server macht, tut er als Reaktion auf bestimmte Aktionen in der Weboberfläche oder bestimmte eingehende Mails. Sympa kennt derzeit 17 verschiedene Ereignisse: Die wichtigsten sind das Hinzufügen und Löschen von Listenabonnenten, das Abonnieren und Abbestellen einer Liste und natürlich das Senden von Mails über eine Liste. Wie genau Sympa auf ein Ereignis reagiert, entscheidet sich durch Auswerten einer kleinen Konfigurationsdatei des Szenarios. Szenarien werden pro Liste durch die Eigentümer oder den Listmaster konfiguriert (siehe Abbildung 4), einige, für das Ereignis »Beantragen einer neuen Liste« beispielsweise, auch global durch den Listmaster.

Abbildung 4: Der Listeneigentümer darf auswählen, wie Sympa bestimmte Ereignisse verarbeitet, etwa das Abonnieren einer Liste oder das Senden einer Mail. Szenarien legen dabei fest, was genau passiert.

Abbildung 4: Der Listeneigentümer darf auswählen, wie Sympa bestimmte Ereignisse verarbeitet, etwa das Abonnieren einer Liste oder das Senden einer Mail. Szenarien legen dabei fest, was genau passiert.

Ein Szenario hat eine etwas ungewöhnliche Syntax: Jede Zeile besteht aus einer Bedingung, einem Pfeil und einer Aktion (siehe Listings 1 und 2). Sympa arbeitet die Datei von oben nach unten ab, bis eine Bedingung zutrifft. Dann führt es die zugeordnete Aktion aus und beendet die Auswertung.

Jedes Ereignis wird einem Benutzer (also einer E-Mail-Adresse) zugeordnet, sei es, weil diese Adresse im From-Header der das Ereignis auslösenden Mail steht oder weil der Benutzer beim Auslösen einer Aktion über das Web unter dieser Adresse eingeloggt ist. Eine Bedingung kann beispielsweise diese Benutzeradresse mit einem regulären Ausdruck abgleichen oder prüfen, ob sie einer Rechtegruppe (Abonnent, Moderator etc.) angehört. Es gibt noch eine ganze Reihe weiterer Bedingungen – wer möchte, schreibt neue Bedingungen als Perl-Plugin.

Die wichtigsten Aktionen hinter dem Pfeil sind »do_it« und »reject«, jeweils ergänzt um ein Argument. Die Aktion »do_it« lässt jenes Ereignis geschehen, bei dem die Software das Szenario aufgerufen hat – also etwa einen Abonnenten hinzufügen oder die Mail verschicken. Die Aktion »reject« verweigert die Ausführung und liefert eine im Parameter genannte Schablonendatei als Fehlermeldung. Je nachdem, ob Benutzer das Ereignis per Mail oder per Web angestoßen haben, erhalten sie diese Meldung per E-Mail oder als Popup-Fenster zugestellt. Um in jedem Fall etwas zu tun, notiert der Admin als letzte Bedingung »true()«. Sympa führt dann die dort zugeordnete Aktion aus, typischerweise erzeugt dies eine Ablehnungsmail.

Zugang per Zertifikat

Das Szenario aus Listing 1 kümmert sich zum Beispiel darum, eine Nachricht an die Liste zu verteilen, wenn der Absender entweder Abonnent, Moderator oder Eigentümer der betreffenden Liste ist. In jedem anderen Fall führt die letzte »true()«-Bedingung dazu, dass eine Ablehnungsmeldung ergeht.

Listing 1:
»send.private«: Nur Abonnenten dürfen
senden

01 title.gettext restricted to subscribers
02 
03 is_subscriber([listname],[sender]) smtp,md5 -> do_it
04 is_editor([listname],[sender])     smtp,md5 -> do_it
05 is_owner([listname],[sender])      smtp,md5 -> do_it
06 true()                       smtp,md5,smime -> reject(reason='send_subscriber')

Etwas verwickelt geraten Szenarien, wenn die Liste der Legitimierungsmodi vor dem Pfeil ins Spiel kommt. Hier sind drei Schlüsselwörter, »smtp«, »md5« und »smime« erlaubt. »smtp« steht für eine Legitimierung der Benutzeradresse lediglich durch den From-Header der Mail, »md5« bezeichnet aus historischen Gründen die Legitimierung durch Login in der Weboberfläche, »smime« steht schließlich für die Legitimierung durch eine X.509-Signatur per Browserzertifikat.

Listing 2 verdeutlicht dies: Die ersten beiden Bedingungszeilen greifen, wenn Eigentümer oder Listmaster per unsignierter Mail (»smtp«) das Löschen einer Adresse aus einer Liste anfordern. Sie führen zur Aktion »request_auth«, sodass Sympa den Eintrag erst dann löscht, wenn der Besitzer es per One-Time-Ticket bestätigt. Die Zeilen 3 und 4 formulieren die gleiche Bedingung, aber den Legitimierungsmodus »md5,smime« und die Aktion »do_it«: Löschanträge per signierter Mail oder aus der Weboberfläche heraus führt Sympa damit ohne Bestätigung durch. Die »true()«-Bedingung übernimmt es wieder, alle anderen Anforderungen abzuweisen.

Listing 2:
»del.auth«: Eigentümer oder Listmaster dürfen
löschen

01 title.gettext deletion performed only by list owners, need authentication
02 
03 is_owner([listname],[sender]) smtp    -> request_auth
04 is_listmaster([sender])       smtp    -> request_auth
05 is_owner([listname],[sender]) md5,smime  -> do_it
06 is_listmaster([sender])  md5,smime       -> do_it
07 true()   smtp,md5,smime -> reject(reason='del_owner')

Mit dem Szenarienkonzept lassen sich Berechtigungen flexibel zuschneiden. Die Universität Marburg stellt damit beispielsweise sicher, dass nur Universitätsangehörige neue Listen beantragen dürfen, dass Skripte, die Newsletter-Listen beschicken, sich legitimieren müssen, oder dass Anwender innerhalb bestimmter Gruppen von Listen beliebig quer posten dürfen. Im Zusammenwirken verschiedener Szenarien lassen sich Listen sogar als Webforum betreiben oder vertrauliche Listen anlegen, auf denen alle Aktionen digitale Signaturen erfordern.

Da Sympa einen Suchpfad für Szenarien kennt, steht es dem Admin frei, mitgelieferte Szenarien zu überschreiben, zu ignorieren oder eigene hinzufügen, ohne in das Default-Konfigurationsverzeichnis einzugreifen. Welche Rechtegruppen welche Optionen verändern dürfen, lässt sich ebenso zentral konfigurieren wie die Vorlagen, nach denen berechtigte User neue Listen einrichten dürfen.

Viele Features

Ein Upgrade von Sympa 5 erledigen Sysadmins ohne große Schwierigkeiten. Allein die erhöhte Passwortsicherheit ist ein schlagendes Argument dafür. Wer seinen Listenserver derzeit unter anderer Software betreibt, denkt jetzt vielleicht eher über eine Migration nach, selbst wenn die architektonischen Unterschiede zu Mailman oder Majordomo nicht verschwunden sind.

In puncto Installation und lästiger Bestätigungs-Popups hat Sympa nachgebessert. Die portalartige Weboberfläche – schon immer ein Wesensmerkmal der Software – konnte zulegen, wirkt aber immer noch etwas amateurhaft. LDAP- und SOAP-Anbindung können dagegen starke Gründe für das Tool aus Frankreich sein. Wem das noch nicht reicht, der testet die Alphaversion von Sympa 6.1 auf dem Demoserver [4]. (mg)

Infos

[1] Stefan Neufeind, “Postverteilung: Sympa und Mailman”: Linux-Magazin 04/08, S. 70

[2] Sympa: [http://www.sympa.org]

[3] Perl TT2: [http://template-toolkit.org]

[4] Demo-Server: [http://demo.sympa.org]

Der Autor

Matthias Warkus promoviert an der Philipps-Universität Marburg in Philosophie und arbeitet für das Hochschulrechenzentrum. Er betreut dort die erste größere produktive Sympa-6-Installation im deutschen Sprachraum und hat 50 000 Nutzer von Majordomo und Mailman migriert. Er ist Autor von Entwicklerhandbüchern für Gnome.

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben