Diese Seite beschreibt die Installation und Einrichtung von Sympa unter Debian Stretch. Als MTA kommt Postfix zum Einsatz. Statt über alias_maps wird Sympa wird über virtual_transport eingebunden.
Inhaltsverzeichnis
Installation von Sympa
Dies ist recht schnell gemacht:
apt install sympa
Mysql-Datenbank einrichten - per dbconfig oder manuell: https://www.sympa.org/manual/database
- Topics anpassen: /etc/sympa/topics.conf
Nginx als Webserver einrichten
WWSympa, die Weboberfläche für Sympa, ist ein Perl-CGI-Skript. Zur Beschleunigung kann Fastcgi genutzt werden. Da Nginx lediglich Fastcgi unterstützt, wird zusätzlich Fcgiwrap benötigt.
Installation der Pakete:
apt install nginx-light fcgiwrap
Fastcgi in /etc/sympa/sympa/sympa.conf aktivieren:
use_fast_cgi 1
Seiten-Konfiguration /etc/nginx/sites-available/sympa anlegen:
server { server_name listen.example.org; root /usr/lib/cgi-bin/sympa; access_log /var/log/nginx/sympa.access.log; error_log /var/log/nginx/sympa.error.log; error_page 403 500 502 503 504 /50x.html; rewrite ^/$ /wws permanent; # While configuring sympa, you should specify wwsympa_url for each robot. # if you do not do so, sympa will generate wwsympa_url as ${robot_name}/sympa. # So to prevent non-active urls for robots without wwsympa_url, we do this redirect: rewrite ^/sympa/(.*)$ /wws/$1 permanent; location ^~ /static-sympa/ { alias /var/lib/sympa/static_content/; access_log off; } location /50x.html { root /usr/share/nginx/html; } location ~* \.(php|pl|py|jsp|asp|sh|cgi|bin|csh|ksh|out|run|o)$ { deny all; } location ~ /\.ht { deny all; } location /wws { gzip off; fastcgi_pass unix:/run/fcgiwrap.socket; fastcgi_split_path_info ^(/wws)(.+)$; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; # According to RFC3875 (https://tools.ietf.org/html/rfc3875#section-4.1.14) in SERVER_NAME # we should put an actual hostname user came to. For nginx it is in $host # This will allow to run sympa multihost instances fastcgi_param SERVER_NAME $host; fastcgi_param REMOTE_USER $remote_user; fastcgi_param SCRIPT_FILENAME $document_root/wwsympa-wrapper.fcgi; fastcgi_param HTTP_HOST $http_host; fastcgi_intercept_errors on; } }
- Anschließend Seitenkonfiguration aktivieren und Nginx neu laden.
Volle Administrationsrechte für die Weboberfläche erhalten alle Accounts, die unter listmasters in /etc/sympa/sympa/sympa.conf geführt werden. Listmaster haben auf alle Robots volle Rechte.
Authentifizierung
Sympa (wws) kann mehrere Quellen zur Authentifizierung nutzen.
Postfix
- Anpassen der Pfade in der master.conf
- sympa.conf:
- sendmail_aliases /etc/sympa/sympa_aliases
- aliases_program postalias
- chown sympa: für alias und transport-map
## The full path to the Message Transfer Agent program (default is Sendmail 8.7 ## or above) sendmail /usr/sbin/sendmail # correct # this binary is locating in the same directory as postfix # sendmail /usr/sbin/postfix # (incorrect : must use Postfix to Sendmail compatibility interface)
- Alternative zu den Aliasmaps: virtual_transport
- sendmail_aliases none
- virtual_mailbox_domains = ml.domain.tld
- virtual_transport: sympa (analog zur master.cf) - oder bei mehreren virtual_mailbox_domains:
virtual_transport_maps = /etc/postfix/foo
ml.domain.tld sympa foo.domain.tld schleuder
Multidomain
Nutzern die Listenerstellung erlauben
Ziel ist es, dass nicht nur Admins Listen erstellen können, sondern auch ausgewählte reguläre Nutzer*innen. Dazu werden alle berechtigten Nutzer*innen in einem Scenario aufgelistet.
Zuerst wird in der sympa.conf festgelegt, welches Scenario die Rechte für die Listenerstellung definiert:
create_list list_creators
Nun wird ein entsprechendes Scenario angelegt. Bei nur einem Robot liegt sie unter /etc/sympa/scenari. Bei verschiedenen Robots unter /ect/sympa/$ROBOT/scenari. Der Dateiname muss eine Kombination aus value.wert entsprechend der sympa.conf sein - in diesem Fall also create_list.list_creators:
title Users that can create lists equal([sender], 'foo@example.org') md5 -> listmaster
Das Scenario definiert also, dass eine bestimmte Nutzerin (equal([sender], 'foo@example.org') nach der Anmeldung im Webinterface (md5) entsprechende Rechte (--> listmaster) erhält.
- Nach dem selben Schema können nun weitere Nutzer*innen definiert werden
Mit der Definition von create_list verlieren die listmaster die Möglichkeit, Listen anzulegen - deshalb kann das ursprüngliche Scenario am Ende des neuen Scenarios eingebunden werden1:
title Users that can create lists equal([sender], 'foo@example.org') md5 -> listmaster include create_list.listmaster
Da der erwartete Dateiname nun include.create_list.listmaster ist, muss noch ein Symlink erstellt werden:
ln -s /usr/share/sympa/default/scenari/create_list.listmaster /etc/sympa/scenari/include.create_list.listmaster
- Abschließend muss Sympa neu gestartet werden
Fussnoten und Hinweise
https://www.sympa.org/manualtest/conf-parameters/part3#loop_prevention --> stille Verweigerung von Listenmails (bspw. leiche Message-ID)
Für das Scenario gilt: First match wins (1)