Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

adminstoriesmailman [20120920 08:28] (aktuell)
Dirk Deimeke angelegt
Zeile 1: Zeile 1:
 +====== 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.
 +
 +<code bash>​root@server:​~#​ ln -s /​etc/​mailman/​apache.conf /​etc/​apache2/​sites-enabled/​mailman
 +root@server:​~#​ apache2ctl configtest
 +root@server:​~#​ apache2ctl graceful</​code>​
 +
 +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.
 +
 +<​code>​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</​code>​
 +
 +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.
 +
 +<​code>​mailman ​  ​unix ​ -       ​n ​      ​n ​      ​- ​      ​- ​      pipe
 +  flags=FR user=list argv=/​usr/​lib/​mailman/​bin/​postfix-to-mailman.py
 +  ${nexthop} ${user}</​code>​
 +
 +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:​
 +
 +<​code>​DEFAULT_URL_PATTERN = '​https://​%s/​cgi-bin/​mailman/'​
 +DEFAULT_EMAIL_HOST = '​lists.ptlx.de'​
 +DEFAULT_URL_HOST ​  = '​www.ptlx.de'​
 +MTA='​Postfix'</​code>​
 +
 +Dann noch via ''​newlist mailman''​ die, nennen wir es mal, "​initiale"​ Liste anlegen und anschliessend die Aliases in ''/​etc/​aliases''​ einstellen.
 +
 +<​code>​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"</​code>​
 +
 +Was zu unserem Glueck nun noch fehlt ist die Initialisierung der sogenannten "​alias-datenbank"​ und der Neustart von Postfix (sicher ist sicher).
 +
 +<code bash>​root@server:​~#​ newaliases
 +root@server:​~#​ /​etc/​init.d/​postfix restart</​code>​
 +
 +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...
 +
 +<code bash>​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/</​code>​
 +
 +...und nach dem Uebertragen auf den neuen Server koennen die Daten dort entpackt und an die richtige Stelle gebracht werden.
 +
 +<code bash>​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/</​code>​
 +
 +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.
 +
 +<code bash>​root@foo ~ # check_perms -f
 +root@foo ~ # /​etc/​init.d/​mailman start</​code>​
 +
 +**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.
 +
 +<code bash>​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 ]</​code>​
 +
 +Wenn nach der Migration in der Mailingliste der konfigurierte Hostname nicht mehr stimmt, kann das wie folgt in Ordnung gebracht werden.
 +
 +<code bash>​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</​code>​
 +
 +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.
 +
 +<code bash>​root@server /​var/​lib/​mailman/​bin $ withlist -l -a -r fix_url</​code>​
 +
 +Wobei die Optionen ''​-l'',​ ''​-a''​ und ''​-r''​ fuer ''​lock list'',​ ''​all lists''​ und ''​run module''​ stehen.
 +
 +
 +[[adminstoriesartikel|Zurück zur Uebersicht]]
  
  • adminstoriesmailman.txt
  • Zuletzt geändert: 20120920 08:28
  • von Dirk Deimeke