Rspamd Einrichten: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
 
=Rspamd und ClamAV installieren=
 
=Rspamd und ClamAV installieren=
 
==Debian/Ubuntu==
 
==Debian/Ubuntu==
* apt install rspamd clamav-daemon clamav-freshclam redis-server postfix swaks
+
  apt install rspamd clamav-daemon clamav-freshclam redis-server postfix swaks
  
 
==RHEL/CentOS==
 
==RHEL/CentOS==
* dnf install rspamd clamav clamav-update redis postfix swaks
+
  dnf install rspamd clamav clamav-update redis postfix swaks
 +
 
 +
Rspamd übernimmt die Spam-Analyse und ClamAV den Virenscan. Redis wird für Caching und Bayes-Filter benötigt und ist essenziell für den produktiven Betrieb.
  
 
=Enablen und Starten der Dienste=
 
=Enablen und Starten der Dienste=
* systemctl enable rspamd --now
+
  systemctl enable rspamd --now
* systemctl enable clamav-daemon --now
+
  systemctl enable clamav-daemon --now
* systemctl enable redis-server --now
+
  systemctl enable redis-server --now
 +
 
 +
Die Dienste werden dauerhaft aktiviert und direkt gestartet. Ohne laufende Dienste findet weder Spam- noch Virenprüfung statt.
  
 
=== Redis-Anbindung (Das Gedächtnis von Rspamd) ===
 
=== Redis-Anbindung (Das Gedächtnis von Rspamd) ===
* Rspamd nutzt Redis für Bayes, Cache und Greylisting.
+
Rspamd nutzt Redis zur Speicherung von Scan-Ergebnissen und zum Lernen von Spam. Dadurch werden wiederkehrende Inhalte schneller verarbeitet und die Erkennung verbessert sich.
* Ohne Redis ist das System funktional eingeschränkt.
+
 
 +
==== Installation und Aktivierung ====
 +
  apt install redis-server
 +
  systemctl enable --now redis-server
 +
 
 +
Redis läuft als zentraler Key-Value-Store im Hintergrund. Er ist Voraussetzung für Bayes, Greylisting und Caching.
  
 
==== Konfiguration in Rspamd ====
 
==== Konfiguration in Rspamd ====
* Datei: /etc/rspamd/local.d/redis.conf
+
Datei: /etc/rspamd/local.d/redis.conf
 +
 
 
<pre>
 
<pre>
 
servers = "127.0.0.1:6379";
 
servers = "127.0.0.1:6379";
 
</pre>
 
</pre>
 +
 +
Hier wird Rspamd mitgeteilt, wo Redis erreichbar ist. Ohne diese Angabe arbeiten mehrere Module nur eingeschränkt.
  
 
==== Prüfung der Anbindung ====
 
==== Prüfung der Anbindung ====
* rspamadm control stat
+
  rspamadm control stat
 +
 
 +
In der Ausgabe sollte Redis als „online“ erscheinen. Ist das nicht der Fall, funktioniert das Caching nicht korrekt.
  
 
==== Warum das für ClamAV wichtig ist ====
 
==== Warum das für ClamAV wichtig ist ====
* Scan-Ergebnisse werden gecached.
+
Rspamd speichert Ergebnisse von Virenscans zwischen. Dadurch werden identische Anhänge nicht mehrfach geprüft, was die CPU deutlich entlastet.
* Identische Anhänge werden nicht mehrfach gescannt.
 
  
 
=Zustand prüfen=
 
=Zustand prüfen=
* systemctl status rspamd
+
  systemctl status rspamd
* systemctl status clamav-daemon
+
  systemctl status clamav-daemon
* systemctl status redis-server
+
  systemctl status redis-server
 +
 
 +
Hier wird überprüft, ob alle Dienste laufen. Fehler in diesem Schritt führen später zu schwer nachvollziehbaren Problemen.
  
 
=Rspamd Dienste und Ports=
 
=Rspamd Dienste und Ports=
==Rspamd Milter==
+
==Rspamd Proxy==
* Schnittstelle zu Postfix
+
Der Proxy nimmt Mails entgegen und verteilt sie intern an Worker. Er ist die zentrale Schnittstelle für eingehende Verbindungen.
 
<pre>
 
<pre>
 
Port: 11332/tcp
 
Port: 11332/tcp
Zeile 41: Zeile 56:
  
 
==Rspamd Worker==
 
==Rspamd Worker==
 +
Der Worker führt die eigentliche Analyse durch. Hier werden Regeln, Bayes und externe Dienste verarbeitet.
 
<pre>
 
<pre>
 
Port: 11333/tcp
 
Port: 11333/tcp
Zeile 46: Zeile 62:
  
 
==Rspamd Controller==
 
==Rspamd Controller==
 +
Der Controller stellt das Webinterface und die API bereit. Darüber erfolgt Administration und Monitoring.
 
<pre>
 
<pre>
 
Port: 11334/tcp
 
Port: 11334/tcp
 
</pre>
 
</pre>
  
=Passwort für den Rspamd Controller=
+
=Passwort für den Rspamd Controller und Port nach außen öffnen=
* rspamadm pw
+
  rspamadm pw
 +
 
 +
  cat /etc/rspamd/override.d/worker-controller.inc
  
* Datei: /etc/rspamd/override.d/worker-controller.inc
 
 
<pre>
 
<pre>
 
password = "HASH";
 
password = "HASH";
Zeile 59: Zeile 77:
 
</pre>
 
</pre>
  
=Postfix Anbindung (Milter)=
+
Das Passwort wird als Hash gespeichert und schützt das Webinterface. Durch „*:11334“ ist der Zugriff auch von außen möglich.
* postconf -e "smtpd_milters=inet:127.0.0.1:11332"
+
 
* postconf -e "non_smtpd_milters=inet:127.0.0.1:11332"
+
=Restart=
* postfix reload
+
  systemctl restart rspamd
 +
 
 +
Nach Konfigurationsänderungen muss Rspamd neu gestartet werden. Andernfalls werden Änderungen nicht übernommen.
 +
 
 +
=Zugriff auf das Webinterface=
 +
http://IP-Mailserver:11334
 +
 
 +
Das Webinterface zeigt Statistiken, Logs und ermöglicht manuelles Training. Es ist das wichtigste Werkzeug für Betrieb und Analyse.
 +
 
 +
=Milters=
 +
Milters sind Filter, die direkt in den Mailfluss von Postfix eingreifen. Sie ermöglichen Entscheidungen in Echtzeit während der SMTP-Kommunikation.
 +
 
 +
=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
 +
 
 +
Rspamd wird hier als Milter eingebunden. Dadurch wird jede eingehende Mail automatisch geprüft.
 +
 
 +
=Gtube Testmail=
 +
  swaks --to root@localhost --server 127.0.0.1 --data "Subject: GTUBE XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X"
 +
 
 +
GTUBE ist ein standardisierter Spam-Test. Wird die Mail erkannt, funktioniert die Spam-Erkennung korrekt.
 +
 
 +
=Die Logs=
 +
  journalctl -u postfix | grep cleanup
  
=Spam Test (GTUBE)=
+
Hier sieht man, ob Postfix Mails ablehnt oder annimmt. Besonders wichtig ist die Rückmeldung vom Milter (Rspamd).
* swaks --to root@localhost --server 127.0.0.1 --data "Subject: GTUBE XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X"
 
  
=ClamAV Integration (UNIX Socket)=
+
=ClamAV-Integration in Rspamd (UNIX Socket)=
* Kommunikation erfolgt lokal über Socket (kein TCP notwendig)
+
Rspamd kommuniziert lokal über einen UNIX Socket mit ClamAV. Dies ist stabiler und benötigt keine offenen Netzwerkports.
  
 
==ClamAV Konfiguration==
 
==ClamAV Konfiguration==
* Datei: /etc/clamav/clamd.conf
+
Datei: /etc/clamav/clamd.conf
 +
 
 
<pre>
 
<pre>
 
LocalSocket /run/clamav/clamd.ctl
 
LocalSocket /run/clamav/clamd.ctl
Zeile 77: Zeile 120:
 
</pre>
 
</pre>
  
* Wichtig:
+
Der Socket stellt die Verbindung zwischen Rspamd und ClamAV her. TCP wird bewusst nicht verwendet.
* TCPSocket und TCPAddr müssen deaktiviert sein
 
  
 
==Rspamd Konfiguration==
 
==Rspamd Konfiguration==
* Datei: /etc/rspamd/override.d/antivirus.conf
+
Datei: /etc/rspamd/override.d/antivirus.conf
 +
 
 
<pre>
 
<pre>
 
enabled = true;
 
enabled = true;
Zeile 97: Zeile 140:
 
</pre>
 
</pre>
  
=Virus Test (EICAR)=
+
Rspamd nutzt hier den Socket als Backend für Virenscans. Wird ein Virus erkannt, wird die Mail sofort abgelehnt.
* Datei erstellen:
 
<pre>
 
From: test@test.local
 
To: root@localhost
 
Subject: EICAR
 
MIME-Version: 1.0
 
Content-Type: multipart/mixed; boundary="abc"
 
 
 
--abc
 
Content-Type: text/plain
 
 
 
Test
 
 
 
--abc
 
Content-Type: application/octet-stream
 
Content-Disposition: attachment; filename="eicar.com"
 
 
 
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
 
 
 
--abc--
 
</pre>
 
 
 
* Test:
 
* rspamc /tmp/test.eml
 
  
=Rspamd Schwellenwerte=
+
=Rspamd Schwellenwerte (Actions)=
 
{| class="wikitable"
 
{| class="wikitable"
! Aktion !! Score !! Bedeutung
+
! Aktion !! Empfohlener Score !! Bedeutung
 
|-
 
|-
 
| reject
 
| reject
 
| 15.0
 
| 15.0
| Mail wird abgelehnt
+
| Die Mail wird hart abgelehnt
 
|-
 
|-
 
| add_header
 
| add_header
 
| 6.0
 
| 6.0
| Spam-Header wird gesetzt
+
| Mail wird zugestellt mit Spam-Header
 
|-
 
|-
 
| greylist
 
| greylist
Zeile 141: Zeile 160:
 
| no action
 
| no action
 
| < 4.0
 
| < 4.0
| Mail ist sauber
+
| Mail gilt als sauber
 
|}
 
|}
  
=Fehlerdiagnose=
+
Rspamd bewertet jede Mail anhand von Punkten. Die Schwellenwerte bestimmen, wie mit der Mail verfahren wird.
==Logs==
+
 
* /var/log/rspamd/rspamd.log
+
=Kurzer Check der Funktionsweise=
* /var/log/clamav/clamav.log
+
  rspamc < /pfad/zu/einer/test.eml
 +
 
 +
Mit rspamc kann eine Mail lokal analysiert werden. Das Ergebnis zeigt alle Regeln und Bewertungen im Detail.
 +
 
 +
=Fehlerdiagnose und Administration=
 +
Diese Zusammenfassung dient als Spickzettel für die tägliche Administration und Fehlerbehebung.
 +
 
 +
=== Protokolldateien überwachen ===
 +
  tail -f /var/log/rspamd/rspamd.log | grep -E "antivirus|clamav"
 +
 
 +
Hier kann man live sehen, ob ClamAV angesprochen wird. Das ist der wichtigste Debug-Mechanismus.
 +
 
 +
=== Kommunikation prüfen ===
 +
  redis-cli flushall
 +
  systemctl restart rspamd
 +
 
 +
Redis wird geleert, um Cache-Effekte auszuschließen. So sieht man echte Scan-Ergebnisse.
  
==Live Analyse==
+
=== UNIX Socket Debug ===
* tail -f /var/log/rspamd/rspamd.log | grep -E "clamav|virus"
+
  apt install strace
 +
  strace -p $(pidof clamd) -e trace=network
  
==Kommunikation prüfen==
+
Mit strace kann man beobachten, ob ClamAV angesprochen wird. Das ist hilfreich bei Kommunikationsproblemen.
* redis-cli flushall
 
* systemctl restart rspamd
 
  
==UNIX Socket Debug==
+
=== TCP Debug (optional) ===
* apt install strace
+
  apt install tcpdump
* strace -p $(pidof clamd) -e trace=network
+
  tcpdump -ni lo port 3310
  
==TCP Debug (optional)==
+
Nur relevant, wenn TCP verwendet wird. Bei UNIX-Sockets ist dieser Schritt nicht notwendig.
* apt install tcpdump
 
* tcpdump -ni lo port 3310
 

Version vom 22. März 2026, 09:13 Uhr

Rspamd und ClamAV installieren

Debian/Ubuntu

 apt install rspamd clamav-daemon clamav-freshclam redis-server postfix swaks

RHEL/CentOS

 dnf install rspamd clamav clamav-update redis postfix swaks

Rspamd übernimmt die Spam-Analyse und ClamAV den Virenscan. Redis wird für Caching und Bayes-Filter benötigt und ist essenziell für den produktiven Betrieb.

Enablen und Starten der Dienste

 systemctl enable rspamd --now
 systemctl enable clamav-daemon --now
 systemctl enable redis-server --now

Die Dienste werden dauerhaft aktiviert und direkt gestartet. Ohne laufende Dienste findet weder Spam- noch Virenprüfung statt.

Redis-Anbindung (Das Gedächtnis von Rspamd)

Rspamd nutzt Redis zur Speicherung von Scan-Ergebnissen und zum Lernen von Spam. Dadurch werden wiederkehrende Inhalte schneller verarbeitet und die Erkennung verbessert sich.

Installation und Aktivierung

 apt install redis-server
 systemctl enable --now redis-server

Redis läuft als zentraler Key-Value-Store im Hintergrund. Er ist Voraussetzung für Bayes, Greylisting und Caching.

Konfiguration in Rspamd

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

servers = "127.0.0.1:6379";

Hier wird Rspamd mitgeteilt, wo Redis erreichbar ist. Ohne diese Angabe arbeiten mehrere Module nur eingeschränkt.

Prüfung der Anbindung

 rspamadm control stat

In der Ausgabe sollte Redis als „online“ erscheinen. Ist das nicht der Fall, funktioniert das Caching nicht korrekt.

Warum das für ClamAV wichtig ist

Rspamd speichert Ergebnisse von Virenscans zwischen. Dadurch werden identische Anhänge nicht mehrfach geprüft, was die CPU deutlich entlastet.

Zustand prüfen

 systemctl status rspamd
 systemctl status clamav-daemon
 systemctl status redis-server

Hier wird überprüft, ob alle Dienste laufen. Fehler in diesem Schritt führen später zu schwer nachvollziehbaren Problemen.

Rspamd Dienste und Ports

Rspamd Proxy

Der Proxy nimmt Mails entgegen und verteilt sie intern an Worker. Er ist die zentrale Schnittstelle für eingehende Verbindungen.

Port: 11332/tcp

Rspamd Worker

Der Worker führt die eigentliche Analyse durch. Hier werden Regeln, Bayes und externe Dienste verarbeitet.

Port: 11333/tcp

Rspamd Controller

Der Controller stellt das Webinterface und die API bereit. Darüber erfolgt Administration und Monitoring.

Port: 11334/tcp

Passwort für den Rspamd Controller und Port nach außen öffnen

 rspamadm pw
 cat /etc/rspamd/override.d/worker-controller.inc
password = "HASH";
bind_socket ="*:11334";

Das Passwort wird als Hash gespeichert und schützt das Webinterface. Durch „*:11334“ ist der Zugriff auch von außen möglich.

Restart

 systemctl restart rspamd

Nach Konfigurationsänderungen muss Rspamd neu gestartet werden. Andernfalls werden Änderungen nicht übernommen.

Zugriff auf das Webinterface

http://IP-Mailserver:11334

Das Webinterface zeigt Statistiken, Logs und ermöglicht manuelles Training. Es ist das wichtigste Werkzeug für Betrieb und Analyse.

Milters

Milters sind Filter, die direkt in den Mailfluss von Postfix eingreifen. Sie ermöglichen Entscheidungen in Echtzeit während der SMTP-Kommunikation.

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

Rspamd wird hier als Milter eingebunden. Dadurch wird jede eingehende Mail automatisch geprüft.

Gtube Testmail

 swaks --to root@localhost --server 127.0.0.1 --data "Subject: GTUBE XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X"

GTUBE ist ein standardisierter Spam-Test. Wird die Mail erkannt, funktioniert die Spam-Erkennung korrekt.

Die Logs

 journalctl -u postfix | grep cleanup

Hier sieht man, ob Postfix Mails ablehnt oder annimmt. Besonders wichtig ist die Rückmeldung vom Milter (Rspamd).

ClamAV-Integration in Rspamd (UNIX Socket)

Rspamd kommuniziert lokal über einen UNIX Socket mit ClamAV. Dies ist stabiler und benötigt keine offenen Netzwerkports.

ClamAV Konfiguration

Datei: /etc/clamav/clamd.conf

LocalSocket /run/clamav/clamd.ctl
LocalSocketMode 666

Der Socket stellt die Verbindung zwischen Rspamd und ClamAV her. TCP wird bewusst nicht verwendet.

Rspamd Konfiguration

Datei: /etc/rspamd/override.d/antivirus.conf

enabled = true;
clamav {
    type = "clamav";
    symbol = "CLAM_VIRUS";
    servers = "/run/clamav/clamd.ctl";
    scan_text_mime = true;
    scan_mime_parts = true;
    min_size = 0;
    scan_unauthenticated = true;
    stream = true;
    action = "reject";
}

Rspamd nutzt hier den Socket als Backend für Virenscans. Wird ein Virus erkannt, wird die Mail sofort abgelehnt.

Rspamd Schwellenwerte (Actions)

Aktion Empfohlener Score Bedeutung
reject 15.0 Die Mail wird hart abgelehnt
add_header 6.0 Mail wird zugestellt mit Spam-Header
greylist 4.0 temporäre Ablehnung
no action < 4.0 Mail gilt als sauber

Rspamd bewertet jede Mail anhand von Punkten. Die Schwellenwerte bestimmen, wie mit der Mail verfahren wird.

Kurzer Check der Funktionsweise

 rspamc < /pfad/zu/einer/test.eml

Mit rspamc kann eine Mail lokal analysiert werden. Das Ergebnis zeigt alle Regeln und Bewertungen im Detail.

Fehlerdiagnose und Administration

Diese Zusammenfassung dient als Spickzettel für die tägliche Administration und Fehlerbehebung.

Protokolldateien überwachen

 tail -f /var/log/rspamd/rspamd.log | grep -E "antivirus|clamav"

Hier kann man live sehen, ob ClamAV angesprochen wird. Das ist der wichtigste Debug-Mechanismus.

Kommunikation prüfen

 redis-cli flushall
 systemctl restart rspamd

Redis wird geleert, um Cache-Effekte auszuschließen. So sieht man echte Scan-Ergebnisse.

UNIX Socket Debug

 apt install strace
 strace -p $(pidof clamd) -e trace=network

Mit strace kann man beobachten, ob ClamAV angesprochen wird. Das ist hilfreich bei Kommunikationsproblemen.

TCP Debug (optional)

 apt install tcpdump
 tcpdump -ni lo port 3310

Nur relevant, wenn TCP verwendet wird. Bei UNIX-Sockets ist dieser Schritt nicht notwendig.