Diese Seite beschreibt die Installation und Einrichtung von Sympa, Postfix und Nginx/Apache unter Debian Stretch.

Installation von Sympa

Ab 6.1.22 bringt Sympa DMARC-Funktionalität mit - diese Version ist erst in Buster enthalten. Gleich welche Version es ist:

apt install sympa

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

Postfix einrichten

Prinzipiell gibt es zwei Möglichkeiten, wie Sympa mit Postfix zusammen arbeiten kann:

Die alias-maps-Variante ist in der offiziellen Sympa-Dokumentation beschrieben. Die Nutzung der transport map vereinfacht die Konfiguration also erheblich. Diese wird im Folgenden auch beschrieben.

Reject von ungültigen Empfängern

Mit der aufgeführten Postfix-Konfiguration werden alle Anfragen an die definierte virtual_mailbox_domains angenommen und an Sympa weiter geleitet, auch solche, die einen ungültigen, nicht existierenden Listennamen enthalten. Dies kann insbesondere zu Backscatter-Problemen führen. Wünschenswert wäre, dass Postfix prüft, ob eine Liste existiert und bei einem ungültigen Listennamen die Annahme der Mail verweigert. Dies lässt sich mit einer einfachen sql-Abfrage2 machen.

Webserver einrichten

Apache als Webserver für Sympa scheint um einiges performanter als ein Setup mit Nginx zu sein. Zudem gibt es einen Bug, der in der folgenden Nginx-Konfiguration aufgritt, bei Apache hingegen nicht.

Nginx

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.

Apache

Eine Konfigurationsdatei für Sympa ist im Debian-Paket bereits enthalten, so dass diese nur in der Seitenkonfiguration eingebunden werden muss. Diese könnte /etc/apache2/sites-enabled/listen.example.org so aussehen3:

<VirtualHost *:80>
        ServerName      listen.example.org
        DocumentRoot    /usr/lib/cgi-bin/sympa
        ErrorLog        /var/log/apache2/listen.example.org.log 
        include         /etc/apache2/conf-available/sympa.conf
</VirtualHost>

Soll Sympa unter der Domain ohne Pfad erreichbar sein (also listen.example.org statt listen.example.org/sympa) muss der ScriptAlias in /etc/apache2/conf-available/sympa.conf angepasst werden. Außerdem empfiehlt es sich, den Timeout für das Ausführen der FCGI-Anwendung zu erhöhen:

#ScriptAlias /sympa /usr/lib/cgi-bin/sympa/wwsympa-wrapper.fcgi
ScriptAliasMatch ^/(.*) /usr/lib/cgi-bin/sympa/wwsympa-wrapper.fcgi/$1
FcgidIOTimeout 300

Wird Sympa mit Apache verwendet, so muss apache2-suexec-pristine mit installiert und aktiviert werden (a2enmod suexec), da ansonsten der Apache-Neustart fehl schlägt.

Authentifizierung in der Weboberfläche

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

Multidomain-Unterstützung

Eine Sympa-Instanz kann beliebig viele Listen-Domains bedienen. Für die Weboberfläche werden dann, ähnlich zu Apache, virtuelle Host (Robots genannt) eingerichtet.

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.

Umgang mit Spam

Voraussetzung für die Sympa-interne Erkennung und Behandlung von Spam ist das vorgeschaltete Prüfen und Markieren von eingehenden E-Mails durch einen Spamfilter. Üblicherweise erhalten die Mails dann einen zusätzlichen X-Header, bspw. bei Spammassassin ein X-Spam-Status:. Sympa kann aufgrund dieses Headers die Spam-Nachricht intern auch als solche Klassifizierung und speziell behandeln.

Tag-basierte Spamerkennung

Die Tag-basierte Spambehandlung wird über die sympa.conf konfiguriert:

antispam_feature on
antispam_tag_header_name X-Spam-Status 
antispam_tag_header_spam_regexp ^\s*Yes
antispam_tag_header_ham_regexp ^\s*No

Wobei die Option antispam_feature on die Spamassassin-Defaults für die anderen antispam-Optionen aktiviert. Zudem sorgt diese Option dafür, dass Spam-Nachrichten im Webinterface speziell markiert werden.

Scenario-basierte Spamerkennung

Diese ist standardmäßig über das Scenario spam_status.x-spam-status aktiviert. Über die Option spam_status kann in der sympa.conf jedoch auch ein anderes Scenario definiert werden. Im Scenario selbst kann dann die Prüfung mehrere unterschiedlicher Header definiert werden.

Damit Spam-Nachrichten auch als solche im Webinterface angezeigt werden, sollte ebenfalls die Option antispam_feature on aktiviert werden.

Spambehandlung

Eine durch Sympa als Spam markierte Nachricht (X-Sympa-Spam-Status:) wird in moderierten Listen nicht an [listname]-request, [listname]-editor oder die listmaster-Adresse weiter geleitet. Soll verhindert werden, dass Spam-Nachrichten über öffentliche Listen zugestellt werden, muss das entsprechende send-Scenario angepasst werden. Hier am Beispiel von send.public:

title.gettext public list

equal([msg->spam_status],'spam')        smtp,md5,dkim,smime     -> editorkey,quiet
true()                                  smtp,dkim,md5,smime     -> do_it

Spamnachrichten laden dadurch in der Moderationswarteschlange, alle anderen Nachrichten werden zugestellt.


Fussnoten und Hinweise

  1. Hintergrund zum Mapping für sympa-request 7 Die Umschreibung von -owner ist notwendig, da ansonsten die Mail nicht korrekt verarbeitet wird (1)

  2. Die Abfrage prüft nur den user-Teil der Mailadresse. (2)

  3. Die SSL-Konfiguration ist in diesem Beispiel nicht aufgeführt (3)

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


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