Hier, heute mal Leichenfledderei :) Sprich, es gibt einen Beitrag, der auf unserer internen Dokumentation basiert, aber etwas erweitert wird. In 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 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 A- und 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 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 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 /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.