Unterschiede zwischen den Revisionen 13 und 14
Revision 13 vom 2018-01-12 09:27:15
Größe: 7503
Autor: anonym
Kommentar:
Revision 14 vom 2018-01-12 09:51:28
Größe: 8443
Autor: anonym
Kommentar: Authentifizierung
Gelöschter Text ist auf diese Art markiert. Hinzugefügter Text ist auf diese Art markiert.
Zeile 6: Zeile 6:
Dies ist recht schnell gemacht:{{{  * Dies ist recht schnell gemacht:{{{
Zeile 8: Zeile 8:

 * Mysql-Datenbank einrichten - per dbconfig oder manuell: https://www.sympa.org/manual/database
 * Topics anpassen: /etc/sympa/topics.conf
 * Bei der Installation wird gleich die Datenbank mit eingerichtet. Dies kann auch [[https://www.sympa.org/manual/database|manuell]] durchgeführt werden.
Zeile 81: Zeile 79:

= Authentifizierung in der Weboberfläche =
Sympa kann mehrere Quellen zur [[https://www.sympa.org/manual/authentication|Authentifizierung]] nutzen. Diese werden in {{{/etc/sympa/auth.conf}}} definiert.
 * Im folgenden Beispiel erfolgt die Authentifizierung bei Nutzer mit einer example.org-Mailadresse per LDAP, alle anderen Nutzer werden über die interne Datenbank authentifiziert:{{{
# LDAP authentication
ldap
        regexp example\.org
        host ldap.example.org
        timeout 20
        suffix sc=mailAccount,ou=People,o=ldap,dc=example,dc=org
        get_dn_by_uid_filter (cn=[sender])
        get_dn_by_email_filter (mail=[sender])
        email_attribute mail

# Internal authentication by email and password
user_table
        negative_regexp example\.org
        regexp .*
}}}
 * Anmeldungen mit einem LDAP-Account sind sowohl nur mit Nutzername ({{{get_dn_by_uid_filter}}}), als auch mit der vollständigen Mailadresse ({{{get_dn_by_email_filter}}}) möglich.
Zeile 82: Zeile 100:

= Authentifizierung =
Sympa (wws) kann mehrere Quellen zur Authentifizierung nutzen.
 * https://www.sympa.org/manual/authentication
Zeile 145: Zeile 159:
 *  * Topics anpassen: /etc/sympa/topics.conf

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.

Installation von Sympa

  • Dies ist recht schnell gemacht:

    apt install sympa
  • Bei der Installation wird gleich die Datenbank mit eingerichtet. Dies kann auch manuell durchgeführt werden.

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
  • Allgemeine Fastcgi-Konfiguration unter /etc/nginx/snippets/sympa_fcgi.conf anlegen:

    gzip off;
            fastcgi_pass   unix:/run/fcgiwrap.socket;
            fastcgi_split_path_info ^(/)(.+)$;
            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;
  • Seiten-Konfiguration unter /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;
    
        # 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/(.*)$ /$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 / {
        include /etc/nginx/snippets/sympa_fcgi.conf;
        }
    }
  • Anschließend Seitenkonfiguration aktivieren und Nginx neu laden.

Authentifizierung in der Weboberfläche

Sympa kann mehrere Quellen zur Authentifizierung nutzen. Diese werden in /etc/sympa/auth.conf definiert.

  • Im folgenden Beispiel erfolgt die Authentifizierung bei Nutzer mit einer example.org-Mailadresse per LDAP, alle anderen Nutzer werden über die interne Datenbank authentifiziert:

    # LDAP authentication
    ldap
            regexp  example\.org
            host    ldap.example.org
            timeout 20      
            suffix  sc=mailAccount,ou=People,o=ldap,dc=example,dc=org
            get_dn_by_uid_filter    (cn=[sender])
            get_dn_by_email_filter  (mail=[sender])
            email_attribute         mail
    
    # Internal authentication by email and password
    user_table
            negative_regexp example\.org
            regexp .*
  • Anmeldungen mit einem LDAP-Account sind sowohl nur mit Nutzername (get_dn_by_uid_filter), als auch mit der vollständigen Mailadresse (get_dn_by_email_filter) möglich.

  • 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.

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

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

  1. Für das Scenario gilt: First match wins (1)


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