Rspamd Einrichten: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 171: Zeile 171:
 
*Rspamd neustarten:   
 
*Rspamd neustarten:   
 
*systemctl restart rspamd   
 
*systemctl restart rspamd   
 +
= Einfache lokale RBL in Rspamd ohne DNS =
  
==Postfix mit lokaler RBL==
+
== Blacklist-Datei anlegen ==
*Postfix kann ebenfalls direkt RBLs abfragen. Füge dies zur Konfiguration hinzu: 
+
* mkdir -p /etc/rspamd/local.d/
 +
* echo "10.0.0.1" > /etc/rspamd/local.d/local_rbl.txt
 +
* echo "10.0.0.99" >> /etc/rspamd/local.d/local_rbl.txt
  
<pre>
+
== Rspamd für lokale Blacklist konfigurieren ==
postconf -e "smtpd_client_restrictions=reject_rbl_client lab-rbl.local, permit"
+
* Datei /etc/rspamd/local.d/multimap.conf erstellen und folgende Zeilen hinzufügen:
</pre>
 
  
*Postfix neu laden: 
+
  blacklist_ip {
*postfix reload 
+
    type = "ip";
 +
    map = "/etc/rspamd/local.d/local_rbl.txt";
 +
    symbol = "LOCAL_RBL_HIT";
 +
    action = "reject";
 +
    description = "Lokale RBL-Hit";
 +
  }
  
==Test mit einer geblockten IP==
+
== Rspamd neu starten ==
*Füge eine Test-IP hinzu und überprüfe, ob Rspamd/Postfix sie ablehnt: 
+
* systemctl restart rspamd
  
<pre>
+
== Testen mit einer geblockten IP ==
dig +short 10.0.0.1.lab-rbl.local @127.0.0.1
+
* rspamc -i 10.0.0.1
</pre>
+
  Falls die IP geblockt ist, erscheint **"LOCAL_RBL_HIT"** als Erkennungsregel.
  
Erwartete Antwort für blockierte IP:  
+
== Mail-Test mit gesperrter IP ==
<pre>
+
* journalctl -u rspamd | grep LOCAL_RBL_HIT  
127.0.0.2
 
</pre>
 
  
==Mail-Test mit geblockter IP==  
+
Falls eine Mail von einer gesperrten IP eingeht, wird sie blockiert.  
*Sende eine Testmail von einer geblockten IP und überprüfe die Logs: 
+
Diese Methode erlaubt eine einfache Verwaltung von Blacklists ohne DNS-RBLs.
*journalctl -u postfix | grep reject 
 
 
 
Falls gewünscht, können wir **richtige RBLs** wie Spamhaus oder Barracuda ergänzen.
 
Melde dich, falls du Anpassungen brauchst! 😃
 

Version vom 18. März 2025, 19:38 Uhr

Rspamd und ClamAV installieren

Debian/Ubuntu

  • apt install rspamd clamav-daemon clamav-freshclam redis

RHEL/CentOS

  • dnf install rspamd clamav clamav-update redis

Enablen und Startend er Dienste

  • systemctl enable rspamd --now
  • systemctl enable clamav-daemon --now
  • systemctl start redis
  • systemctl enable redis.service

Läuft alles

  • systemctl status rpamd
  • systemctl status clamav-daemon
  • systemctl status redis

Dienste und Ports von Rspamd

Rspamd Proxy

  • Der Rspamd Proxy dient als Eingangsfilter für E-Mails und leitet sie an die entsprechenden Worker weiter, um die Last zu verteilen.
  
Port: 11332/tcp (Standardport für Proxy-Dienste)  

Rspamd Worker

  • Der Rspamd Worker führt die eigentliche Spam-Analyse durch und verarbeitet eingehende Nachrichten anhand von Regeln, Statistiken und externen Diensten.
  
Port: 11333/tcp (Standardport für Worker-Dienste)  

Rspamd Controller

  • Der Rspamd Controller stellt eine API für Konfiguration, Statistiken und manuelles Training des Filters zur Verfügung.
  
Port: 11334/tcp (Standardport für den Controller)  

Passwort für den Rspamd Controller und Port nach aussen öffen

Passwort erzeugen
  • rspamadm pw
Enter passphrase: 
$2$mqbbp8yb4fz8febgpxk7rb4db9p5njwg$xior3gxjbuc76bhsq4rapq7x98cssrm9qkr49kwapgdsahmpzjny
In der Worker Datei eintragen
Port an allen Interfaces lauschen lassen
  • cat /etc/rspamd/override.d/worker-controller.inc
password = "$2$mqbbp8yb4fz8febgpxk7rb4db9p5njwg$xior3gxjbuc76bhsq4rapq7x98cssrm9qkr49kwapgdsahmpzjny";
bind_socket ="*:11334";

Restart

  • systemctl restart rspamd

Zugriff auf das Webinterface

Rspamd-1.png

Milters

  • Milters sind Mail-Filter, die über das Milter-Protokoll mit MTA-Software wie Postfix oder Sendmail kommunizieren.
  • Sie ermöglichen die Verarbeitung und Filterung von E-Mails in Echtzeit, bevor sie zugestellt werden.
  • Milter werden häufig für Spam-Filterung, Virenscans und Inhaltsüberprüfungen eingesetzt.

Einbinden in Postfix

  • 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 "Boese Mail" martha

Resultat

Rspamd-2.png

Die Logs

  • journalctl -u postfix@-.service | grep cleanup
Mar 18 19:21:22 mail.it113.int postfix/cleanup[7407]: 88BDDE0792: milter-reject: END-OF-MESSAGE from localhost[127.0.0.1]: 5.7.1 Gtube pattern; from=<root@mail.it113.int> to=<martha@mail.it113.int>
Mar 18 19:21:22 mail.it113.int postfix/cleanup[7407]: 88BDDE0792: to=<martha@mail.it113.int>, orig_to=<martha>, relay=none, delay=0.19, delays=0.19/0/0/0, dsn=5.7.1, status=bounced (Gtube pattern)
Mar 18 19:21:22 mail.it113.int postfix/cleanup[7410]: B3D24E07C2: message-id=<20250318182122.B3D24E07C2@mail.it113.int>

Clamav einbinden

  • cat /etc/rspamd/local.d/antivirus.conf
clamav {
 servers = "127.0.0.1:3310"
 #Unix Socket
 #servers = "/run/clamav/clamd.ctl"
}

Aktivierung von ClamAV in Rspamd

Rspamd muss angewiesen werden, ClamAV für Virenprüfungen zu nutzen. Dazu wird die Datei `local.d/antivirus.conf` bearbeitet:

vi /etc/rspamd/local.d/antivirus.conf

Konfiguration für ClamAV:

clamav {
  servers = "127.0.0.1:3310";
  # Oder alternativ via UNIX-Socket:
  # servers = "/run/clamav/clamd.ctl";
}

Reaktionen auf ClamAV-Ergebnisse anpassen

  • Falls ClamAV ein Makro (`CLAM_VIRUS_MACRO`) oder ein verschlüsseltes Attachment (`CLAM_VIRUS_ENCRYPTED`) erkennt, wird standardmäßig keine Ablehnung durchgeführt.
  • Scheitert ClamAV (`CLAM_VIRUS_FAIL`), verzichtet Rspamd auf den Virencheck und lässt die E-Mail durch.
  • Um dies anzupassen, kann die Datei `force_actions.conf` genutzt werden:
  • cat /etc/rspamd/local.d/force_actions.conf


rules {
VIRUS_SCANNER_FAIL_EXC {
  action = "soft reject";
  expression = "CLAM_VIRUS_FAIL";
  message = "Tempfail - internal scan engine error. (support-id: ${queueid})";
  honor_action = ["reject"];
}

VIRUS_REJECT {
  action = "reject";
  expression = "CLAM_VIRUS";
  message = "REJECT - Virus found (support-id: ${queueid})";
}

VIRUS_REJECT_MACRO {
  action = "reject";
  expression = "CLAM_VIRUS_MACRO";
  message = "REJECT - attachment with macro found (support-id: ${queueid})";
}

# Keine Ablehnung bei verschlüsselten Archiven/Attachments
VIRUS_REJECT_ENCRYPTED {
  # action = "reject";
  expression = "CLAM_VIRUS_ENCRYPTED";
  message = "REJECT - encrypted attachment found (support-id: ${queueid})";
}

Restart

  • systemctl restart rspamd

RBL-Integration in Rspamd und Postfix (Proof of Concept)

Lokale RBL aufsetzen

  • Installiere `bind9` oder `dnsmasq` auf einem internen Server, um eine lokale DNSBL zu simulieren.
  • Erstelle eine lokale Zone für die Blacklist, z. B. `lab-rbl.local`.
zone "lab-rbl.local" {
    type master;
    file "/etc/bind/db.lab-rbl.local";
};
  • Erstelle die Zonen-Datei `/etc/bind/db.lab-rbl.local`:
$TTL    86400
@       IN      SOA     ns1.lab-rbl.local. admin.lab-rbl.local. (
                        2025031801  ; Serial
                        3600        ; Refresh
                        1800        ; Retry
                        604800      ; Expire
                        86400 )     ; Minimum TTL
@       IN      NS      ns1.lab-rbl.local.
1.0.0.10 IN      A       127.0.0.2  ; Geblockte IP
  • Restart von Bind:
  • systemctl restart bind9

Rspamd mit lokaler RBL

  • Bearbeite die Datei `/etc/rspamd/local.d/dnsbl.conf`
servers = ["127.0.0.1"];  

rbl {
  local_rbl {
    rbl = "lab-rbl.local";
    returncodes = ["127.0.0.2"];
    symbol = "RBL_LOCAL";
  }
}
  • Rspamd neustarten:
  • systemctl restart rspamd

Einfache lokale RBL in Rspamd ohne DNS

Blacklist-Datei anlegen

  • mkdir -p /etc/rspamd/local.d/
  • echo "10.0.0.1" > /etc/rspamd/local.d/local_rbl.txt
  • echo "10.0.0.99" >> /etc/rspamd/local.d/local_rbl.txt

Rspamd für lokale Blacklist konfigurieren

  • Datei /etc/rspamd/local.d/multimap.conf erstellen und folgende Zeilen hinzufügen:
 blacklist_ip {
   type = "ip";
   map = "/etc/rspamd/local.d/local_rbl.txt";
   symbol = "LOCAL_RBL_HIT";
   action = "reject";
   description = "Lokale RBL-Hit";
 }

Rspamd neu starten

  • systemctl restart rspamd

Testen mit einer geblockten IP

  • rspamc -i 10.0.0.1
 Falls die IP geblockt ist, erscheint **"LOCAL_RBL_HIT"** als Erkennungsregel.

Mail-Test mit gesperrter IP

  • journalctl -u rspamd | grep LOCAL_RBL_HIT

Falls eine Mail von einer gesperrten IP eingeht, wird sie blockiert. Diese Methode erlaubt eine einfache Verwaltung von Blacklists ohne DNS-RBLs.