Rspamd Keyword Filter

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Installation von Rspamd auf mail.echt.jetzt.de

  • Voraussetzung: Postfix, Dovecot und Roundcube laufen bereits.

Pakete installieren (Debian/Ubuntu)

  • apt update
  • apt install rspamd redis-server dovecot-sieve

Dienste aktivieren

  • systemctl enable --now redis-server
  • systemctl enable --now rspamd

Überprüfung

  • systemctl status redis-server
  • systemctl status rspamd

Passwort für den Webcontroller erzeugen

  • rspamadm pw
Beispielausgabe
$2$irgendwas$s0mehash

Controller-Konfiguration anlegen

  • vi /etc/rspamd/override.d/worker-controller.inc
password = "$2$DEIN_HASH_HIER";
bind_socket = "*:11334";

Rspamd neu starten

  • systemctl restart rspamd

Zugriff auf das Webinterface

Rspamd in Postfix einbinden

  • postconf -e "smtpd_milters=inet:127.0.0.1:11332"
  • postconf -e "non_smtpd_milters=inet:127.0.0.1:11332"
  • postfix reload

GTUBE Testmail

  • echo 'XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X' | mail -s "GTUBE" deinuser@echt.jetzt.de

Logs ansehen

  • journalctl -u postfix@- -f

Lokale RBL (Proof of Concept)

Konfiguration
  • vi /etc/rspamd/local.d/multimap.conf
blacklist_ip {
    type = "ip";
    map = "/etc/rspamd/local.d/local_rbl.txt";
    symbol = "LOCAL_RBL_HIT";
    action = "reject";
    description = "Lokale RBL-Hit";
}
Blacklist anlegen
  • echo 10.88.113.21 > /etc/rspamd/local.d/local_rbl.txt
Rspamd neu starten
  • systemctl restart rspamd
Negativer Test
  • echo hallo | rspamc -i 10.88.113.21
Positiver Test
  • echo hallo | rspamc -i 10.88.113.22

Status

  • systemctl restart rspamd

Bayes Training (Lernen aus dem Spam-Ordner)

Voraussetzung
Dovecot IMAP ist installiert und aktiv

IMAPSieve aktivieren

  • vi /etc/dovecot/conf.d/90-imapsieve.conf
plugin {
  imapsieve = yes
  sieve_plugins = sieve_imapsieve sieve_extprograms

  imapsieve_mailbox1_name = Junk
  imapsieve_mailbox1_causes = COPY APPEND
  imapsieve_mailbox1_before = file:/var/lib/dovecot/sieve/report-spam.sieve

  imapsieve_mailbox2_name = *
  imapsieve_mailbox2_from = Junk
  imapsieve_mailbox2_causes = COPY APPEND
  imapsieve_mailbox2_before = file:/var/lib/dovecot/sieve/report-ham.sieve
}

Sieve Skripte anlegen

  • mkdir -p /var/lib/dovecot/sieve
Spam lernen
  • vi /var/lib/dovecot/sieve/report-spam.sieve
require ["vnd.dovecot.pipe", "copy", "imapsieve"];
pipe "rspamd-learn-spam";

Ham lernen
  • vi /var/lib/dovecot/sieve/report-ham.sieve
require ["vnd.dovecot.pipe", "copy", "imapsieve"];
pipe "rspamd-learn-ham";

Ausführbare Lernskripte anlegen

  • vi /usr/local/bin/rspamd-learn-spam
#!/bin/sh
exec /usr/bin/rspamc learn_spam
  • vi /usr/local/bin/rspamd-learn-ham
#!/bin/sh
exec /usr/bin/rspamc learn_ham
  • chmod +x /usr/local/bin/rspamd-learn-*

Dovecot neu starten

  • systemctl restart dovecot

Test: Hat Rspamd gelernt?

  • rspamc stat
Hier sollten "learned spam" und "learned ham" angezeigt werden.


Rspamd Bayes Training (Lernen aus dem Spam-Ordner) Konfiguration

Bayes-Modul aktivieren und Redis als Backend nutzen

  • vi /etc/rspamd/local.d/statistic.conf
statistic {
    # HIER AUF REDIS UMSTELLEN
    backend = "redis";
    
    # Optionen für das Lernen
    autolearn = true;
    min_tokens = 5;
    min_words = 5;
    
    # Optional: Ungelernte Tokens nach 90 Tagen verwerfen
    expire = 90d;
    
    # Lernbedingung lockern (für den Start ok)
    learn_condition = 'return true';
    
    # Die 'statfile' Blöcke sind nicht notwendig, wenn 
    # nur ein Bayes-Backend (Redis) verwendet wird.
}

Redis-Verbindung definieren

  • vi /etc/rspamd/local.d/redis.conf
redis {
    servers = "127.0.0.1:6379";
}

3. Rspamd neu starten, um alle Konfigurationen zu übernehmen
  • systemctl restart rspamd

Dovecot IMAPSieve aktivieren

  • vi /etc/dovecot/conf.d/90-imapsieve.conf
plugin {
  imapsieve = yes
  sieve_plugins = sieve_imapsieve sieve_extprograms

  imapsieve_mailbox1_name = Junk
  imapsieve_mailbox1_causes = COPY APPEND
  imapsieve_mailbox1_before = file:/var/lib/dovecot/sieve/report-spam.sieve

  imapsieve_mailbox2_name = *
  imapsieve_mailbox2_from = Junk
  imapsieve_mailbox2_causes = COPY APPEND
  imapsieve_mailbox2_before = file:/var/lib/dovecot/sieve/report-ham.sieve
}

(Optional) Prüfen, ob imapsieve in den Mail-Plugins enthalten ist

  • vi /etc/dovecot/conf.d/20-imap.conf
mail_plugins = $mail_plugins imap_sieve

Sieve Skripte anlegen

  • mkdir -p /var/lib/dovecot/sieve
Spam lernen
  • vi /var/lib/dovecot/sieve/report-spam.sieve
require ["vnd.dovecot.pipe", "copy", "imapsieve"];
pipe "rspamd-learn-spam";
Ham lernen
  • vi /var/lib/dovecot/sieve/report-ham.sieve
require ["vnd.dovecot.pipe", "copy", "imapsieve"];
pipe "rspamd-learn-ham";

Ausführbare Lernskripte anlegen

  • vi /usr/local/bin/rspamd-learn-spam
  1. !/bin/sh

exec /usr/bin/rspamc learn_spam

  • vi /usr/local/bin/rspamd-learn-ham
  1. !/bin/sh

exec /usr/bin/rspamc learn_ham

  • chmod +x /usr/local/bin/rspamd-learn-*

Dovecot neu starten

  • systemctl restart dovecot

Test: Hat Rspamd gelernt?

  • rspamc stat
Hier sollten "learned spam" und "learned ham" angezeigt werden.