Mailman

Aus Tutorials
Zur Navigation springen Zur Suche springen

Installation

sudo apt-get install mailman

Konfiguration

Postfix

In Alias-Datenbank folgende Einträge hinzufügen:

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>');

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):

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

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:

transport_maps = mysql:/etc/postfix/virtual/mysql-transport.cf
relay_domains = $transport_maps

Eingetragenen Dateipfad erstellen:

sudo touch /etc/postfix/virtual/mysql-transport.cf
Mit PostfixAdmin
user = postfix
password = <password>
hosts = <server ip>
dbname = postfix
query = SELECT description FROM domain WHERE domain='%d' AND transport='relay'
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

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:

relay_domains = lists.<domain>
transport_maps = hash:/etc/postfix/transport
mailman_destination_recipient_limit = 1
sudo /etc/init.d/postfix reload

Apache

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:

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:

<VirtualHost *:80>
    ServerName lists.<domain>
    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>

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:

<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.kirner.or.at
    DocumentRoot /var/www/lists/
    ErrorLog /var/log/apache2/lists-error.log
    CustomLog /var/log/apache2/lists-access.log combined

    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/mailman.crt
    SSLCertificateKeyFile /etc/ssl/private/mailman.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
    Order allow,deny
    Allow from all
</Directory>
<Directory /var/lib/mailman/archives/public/>
    Options FollowSymlinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
<Directory /usr/share/images/mailman/>
    AllowOverride None
    Order allow,deny
    Allow from all
</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

https://lists.<domain>/pipermail/public
You don't have permission to access /pipermail/public on this server.

Links

https://www.howtoforge.com/perfect-server-ubuntu-14.04-apache2-php-mysql-pureftpd-bind-dovecot-ispconfig-3-p4#g0.0.15

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

http://list.org/

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/

http://www.list.org/site.html


Zurück zu Mailserver einrichten