Mailman: Unterschied zwischen den Versionen

Aus Tutorials
Zur Navigation springen Zur Suche springen
 
(114 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{note|Noch in Bearbeitung}}
== Installation ==


<pre>
sudo apt-get install mailman
</pre>


== Installation ==
Danach wird möglicherweise folgende Meldung angezeigt:
<pre>
* Site list for mailman missing (looking for list named 'mailman').
* Please create it; until then, mailman will refuse to start.
</pre>


Um dieses Problem zu lösen, muss ''NACH'' der folgenden Konfiguration mit folgenden Befehl die Liste ''mailman'' angelegt werden:
<pre>
<pre>
sudo apt-get install mailman
sudo newlist mailman
</pre>
</pre>


== Konfiguration ==
== 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):
<pre>
<pre>
newlist mailman
sudo nano /etc/postfix/master.cf
sudo newlist mailman
</pre>
 
<pre>
mailman   unix  -      n      n      -      -      pipe
  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
  ${nexthop} ${user}
</pre>
</pre>
==== Alias Einträge ====
In Alias-Datenbank folgende Einträge hinzufügen (bei weiteren Listen ''mailman'' durch den aktuellen Mailinglisten-Namen ersetzen):
===== Mit [[PostfixAdmin]] =====


<pre>
<pre>
## mailman Mailingliste
INSERT INTO alias (address, goto, domain, created, modified, active) values ('mailman@<domain>', 'mailman@lists.<domain>', <domain>, CURDATE(), CURDATE(), 1);
mailman:              "|/var/lib/mailman/mail/mailman post mailman"
INSERT INTO alias (address, goto, domain, created, modified, active) values ('mailman-admin@<domain>', 'mailman-admin@lists.<domain>', <domain>, CURDATE(), CURDATE(), 1);
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"
INSERT INTO alias (address, goto, domain, created, modified, active) values ('mailman-bounces@<domain>', 'mailman-bounces@lists.<domain>', <domain>, CURDATE(), CURDATE(), 1);
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"
INSERT INTO alias (address, goto, domain, created, modified, active) values ('mailman-confirm@<domain>', 'mailman-confirm@lists.<domain>', <domain>, CURDATE(), CURDATE(), 1);
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"
INSERT INTO alias (address, goto, domain, created, modified, active) values ('mailman-join@<domain>', 'mailman-join@lists.<domain>', <domain>, CURDATE(), CURDATE(), 1);
mailman-join:        "|/var/lib/mailman/mail/mailman join mailman"
INSERT INTO alias (address, goto, domain, created, modified, active) values ('mailman-leave@<domain>', 'mailman-leave@lists.<domain>', <domain>, CURDATE(), CURDATE(), 1);
mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"
INSERT INTO alias (address, goto, domain, created, modified, active) values ('mailman-owner@<domain>', 'mailman-owner@lists.<domain>', <domain>, CURDATE(), CURDATE(), 1);
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"
INSERT INTO alias (address, goto, domain, created, modified, active) values ('mailman-request@<domain>', 'mailman-request@lists.<domain>', <domain>, CURDATE(), CURDATE(), 1);
mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"
INSERT INTO alias (address, goto, domain, created, modified, active) values ('mailman-subscribe@<domain>', 'mailman-subscribe@lists.<domain>', <domain>, CURDATE(), CURDATE(), 1);
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"
INSERT INTO alias (address, goto, domain, created, modified, active) values ('mailman-unsubscribe@<domain>', 'mailman-unsubscribe@lists.<domain>', <domain>, CURDATE(), CURDATE(), 1);
mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"
</pre>
</pre>
===== Ohne [[PostfixAdmin]] =====


<pre>
<pre>
Zeile 42: Zeile 67:
</pre>
</pre>


== Postfix ==
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:
<pre>
sudo nano /etc/postfix/main.cf
</pre>
<pre>
transport_maps = mysql:/etc/postfix/virtual/mysql-transport.cf
relay_domains = $transport_maps
</pre>
 
Eingetragenen Dateipfad erstellen:
<pre>
sudo nano /etc/postfix/virtual/mysql-transport.cf
</pre>
 
===== Mit [[PostfixAdmin]] =====
 
Datei ''/etc/postfix/virtual/mysql-transport.cf'' mit folgenden Inhalt befüllen:
<pre>
user = postfix
password = <password>
hosts = <server ip>
dbname = postfix
query = SELECT description FROM domain WHERE domain='%d' AND transport='relay'
</pre>
 
In Domain-Datenbank folgende Einträge hinzufügen
<pre>
INSERT INTO domain (domain, description, aliases, mailboxes, maxquota, quota, transport, backupmx, created, modified, active)
            values ('lists.kirner.or.at', 'mailman', 100, 100, 100, 2048, 'relay', 0, CURDATE(), CURDATE(), 1);
</pre>
 
===== Ohne [[PostfixAdmin]] =====
 
Datenbank erstellen:
<pre>
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;
</pre>
 
Datei ''/etc/postfix/virtual/mysql-transport.cf'' mit folgenden Inhalt befüllen:
<pre>
user = mailserver
password = <password>
hosts = <server ip>
dbname = mails
query = SELECT transport FROM transports WHERE domain='%d'
</pre>
 
==== Transport-Datei ====
 
{{note|Nur notwendig, wenn man nicht mit MySQL bzw. PostfixAdmin arbeitet}}


Neue Datei ''/etc/postfix/transport'' anlegen:
Neue Datei ''/etc/postfix/transport'' anlegen:
Zeile 48: Zeile 131:
cd /etc/postfix/
cd /etc/postfix/
sudo su
sudo su
echo "lists.example.com     mailman:" > transport
echo "lists.<domain>     mailman:" > transport
exit
exit
sudo postmap transport
sudo postmap -v transport
</pre>
</pre>


Checken, ob die Datei ''/etc/postfix/master.cf'' folgende Zeilen enthält (sollte standardmäßig enthalten sein):
In der Datei ''/etc/postfix/main.cf'' am Ende folgende Zeilen hinzufügen:
<pre>
<pre>
mailman  unix  -      n      n      -      -      pipe
sudo nano /etc/postfix/main.cf
  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
  ${nexthop} ${user}
</pre>
</pre>


In der Datei ''/etc/postfix/main.cf'' am Ende folgende Zeilen hinzufügen:
<pre>
<pre>
relay_domains = lists.<domain>
relay_domains = lists.<domain>
Zeile 71: Zeile 151:
</pre>
</pre>


== Apache ==
=== Apache ===
 
{{note|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.}}


<pre>
<pre>
Zeile 77: Zeile 159:
sudo cp /etc/mailman/apache.conf /etc/apache2/sites-available/mailman-ssl.conf
sudo cp /etc/mailman/apache.conf /etc/apache2/sites-available/mailman-ssl.conf
</pre>
</pre>
<pre>
sudo mkdir /var/www/lists/
sudo chown -R www-data:www-data /var/www/lists/
</pre>
<pre>
sudo a2enmod cgi
sudo /etc/init.d/apache2 restart
</pre>
==== Aufruf über DNS ''lists.kirner.or.at'' ====
In der Datei ''/etc/mailman/mm_cfg.py'' folgende Zeilen anpassen:
<pre>
sudo nano /etc/mailman/mm_cfg.py
</pre>
<pre>
DEFAULT_URL_PATTERN = 'http://%s/';
DEFAULT_EMAIL_HOST = '<domain>'
DEFAULT_URL_HOST  = 'lists.<domain>'
</pre>
Die Datei ''/etc/apache2/sites-available/mailman.conf'' muss folgenden Inhalt haben:
<pre>
cd /etc/apache2/sites-available/
sudo nano mailman.conf
</pre>
<pre>
<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>
</pre>
Konfiguration aktivieren:
<pre>
cd /etc/apache2/sites-available/
sudo a2ensite mailman
sudo /etc/init.d/apache2 reload
</pre>
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:
<pre>
sudo nano /var/www/lists/index.html
</pre>
<pre>
<html>
  <body>
    <script>
      location.href="http://lists.<domain>/listinfo"
    </script>
  </body>
</html>
</pre>
===== 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:
<pre>
sudo nano mailman.conf
</pre>
<pre>
<VirtualHost *:80>
        ServerName lists.<domain>
        ServerAlias lists.<domain>
        Redirect / https://lists.<domain>/
</VirtualHost>
</pre>
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:
<pre>
<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
    ...
</pre>
In der Datei ''/etc/mailman/mm_cfg.py'' folgende Zeile anpassen:
<pre>
DEFAULT_URL_PATTERN = 'https://%s/';
</pre>
Den Inhalt der Datei ''/var/www/lists/index.html'' noch folgendermaßen anpassen:
<pre>
<html>
  <body>
    <script>
      location.href="https://lists.<domain>/listinfo"
    </script>
  </body>
</html>
</pre>
==== 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:
<pre>
DEFAULT_URL_PATTERN = 'http://%s/mailman/';
</pre>
Die Datei ''/etc/apache2/conf-available/mailman.conf'' muss folgenden Inhalt haben:
<pre>
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>
</pre>
Konfiguration aktivieren:
<pre>
cd /etc/apache2/conf-available/
sudo a2enconf mailman
sudo /etc/init.d/apache2 reload
</pre>
Danach kann ''Mailman'' unter folgender URL aufgerufen werden:
<pre>
http://<IP>/mailman/listinfo/
</pre>
=== Abschluß ===
Nachdem alle Konfigurationen abgeschlossen worden sind, kann man die erste Liste anlegen:
<pre>
sudo newlist mailman
</pre>
Danach ''Mailman'' starten:
<pre>
sudo /etc/init.d/mailman start
</pre>
== Administration ==
Seitenpasswort setzen:
<pre>
mmsitepass
</pre>
== Bedienung ==
Mitglieds-Optionen:
<pre>
http://lists.<domain>/options/<list name>/<mail address>
</pre>
== Probleme ==
=== Browserfehler: ''Die eingegebenen Daten werden über eine nicht gesicherte Verbindung übertragen und könnten von einer dritten Person mitgelesen werden.'' ===
Bei ''DEFAULT_URL_PATTERN'' in der Datei ''/etc/mailman/mm_cfg.py'' fehlt das '''s'' hinter ''http'':
<pre>
DEFAULT_URL_PATTERN = 'https://%s/';
</pre>
=== Falsche URL in Mails ===
Wenn in Mailing-Listen falsche URLs enthalten sind, dann müßen diese aktualisiert werden.
Mittels folgenden Befehl werden die Standardeinträge aus ''/etc/mailman/mm_cfg.py'' übernommen:
<pre>
sudo withlist -l -r fix_url <list name> -v
</pre>
Mittels folgenden Befehl kann man bestimmte URLs eintragen:
<pre>
sudo /usr/lib/mailman/bin/withlist -l -r fix_url <listname> --urlhost=lists.<domain>
</pre>
=== Berechtigungen ===
==== Verzeichnisse ====
<pre>
sudo /usr/lib/mailman/bin/check_perms -f
</pre>
Zeigt folgende Fehlermeldungen:
<pre>
/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.
</pre>
Korrektur durch:
<pre>
sudo chown -h root:list /var/lib/mailman/*
</pre>
==== Apache ====
Beim Aufruf des Archives über
<pre>
https://lists.<domain>/pipermail/public
</pre>
kommt eine Fehlermeldung, dass die Berechtigung fehlt:
<pre>
You don't have permission to access /pipermail/public on this server.
</pre>
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:
<pre>
<Directory>
  ...
  Order allow,deny
  Allow from all
  ...
</Directory>
</pre>
Konfiguration in Apache 2.4:
<pre>
</Directory>
  ...
  Require all granted
  ...
</Directory>
</pre>
Diese Änderungen gehören in ''/etc/apache2/sites-availables/mailman-ssl.conf'' bzw. in ''/etc/apache2/conf-availables/mailman.conf'' vorgenommen.


== Links ==
== Links ==
Zeile 85: Zeile 453:


[http://freemars.org/howto/mailman.html http://freemars.org/howto/mailman.html]
[http://freemars.org/howto/mailman.html http://freemars.org/howto/mailman.html]
[https://www.howtoforge.com/how-to-install-and-configure-mailman-with-postfix-on-debian-squeeze 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://wiki.list.org/DOC/4.27%20Securing%20Mailman's%20web%20GUI%20by%20using%20Secure%20HTTP-SSL]
[http://list.org/ http://list.org/]
[https://mail.python.org/pipermail/mailman-users/2010-June/069610.html https://mail.python.org/pipermail/mailman-users/2010-June/069610.html]
[http://www.list.org/mailman-install/node9.html http://www.list.org/mailman-install/node9.html]
[http://free-electrons.com/blog/mailman-howto-ubuntu-10-04/ http://free-electrons.com/blog/mailman-howto-ubuntu-10-04/]
[http://www.list.org/site.html http://www.list.org/site.html]
[https://sourceforge.net/p/postfixadmin/wiki/Relay_domains/ https://sourceforge.net/p/postfixadmin/wiki/Relay_domains/]




Zurück zu [[Mailserver einrichten]]
Zurück zu [[Mailserver einrichten]]

Aktuelle Version vom 1. Januar 2017, 16:33 Uhr

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.

Um dieses Problem zu lösen, 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', 'mailman', 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>'

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:

sudo nano /var/www/lists/index.html
<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

Danach Mailman starten:

sudo /etc/init.d/mailman start

Administration

Seitenpasswort setzen:

mmsitepass

Bedienung

Mitglieds-Optionen:

http://lists.<domain>/options/<list name>/<mail address>

Probleme

Browserfehler: Die eingegebenen Daten werden über eine nicht gesicherte Verbindung übertragen und könnten von einer dritten Person mitgelesen werden.

Bei DEFAULT_URL_PATTERN in der Datei /etc/mailman/mm_cfg.py fehlt das 's hinter http:

DEFAULT_URL_PATTERN = 'https://%s/';

Falsche URL in Mails

Wenn in Mailing-Listen falsche URLs enthalten sind, dann müßen diese aktualisiert werden.

Mittels folgenden Befehl werden die Standardeinträge aus /etc/mailman/mm_cfg.py übernommen:

sudo withlist -l -r fix_url <list name> -v

Mittels folgenden Befehl kann man bestimmte URLs eintragen:

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

https://sourceforge.net/p/postfixadmin/wiki/Relay_domains/


Zurück zu Mailserver einrichten