Für verschlüsselte Mailinglisten gibt es verschiedene Ansätze. Leicht ist das Leben, wenn man
Mailman-ssls einsetzt. Die erweiterte Version kann all das, was die verbreitete Mailingslistensoftware
Mailman auch kann, beherrscht zusätzlich aber diverse Verschlüsselungsfeatures.
Mails an die Liste werden nur noch mit dem
Listenschlüssel verschlüsselt, Mailman-ssls
entschlüsselt die Mails und
verschlüsselt sie dann wieder für jeden Abonnenten einzeln. Nicht verschlüsselte Mails können abgelehnt werden, Empfänger ohne Schlüssel bekommen keine Kopie. Natürlich müssen die öffentlichen Schlüssel der Empfänger dem Server zur Verfügung stehen. Mailman-ssls hat dafür eine Verwaltungsfunktion.
Der große Vorteil von Mailman-ssls ist, dass die Listenteilnehmer nicht die Schlüssel aller anderen haben müssen oder gar selbst in ihren Mailprogrammen Listen pflegen. Den Komfortgewinn bezahlt man mit ein wenig Zentralismus, was auch ein Nachteil ist, denn
der Server muss unbedingt absolut sicher sein, sonst könnten alle Listenmails offengelegt werden. Das heißt, er muss vor Hackerangriffen, aber auch vor physikalischem Zugriff sicher sein. Wie so oft läuft das schnell auf die Frage hinaus, ob man seinem Hoster vertraut, doch dies soll hier nicht diskutiert werden.
Erhalten bleibt auf jeden Fall der Vorteil, dass Mails auf der eigenen Festplatte verschlüsselt abgelegt bleiben, Angriffe gegen einzelne Teilnehmer einer Cryptoliste sind also
nicht erfolgversprechender als sonst auch. Mailman-ssls führt aus Sicherheitsgründen standardmäßig
kein Archiv und beherrscht
OpenPGP-Schlüssel genauso wie
X.509-Zertifikate.
Leider hat sich die Einrichtung auf einem Debian-System als etwas schwierig erwiesen, den weiten Weg zum Ziel fasse ich in diesem HowTo zusammen.
Howto: Mailman-ssls mit OpenPGP und S/MIME-Unterstützung installieren und einrichten
Zuerst einmal benötigt man den Quellcode von Mailman, zu dem der Patch passt. In meinem Fall war das Version
2.1.11. Auf der
Download-Seite bei SourceForge fand ich aber nur die aktuelle Version 2.1.12, keine älteren. Ärgerlich, denn den Patch manuell einzupflegen wäre viel Arbeit.
Glücklicherweise ist Version 2.1.11 gerade in Debian
testing, also kann man mit
apt-get source mailman
den Quellcode herunterladen lassen. Voraussetzung ist natürlich ein entsprechender Source-Eintrag in der
/etc/apt/sources.list, zum Beispiel:
deb-src http://irgendein.mirror.example/debian testing main contrib non-free
.
Zu den Sourcen wird aber ein Patch mit Debian-spezifischen Änderungen heruntergeladen und angewendet, der einen erfolgreichen Mailman-ssls-Patch verhindert. Unter
/usr/src liegen nach der Installation der Mailman-Quellcode und der Debian-Patch als Archiv, sowie die gepatchte Version als Verzeichnis. Das Verzeichnis löscht man also und entpackt danach das ungepatchte Original:
tar -xzvf mailman_2.1.11.orig.tar.gz
.
Im entstandenen Verzeichnis lädt man den Patch von
diesem Server herunter und wendet ihn an:
wget http://non-gnu.uvt.nl/pub/mailman/mailman-2.1.11-pgp-smime_2009-01-02.patch.gz
gunzip -c mailman-2.1.11-pgp-smime_2009-01-02.patch.gz |patch -p1
Abkürzung: Den fertig gepatchten Sourcecode habe ich hier zum Download abgelegt:
mailman-ssls-2.1.11.tar.bz2 herunterladen.
Lief der Patch erfolgreich durch, empfiehlt es sich, einen Blick in die Datei
doc/mailman-install.txt zu werfen. Der Anleitung folgend legt man einen Benutzeraccount an:
groupadd mailman
useradd -c''GNU Mailman'' -s /no/shell -d /no/home -g mailman mailman
Außerdem sind dort die Optionen für
configure
erklärt, und dass Mailman standardmäßig nach
/usr/local/mailman installiert wird, bzw. wie man das ändern kann. Das Ziel-Verzeichnis muss existieren und die richtigen Rechte haben:
mkdir /usr/local/mailman
chgrp mailman /usr/local/mailman
chmod a+rx,g+ws /usr/local/mailman
Ich habe beim
configure
-Durchlauf nur den Hostnamen gesetzt und ansonsten alles bei der Standardeinstellung belassen:
./configure --with-mailhost=lists.example.com
make
make install
Nun lässt man von einem mitgelieferten Script noch die Verzeichnisrechte setzen und schützt die Archive vor öffentlichem Zugriff:
cd /usr/local/mailman
bin/check_perms -f
chmod o-x private
Dann legt man noch die System-Mailingliste mit
bin/newlist mailman
an. Um den Mailman-Dienst zu starten empfiehlt sich ein Init-Script. Ich habe das originale Debian-Script genommen und die Pfade angepasst:
mailman-Script herunterladen.
Damit es im gewünschten Runlevel startet, den Link nicht vergessen:
cd /etc/rc2.d
ln -s ../init.d/mailman S78mailman
Das ist trivial, aber dafür setze ich einen funktionierenden Mailserver und die zur Integration notwendigen Schritte (die sind ebenfalls in der Textdatei beschrieben) hier voraus, ebenso einen Webserver, dem noch mitgeteilt werden muss, dass
/usr/local/mailman/cgi-bin ein
CGI-Verzeichnis ist, und dass zum Beispiel die URL
http://www.example.com/mailman darauf zeigen soll.
Hat man all dies geschafft, so können beim Zugriff auf diese URL immer noch verschiedene Fehler auftreten. Diese sind am Ende von
doc/mailman-install.txt und im
Mailman-Wiki ausführlich behandelt.
Bis auf einen. Meckert Mailman-ssls, er könne das Modul "
GnuPGInterface" nicht importieren, so ist man ziemlich aufgeschmissen. Dieses Modul liegt in
/usr/share/python-support/python-gnupginterface/, und im Web findet man lediglich den Hinweis, man solle das Debian-Paket
python-gnupginterface neu installieren. Das bewirkt wahrscheinlich nichts, deswegen wird es kurzerhand dorthin verlinkt, wo es garantiert gefunden wird:
ln -s /usr/share/python-support/python-gnupginterface/GnuPGInterface.py /usr/local/mailman/GnuPGInterface.py
Dann funktioniert auch das Webinterface, über das man dann neue Listen anlegen und verwalten kann.
datenritter blog am : Mailman-ssls