Mailman installieren

Posted on Sat 19 May 2012 in linux • 3 min read

So, mal eine kleine Anleitung, wie man Mailman installieren kann, unter anderem für mich als Gedächtnisstütze:) Aber erstmal:

Was ist eigentlich Mailman?

Mailman ist ein Listenserver, welcher einem Mailinglisten bereitstellt. Das ist zum Beispiel nützlich, wenn man in einer größeren Gruppe kommunizieren will, kann zum Beispiel auch als eine Art Newsletter herhalten. Benutzer melden sich an einer Mailingliste an und erhalten dann die Mails, welche an diese Liste gehen. Man kann detailliert einstellen, wer an die Liste eine Mail schreiben darf und ob Anhänge erlaubt sind und noch vieles mehr. Man kann das ganze also auch als Forum betrachten, nur dass man neue Beiträge direkt in seinem Mailclient lesen kann.

Was wird für Mailman benötigt?

Um Mailman installieren zu können, sollte man ein paar Dinge haben:

  • Einen Server, auf dem man Root-Rechte hat
  • Eine IP-Adresse, welche statisch ist (keine Wählverbindung!)
  • Einen installierten und konfigurierten MTA (z.B. Postfix)
  • Eine Domain, zu der man auch Subdomains aufschalten kann Dann kann es auch schon los gehen :)

Die Installation

HINWEIS: Das ist eher was für erfahrene Linuxer, die Wissen was sie tun und sich auch helfen können, wenn mal was nicht mehr geht!

Ich zeige die Installation und auch die Konfiguration für Ubuntu 10.04 Server Edition mit Postfix als MTA, es funtioniert aber auch mit anderen MTAs! Es ist lediglich folgendes Paket zu installieren:

mailman

Danach müssen noch die Berechtigungen geprüft und berichtigt werden, ein Aufruf von check_perms hilft hier weiter. Um die gefundenen Fehler zu korrigieren, das Script noch einmal mit dem Parameter -f aufrufen, so oft, bis keine Änderung bei der Ausgabe mehr stattfindet oder halt nichts mehr gefunden wird. Eventuell ist dann noch etwas Handarbeit nötig, das Script scheitert anscheinend manchmal an Symlinks.

Die Konfiguration

Ein bisschen tricky, da man doch verhältnismäßig wenig verschiedene Anleitungen im Netz findet, also muss man ein wenig schauen, probieren und hoffen ;) Zuerst machen wir mal ein Backup von /etc/postfix, man weiß ja nie, und Backups sind immer gut. Dann machen wir uns an die eigentliche Konfiguration:

Mailman

Zuerst Mailman, in der Datei /etc/mailman/mm_cfg.py:

# Die Sprache
DEFAULT_SERVER_LANGUAGE = 'en'

# Der MTA
MTA='Postfix'

#-------------------------------------------------------------
# Default domain for email addresses of newly created MLs
DEFAULT_EMAIL_HOST = 'lists.example.de'
#-------------------------------------------------------------
# Default host for web interface of newly created MLs
DEFAULT_URL_HOST   = 'lists.example.de'
#-------------------------------------------------------------
# Required when setting any of its arguments.
add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)

POSTFIX_STYLE_VIRTUAL_DOMAINS = ['lists.example.de']

# Der Listenverwalter
DEB_LISTMASTER = 'postmaster@example.de'

Ich gehe hier davon aus, dass Mailman auf einer eigenen Subdomain installiert wird (lists.*). Ein besonderer Augenmerk sollte auf der Zeile mit dem MTA liegen: Auch wenn im "Handbuch" von Mailman steht, dass für Postfix MTA=none gesetzt werden soll, hat dies bei mir nicht funktioniert, so geht es, allerdings mit Anführungszeichen! Nun legen wir unsere Verwaltungsliste an, sie heißt Mailman:

newlist mailman

Es werden dann ein paar Daten abgefragt, wie die Mail-Adresse des Listenverwalters. Soviel zu Mailman bisher, jetzt machen wir ihn mit Postfix bekannt.

Postfix

Als erstes editieren (gegebenenfalls anlegen) wir die Datei /etc/postfix/transport:

lists.example.de    mailman:

An die main.cf fügen wir folgendes an, bzw. erweitern bestehende Einträge:

# Mailman
relay_domains = lists.example.de
relay_recipient_maps = hash:/var/lib/mailman/data/virtual-mailman
transport_maps = hash:/etc/postfix/transport
mailman_destination_recipient_limit = 1

Nun folgt noch eine Änderung in der master.cf, hier sind folgende zwei Zeilen einzufügen:

mailman   unix  -       n       n       -       -       pipe
  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}

Hier sollte darauf geachtet werden, dass diese zwei Zeilen schon da sein können, das war bei mir der Fall, ich weis allerdings nicht warum.

Abschlussarbeiten

Zuerst werden Standard-Einstellungen für die erste Liste geladen, und ein Passwort zum erstellen neuer Listen angelegt:

config_list -i /var/lib/mailman/data/sitelist.cfg mailman
mmsitepass

und dann alle Änderungen übernehmen:

postmap transport
/usr/lib/mailman/bin/genaliases
/etc/init.d/postfix reload
/etc/init.d/mailman start

Jetzt sollte Mailman starten, ohne dass es Probleme gibt, wenn das nicht der Fall ist, steht in der Fehlermeldung recht gut, woran es hapert. Wichtig ist hier auch, die Maillogs zu checken und Postfix zu testen, wer schickt sich nicht gerne viele nette Mails;) Jetzt ist man quasi schon fertig, aber das ganze ist noch etwas Benutzer unfreundlich, denn momentan kann man sich nur mit Mails an mailman in Listen eintragen usw. Auch fehlt ein Admininterface... Also wird noch schnell weiterkonfiguriert:

Apache

Mailman liefert bereits eine Apache Konfigurationsdatei mit, diese muss nur noch aktiviert werden:

ln -s /etc/mailman/apache.conf /etc/apache2/sites-available/mailman
a2ensite mailman
/etc/init.d/apache2 force-reload

Soweit, so leicht... Wenn gewünscht können in /etc/mailman/apache.conf noch Änderungen vorgenommen werden, aber dann daran denken, dass diese erst bei einem Reload des Webservers berücksichtigt werden. Und das wars auch schon:)

Quellen und weitere Infos

Auch ich hab meine Infos ja woher, und zwar unter anderem hier: