Rspamd (Ubuntu 18.04)

Aus Tutorials
Zur Navigation springen Zur Suche springen

Noch in Bearbeitung


Voraussetzungen

- Redis-Server muss installiert sein (keine weitere Konfiguration notwendig).

Installation

sudo su
apt-get install -y lsb-release wget # optional
CODENAME=`lsb_release -c -s`
wget -O- https://rspamd.com/apt-stable/gpg.key | apt-key add -
echo "deb [arch=amd64] http://rspamd.com/apt-stable/ $CODENAME main" > /etc/apt/sources.list.d/rspamd.list
echo "deb-src [arch=amd64] http://rspamd.com/apt-stable/ $CODENAME main" >> /etc/apt/sources.list.d/rspamd.list
apt-get update
apt-get --no-install-recommends install rspamd
exit

Links

https://rspamd.com/downloads.html

Konfiguration

Den Dämon stoppen:

sudo service rspamd stop

/etc/rspamd/local.d/options.inc

Die Datei

sudo vi /etc/rspamd/local.d/options.inc

für globale Netzwerkkonfigurationen anlegen und mit folgenden Inhalt befüllen:

local_addrs = "127.0.0.0/8, ::1";

dns {
    nameserver = ["10.0.0.100:53:10"];
}

Es können auch mehrere Mailserver mit Gewichtung angegeben werden. Muster: <ip address>:<port>:<weight>

Links

https://rspamd.com/doc/configuration/options.html

/etc/rspamd/local.d/worker-normal.inc

Die Datei

sudo vi /etc/rspamd/local.d/worker-normal.inc

für Konfiguration des normal worker anlegen und mit folgenden Inhalt befüllen:

bind_socket = "localhost:11333";

Links

https://rspamd.com/doc/workers/

/etc/rspamd/local.d/worker-controller.inc

Die Datei

sudo vi /etc/rspamd/local.d/worker-controller.inc

für Controller-Einstellungen anlegen und mit folgenden Inhalt befüllen:

password = "<password for web-interface>";

Das Passwort wird mittels dem Kommando

rspamadm pw

generiert.

Links

https://rspamd.com/doc/workers/

/etc/rspamd/local.d/worker-proxy.inc

Die Datei

sudo vi /etc/rspamd/local.d/worker-proxy.inc

für Konfiguration des proxy worker anlegen (zuständig für Milter) und mit folgenden Inhalt befüllen:

bind_socket = "localhost:11332";
milter = yes;
timeout = 120s;
upstream "local" {
    default = yes;
    self_scan = yes;
}

Links

https://rspamd.com/doc/workers/rspamd_proxy.html

/etc/rspamd/local.d/logging.inc

Die Datei

sudo vi /etc/rspamd/local.d/logging.inc 

für Logging-Einstellungen anlegen und mit folgenden Inhalt befüllen:

type = "file";
filename = "/var/log/rspamd/rspamd.log";
level = "error";
debug_modules = [];

Links

https://rspamd.com/doc/configuration/logging.html

/etc/rspamd/local.d/milter_headers.conf

Die Datei

sudo vi /etc/rspamd/local.d/milter_headers.conf

für Milter-Headers-Einstellungen anlegen und mit folgenden Inhalt befüllen:

use = ["x-spamd-bar", "x-spam-level", "authentication-results"];
authenticated_headers = ["authentication-results"];

Links

https://rspamd.com/doc/modules/milter_headers.html

/etc/rspamd/local.d/classifier-bayes.conf

Die Datei

sudo vi /etc/rspamd/local.d/classifier-bayes.conf

für Statistik- bzw. Caching-Einstellungen anlegen und mit folgenden Inhalt befüllen:

## Redis als Backend definieren ##
servers = "127.0.0.1";
backend = "redis";

Links

https://rspamd.com/doc/quickstart.html

/etc/rspamd/local.d/redis.conf

Die Datei

sudo vi /etc/rspamd/local.d/redis.conf

für Redis-Einstellungen anlegen und mit folgenden Inhalt befüllen:

servers = "127.0.0.1";

Links

https://rspamd.com/doc/configuration/redis.html

DKIM Signing

Erstellen des privaten (2020.key) Schlüssels und des öffentlichen DNS-TXT (2020.txt) Eintrages:

sudo -i
mkdir /var/lib/rspamd/dkim/
rspamadm dkim_keygen -b 2048 -s '2020' -k /var/lib/rspamd/dkim/2020.key > /var/lib/rspamd/dkim/2020.txt
chown -R _rspamd:_rspamd /var/lib/rspamd/dkim
chmod 440 /var/lib/rspamd/dkim/*
exit

Der Parameter -s ist ein Selektor, welcher in der DNS-TXT-Datei (Auschnitt aus der Datei 2020.txt: 2020._domainkey IN TXT) verwendet wird. Dieser Selektor is frei wählbar - hier wurde die Jahreszahl der Erstellung gewählt.


Diesen Schlüssel in die Datei

sudo vi /etc/rspamd/local.d/dkim_signing.conf

eintragen:

path = "/var/lib/rspamd/dkim/$selector.key";
selector = "2020";

### Enable DKIM signing for alias sender addresses
allow_username_mismatch = true;

Im Anschluss diese Konfiguration auch noch für das ARC-Modul kopieren:

sudo cp /etc/rspamd/local.d/dkim_signing.conf /etc/rspamd/local.d/arc.conf

Noch in Bearbeitung - TXT-Record in die Domäne eintragen

Links

https://rspamd.com/doc/modules/dkim_signing.html

https://rspamd.com/doc/modules/arc.html

https://www.heise.de/ct/artikel/E-Mails-signieren-mit-DKIM-221505.html?seite=all

Apache

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod rewrite
sudo systemctl restart apache2.service
cd /etc/apache2/sites-available
sudo vi rspamd1.conf
<VirtualHost *:80>
    ServerName rspamd1.kirner.or.at
    ServerPath /
    DocumentRoot /var/www
    DirectoryIndex index.html

    RewriteEngine on
    RewriteRule ^/rspamd$ /rspamd/ [R]
    ProxyPreserveHost On
    ProxyPass /rspamd http://localhost:11334/
    ProxyPassReverse /rspamd http://localhost:11334/
</VirtualHost>
<VirtualHost *:80>
    ServerName rspamd1.kirner.or.at
    DocumentRoot /var/www

    ProxyVia On
    ProxyRequests Off

    <Location "/">
       ProxyPass http://localhost:11334/
       ProxyPassReverse http://localhost:11334/
       Order allow,deny
       Allow from all
    </Location>
</VirtualHost>
sudo a2ensite rspamd1.conf
sudo systemctl reload apache2.service

Postfix

/etc/postfix/main.cf

Die Datei

sudo vi /etc/postfix/main.cf

bearbeiten und am Ende folgende Konfigurationen hinzufügen:

## Spamfilter und DKIM-Signaturen via Rspamd ##

smtpd_milters = inet:localhost:11332
non_smtpd_milters = inet:localhost:11332
milter_protocol = 6
milter_mail_macros =  i {mail_addr} {client_addr} {client_name} {auth_authen}
milter_default_action = accept

Dovecot

dovecot.conf

Die Datei

sudo vi /etc/dovecot/dovecot.conf

bearbeiten und im Abschnitt plugin (am Ende) folgende Konfigurationen hinzufügen:

Speicherort lokal

plugin {
    sieve_plugins = sieve_imapsieve sieve_extprograms

    ### Spam learning ###

    # From elsewhere to Spam folder
    imapsieve_mailbox1_name = Spam
    imapsieve_mailbox1_causes = COPY
    imapsieve_mailbox1_before = file:/var/vmail/sieve/global/report-spam.sieve

    # From Spam folder to elsewhere
    imapsieve_mailbox2_name = *
    imapsieve_mailbox2_from = Spam
    imapsieve_mailbox2_causes = COPY
    imapsieve_mailbox2_before = file:/var/vmail/sieve/global/report-ham.sieve

    sieve_pipe_bin_dir = /usr/bin
    sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment
}

Speicherort NAS

plugin {
    sieve_plugins = sieve_imapsieve sieve_extprograms

    ### Spam learning ###

    # From elsewhere to Spam folder
    imapsieve_mailbox1_name = Spam
    imapsieve_mailbox1_causes = COPY
    imapsieve_mailbox1_before = file:/mnt/synology/mail/maildir/vmail/sieve/global/report-spam.sieve

    # From Spam folder to elsewhere
    imapsieve_mailbox2_name = *
    imapsieve_mailbox2_from = Spam
    imapsieve_mailbox2_causes = COPY
    imapsieve_mailbox2_before = file:/mnt/synology/mail/maildir/vmail/sieve/global/report-ham.sieve

    sieve_pipe_bin_dir = /usr/bin
    sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.environment
}

TODO: Move to 90-sieve.conf and 90-sieve-extprograms.conf

Links

https://wiki2.dovecot.org/HowTo/AntispamWithSieve

Sieve-Filterscripts

sudo -u vmail vi /var/vmail/sieve/learn-spam.sieve
require ["vnd.dovecot.pipe", "copy", "imapsieve"];
pipe :copy "rspamc" ["learn_spam"];
sudo -u vmail vi /var/vmail/sieve/learn-ham.sieve
require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"];

if environment :matches "imap.mailbox" "*" {
    set "mailbox" "${1}";
}

if string "${mailbox}" "Trash" {
    stop;
}

pipe :copy "rspamc" ["learn_ham"];

Testen

Einfach eine Mail mit dem Inhalt

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

an den eigenen Account schicken.

Links

https://de.wikipedia.org/wiki/GTUBE

Links

https://rspamd.com/doc/quickstart.html

https://www.syn-flut.de/rspamd-das-bessere-spamassassin

https://thomas-leister.de/mailserver-debian-stretch/

https://help.united-domains.de/faq-article/was-ist-ein-dkim-eintrag


Zurück zu Spamfilter