Mailinglisten · 5 min read · Sep 09, 2025

Wie man Mailman (mit Postfix) auf Debian Squeeze installiert und konfiguriert

Wie man Mailman (mit Postfix) auf Debian Squeeze installiert und konfiguriert

Version 1.0
Autor: Falko Timme
Folge mir auf Twitter

Mailman ist ein Open-Source-Manager für Mailinglisten, d.h. er kann verwendet werden, um E-Mail-Diskussionen und Newsletter-Listen zu verwalten. Es ist wahrscheinlich der beliebteste und am weitesten verbreitete Mailinglisten-Manager im Internet. Dieses Tutorial erklärt, wie man Mailman auf einem Debian Squeeze-Server mit einem Postfix-Mailserver installiert und konfiguriert.

Ich gebe keine Garantie, dass dies bei Ihnen funktioniert!

1 Vorbemerkung

In diesem Tutorial werde ich einen virtuellen Host mit dem Hostnamen lists.example.com konfigurieren, auf dem ich Mailman installieren werde. lists.example.com ist auch der richtige Teil der E-Mail-Adressen der Mailingliste, die in Mailman konfiguriert werden, d.h. E-Mails an eine Mailingliste müssen an die Adresse @lists.example.com gesendet werden.

Da Ihr Hostname anders sein wird, passen Sie dieses Tutorial bitte entsprechend an. Stellen Sie außerdem sicher, dass Ihr Hostname im DNS existiert.

Mailman kann mit vielen Mailservern verwendet werden (z.B. Postfix, Exim, Sendmail, Qmail). Ich werde in diesem Tutorial Postfix verwenden. Stellen Sie sicher, dass Sie eine funktionierende Postfix-Installation haben, zum Beispiel wie in diesem Tutorial gezeigt: Virtuelle Benutzer und Domains mit Postfix, Courier, MySQL und SquirrelMail (Debian Squeeze)

2 Installation von Mailman und Apache

Da Mailman mit einem Web-Frontend kommt, benötigen wir zusätzlich zu Mailman einen Webserver. Ich wähle Apache. Mailman und Apache können wie folgt installiert werden:

apt-get install mailman apache2

Sie werden die folgenden Fragen/Nachrichten sehen:

Sprachen, die unterstützt werden sollen: <– de (Deutsch)
Fehlende Site-Liste
Mailman benötigt eine sogenannte “Site-Liste”, die die Liste ist, von der Passwort-Erinnerungen und dergleichen versendet werden. Diese Liste muss erstellt werden, bevor Mailman gestartet wird. Um die Liste zu erstellen, führen Sie “newlist mailman” aus und folgen Sie den Anweisungen auf dem Bildschirm. Beachten Sie, dass Sie Mailman danach auch starten müssen, indem Sie /etc/init.d/mailman start verwenden. <– Ok

Mailman kommt mit einer Apache-Konfigurationsdatei, /etc/mailman/apache.conf, die wir nach /etc/apache2/sites-available/mailman.conf kopieren:

cp /etc/mailman/apache.conf /etc/apache2/sites-available/mailman.conf

Öffnen Sie /etc/apache2/sites-available/mailman.conf…

vi /etc/apache2/sites-available/mailman.conf

… und fügen Sie die folgende vhost-Konfiguration in die Datei ein (es gibt bereits einen vhost für lists.example.net in der Datei, der auskommentiert ist - bitte verwenden Sie diesen vhost nicht, da sich meine vhost-Konfiguration ein wenig unterscheidet, obwohl sie recht ähnlich aussieht):

| [...] ServerName lists.example.com DocumentRoot /var/www/lists ErrorLog /var/log/apache2/lists-error.log CustomLog /var/log/apache2/lists-access.log combined Options FollowSymLinks AllowOverride None 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/ ScriptAlias / /usr/lib/cgi-bin/mailman/listinfo |

Die vorletzte Zeile ScriptAlias / /usr/lib/cgi-bin/mailman/listinfo ist optional; sie sorgt dafür, dass Sie, wenn Sie zu http://lists.example.com/ gehen, zu http://lists.example.com/listinfo umgeleitet werden. Dies macht Sinn, wenn Sie keine Dateien im Document Root /var/www/lists zu bedienen haben.

Erstellen Sie als Nächstes das Document Root /var/www/lists, aktivieren Sie die lists.example.com vhost-Konfiguration und starten Sie Apache neu:

mkdir /var/www/lists
a2ensite mailman.conf
/etc/init.d/apache2 restart

Da wir hier einen vhost verwenden (lists.example.com), müssen wir die folgenden Variablen in /etc/mailman/mm_cfg.py anpassen:

vi /etc/mailman/mm_cfg.py

| [...] DEFAULT_URL_PATTERN = 'http://%s/' [...] DEFAULT_EMAIL_HOST = 'lists.example.com' [...] DEFAULT_URL_HOST = 'lists.example.com' [...] |

3 Konfiguration von Postfix

Jetzt müssen wir Postfix konfigurieren. Führen Sie zuerst aus:

postconf -e ‘relay_domains = lists.example.com’
postconf -e ‘mailman_destination_recipient_limit = 1’

Öffnen Sie dann /etc/postfix/master.cf…

vi /etc/postfix/master.cf

… und stellen Sie sicher, dass Sie die folgenden Zeilen darin haben (sie sollten standardmäßig vorhanden sein):

| [...] mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user} [...] |

Als Nächstes müssen wir die Domain lists.example.com mit dem mailman: transport verknüpfen. Wie Sie dies tun, hängt von Ihrer Postfix-Konfiguration ab. Wenn Sie beispielsweise Ihren Server gemäß dem Tutorial Virtuelle Benutzer und Domains mit Postfix, Courier, MySQL und SquirrelMail (Debian Squeeze) eingerichtet haben, werden die Transports in einer MySQL-Datenbank gespeichert; in den meisten anderen Setups wird die Datei /etc/postfix/transport verwendet, um Transports zu erstellen. Ich werde beide Fälle in den Kapiteln 3.1 und 3.2 beschreiben.

3.1 Transports in einer MySQL-Datenbank

Wenn Sie Ihren Server gemäß dem Tutorial Virtuelle Benutzer und Domains mit Postfix, Courier, MySQL und SquirrelMail (Debian Squeeze) eingerichtet haben, werden die Transports in der Transporttabelle in der Mail-MySQL-Datenbank gespeichert. Um den notwendigen Transport zu erstellen, melden Sie sich bei MySQL an…

mysql -u root -p

… und führen Sie die folgenden MySQL-Befehle aus:

USE mail;
INSERT INTO transport (domain, transport) VALUES (‘lists.example.com’, ‘mailman:’);
quit;

Starten Sie Postfix danach neu:

/etc/init.d/postfix restart

3.2 Transports in /etc/postfix/transport

Wenn Sie Ihren Transport nicht in einer MySQL-Datenbank haben, verwenden Sie wahrscheinlich die Datei /etc/postfix/transport. In diesem Fall können Sie den notwendigen Transport wie folgt einrichten:

postconf -e 'transport_maps = hash:/etc/postfix/transport'

Öffnen Sie /etc/postfix/transport…

vi /etc/postfix/transport

… und fügen Sie die folgende Zeile hinzu:

| lists.example.com mailman: |

Führen Sie danach aus

postmap -v /etc/postfix/transport

und starten Sie Postfix neu:

/etc/init.d/postfix restart   

4 Erstellen der Mailman-Mailingliste

Bevor wir Mailman verwenden können, müssen wir eine Mailingliste namens mailman erstellen; dies ist obligatorisch - ohne sie wird Mailman nicht gestartet:

newlist --urlhost=lists.example.com --emailhost=lists.example.com mailman

In den meisten Fällen sind die –urlhost und –emailhost Schalter nicht notwendig, da unser vhost bereits lists.example.com heißt und wir es auch in /etc/mailman/mm_cfg.py (DEFAULT_EMAIL_HOST und DEFAULT_URL_HOST) haben, aber wenn Sie sicherstellen möchten, dass Mailman den richtigen Hostnamen verwendet, verwenden Sie diese Schalter.

root@server1:~# newlist –urlhost=lists.example.com –emailhost=lists.example.com mailman
Geben Sie die E-Mail-Adresse der Person ein, die die Liste verwaltet: <– geben Sie die E-Mail-Adresse des Listenadministrators an, z.B. [email protected]
Anfängliches Mailman-Passwort: <– mailman_password
Um die Erstellung Ihrer Mailingliste abzuschließen, müssen Sie Ihre /etc/aliases (oder äquivalente) Datei bearbeiten, indem Sie die folgenden Zeilen hinzufügen und möglicherweise das Programm newaliases ausführen:

Mailingliste Mailman

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”

Drücken Sie die Eingabetaste, um den Mailman-Besitzer zu benachrichtigen… <– ENTER

root@server1:~#

Öffnen Sie jetzt /etc/aliases und fügen Sie die Aliase hinzu, die Sie in der Ausgabe des newlist-Befehls sehen (dies muss manuell für jede neue Liste erfolgen, die Sie erstellen):

vi /etc/aliases

| [...] ## Mailingliste Mailman 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" |

Wann immer Sie /etc/aliases ändern, müssen Sie ausführen

newaliases
/etc/init.d/postfix restart

Danach können wir endlich Mailman starten:

/etc/init.d/mailman start

root@server1:~# /etc/init.d/mailman start
Starte Mailman Master Qrunner: mailmanctl.
root@server1:~#

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.