Mailman
Installation
sudo apt-get install mailman
Danach wird möglicherweise folgende Meldung angezeigt:
* Site list for mailman missing (looking for list named 'mailman'). * Please create it; until then, mailman will refuse to start.
Dazu muss NACH der folgenden Konfiguration mit folgenden Befehl die Liste mailman angelegt werden:
sudo newlist mailman
Konfiguration
Postfix
Diese Einträge dienen für die, zum Abschluß erzeugte, Mailingliste mailman. Für jede weitere Liste müssen diese Einträge nochmals eingefügt werden, mailman jedoch vorher durch den neuen Listennamen ersetzen.
Danach checken, ob die Datei /etc/postfix/master.cf folgende Zeilen enthält (sollte standardmäßig enthalten sein):
sudo nano /etc/postfix/master.cf
mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
Alias Einträge
In Alias-Datenbank folgende Einträge hinzufügen (bei weiteren Listen mailman durch den aktuellen Mailinglisten-Namen ersetzen):
Mit PostfixAdmin
INSERT INTO alias (address, goto, domain, created, modified, active) values ('mailman@<domain>', 'mailman@lists.<domain>', <domain>, CURDATE(), CURDATE(), 1); INSERT INTO alias (address, goto, domain, created, modified, active) values ('mailman-admin@<domain>', 'mailman-admin@lists.<domain>', <domain>, CURDATE(), CURDATE(), 1); INSERT INTO alias (address, goto, domain, created, modified, active) values ('mailman-bounces@<domain>', 'mailman-bounces@lists.<domain>', <domain>, CURDATE(), CURDATE(), 1); INSERT INTO alias (address, goto, domain, created, modified, active) values ('mailman-confirm@<domain>', 'mailman-confirm@lists.<domain>', <domain>, CURDATE(), CURDATE(), 1); INSERT INTO alias (address, goto, domain, created, modified, active) values ('mailman-join@<domain>', 'mailman-join@lists.<domain>', <domain>, CURDATE(), CURDATE(), 1); INSERT INTO alias (address, goto, domain, created, modified, active) values ('mailman-leave@<domain>', 'mailman-leave@lists.<domain>', <domain>, CURDATE(), CURDATE(), 1); INSERT INTO alias (address, goto, domain, created, modified, active) values ('mailman-owner@<domain>', 'mailman-owner@lists.<domain>', <domain>, CURDATE(), CURDATE(), 1); INSERT INTO alias (address, goto, domain, created, modified, active) values ('mailman-request@<domain>', 'mailman-request@lists.<domain>', <domain>, CURDATE(), CURDATE(), 1); INSERT INTO alias (address, goto, domain, created, modified, active) values ('mailman-subscribe@<domain>', 'mailman-subscribe@lists.<domain>', <domain>, CURDATE(), CURDATE(), 1); INSERT INTO alias (address, goto, domain, created, modified, active) values ('mailman-unsubscribe@<domain>', 'mailman-unsubscribe@lists.<domain>', <domain>, CURDATE(), CURDATE(), 1);
Ohne PostfixAdmin
INSERT INTO aliases (source, destination) values ('mailman@<domain>', 'mailman@lists.<domain>'); INSERT INTO aliases (source, destination) values ('mailman-admin@<domain>', 'mailman-admin@lists.<domain>'); INSERT INTO aliases (source, destination) values ('mailman-bounces@<domain>', 'mailman-bounces@lists.<domain>'); INSERT INTO aliases (source, destination) values ('mailman-confirm@<domain>', 'mailman-confirm@lists.<domain>'); INSERT INTO aliases (source, destination) values ('mailman-join@<domain>', 'mailman-join@lists.<domain>'); INSERT INTO aliases (source, destination) values ('mailman-leave@<domain>', 'mailman-leave@lists.<domain>'); INSERT INTO aliases (source, destination) values ('mailman-owner@<domain>', 'mailman-owner@lists.<domain>'); INSERT INTO aliases (source, destination) values ('mailman-request@<domain>', 'mailman-request@lists.<domain>'); INSERT INTO aliases (source, destination) values ('mailman-subscribe@<domain>', 'mailman-subscribe@lists.<domain>'); INSERT INTO aliases (source, destination) values ('mailman-unsubscribe@<domain>', 'mailman-unsubscribe@lists.<domain>');
Die Relay-Domains können auf 2 Arten definiert werden - als MySQL-Datenbank oder als Datei:
Transport-MySQL
In der Datei /etc/postfix/main.cf folgende Zeilen eintragen:
sudo nano /etc/postfix/main.cf
transport_maps = mysql:/etc/postfix/virtual/mysql-transport.cf relay_domains = $transport_maps
Eingetragenen Dateipfad erstellen:
sudo nano /etc/postfix/virtual/mysql-transport.cf
Mit PostfixAdmin
Datei /etc/postfix/virtual/mysql-transport.cf mit folgenden Inhalt befüllen:
user = postfix password = <password> hosts = <server ip> dbname = postfix query = SELECT description FROM domain WHERE domain='%d' AND transport='relay'
In Domain-Datenbank folgende Einträge hinzufügen
INSERT INTO domain (domain, description, aliases, mailboxes, maxquota, quota, transport, backupmx, created, modified, active) values ('lists.kirner.or.at', 'description', 100, 100, 100, 2048, 'relay', 0, CURDATE(), CURDATE(), 1);
Ohne PostfixAdmin
Datenbank erstellen:
mysql -u root -p mysql> use mails; mysql> CREATE TABLE transports (id INT UNSIGNED AUTO_INCREMENT NOT NULL, domain VARCHAR(128) NOT NULL default '', transport VARCHAR(128) NOT NULL default '', UNIQUE (id), PRIMARY KEY (domain)); mysql> INSERT INTO `transports` (`domain`, `transport`) VALUES ('lists.<domain>', 'mailman:'); mysql> quit;
Datei /etc/postfix/virtual/mysql-transport.cf mit folgenden Inhalt befüllen:
user = mailserver password = <password> hosts = <server ip> dbname = mails query = SELECT transport FROM transports WHERE domain='%d'
Transport-Datei
Nur notwendig, wenn man nicht mit MySQL bzw. PostfixAdmin arbeitet
Neue Datei /etc/postfix/transport anlegen:
cd /etc/postfix/ sudo su echo "lists.<domain> mailman:" > transport exit sudo postmap -v transport
In der Datei /etc/postfix/main.cf am Ende folgende Zeilen hinzufügen:
sudo nano /etc/postfix/main.cf
relay_domains = lists.<domain> transport_maps = hash:/etc/postfix/transport mailman_destination_recipient_limit = 1
sudo /etc/init.d/postfix reload
Apache
Es hat bei mir nur eine Konfiguration, entweder über DNS oder über IP-Addresse, funkioniert. Grund waren die unterschiedlichen Links in den Mails und auf der Webseite.
sudo cp /etc/mailman/apache.conf /etc/apache2/conf-available/mailman.conf sudo cp /etc/mailman/apache.conf /etc/apache2/sites-available/mailman-ssl.conf
sudo mkdir /var/www/lists/ sudo chown -R www-data:www-data /var/www/lists/
sudo a2enmod cgi sudo /etc/init.d/apache2 restart
Aufruf über DNS lists.kirner.or.at
In der Datei /etc/mailman/mm_cfg.py folgende Zeilen anpassen:
sudo nano /etc/mailman/mm_cfg.py
DEFAULT_URL_PATTERN = 'http://%s/'; DEFAULT_EMAIL_HOST = '<domain>' DEFAULT_URL_HOST = 'lists.<domain>'
Danach Mailman starten:
sudo /etc/init.d/mailman start
Die Datei /etc/apache2/sites-available/mailman.conf muss folgenden Inhalt haben:
cd /etc/apache2/sites-available/ sudo nano mailman.conf
<VirtualHost *:80> ServerName lists.<domain> DocumentRoot /var/www/lists/ ErrorLog /var/log/apache2/lists.<domain>-error.log CustomLog /var/log/apache2/lists.<domain>-access.log combined <Directory /var/lib/mailman/archives/> Options +FollowSymLinks AllowOverride None Require all granted </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>
Konfiguration aktivieren:
cd /etc/apache2/sites-available/ sudo a2ensite mailman sudo /etc/init.d/apache2 reload
Damit die Seite auch direkt über http://lists.kirner.or.at aufgerufen werden kann, muss in der Datei /var/www/lists/index.html noch folgender Inhalt vorhanden sein:
<html> <body> <script> location.href="http://lists.<domain>/listinfo" </script> </body> </html>
Verbindung mit SSL absichern
Eine Anleitung zum Erstellen von Zertifikaten ist unter SSL Zertifikat zu finden.
Inhalt der Datei /etc/apache2/sites-available/mailman.conf durch folgende Zeilen ersetzen:
sudo nano mailman.conf
<VirtualHost *:80> ServerName lists.<domain> ServerAlias lists.<domain> Redirect / https://lists.<domain>/ </VirtualHost>
Der Inhalt der Datei /etc/apache2/sites-available/mailman-ssl.conf sieht wie in der vorigen Konfiguration aus, nur der erste Teil lautet folgendermaßen:
<VirtualHost *:443> ServerName lists.<domain> DocumentRoot /var/www/lists/ ErrorLog /var/log/apache2/lists.<domain>-error.log CustomLog /var/log/apache2/lists.<domain>-access.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/mailman.crt SSLCertificateKeyFile /etc/ssl/private/apache.key ...
In der Datei /etc/mailman/mm_cfg.py folgende Zeile anpassen:
DEFAULT_URL_PATTERN = 'https://%s/';
Den Inhalt der Datei /var/www/lists/index.html noch folgendermaßen anpassen:
<html> <body> <script> location.href="https://lists.<domain>/listinfo" </script> </body> </html>
Aufruf über <IP>/mailman/
Wenn mailman über die IP-Adresse aufgerufen wird, dann muss folgende Zeile in der Datei /etc/mailman/mm_cfg.py angepaßt werden:
DEFAULT_URL_PATTERN = 'http://%s/mailman/';
Die Datei /etc/apache2/conf-available/mailman.conf muss folgenden Inhalt haben:
Alias /pipermail/ /var/lib/mailman/archives/public/ Alias /images/mailman/ /usr/share/images/mailman/ ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/ <Directory /usr/lib/cgi-bin/mailman/> AllowOverride None Options ExecCGI AddHandler cgi-script .cgi Require all granted </Directory> <Directory /var/lib/mailman/archives/public/> Options FollowSymlinks AllowOverride None Require all granted </Directory> <Directory /usr/share/images/mailman/> AllowOverride None Require all granted </Directory>
Konfiguration aktivieren:
cd /etc/apache2/conf-available/ sudo a2enconf mailman sudo /etc/init.d/apache2 reload
Danach kann Mailman unter folgender URL aufgerufen werden:
http://<IP>/mailman/listinfo/
Abschluß
Nachdem alle Konfigurationen abgeschlossen worden sind, kann man die erste Liste anlegen:
sudo newlist mailman
Administration
Seitenpasswort setzen:
mmsitepass
Bedienung
Mitglieds-Optionen:
http://lists.<domain>/options/<list name>/<mail address>
Probleme
Falsche URL in Mails
Wenn in Mailing-Listen falsche URLs enthalten sind, dann müßen diese aktualisiert werden:
sudo /usr/lib/mailman/bin/withlist -l -r fix_url <listname> --urlhost=lists.<domain>
Berechtigungen
Verzeichnisse
sudo /usr/lib/mailman/bin/check_perms -f
Zeigt folgende Fehlermeldungen:
/var/lib/mailman/bin falsche GID (ist: root, soll: list) (korrigiere) /var/lib/mailman/mail falsche GID (ist: root, soll: list) (korrigiere) /var/lib/mailman/cgi-bin falsche GID (ist: root, soll: list) (korrigiere) /var/lib/mailman/scripts falsche GID (ist: root, soll: list) (korrigiere) /var/lib/mailman/icons falsche GID (ist: root, soll: list) (korrigiere) /var/lib/mailman/locks falsche GID (ist: root, soll: list) (korrigiere) /var/lib/mailman/Mailman falsche GID (ist: root, soll: list) (korrigiere) /var/lib/mailman/templates falsche GID (ist: root, soll: list) (korrigiere) /var/lib/mailman/logs falsche GID (ist: root, soll: list) (korrigiere) /var/lib/mailman/cron falsche GID (ist: root, soll: list) (korrigiere) Probleme aufgetreten: 10 Zum Beheben starten Sie erneut als list (oder 'root') mit der Option -f.
Korrektur durch:
sudo chown -h root:list /var/lib/mailman/*
Apache
Beim Aufruf des Archives über
https://lists.<domain>/pipermail/public
kommt eine Fehlermeldung, dass die Berechtigung fehlt:
You don't have permission to access /pipermail/public on this server.
Das kommt daher, dass sich beim Umstieg von Apache 2.2 auf Apache 2.4 die Verzeichniskonfigurationen geändert haben:
Konfiguration in Apache 2.2:
<Directory> ... Order allow,deny Allow from all ... </Directory>
Konfiguration in Apache 2.4:
</Directory> ... Require all granted ... </Directory>
Diese Änderungen gehören in /etc/apache2/sites-availables/mailman-ssl.conf bzw. in /etc/apache2/conf-availables/mailman.conf vorgenommen.
Links
https://help.ubuntu.com/community/Mailman
http://freemars.org/howto/mailman.html
https://www.howtoforge.com/how-to-install-and-configure-mailman-with-postfix-on-debian-squeeze
http://wiki.list.org/DOC/4.27%20Securing%20Mailman's%20web%20GUI%20by%20using%20Secure%20HTTP-SSL
https://mail.python.org/pipermail/mailman-users/2010-June/069610.html
http://www.list.org/mailman-install/node9.html
http://free-electrons.com/blog/mailman-howto-ubuntu-10-04/
https://sourceforge.net/p/postfixadmin/wiki/Relay_domains/
Zurück zu Mailserver einrichten