====== mailman ======
* Urspruenglicher Autor: Ramon Kukla
* Urspruengliches Datum: 03.02.2012
Hier, heute mal Leichenfledderei :) Sprich, es gibt einen Beitrag, der auf unserer internen Dokumentation basiert, aber etwas erweitert wird. In [[http://adminstories.de/index.php?/archives/125-Das-Backup.html|Das Backup]] hatten wir schon angemerkt, dass wir fuer uns intern eine Mailingliste nutzen. Da wir ja beinahe alles selber machen moechten, haben wir dafuer [[http://www.gnu.org/software/mailman/index.html|mailman]] bei uns im Einsatz. Mailman ist eine Software fuer die Erstellung und Verwaltung von Mailinglisten. Gibt es eigentlich Alternativen?
Sowohl die Einrichtung, als auch die Wartung und Pflege von mailman ist erfreulich uebeschaubar. Wenn man es halt mal gemacht hat. Vor der Installation legen wir in unserem DNS noch einen [[http://de.wikipedia.org/wiki/A_Resource_Record|A-]] und [[http://de.wikipedia.org/wiki/MX_Resource_Record|MX]]-Record fest, da wir gerne eine eigene Subdomain fuer die Listen nutzen moechten. Wir nehmen dafuer "lists". Anschliessend installieren wir mailman via ''root@server:~# aptitude install mailman''. Im Rahmen der Installation koennen wir ein paar "Sprachpackete" auswaehlen und werden darauf hingewiesen, dass wir, nach der Installation, noch ''newlist mailman'' laufen lassen sollen.
Erst einmal wollen wir aber schauen, dass wir mailman spaeter auch via Brower erreichen koennen.
root@server:~# ln -s /etc/mailman/apache.conf /etc/apache2/sites-enabled/mailman
root@server:~# apache2ctl configtest
root@server:~# apache2ctl graceful
Das Apache-Modul ''cgi'' braucht es auch noch. Wenn das also nicht aktiv ist, dran denken. Nun wollen wir [[http://www.postfix.org/|Postfix]] noch anpassen. Dafuer nehme ich folgende Anpassungen in der ''/etc/postfix/main.cf'' vor.
relay_domains = lists.ptlx.de
transport_maps = hash:/etc/postfix/transport
mailman_destination_recipient_limit = 1
alias_maps = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases
Bei bestehender Postfix-Konfiguration mag das natuerlich etwas anders aussehen, bzw. es koennte schon der ein oder andere Eintrag bei euch vorhanden sein. Damit wir spaeter keine "loops back to myself"-Meldungen erhalten, passen wir in der ''/etc/postfix/main.cf'' noch das ''[[http://www.postfix.org/postconf.5.html#mydestination|my destination]]'' an und fuegen die Domain, die wir auch bei ''relay_domains'' angegeben haben (siehe oben), hinzu.
In der ''/etc/postfix/master.cf'' sollten wir nun folgender Eintrag zu finden sein.
mailman unix - n n - - pipe
flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${user}
Nun erstellen wir noch die Datei ''[[http://www.postfix.org/transport.5.html|/etc/postfix/transport]]'', tragen dort ''list.ptlx.de mailman:'' ein und erstellen/aktualisieren anschliessend via ''postmap -v /etc/postfix/transport'' (-v fuer verbose) die sogenannte "Postfix lookup table". Soweit, so Postfix.
Nun noch etwas fuer mailman konfigurieren (warum wir uns heute ja auch getroffen haben). Wir haben fuer uns folgendes in der ''/etc/mailman/mm_cfg.py'' eingestellt:
DEFAULT_URL_PATTERN = 'https://%s/cgi-bin/mailman/'
DEFAULT_EMAIL_HOST = 'lists.ptlx.de'
DEFAULT_URL_HOST = 'www.ptlx.de'
MTA='Postfix'
Dann noch via ''newlist mailman'' die, nennen wir es mal, "initiale" Liste anlegen und anschliessend die Aliases in ''/etc/aliases'' einstellen.
mailman: "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join: "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request: "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman"
Was zu unserem Glueck nun noch fehlt ist die Initialisierung der sogenannten "alias-datenbank" und der Neustart von Postfix (sicher ist sicher).
root@server:~# newaliases
root@server:~# /etc/init.d/postfix restart
Statt ''newaliases'' kann im Uebrigen auch ''sendmail -bi'' verwendet werden.
Im Rahmen der Erstellung der ersten Liste sollte es nun auch eine Mail an die Adresse gehen, die hier fuer "Enter the email of the person running the list:" eingetragen habt. Dort findet sich dann unter anderem dem Link, ueber den mailman nun via http(s) konfiguriert werden kann. So, fertig :)
**Migration?**
Wenn mailman laeuft ist die Migration einer Liste recht einfach. Dafuer werden erst einmal alle Listendaten auf dem alten Server eingesammelt...
root@server:/var/lib/mailman# tar cfz /root/archiv.tar.gz archives/
root@server:/var/lib/mailman# tar cfz /root/data.tar.gz data/
root@server:/var/lib/mailman# tar cfz /root/lists.tar.gz lists/
...und nach dem Uebertragen auf den neuen Server koennen die Daten dort entpackt und an die richtige Stelle gebracht werden.
root@foo ~ # tar xzf archiv.tar.gz
root@foo ~ # tar xzf data.tar.gz
root@foo ~ # tar xzf lists.tar.gz
root@foo ~ # mv archives/* /var/lib/mailman/archives/
root@foo ~ # mv data/* /var/lib/mailman/data/
root@foo ~ # mv lists/* /var/lib/mailman/lists/
Nachfolgend sollte noch ein ''check_perms'' ausgefuehrt werden, der die Berechtigungen auf fuer mailman wichtige Verzeichnisse prueft. Die Option ''-f'' besagt, dass falsch gesetzte Berechtigungen auch gleich in Ordnung gebracht werden.
root@foo ~ # check_perms -f
root@foo ~ # /etc/init.d/mailman start
**Probleme?**
Was kann passieren oder ist vielleicht noch interessant zu wissen? Mir ist schon passiert, dass ich mailman nicht gaengig bekommen habe und in der ''/etc/mail.log'' die Meldung ''postfix/smtpd[25778]: fatal: open database /var/lib/mailman/data/aliases.db: No such file or directory'' zu sehen war. Dann muss die Datei ''aliases.db'' noch angelegt werden.
root@server /srv/dav # touch /var/lib/mailman/data/aliases.db
root@server /srv/dav # postalias /var/lib/mailman/data/aliases.db
root@server /srv/dav # /etc/init.d/postfix restart
* Stopping Postfix Mail Transport Agent postfix [ OK ]
* Starting Postfix Mail Transport Agent postfix [ OK ]
Wenn nach der Migration in der Mailingliste der konfigurierte Hostname nicht mehr stimmt, kann das wie folgt in Ordnung gebracht werden.
root@server /var/lib/mailman/bin $ ./withlist -l -r fix_url LISTNAME -u foo.ptlx.de -v
Importing fix_url...
Running fix_url.fix_url()...
Loading list hosting (locked)
Setting web_page_url to: http://foo.ptlx.de/cgi-bin/mailman/
Setting host_name to: lists.ptlx.de
Saving list
Finalizing
Und um eine Mailingliste von http auf https, oder umgekehrt, zu bringen kann man wie folgt vorgehen. Erst einmal den ''DEFAULT_URL_PATTERN'' in der ''/etc/mailman/mm_cfg.py'' anpassen. Damit werden alle neuen Listen schon mal wie gewuenscht erstellt. Fuer alte Listen muss man noch dann nur noch ''fix_url'' aufrufen.
root@server /var/lib/mailman/bin $ withlist -l -a -r fix_url
Wobei die Optionen ''-l'', ''-a'' und ''-r'' fuer ''lock list'', ''all lists'' und ''run module'' stehen.
[[adminstoriesartikel|Zurück zur Uebersicht]]