Mailman Installieren: Unterschied zwischen den Versionen
Apc00 (Diskussion | Beiträge) |
Apc00 (Diskussion | Beiträge) |
||
Zeile 243: | Zeile 243: | ||
Sobald ein neuer Verteiler angelegt worden ist, sendet Mailman eine Mail an den dabei eingetragenen Listenadministrator. Diese Mail enthält die Anweisung, E-Mail-Aliases für den neuen Verteiler und für die verschiedenen Mailman-Funktionen anzulegen. Bei Hostsharing wird die Zustellung von E-Mails an Mailman anders geregelt: alle Mails an Mailman werden an erweiterte ''E-Mail-Adressen'' des Mailman-Users xyz00-listen geschickt. Diese Adressen haben die form xyz00-listen'''+'''<liste>[_funktion]. Mails an diese Adressen werden dann durch Pipe-Anweisungen in ''.forward-Dateien'' im Home-Verzeichnis des Mailman-Users mit den entsprechenden Argumenten an Mailman übergeben. | Sobald ein neuer Verteiler angelegt worden ist, sendet Mailman eine Mail an den dabei eingetragenen Listenadministrator. Diese Mail enthält die Anweisung, E-Mail-Aliases für den neuen Verteiler und für die verschiedenen Mailman-Funktionen anzulegen. Bei Hostsharing wird die Zustellung von E-Mails an Mailman anders geregelt: alle Mails an Mailman werden an erweiterte ''E-Mail-Adressen'' des Mailman-Users xyz00-listen geschickt. Diese Adressen haben die form xyz00-listen'''+'''<liste>[_funktion]. Mails an diese Adressen werden dann durch Pipe-Anweisungen in ''.forward-Dateien'' im Home-Verzeichnis des Mailman-Users mit den entsprechenden Argumenten an Mailman übergeben. | ||
Falls Mailman von einem Paketuser (bspw. "xyz00-listen") installiert wurde, werden ''E-Mail-Adressen'' werden durch [https://doc.hostsharing.net/users/administration/hsadmin/index.html hsadmin (bzw. das Befehlszeielentool hsscript)] eingerichtet; die ''.forward-Dateien'' werden durch [[Login_mit_SSH|Shell-Befehle]] angelegt. | |||
Das folgende Beispiel zeigt die Befehle, mit denen in einer interaktiven hsscript-Sitzung die E-Mail-Adressen für die Hauptliste "mailman" eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten "mailman" durch den Namen der Mailingliste ersetzt.) | |||
hsscript -u xyz00 -i | hsscript -u xyz00 -i | ||
[hsscript verlangt die Eingabe des Paßworts vom Paketadmin xyz00; dann können diese Befehle eingegeben werden:] | |||
emailaddress.add ({set:{domain:'lists.example.com',localpart:'mailman',target:'xyz00-listen+mailman'}}) | emailaddress.add ({set:{domain:'lists.example.com',localpart:'mailman',target:'xyz00-listen+mailman'}}) | ||
emailaddress.add ({set:{domain:'lists.example.com',localpart:'mailman-admin',target:'xyz00-listen+mailman-admin'}}) | emailaddress.add ({set:{domain:'lists.example.com',localpart:'mailman-admin',target:'xyz00-listen+mailman-admin'}}) | ||
Zeile 264: | Zeile 260: | ||
emailaddress.add ({set:{domain:'lists.example.com',localpart:'mailman-unsubscribe',target:'xyz00-listen+mailman-unsubscribe'}}) | emailaddress.add ({set:{domain:'lists.example.com',localpart:'mailman-unsubscribe',target:'xyz00-listen+mailman-unsubscribe'}}) | ||
Die korrekte Einrichtung der E-Mail-Adressen kann in der Web-Oberfläche von hsadmin kontrolliert werden. | |||
Für jede der soeben eingerichteten Adressen wird nun eine .forward-Datei im Homeverzeichnis des Users xyz00-listen angelegt. Die Dateinamen bestehen aus der Zeichenfolge ".forward+" gefolgt vom Namen der ausführen soll. Der Inhalt der jeweiligen .forward-Datei legt die Weiterleitung der Mail durch einen Pipe an Mailman fest, mit dem jeweiligen Befehl als Argument: | |||
"|/home/pacs/xyz00/users/listen/mailman/mail/mailman [Befehl] [Listenname]" | |||
. Zum Beispiel wird die .forward-Datei '''.forward+mailman-subscribe''' verwendet, wenn eine Mail an die Adresse mailman-subscribe@lists.example.com eingeht. Aufgrund der oben eingerichteten E-Mail-Adresse mit dem Ziel "xyz00-listen+mailman-subscribe" wertet der Mail-Transfer-Agent die .forward-Datei .forward+mailman-subscribe im Home-Verzeichnis des Users xyz00-listen aus, und entsprechend ihrem Inhalt wird die Mail an die Mailman-Software mit den Argumenten "subscribe mailman" übergeben. | |||
Das folgende Beispiel zeigt die Befehle, mit denen an der Befehlszeilenaufforderung der Shell die .forward-Dateien für die Hauptliste "mailman" eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten und in den Namen der .forward-Dateien "mailman" durch den Namen der Mailingliste ersetzt, jedoch '''nicht''' in der Pfadangabe zum Mailman-Programm selbst; diese ändert sich ja nicht.) | |||
echo 'admin@xyz00.hostsharing.net' > .forward # Weiterleitung von cron Fehlern etc an Paketadmin. | echo 'admin@xyz00.hostsharing.net' > .forward # Weiterleitung von cron Fehlern etc an Paketadmin. | ||
echo '"|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman"' > .forward+mailman | echo '"|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman"' > .forward+mailman | ||
Zeile 282: | Zeile 281: | ||
echo '"|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman"' > .forward+mailman-subscribe | echo '"|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman"' > .forward+mailman-subscribe | ||
echo '"|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman"' > .forward+mailman-unsubscribe | echo '"|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman"' > .forward+mailman-unsubscribe | ||
Die vielen Befehle können von dieser Anleitung kopiert und nach Anpassung auf den tatsächlichen Unsernamen in die SSH-Sitzung kopiert werden. Noch leichter ist es, mit einem Editor einen Shell-Skript namens ~/bin/createforwards mit folgendem Inhalt zu erstellen: | |||
#!/bin/sh | |||
# Add forward files for mailman lists. | |||
# | |||
if [ "$1" = "" ] ; then | |||
echo "Syntax: $0 listname\n" | |||
exit | |||
fi | |||
if [ "$2" != "" ] ; then | |||
echo "Syntax: $0 listname\n" | |||
exit | |||
fi | |||
if [ "`pwd`" != "`echo ~`" ] ; then | |||
echo "Run this script from your home directory.\n" | |||
exit | |||
fi | |||
echo "\"|/home/pacs/apc00/users/lists/mailman/mail/mailman post $1\"" > .forward+$1 | |||
echo "\"|/home/pacs/apc00/users/lists/mailman/mail/mailman admin $1\"" > .forward+$1-admin | |||
echo "\"|/home/pacs/apc00/users/lists/mailman/mail/mailman bounces $1\"" > .forward+$1-bounces | |||
echo "\"|/home/pacs/apc00/users/lists/mailman/mail/mailman confirm $1\"" > .forward+$1-confirm | |||
echo "\"|/home/pacs/apc00/users/lists/mailman/mail/mailman join $1\"" > .forward+$1-join | |||
echo "\"|/home/pacs/apc00/users/lists/mailman/mail/mailman leave $1\"" > .forward+$1-leave | |||
echo "\"|/home/pacs/apc00/users/lists/mailman/mail/mailman owner $1\"" > .forward+$1-owner | |||
echo "\"|/home/pacs/apc00/users/lists/mailman/mail/mailman request $1\"" > .forward+$1-request | |||
echo "\"|/home/pacs/apc00/users/lists/mailman/mail/mailman subscribe $1\"" > .forward+$1-subscribe | |||
echo "\"|/home/pacs/apc00/users/lists/mailman/mail/mailman unsubscribe $1\"" > .forward+$1-unsubscribe | |||
exit | |||
=== Administration === | === Administration === |
Version vom 13. März 2019, 16:29 Uhr
Was noch jemand ergänzen müsste:
- Eine generische virtuser/alias Konfiguration finden und dokumentieren.
http://listes.rezo.net/how.php
http://www.gnu.org/software/mailman/mailman-install/mail-server.html
- Skriptautomatisierung updaten
http://hs.andreasloesch.de/pac-mm-install
Mailman installieren
(zuletzt getestet mit mailman-2.1.29; Installation durch Paketuser)
Vielen Dank an alle Benutzer die Verbesserungen beisteuern!
Mailman kann vom Paketadmin (beipsielsweise "xyz00") oder von einem Paketuser (bspw. "xyz00-listen") installiert werden. Letzteres ist dringend empfohlen, denn Mailman vom Paketadmin installiert wird, haben ausnahmslos alle Paketuser direkten Zugriff auf die Mailman-Daten, und bei Sicherheitslücken in Mailman wäre eventuell eine Rechte-Eskalierung auf Paketadmin-Ebene potentiell zu befürchten.
Dem Paketuser, unter dem Mailman installiert wird, können mehrere Subdomains aufschaltet werden, und Mailinglisten können auch die Domainnamen verwenden, die anderen Paketusern gehören.
Vorteil der Installation als Paketuser ist, dass nur dieser direkten Zugriff auf die Mailmandaten hat und mailman ohne Paketadminrechte läuft. Während der Emailauslieferung gelten (wie immer bei der Mailweiterleitung durch .forward-Dateien oder durch procmail) die Rechte des Paketusers, dem die Mailman-Installation gehört.
Nachteil der Installation als Paketuser ist lediglich, dass die Paketdomain mit dem SSL Zertifikat von Hostsharing nicht genutzt werden kann.
Einen User und eine Domain anlegen
Unter admin.hostsharing.net als xyz00 anmelden; den User xyz00-listen erzeugen; die Domain listen.example.de mit "Domain-User" xyz00-listen anlegen. Aus admin.hostsharing.net abmelden.
Mit ssh an hostsharing.net als xyz00-listen anmelden. Die Redirect-Zeile aus ~/doms/listen.example.de/htdocs-ssl/.htaccess löschen:
~$ echo "" > ~/doms/lists.example.de/htdocs-ssl/.htaccess
Die Default-Subdomains www.* löschen:
~$ rm -r doms/listen.example.de/subs/www/ ~$ rm -r doms/listen.example.de/subs-ssl/www/
Sourcen besorgen und entpacken
Unter http://www.gnu.org/software/mailman/ die aktuelle Software besorgen. Dort findet sich ein Link zu den Mailman 2 Versionen (http://ftp.gnu.org/gnu/mailman/). Die letzte Version downloaden ...
~$ wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.29.tgz
... und entpacken:
~$ tar -xzvf mailman-2.1.29.tgz
Ab diesem Augenblick gibt es ein Verzeichnis namens mailman-2.1.29/. Darin liegt die nunmehr entpackte Quellcode der Mailman-Software. Nach dem Kompilieren (folgt unten) wird die fertig kompilierte, gebrauchsfähige Mailman-Software in dem zusätzlich vorhandenen Verzeichnis mailman/ liegen. (Dieses Verzeichnis wird beim Konfigurieren der Source als "prefix" angegeben.)
var-Verzeichnis für Log-Dateien anlegen
Bei der Installation als Paketuser (xyz00-listen):
~$ cd && mkdir -p mailman/var ~$ chmod 02775 mailman/var
Bei der Installation als Paketadmin (xyz00):
~$ cd && mkdir var/mailman ~$ chmod 02775 var/mailman
Mailman konfigurieren
In das Source-Verzeichnis wechseln:
~$ cd mailman-2.1.29
Bei der Installation als Paketuser:
~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/users/listen/mailman \ --with-username=xyz00-listen \ --with-groupname=xyz00 \ --with-var-prefix=/home/pacs/xyz00/users/listen/mailman/var \ --with-cgi-gid=xyz00 \ --with-mail-gid=xyz00
Bei der Installation als Paketadmin:
~/mailman-2.1.29$ ./configure --prefix=/home/pacs/xyz00/mailman \ --with-username=xyz00 \ --with-groupname=xyz00 \ --with-var-prefix=/home/pacs/xyz00/var/mailman \ --with-cgi-gid=xyz00 \ --with-mail-gid=nogroup
(Die Rückwärtsschrägstriche "\" am Zeilenende bedeuten, dass der Befehl in der nächsten Zeile weitergeht. Alternativ können alle Argumente in eine Zeile getippt werden.)
Mailman kompilieren
~/mailman-2.1.29$ make ~/mailman-2.1.29$ make install
Datenrechte prüfen
Sicherheitshalber die Dateirechte durch Mailmans mitgeliefertes Tool prüfen und ggf. korrigieren lassen:
~/mailman-2.1.29$ cd .. ~$ mailman/bin/check_perms -f
Die neue Mailman-Installation konfigurieren
Konfigurationsdatei mm_cfg.py editieren
~$ nano mailman/Mailman/mm_cfg.py
Eine Beispielkonfiguration für listen.example.de könnte so aussehen:
[...] ################################################## # Put YOUR site-specific settings below this line. # -*- python -*- DEFAULT_HOST_NAME = 'listen.example.de' DEFAULT_EMAIL_HOST = 'listen.example.de' DEFAULT_URL_HOST = 'listen.example.de' add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST) add_virtualhost(zweite.listendomain.de, zweite.listendomain.de) DEFAULT_SERVER_LANGUAGE = 'de' DEFAULT_URL_PATTERN = 'http://%s/' # Es wird der HS Mailversand für Bulkmail verwendet: SMTPHOST = 'localhost' SMTPPORT = 4587 SMTP_AUTH = True SMTP_USER = 'xyz00-listen' SMTP_PASSWD = 'das-passwort-des-o.-g.-users' SMTP_USE_TLS = True
In ~/mailman/Mailman/Defaults.py sieht man, was in mm_cfg.py alles angepasst werden kann.
CGI-Programme in die Domain kopieren
Bei der Installation als Paketuser:
Die fertig kompilierten CGIs von Mailman müssen in das CGI-Verzeichnis der Domain (oder der Domains), auf der das Webfrontend von Mailman laufen soll, kopiert werden. Symbolische Links sind nicht ausreichend.
~$ mkdir ~/doms/listen.example.de/cgi-ssl/mailman ~$ cp mailman/cgi-bin/* doms/listen.example.de/cgi-ssl/mailman/
Zusätzlich muss das sticky-Flag von den kopierten Dateien entfernt werden:
~$ chmod g-s ~/doms/listen.example.de/cgi/mailman/*
Bei der Installation als Paketadmin:
Die CGI-Programme können im Mailman-Verzeichnis bleiben. Im CGI-Verzeichnis von jeder Domain, auf der das Mailman-Webfrontend laufen soll, werden symbolische Links dazu erstellt:
~$ cd doms/listen.example.de/cgi-ssl ~/doms/listen.example.de/cgi-ssl$ ln -s ../../../mailman/cgi-bin mailman
Mailman-Icons in die Domains kopieren
Die Icons können wahlweise verlinkt oder kopiert werden:
~$ cd doms/listen.example.de/htdocs-ssl ~/doms/listen.example.de/htdocs-ssl$ ln -s ../../../mailman/icons
oder
~$ cp -R mailman/icons doms/lists.example.com/htdocs-ssl/
Die Datei .htaccess bearbeiten
Bei einer dedizierten Mailman-Domain sollte man dafür sorgen, dass Mailman nicht nur unter https://listen.example.de/cgi-bin/mailman, sondern auch unter https://listen.example.de erreichbar ist.
Dazu werden in ~/doms/listen.example.de/htdocs-ssl/.htaccess folgende Rewrite-Anweisungen eintragen.
RewriteEngine On RewriteCond %{REQUEST_URI} !^/icons/ RewriteRule ^(.*)$ /cgi-bin/mailman/$1 RewriteRule ^/cgi-bin/mailman/$ /cgi-bin/mailman/listinfo
Beachte dabei die zweite Zeile: Anfragen für Icons sollen nicht umgeschrieben werden.
Wenn Mailman z.B. auf einer als Unterverzeichnis angelegten Subdomain läuft und unter https://www.example.com/mailman statt https://www.example.com/cgi-bin/mailman erreichbar sein soll, hilft folgendes in der ~/doms/example.com/subs-ssl/www/.htaccess:
RewriteEngine On RewriteCond %{REQUEST_URI} !^/icons/ RewriteRule ^mailman/(.*)$ /cgi-bin/mailman/$1 RewriteRule ^/cgi-bin/mailman/$ /cgi-bin/mailman/listinfo
(In diesem Fall kann die Zeile DEFAULT_URL_PATTERN... in der mm_cfg.py auskommentiert werden.)
Hauptpasswort setzen
Das "site password" ist in Mailman eine Art Generalschlüssel: es wird neben dem jeweiligen Admin- oder Moderator-Passwort überall in der Weboberfläche für sämtliche Mailing-Listen akzeptiert. Also vorsichtig wählen! Das "site password" einrichten mit dem Befehl:
~$ mailman/bin/mmsitepass
Cronjobs einrichten
In die Crontab werden Befehle eingetragen, um die Mail-Warteschlange abzuarbeiten, Logs zu löschen, usw.:
# Warteschlange jede Minute bearbeiten: * * * * * ~/mailman/bin/qrunner -o -r All # Verarbeitungslogs in der 47ten Minute jeder Stunde löschen: 47 * * * * rm -f ~/var/mailman/logs/qrunner
Damit übernimmt cron die Funktion des qrunner-Dämons, der normalerweise auf einem Mailman-Server laufen sollte.
Das Logfile wird stündlich gelöscht, da es sonst sehr schnell sehr groß wird. Falls Mailman von einem Paketuser (bspw. "xyz00-listen") installiert wurde, sollte die letzte Zeile im Beispiel oben so lauten:
47 * * * * rm -f ~/mailman/var/logs/qrunner
... entsprechend dem beim Konfigurieren angegebenen var-Verzeichnis, siehe oben.
Zudem müssen noch die von Mailman ohnehin vorgesehenen cron-Aufträge aus ~/mailman/cron/crontab.in dem crontab des Users angehängt werden:
crontab -l > mycronjobs.tmp cat ~/mailman/cron/crontab.in >> mycronjobs.tmp crontab mycronjobs.tmp
Mailinglisten einrichten
Jetzt läuft die Software; nun können die eigentlichen Verteiler angelegt werden. Als erster muß ein Hauptverteiler ("site list") eingerichtet werden. Dieser Verteiler dient u.a. als Absender der Paßwort-Erinnerungen an die Abonnenten aller Mailinglisten. Er hat standardmäßig den Namen "mailman". Falls ein anderer Name verwendet werden soll, muß dieser mit der Anweisung
MAILMAN_SITE_LIST = 'sitelistname'
in der Konfigurationsdatei mailman/Mailman/mm_cfg.py eingetragen werden.
Den Hauptverteiler "mailman" anlegen
Die "site list" mit dem Namen "mailman" ist die Mailingliste der lokalen Mailman-Administratoren. Sie wird zur einwandfreien Funktion von Mailman benötigt.
Mit dem Mailman-Befehl newlist den Verteiler anlegen:
~$ mailman/bin/newlist mailman Enter the email of the person running the list: admin@xyz00.hostsharing.net Initial mailman password:
(Der Befehl newlist kann – alternativ zur Weboberfläche – später benutzt werden, um gewöhnliche Mailinglisten anzulegen.)
Nur dieses eine Mal für die "site list" müssen wir die Konfigurationsvorgaben laden. (Gewöhnliche Mailinglisten werden später über die Weboberfläche konfiguriert.)
Falls mailman vom Paketuser (bspw. "xyz00-listen") installiert wurde:
~$ mailman/bin/config_list -i ~/mailman/var/data/sitelist.cfg mailman
Falls mailman vom Paketadmin ("xyz00") installiert wurde:
~$ mailman/bin/config_list -i ~/var/mailman/data/sitelist.cfg mailman
Diese Konfigurationsdatei soll nicht auf gewöhnliche Mailinglisten anwendet werden.
Email Adressen einrichten
Sobald ein neuer Verteiler angelegt worden ist, sendet Mailman eine Mail an den dabei eingetragenen Listenadministrator. Diese Mail enthält die Anweisung, E-Mail-Aliases für den neuen Verteiler und für die verschiedenen Mailman-Funktionen anzulegen. Bei Hostsharing wird die Zustellung von E-Mails an Mailman anders geregelt: alle Mails an Mailman werden an erweiterte E-Mail-Adressen des Mailman-Users xyz00-listen geschickt. Diese Adressen haben die form xyz00-listen+<liste>[_funktion]. Mails an diese Adressen werden dann durch Pipe-Anweisungen in .forward-Dateien im Home-Verzeichnis des Mailman-Users mit den entsprechenden Argumenten an Mailman übergeben.
Falls Mailman von einem Paketuser (bspw. "xyz00-listen") installiert wurde, werden E-Mail-Adressen werden durch hsadmin (bzw. das Befehlszeielentool hsscript) eingerichtet; die .forward-Dateien werden durch Shell-Befehle angelegt.
Das folgende Beispiel zeigt die Befehle, mit denen in einer interaktiven hsscript-Sitzung die E-Mail-Adressen für die Hauptliste "mailman" eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten "mailman" durch den Namen der Mailingliste ersetzt.)
hsscript -u xyz00 -i [hsscript verlangt die Eingabe des Paßworts vom Paketadmin xyz00; dann können diese Befehle eingegeben werden:] emailaddress.add ({set:{domain:'lists.example.com',localpart:'mailman',target:'xyz00-listen+mailman'}}) emailaddress.add ({set:{domain:'lists.example.com',localpart:'mailman-admin',target:'xyz00-listen+mailman-admin'}}) emailaddress.add ({set:{domain:'lists.example.com',localpart:'mailman-bounces',target:'xyz00-listen+mailman-bounces'}}) emailaddress.add ({set:{domain:'lists.example.com',localpart:'mailman-confirm',target:'xyz00-listen+mailman-confirm'}}) emailaddress.add ({set:{domain:'lists.example.com',localpart:'mailman-join',target:'xyz00-listen+mailman-join'}}) emailaddress.add ({set:{domain:'lists.example.com',localpart:'mailman-leave',target:'xyz00-listen+mailman-leave'}}) emailaddress.add ({set:{domain:'lists.example.com',localpart:'mailman-owner',target:'xyz00-listen+mailman-owner'}}) emailaddress.add ({set:{domain:'lists.example.com',localpart:'mailman-request',target:'xyz00-listen+mailman-request'}}) emailaddress.add ({set:{domain:'lists.example.com',localpart:'mailman-subscribe',target:'xyz00-listen+mailman-subscribe'}}) emailaddress.add ({set:{domain:'lists.example.com',localpart:'mailman-unsubscribe',target:'xyz00-listen+mailman-unsubscribe'}})
Die korrekte Einrichtung der E-Mail-Adressen kann in der Web-Oberfläche von hsadmin kontrolliert werden.
Für jede der soeben eingerichteten Adressen wird nun eine .forward-Datei im Homeverzeichnis des Users xyz00-listen angelegt. Die Dateinamen bestehen aus der Zeichenfolge ".forward+" gefolgt vom Namen der ausführen soll. Der Inhalt der jeweiligen .forward-Datei legt die Weiterleitung der Mail durch einen Pipe an Mailman fest, mit dem jeweiligen Befehl als Argument:
"|/home/pacs/xyz00/users/listen/mailman/mail/mailman [Befehl] [Listenname]"
. Zum Beispiel wird die .forward-Datei .forward+mailman-subscribe verwendet, wenn eine Mail an die Adresse mailman-subscribe@lists.example.com eingeht. Aufgrund der oben eingerichteten E-Mail-Adresse mit dem Ziel "xyz00-listen+mailman-subscribe" wertet der Mail-Transfer-Agent die .forward-Datei .forward+mailman-subscribe im Home-Verzeichnis des Users xyz00-listen aus, und entsprechend ihrem Inhalt wird die Mail an die Mailman-Software mit den Argumenten "subscribe mailman" übergeben.
Das folgende Beispiel zeigt die Befehle, mit denen an der Befehlszeilenaufforderung der Shell die .forward-Dateien für die Hauptliste "mailman" eingerichtet werden. (Für spätere Mailinglisten wird in den Argumenten und in den Namen der .forward-Dateien "mailman" durch den Namen der Mailingliste ersetzt, jedoch nicht in der Pfadangabe zum Mailman-Programm selbst; diese ändert sich ja nicht.)
echo 'admin@xyz00.hostsharing.net' > .forward # Weiterleitung von cron Fehlern etc an Paketadmin. echo '"|/home/pacs/xyz00/users/listen/mailman/mail/mailman post mailman"' > .forward+mailman echo '"|/home/pacs/xyz00/users/listen/mailman/mail/mailman admin mailman"' > .forward+mailman-admin echo '"|/home/pacs/xyz00/users/listen/mailman/mail/mailman bounces mailman"' > .forward+mailman-bounces echo '"|/home/pacs/xyz00/users/listen/mailman/mail/mailman confirm mailman"' > .forward+mailman-confirm echo '"|/home/pacs/xyz00/users/listen/mailman/mail/mailman join mailman"' > .forward+mailman-join echo '"|/home/pacs/xyz00/users/listen/mailman/mail/mailman leave mailman"' > .forward+mailman-leave echo '"|/home/pacs/xyz00/users/listen/mailman/mail/mailman owner mailman"' > .forward+mailman-owner echo '"|/home/pacs/xyz00/users/listen/mailman/mail/mailman request mailman"' > .forward+mailman-request echo '"|/home/pacs/xyz00/users/listen/mailman/mail/mailman subscribe mailman"' > .forward+mailman-subscribe echo '"|/home/pacs/xyz00/users/listen/mailman/mail/mailman unsubscribe mailman"' > .forward+mailman-unsubscribe
Die vielen Befehle können von dieser Anleitung kopiert und nach Anpassung auf den tatsächlichen Unsernamen in die SSH-Sitzung kopiert werden. Noch leichter ist es, mit einem Editor einen Shell-Skript namens ~/bin/createforwards mit folgendem Inhalt zu erstellen:
#!/bin/sh # Add forward files for mailman lists. # if [ "$1" = "" ] ; then echo "Syntax: $0 listname\n" exit fi if [ "$2" != "" ] ; then echo "Syntax: $0 listname\n" exit fi if [ "`pwd`" != "`echo ~`" ] ; then echo "Run this script from your home directory.\n" exit fi echo "\"|/home/pacs/apc00/users/lists/mailman/mail/mailman post $1\"" > .forward+$1 echo "\"|/home/pacs/apc00/users/lists/mailman/mail/mailman admin $1\"" > .forward+$1-admin echo "\"|/home/pacs/apc00/users/lists/mailman/mail/mailman bounces $1\"" > .forward+$1-bounces echo "\"|/home/pacs/apc00/users/lists/mailman/mail/mailman confirm $1\"" > .forward+$1-confirm echo "\"|/home/pacs/apc00/users/lists/mailman/mail/mailman join $1\"" > .forward+$1-join echo "\"|/home/pacs/apc00/users/lists/mailman/mail/mailman leave $1\"" > .forward+$1-leave echo "\"|/home/pacs/apc00/users/lists/mailman/mail/mailman owner $1\"" > .forward+$1-owner echo "\"|/home/pacs/apc00/users/lists/mailman/mail/mailman request $1\"" > .forward+$1-request echo "\"|/home/pacs/apc00/users/lists/mailman/mail/mailman subscribe $1\"" > .forward+$1-subscribe echo "\"|/home/pacs/apc00/users/lists/mailman/mail/mailman unsubscribe $1\"" > .forward+$1-unsubscribe exit
Administration
Administriert werden Listen über http://lists.example.com/admin/<listenname> und entweder dem Listenpasswort oder dem Site-Passwort.
Als erstes sollte man die Liste "mailman" selbst abonnieren. (http://lists.example.com/admin/mailman)
Bis auf das Anwenden der sitelist.cfg werden auch alle weiteren Listen nach obigem Schema angelegt, oder (bis auf das anlegen der virtusertable Einträge und aliase) über das Mailman Webinterface.
Das war's. Mailman ist jetzt fertig installiert und müsste sogar funktionieren ;)
Feintuning
Wer will, kann auch noch etwas Platz sparen. Die normale Mailmaninstallation schlägt mit über 20 MB zu Buche...
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, falls sie an andere Stelle kopiert worden sind.
- Die nicht benötigten Sprachen in ~/mailman/messages löschen.
- Die nicht benötigten Sprachen in ~/mailman/templates 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. if not jaok: 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. if not kook: 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/*
Falls die CGIs nicht gesymlinkt wurden:
strip ~/doms/lists.example.com/cgi/mailman/*
Multidomainfähigkeit
Seit Mailman 2.x kann eine Mailman-Installation unter gewissen Einschränkungen für mehrere Domains verwendet werden. Hier soll kurz gezeigt werden, was geht und wie es geht.
Anleitung
Logischerweise muss das Webfrontend (die CGIs) auf allen Domains installiert werden.
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@lists.example.com
Es ist ggf. 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 lists.example.com sowohl als URL für das Webfrontend wie auch als Hostpart für Emailadressen verwendet. (Was für separate aufgeschaltete Domains wie z.B. lists.example.com gerade zutrifft.)
Liegt das Frondend nicht auf der Maildomain ist es wichtig, dass ihr Mailman sagt, für welches die zugehörige Maildomain ist. Dies tut ihr in der Datei ~/mailman/Mailman/mm_cfg.py:
Also z.B.
DEFAULT_URL_HOST = 'www.example.com' DEFAULT_EMAIL_HOST = 'lists.example.com' add_virtualhost(DEFAULT_URL_HOST,DEFAULT_EMAIL_HOST)
und
add_virtualhost('www.zoopnet.de', 'lists.zoopnet.de')
Das bedeutet, dass Mailman per default davon ausgeht, dass alle Listen für die Domain example.com sind. Alle weiteren 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. lists.zoopnet.de) zu.
Tip von Raimund Specht: Lässt man den zweiten Parameter weg, also schreibt z.B. add_virtualhost('www.example.org'), dann benutzt Mailman als Hostpart alles was nach dem ersten Punkt steht, hier also example.org als Maildomain.
Prinzipiell war's das. Man muss die Listeneinträge natürlich immer in die richtige virtusertable eintragen, und für gleichnamige Mailinglisten auf verschiedenen Domains (mailman@*) verschidene +Ergänzungen bzw. aliase verwenden. :)
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.
Tips und Tricks
URL Änderungen
Nach URL Änderungen stimmen Links im Web-Interface nicht mehr und Listen werden nicht mehr angezeigt. Es sind dann, zusätzlich zur Anpassung der mm_cfg.py, schon bestehende Listen und Archive mit folgendem Befehl zu aktualisieren:
~/mailman/bin/withlist -l -r fix_url <Listen_Name> -v -u <Neue_Url>
<Listen_Name> steht für die Mailingliste, die bearbeitet werden soll. <Neue_Url> für die neue URL/Webadresse des Webinterfaces.
Weitere Cron-Jobs zur Mailinglisten Verwaltung
Folgende Cronjobs helfen bei der Verwaltung und sind User freundlich:
< In Arbeit >
Referenzen
Lösung zur installation als Domainadmin statt Paketadmin: https://lists.hostsharing.net/archiv/support/2009-June/019414.html
Ältere Anleitung für Installation als Domain-Admin: <http://lists.hostsharing.net/archiv/support/2005-January/012426.html>
"Kleine Tools" auf http://hs.andreasloesch.de, wobei das 'pac-mm-install' wahrscheinlich nicht aktuell (genug) ist