Installation von GNU Mailman unter Debian

Dieser Artikel beschreibt, wie GNU Mailman zusammen mit Exim unter Debian eingerichtet werden kann. Er setzt daher ein funktionierendes Mailsetup, ähnlich dem hier beschriebenen Setup voraus. Dabei handelt es sich um meine Mitschriften bei der Installation.

Mailman installieren

Mailman kann unter Debian einfach aus den Repositories installiert werden.

$ apt-get install mailman

Anschließend muss manuell eine Liste namens mailman angelegt werden. In diesem Schritt müssen auch E-Mailadresse und Passwort des Listenbesitzers (und somit des Administrators) eingegeben werden. Die hier eingegebenen Werte sollte man sich gut merken.

$ newlist mailman

Dabei fordert das Skript einen auf, verschiedene Aliase in /etc/alias einzutragen, bevor Mailman das erste mal gestartet werden kann:

$ nano /etc/aliases
## mailman mailing list
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"

$ /etc/init.d/mailman start

Um die Weboberfläche zu aktivieren, genügt es einen Symlink auf die mitgelieferte Beispielkonfiguration für Apache zu setzen. Voraussetzung hierfür ist, dass Apache2 ohne virtuelle Hosts betrieben wird. Ein Beispiel für virtuelle Hosts befindet sich jedoch auskommentiert in derselben Datei:

$ ln -s /etc/mailman/apache.conf /etc/apache2/conf.d/mailman
$ /etc/init.d/apache2 reload

Eine Beispielkonfiguration für Apache mit virtuellen Hosts könnte hingegen so aussehen:

$ more /etc/apache2/conf.d/mailman
#------------------------------------------------------------------------
# Sample configuration for Debian mailman with Apache (Virtual Host)
#
# Add these lines in /etc/mailman/mm_cfg.py:
#    DEFAULT_EMAIL_HOST = 'lists.example.net'
#    DEFAULT_URL_HOST = 'lists.example.net'
#    DEFAULT_URL_PATTERN = 'http://%s/'
#------------------------------------------------------------------------

<VirtualHost *>
        ServerName lists.example.net
        DocumentRoot /var/www/lists
        ErrorLog /var/log/apache2/lists-error.log
        CustomLog /var/log/apache2/lists-access.log combined

        <Directory /var/lib/mailman/archives/>
            Options FollowSymLinks
            AllowOverride None
        </Directory>

        Alias /pipermail/ /var/lib/mailman/archives/public/
        Alias /images/mailman/ /usr/share/images/mailman/

        ScriptAlias /admin /usr/lib/cgi-bin/mailman/admin
        ScriptAlias /admindb /usr/lib/cgi-bin/mailman/admindb
        ScriptAlias /confirm /usr/lib/cgi-bin/mailman/confirm
        ScriptAlias /create /usr/lib/cgi-bin/mailman/create
        ScriptAlias /edithtml /usr/lib/cgi-bin/mailman/edithtml
        ScriptAlias /listinfo /usr/lib/cgi-bin/mailman/listinfo
        ScriptAlias /options /usr/lib/cgi-bin/mailman/options
        ScriptAlias /private /usr/lib/cgi-bin/mailman/private
        ScriptAlias /rmlist /usr/lib/cgi-bin/mailman/rmlist
        ScriptAlias /roster /usr/lib/cgi-bin/mailman/roster
        ScriptAlias /subscribe /usr/lib/cgi-bin/mailman/subscribe
        ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/
</VirtualHost>

In diesem Fall kann die Adminoberfläche mit folgender URL aufgerufen werden: http://lists.example.net/admin. Zuvor muss allerdings noch die Mailman-Konfiguration angepasst werden:

$ nano /etc/mailman/mm_cfg.py
DEFAULT_URL_PATTERN = 'http://%s/'
PRIVATE_ARCHIVE_URL = '/mailman/private'
IMAGE_LOGOS         = '/images/mailman/'
DEFAULT_EMAIL_HOST = 'lists.example.net'
DEFAULT_URL_HOST   = 'lists.example.net'

ACHTUNG: Damit die Adminoberfläche auf die richtigen URLs verweist, muss sie mit fix_url repariert werden!

$ cd /usr/lib/mailman/bin
$ ./withlist -l -r fix_url mailman
$ /etc/init.d/mailman restart

Aus Sicherheitsgründen sollte nun die Standardliste mailman gegen unbefugte Beitritte gesichert werden. Dies geht am einfachsten über die Weboberfläche, indem man folgende URL aufruft und dann folgende Optionen auswählt: http://lists.example.net/admin/mailman/

  1. [Privacy options] --> [Subscription rules]
  2. Advertise this list when people ask what lists are on this machine? [No]
  3. What steps are required for subscription? [Confirm and Approve]
  4. [Submit your changes]

Exim konfigurieren

Damit die neu angelegten Mailinglisten nun auch genutzt werden können, muss nun die Konfiguration von Exim angepast werden, so dass der Mailserver mit Mailman zusammenarbeiten kann. Dieser Schritt ist im Instllationsleitfaden von Mailman gut dokumentiert, weicht unter Debian jedoch davon ab, da die Eximkonfiguration von Debian nicht dem Standardverhalten einer großen Konfigurationsdatei entspricht. Stattdessen ist die Konfiguration unter Debian in vielen kleinen Dateien unterhalb des Verzeichnisses /etc/exim4/conf.d aufgehoben.

Zunächst schlägt die Dokumentation vor, ein paar globale Makros zu definieren:

$ nano /etc/exim4/conf.d/main/02_exim4-config_options
.ifndef MAILMAN_HOME
MAILMAN_HOME=/usr/lib/mailman
.endif
.ifndef MAILMAN_WRAP
MAILMAN_WRAP=MAILMAN_HOME/mail/mailman
.endif
.ifndef MAILMAN_USER
MAILMAN_USER=mail  
.endif
.ifndef MAILMAN_GROUP
MAILMAN_GROUP=mail  
.endif

Dann muss ein neuer Transport angelegt werden:

$ nano /etc/exim4/conf.d/transport/50_exim4_config_DES_mailman
mailman_transport:
    driver = pipe
    command = MAILMAN_WRAP \
        ’${if def:local_part_suffix \
            {${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}} \
            {post}}’ \
        $local_part
    current_directory = MAILMAN_HOME
    home_directory = MAILMAN_HOME
    user = MAILMAN_USER
    group = MAILMAN_GROUP

Außerdem muss ein neuer Router angelegt werden:

$ nano /etc/exim4/conf.d/router/890_exim4-config_DES_mailman
mailman_router:
    driver = accept
    require_files = MAILMAN_HOME/lists/$local_part/config.pck
    local_part_suffix_optional
    local_part_suffix = -admin : -bounces : -bounces+* : \
                        -confirm : -confirm+* : \
                        -join : -leave : \
                        -owner : -request : \
                        -subscribe : -unsubscribe
    transport = mailman_transport

Zum Schluss muss noch sichergestellt werden, dass Mailman nicht versucht, mehr Mails auf einmal zu versenden, als es Exim zulässt, weil Exim sonst ein den Queue-Modus umschaltet, wodurch die Zustellung der Mails deutlich verlangsamt wird. Konkret bedeutet das, dass der Wert SMTP MAX SESSIONS PER CONNECTION in der Mailman-Konfiguration kleiner als der Wert smtp_accept_queue_per_connection von Exim. Da der Wert in der Exim4-Konfiguration von Debian aber nicht auftaucht, soll hier erstmal nichts geändert werden.

Damit die veränderte Konfiguration aktiv wird, muss die Eximkonfigurationsdatei neugeneriert und der Mailserver durchgestartet werrden:

$ update-exim4.conf
$ exim4 -bV
$ /etc/init.d/exim4 restart

Das Setup testen

...


attachments

imageappend Append an Image
>