Mailman Installieren

Aus Hostsharing Wiki
Version vom 13. Mai 2009, 21:09 Uhr von Srv00 (Diskussion | Beiträge) (fehlerhafter Zeilenumbruch in Befehlszeile korrigiert)
Zur Navigation springen Zur Suche springen

Mailman

Installation

Installation von Mailman 2.1.1

Vielen Dank an Raimund Specht, der einige Verbesserungen beisteuerte!

Sourcen besorgen und entpacken

Unter http://www.gnu.org/software/mailman/ die letzte software besorgen

Log-Verzeichnis anlegen

     xyz00@hopi:~$ mkdir /home/pacs/XYZ00/var/mailman
     xyz00@hopi:~$ chmod 02775 /home/pacs/XYZ00/var/mailman

Kompilieren

     xyz00@hopi:~$ ./configure 
     --prefix=/home/pacs/XYZ00/mailman 
     --with-username=XYZ00 
     --with-groupname=XYZ00 
     --with-var-prefix=/home/pacs/XYZ00/var/mailman
     xyz00@hopi:~$ make
     xyz00@hopi:~$ make install

Mailman > 2.1.6 benötigt beim configure-Befehl zusätzlich:

--with-cgi-gid=XYZ00 
--with-mail-gid=nogroup 
--with-python=/usr/local/share/python/2.4.4/bin/python

Datenrechte prüfen

Sicherheitshalber die Dateirechte prüfen (und ggf. korrigieren) lassen:


xyz00@hopi:~$ ~/mailman/bin/check_perms -f

Konfiguration

mm_cfg.py

~/mailman/Mailman/mm_cfg.py editieren.
     

Folgendes könnte dort z.B. stehen:

     ...
     ##################################################
     # Put YOUR site-specific settings below this line.
     # -*- python -*-

     DEFAULT_HOST_NAME = 'www.example.com'
     DEFAULT_EMAIL_HOST = 'example.com'
     DEFAULT_URL_HOST = 'www.example.com'
     add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
     add_virtualhost('www.zoopnet.de', 'zoopnet.de')

     DEFAULT_SERVER_LANGUAGE = 'de'

In ~/mailman/Mailman/Defaults.py seht ihr, was man in mm_cfg.py alles einstellen kann.

CGIs kopieren (in alle Domain-Verzeichnisse, die Mailman haben sollen)

xyz00@hopi:~$ mkdir ~/doms/example.com/cgi/mailman
xyz00@hopi:~$ cp ~/mailman/cgi-bin/* ~/doms/example.com/cgi/mailman
xyz00@hopi:~$ chmod g-s ~/doms/example.com/cgi/mailman/*

.htaccess

Dafür sorgen, dass mailman unter /mailman statt /cgi-bin/mailman erreichbar ist. In ~/doms/example.com/subs/www/.htaccess folgendes eintragen:

     RewriteEngine On
     RewriteRule ^mailman/(.*)$      /cgi-bin/mailman/$1

Icons kopieren/verlinken

xyz00@hopi:~$ cp -R ~/mailman/icons ~/doms/example.com/subs/www

oder symlinken (spart ein klein wenig Platz)

xyz00@hopi:~$ ln -s ~/mailman/icons ~/doms/example.com/subs/www

Passwort setzen

xyz00@hopi:~$ ~/mailman/bin/mmsitepass

Mailingliste

Einrichten

Die erste Mailingliste (mit dem Namen "mailman") einrichten:

xyz00@hopi:~$ ~/mailman/bin/newlist
Enter the name of the list: mailman

~/etc/ virtusertable

In die virtusertable müssen wir die Adressen zuordnen:

Editor aufrufen:

xyz00@hopi:~$ vi /home/doms/example.com/etc/virtusertable
     mailman@example.com              XYZ00-mailman
     mailman-admin@example.com             XYZ00-mailman-admin
     mailman-bounces@example.com          XYZ00-mailman-bounces
     mailman-confirm@example.com         XYZ00-mailman-confirm
     mailman-join@example.com              XYZ00-mailman-join
     mailman-leave@example.com            XYZ00-mailman-leave
     mailman-owner@example.com             XYZ00-mailman-owner
     mailman-request@example.com          XYZ00-mailman-request
     mailman-subscribe@example.com         XYZ00-mailman-subscribe
     mailman-unsubscribe@example.com      XYZ00-mailman-unsubscribe

~/etc/aliases

Auch die aliases müssen wir ändern:

Editor aufrufen

xyz00@hopi:~$ vi ~/etc/aliases
     XYZ00-mailman:              "|/home/pacs/XYZ00/mailman/mail/mailman post mailman"
     XYZ00-mailman-admin:        "|/home/pacs/XYZ00/mailman/mail/mailman admin mailman"
     XYZ00-mailman-bounces:      "|/home/pacs/XYZ00/mailman/mail/mailman bounces mailman"
     XYZ00-mailman-confirm:      "|/home/pacs/XYZ00/mailman/mail/mailman confirm mailman"
     XYZ00-mailman-join:         "|/home/pacs/XYZ00/mailman/mail/mailman join mailman"
     XYZ00-mailman-leave:        "|/home/pacs/XYZ00/mailman/mail/mailman leave mailman"
     XYZ00-mailman-owner:        "|/home/pacs/XYZ00/mailman/mail/mailman owner mailman"
     XYZ00-mailman-request:      "|/home/pacs/XYZ00/mailman/mail/mailman request mailman"
     XYZ00-mailman-subscribe:    "|/home/pacs/XYZ00/mailman/mail/mailman subscribe mailman"
     XYZ00-mailman-unsubscribe:  "|/home/pacs/XYZ00/mailman/mail/mailman unsubscribe mailman"

Crontab

In die Crontab wird z.B. eingetragen:

* * * * *	~/mailman/bin/qrunner -o -r All
0 * * * *	rm -f ~/var/mailman/logs/qrunner

Dies übernimmt die Funktion des qrunner-Dämons, der bei Mailman 2.1.1 normalerweise laufen würde. Das Logfile wird gelöscht, da es sonst sehr schnell sehr groß wird. Zusätzlich müssen noch die Cronjobs in ~/mailman/cron/crontab.in angelegt werden.

Nach diesem Schema werden auch alle anderen Listen angelegt. Administriert wird die Liste dann über http://www.example.com/mailman/admin/listenname und entweder dem Listenpasswort oder dem Site-Passwort.

Das war's. Mailman ist jetzt fertig installiert und müsste sogar funktionieren ;)


Feintuning

Wer will, kann auch noch etwas Platz sparen, da die normale Mailmaninstallation mit über 20 MB zu Buche schlägt...

Mit den folgenden Tips kann man das auf ca. 6 MB reduzieren :)

Es kann natürlich sein, dass ich zuviel lösche, aber bei mir funktioniert's. Wenn ihr also sicher(er) sein wollt, dass euch der Mailman nicht um die Ohren fliegt, macht das nicht!.

  • ~/mailman/cgi-bin und ~/mailman/icons können gelöscht werden, da sie ja an anderer Stelle noch vorhanden sind.
  • In ~/mailman/messages die nicht benötigten Sprachen löschen (bis auf englisch).
  • In ~/mailman/templates die nicht benötigten Sprachen löschen (bis auf englisch).
  • ~/mailman/tests kann, soweit ich das sehe, komplett gelöscht werden.
  • Falls man koreanisch und japanisch nicht braucht, kann man folgendes machen:
  • In ~/mailman/bin/paths.py, ~/mailman/cron/paths.py und ~/mailman/scripts/paths.py die Zeilen:
# In a normal interactive Python environment, the japanese.pth and korean.pth
# files would be imported automatically. But because we inhibit the importing
# of the site module, we need to be explicit about importing these codecs.
 import japanese
 # As of KoreanCodecs 2.0.5, you had to do the second import to get the Korean
 # codecs installed, however leave the first import in there in case an upgrade
 # changes this.
 import korean
 import korean.aliases

auskommentieren.

Dann kann man ~/mailman/pythonlib/japanese, ~/mailman/pythonlib/korean, ~/mailman/pythonlib/korean.pth sowie ~/mailman/pythonlib/lib löschen.

Man kann auch noch die Debug-Informationen aus den binaries strippen:

     strip ~/mailman/mail/mailman
     strip ~/mailman/cgi-bin/*
     strip ~/doms/example.com /cgi/mailman/*

Multidomainfähigkeit

Man kann seit Mailman 2.x eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwenden. Hier soll kurz gezeigt werden, was geht und wie es geht.

Anleitung

Als erstes ist wichtig, dass ihr Mailman sagt, für welche Domains Mailinglisten verwaltet werden sollen. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:

DEFAULT_EMAIL_HOST = 'example.com'
DEFAULT_URL_HOST = 'www.example.com'
add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)
add_virtualhost('www.zoopnet.de', 'zoopnet.de')

Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind. Die add_virtualhost-Direktiven ordnen einem Hostnamen für das Webfrontend (z.B. www.zoopnet.de) einen Hostpart für die Adresse der Mailinglisten (z.B. zoopnet.de) zu.

Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost('www.zoopnet.de'), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, im Beispiel also zoopnet.de

Dann muss man logischerweise das Webfrontend mehrmals installieren.

Wenn man nun Mailinglisten mit newlist neu anlegt, muss man den Hostnamen für das Webfontend mit angeben, und zwar so:

~/mailman/bin/newlist listenname@www.example.com

Es ist wichtig, dass in der mm_cfg.py eine entsprechende add_virtualhost-Direktive für www.example.com steht, die der Frontend-URL einen Host-Part für die Mailadressen zuordnet. Ist eine solche Direktive nicht vorhanden, so wird www.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwenet.


Prinzipiell war's das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen :)

Probleme

Verschiedene Listen mit gleichem Namen (also z.B. liste@example1.com und liste@example2.com) sind mit Mailman 2.1 leider nicht möglich.