Unterschiede zwischen den Revisionen 12 und 67 (über 55 Versionen hinweg)
Revision 12 vom 2018-01-12 08:41:13
Größe: 7398
Autor: anonym
Kommentar:
Revision 67 vom 2022-11-25 21:23:18
Größe: 0
Autor: phil
Kommentar:
Gelöschter Text ist auf diese Art markiert. Hinzugefügter Text ist auf diese Art markiert.
Zeile 1: Zeile 1:
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.

<<TableOfContents>>

= 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 =
[[https://www.sympa.org/manual/web-interface|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 DebianPackage: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.
 * https://www.sympa.org/manual/authentication

= Postfix =
 * https://www.sympa.org/faq/postfix_howto
 * https://www.sympa.org/faq/postfix
 * https://www.sympa.org/manual/mail-aliases
 * http://www.folly.org.uk/sympa/sympa_config_03.html
 * 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 =
 * https://www.sympa.org/manual/virtual-hosts
 * mkdir /var/lib/sympa/list_data/foo.example.org
 * mkdir /ect/sympa/foo.example.org
 * /ect/sympa/foo.example.org/robot.conf anlegen:

= Nutzern die Listenerstellung erlauben =
Ziel ist es, dass nicht nur Admins Listen erstellen können, sondern auch ausgewählte reguläre [[https://www.sympa.org/manual_6.2/list-creation#who_can_create_lists_on_the_web_interface|Nutzer*innen]]. Dazu werden alle berechtigten Nutzer*innen in einem [[https://www.sympa.org/manual/authorization-scenarios|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 werden<<FootNote(Für das Scenario gilt: First match wins)>>:{{{
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/manual/dmarc
 * https://www.sympa.org/manualtest/conf-parameters/part3#loop_prevention --> stille Verweigerung von Listenmails (bspw. leiche Message-ID)
 * [[https://kradalby.no/sympa.html|Nginx-Konfiguration]]
 * [[https://wiki.debian.org/Sympa/Nginx|Nginx-Konfiguration im Debian-Wiki]]
 *

Creative Commons Lizenzvertrag
This page is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.