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
+
* apt install rspamd clamav-daemon clamav-freshclam redis-server postfix swaks
  
−
==RHEL/CentOS==
+
==RHEL/CentOS==
−
dnf install rspamd clamav clamav-update redis
+
* dnf install rspamd clamav clamav-update redis postfix swaks
−
=Enablen und Startend er Dienste=
+
 
−
systemctl enable rspamd --now
+
=Enablen und Starten der Dienste=
−
systemctl enable clamav-daemon --now
+
* systemctl enable rspamd --now
 +
* systemctl enable clamav-daemon --now
 +
* systemctl enable redis-server --now
  
 
=== Redis-Anbindung (Das Gedächtnis von Rspamd) ===
 
=== Redis-Anbindung (Das Gedächtnis von Rspamd) ===
−
 
+
* Rspamd nutzt Redis für Bayes, Cache und Greylisting.
−
Damit Rspamd Scanergebnisse zwischenspeichern und statistische Analysen (Bayes) durchführen kann, ist eine Datenbank-Anbindung zwingend erforderlich. Ohne Redis arbeiten viele Module (wie Antivirus oder Greylisting) nur eingeschränkt oder gar nicht.
+
* Ohne Redis ist das System funktional eingeschränkt.
−
 
 
−
==== Installation und Aktivierung ====
 
−
 
 
−
Zuerst muss der Redis-Server auf dem System installiert und gestartet sein.
 
−
 
 
−
  apt install redis-server
 
−
  systemctl enable --now redis-server
 
  
 
==== Konfiguration in Rspamd ====
 
==== Konfiguration in Rspamd ====
−
 
+
* Datei: /etc/rspamd/local.d/redis.conf
−
Rspamd benötigt einen zentralen Ort, an dem die Server-Adresse von Redis definiert ist. Dies geschieht üblicherweise in einer lokalen Konfigurationsdatei.
 
−
 
 
−
Datei: /etc/rspamd/local.d/redis.conf
 
−
 
 
 
<pre>
 
<pre>
−
# Definition des lokalen Redis-Servers
 
 
servers = "127.0.0.1:6379";
 
servers = "127.0.0.1:6379";
 
</pre>
 
</pre>
−
 
−
 
  
 
==== Prüfung der Anbindung ====
 
==== Prüfung der Anbindung ====
−
 
+
* rspamadm control stat
−
Ob Rspamd erfolgreich mit Redis kommuniziert, lässt sich über das Admin-Tool prüfen:
 
−
 
 
−
  rspamadm control stat
 
−
 
 
−
In der Ausgabe sollte unter "Nodes" der Status des Redis-Servers als "online" oder "active" erscheinen.
 
  
 
==== Warum das für ClamAV wichtig ist ====
 
==== Warum das für ClamAV wichtig ist ====
 +
* Scan-Ergebnisse werden gecached.
 +
* Identische Anhänge werden nicht mehrfach gescannt.
  
−
Virenscanner-Ergebnisse sind CPU-intensiv. Rspamd speichert das Ergebnis eines Scans (z.B. "Diese Datei mit Hash XY ist ein Virus") für eine gewisse Zeit in Redis. Wenn dieselbe Mail erneut reinkommt, muss ClamAV nicht noch einmal rechnen – Rspamd holt die Antwort direkt aus dem Redis-Cache.
+
=Zustand prüfen=
 +
* systemctl status rspamd
 +
* systemctl status clamav-daemon
 +
* systemctl status redis-server
  
−
systemctl start redis-server
+
=Rspamd Dienste und Ports=
−
systemctl enable  redis-server.service
+
==Rspamd Milter==
−
 
+
* Schnittstelle zu Postfix
−
=Läuft alles=
+
<pre>
−
systemctl status  rspamd
+
Port: 11332/tcp
−
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. 
 
−
<pre>
 
−
Port: 11332/tcp (Standardport für Proxy-Dienste) 
 
−
</pre> 
 
−
==Rspamd Worker== 
 
−
*Der Rspamd Worker führt die eigentliche Spam-Analyse durch und verarbeitet eingehende Nachrichten anhand von Regeln, Statistiken und externen Diensten. 
 
−
<pre> 
 
−
Port: 11333/tcp (Standardport für Worker-Dienste) 
 
−
</pre> 
 
−
==Rspamd Controller== 
 
−
*Der Rspamd Controller stellt eine API für Konfiguration, Statistiken und manuelles Training des Filters zur Verfügung. 
 
−
<pre> 
 
−
Port: 11334/tcp (Standardport für den Controller) 
 
 
</pre>
 
</pre>
−
=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=
 
−
*http://IP-Mailserver:11334
 
−
[[Datei: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=
 
−
[[Datei:Rspamd-2.png]]
 
−
=Die Logs=
 
−
journalctl  -u postfix | 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>
 
−
 
−
=Restart=
 
−
*systemctl restart rspamd
 
−
=RBL-Integration in Rspamd und Postfix (Proof of Concept)= 
 
−
==Rspamd mit lokaler RBL== 
 
−
===Configuration===
 
−
 
−
vi /etc/rspamd/local.d/multimap.conf
 
  
 +
==Rspamd Worker==
 
<pre>
 
<pre>
−
blacklist_ip {
+
Port: 11333/tcp
−
    type = "ip";
 
−
    map = "/etc/rspamd/local.d/local_rbl.txt";
 
−
    symbol = "LOCAL_RBL_HIT";
 
−
    action = "reject";
 
−
    description = "Lokale RBL-Hit";
 
−
}
 
 
</pre>
 
</pre>
−
===Blackliste===
 
−
echo 10.88.113.21 > /etc/rspamd/local.d/local_rbl.txt
 
−
===Rspamd neustarten=== 
 
−
systemctl restart rspamd
 
−
===Tests===
 
−
;postiv
 
−
echo hallo welt | rspamc -i 10.88.113.22
 
  
 +
==Rspamd Controller==
 
<pre>
 
<pre>
−
Results for file: stdin (0 seconds)
+
Port: 11334/tcp
−
[Metric: default]
 
−
Action: add header
 
−
Spam: true
 
−
Score: 7.90 / 15.00
 
−
Symbol: ARC_NA (0.00)
 
−
Symbol: MIME_GOOD (-0.10)[text/plain]
 
−
Symbol: MIME_TRACE (0.00)[0:+]
 
−
Symbol: MISSING_DATE (1.00)
 
−
Symbol: MISSING_FROM (2.00)
 
−
Symbol: MISSING_MID (2.50)
 
−
Symbol: MISSING_SUBJECT (0.50)
 
−
Symbol: MISSING_TO (2.00)
 
−
Symbol: RCVD_COUNT_ZERO (0.00)[0]
 
−
Message-ID: undef
 
−
</pre>
 
−
;negativ
 
−
*echo hallo welt | rspamc -i 10.88.113.21
 
−
<pre>
 
−
Results for file: stdin (0 seconds)
 
−
[Metric: default]
 
−
Action: reject
 
−
Spam: true
 
−
Score: -0.10 / 15.00
 
−
Symbol: ARC_NA (0.00)
 
−
Symbol: LOCAL_RBL_HIT (0.00)[10.88.113.21]
 
−
Symbol: MIME_GOOD (-0.10)[text/plain]
 
−
Symbol: MIME_TRACE (0.00)[0:+]
 
−
Message-ID: undef
 
−
Message - smtp_message: Matched map: LOCAL_RBL_HIT
 
 
</pre>
 
</pre>
  
−
== Rspamd Schwellenwerte (Actions) ==
+
=Passwort für den Rspamd Controller=
 +
* rspamadm pw
  
−
Die Bewertung erfolgt über Scores. Diese werden in der Datei <code>/etc/rspamd/local.d/actions.conf</code> definiert.
+
* Datei: /etc/rspamd/override.d/worker-controller.inc
−
 
 
−
{| class="wikitable"
 
−
! Aktion !! Empfohlener Score !! Bedeutung
 
−
|-
 
−
| '''reject'''
 
−
| 15.0
 
−
| Die Mail wird hart abgelehnt (SMTP 5xx).
 
−
|-
 
−
| '''add_header'''
 
−
| 6.0
 
−
| Die Mail wird zugestellt, erhält aber einen Header (z.B. X-Spam: Yes).
 
−
|-
 
−
| '''greylist'''
 
−
| 4.0
 
−
| Der Absender wird temporär abgewiesen (Soft-Fail). Ein echter Mailserver versucht es erneut.
 
−
|-
 
−
| '''no action'''
 
−
| < 4.0
 
−
| Die Mail gilt als sauber (Ham).
 
−
|}
 
−
 
 
−
=== Kurzer Check der Funktionsweise ===
 
−
Um zu sehen, welche Symbole Rspamd einer Mail vergibt, ohne eine echte Mail zu senden:
 
−
<pre>rspamc < /pfad/zu/einer/test.eml</pre>
 
−
Das Tool '''rspamc''' gibt den kompletten Scan-Report direkt auf der Konsole aus.
 
−
 
 
−
= ClamAV-Integration in Rspamd (TCP-Modus) =
 
−
 
 
−
Diese Dokumentation beschreibt die Konfiguration von ClamAV ueber Systemd-Sockets und die Anbindung an Rspamd unter Debian/Ubuntu.
 
−
 
 
−
== Systemd-Infrastruktur ==
 
−
 
 
−
Um ClamAV via TCP erreichbar zu machen, muessen die Socket-Unit und vorbereitende Dienst-Einstellungen angepasst werden.
 
−
 
 
−
=== /etc/systemd/system/clamav-daemon.socket ===
 
−
Die Socket-Unit wird so konfiguriert, dass sie auf Port 3310 lauscht.
 
 
<pre>
 
<pre>
−
[Unit]
+
password = "HASH";
−
Description=Socket for Clam AntiVirus userspace daemon
+
bind_socket ="*:11334";
−
Documentation=man:clamd(8) man:clamd.conf(5) https://docs.clamav.net/
 
−
# Datenbank-Check vor Socket-Aktivierung
 
−
ConditionPathExistsGlob=/var/lib/clamav/main.{c[vl]d,inc}
 
−
ConditionPathExistsGlob=/var/lib/clamav/daily.{c[vl]d,inc}
 
−
 
 
−
[Socket]
 
−
# Definition des TCP-Sockets fuer Rspamd Kommunikation
 
−
ListenStream=127.0.0.1:3310
 
−
SocketUser=clamav
 
−
SocketGroup=clamav
 
−
RemoveOnStop=True
 
−
 
 
−
[Install]
 
−
WantedBy=sockets.target
 
 
</pre>
 
</pre>
  
−
=== Aktivierung der Systemd-Anpassungen ===
+
=Postfix Anbindung (Milter)=
−
<pre>
+
* postconf -e "smtpd_milters=inet:127.0.0.1:11332"
−
systemctl daemon-reload
+
* postconf -e "non_smtpd_milters=inet:127.0.0.1:11332"
−
systemctl restart clamav-daemon.socket
+
* postfix reload
−
systemctl restart clamav-daemon.service
 
−
# Verifizierung des Sockets
 
−
ss -ltpn | grep 3310
 
−
</pre>
 
  
−
== ClamAV Konfiguration ==
+
=Spam Test (GTUBE)=
 +
* swaks --to root@localhost --server 127.0.0.1 --data "Subject: GTUBE XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X"
  
−
Die Hauptkonfiguration von ClamAV muss auf den TCP-Modus abgestimmt sein und ausreichende Puffer fuer den Datenstream bieten.
+
=ClamAV Integration (UNIX Socket)=
 +
* Kommunikation erfolgt lokal über Socket (kein TCP notwendig)
  
−
=== /etc/clamav/clamd.conf ===
+
==ClamAV Konfiguration==
 +
* Datei: /etc/clamav/clamd.conf
 
<pre>
 
<pre>
−
# Manuell angepasst fuer Rspamd nINSTREAM
+
LocalSocket /run/clamav/clamd.ctl
−
TCPSocket 3310
+
LocalSocketMode 666
−
TCPAddr 127.0.0.1
 
−
User clamav
 
−
ScanMail true
 
−
ScanArchive true
 
−
ArchiveBlockEncrypted false
 
−
MaxDirectoryRecursion 15
 
−
FollowDirectorySymlinks false
 
−
FollowFileSymlinks true
 
−
ReadTimeout 180
 
−
MaxThreads 12
 
−
MaxConnectionQueueLength 15
 
−
LogSyslog false
 
−
LogRotate true
 
−
LogFacility LOG_LOCAL6
 
−
LogClean false
 
−
LogVerbose false
 
−
DatabaseDirectory /var/lib/clamav
 
−
OfficialDatabaseOnly false
 
−
SelfCheck 3600
 
−
Foreground false
 
−
Debug false
 
−
ScanPE true
 
−
MaxEmbeddedPE 10M
 
−
ScanOLE2 true
 
−
ScanPDF true
 
−
ScanHTML true
 
−
MaxHTMLNormalize 10M
 
−
MaxHTMLNoTags 2M
 
−
MaxScriptNormalize 5M
 
−
MaxZipTypeRcg 1M
 
−
ScanSWF true
 
−
ExitOnOOM false
 
−
LeaveTemporaryFiles false
 
−
AlgorithmicDetection true
 
−
ScanELF true
 
−
IdleTimeout 30
 
−
CrossFilesystems true
 
−
PhishingSignatures true
 
−
PhishingScanURLs true
 
−
ExtendedDetectionInfo true
 
−
AllowAllMatchScan true
 
−
ForceToDisk false
 
−
DisableCertCheck false
 
−
DisableCache false
 
−
MaxScanTime 120000
 
−
MaxScanSize 100M
 
−
MaxFileSize 25M
 
−
MaxRecursion 16
 
−
MaxFiles 10000
 
−
# Wichtig fuer Rspamd Integration zur Vermeidung von "Size limit exceeded"
 
−
StreamMaxLength 100M
 
−
LogFile /var/log/clamav/clamav.log
 
−
LogTime true
 
−
Bytecode true
 
−
BytecodeSecurity TrustSigned
 
−
BytecodeTimeout 60000
 
 
</pre>
 
</pre>
  
−
== Rspamd Konfiguration ==
+
* Wichtig:
 +
* TCPSocket und TCPAddr müssen deaktiviert sein
  
−
Rspamd greift als Client auf den ClamAV-Socket zu. Die Konfiguration erfolgt ueber Overrides und lokale Includes.
+
==Rspamd Konfiguration==
−
 
+
* Datei: /etc/rspamd/override.d/antivirus.conf
−
=== /etc/rspamd/override.d/antivirus.conf ===
 
−
Erzwingt den Scan auch fuer unauthentifizierte lokale Absender und winzige Dateien.
 
 
<pre>
 
<pre>
 
enabled = true;
 
enabled = true;
Zeile 308: Zeile 87:
 
     type = "clamav";
 
     type = "clamav";
 
     symbol = "CLAM_VIRUS";
 
     symbol = "CLAM_VIRUS";
−
     servers = "127.0.0.1:3310";
+
     servers = "/run/clamav/clamd.ctl";
−
    # Erlaubt das Scannen von reinem Text (Body)
 
 
     scan_text_mime = true;
 
     scan_text_mime = true;
 
     scan_mime_parts = true;
 
     scan_mime_parts = true;
−
    # Scannt auch winzige Dateien (EICAR ist < 100 Bytes)
 
 
     min_size = 0;
 
     min_size = 0;
−
    # Ignoriert, dass die Mail von localhost/trusted IP kommt
 
 
     scan_unauthenticated = true;
 
     scan_unauthenticated = true;
−
    # Technische Uebertragung via nINSTREAM
 
 
     stream = true;
 
     stream = true;
−
     # Das Symbol soll sofort zum Reject fuehren
+
     action = "reject";
−
    score = 20.0;
 
 
}
 
}
 
</pre>
 
</pre>
  
−
=== Weitere Rspamd-Module ===
+
=Virus Test (EICAR)=
−
Unter /etc/rspamd/local.d/ werden Logging, Redis und RBL-Dienste definiert.
+
* Datei erstellen:
−
 
 
−
==== logging.inc ====
 
−
<pre>
 
−
debug_modules = ["antivirus", "clamav"];
 
−
</pre>
 
−
 
 
−
==== redis.conf ====
 
 
<pre>
 
<pre>
−
servers = "127.0.0.1";
+
From: test@test.local
−
</pre>
+
To: root@localhost
−
 
+
Subject: EICAR
−
==== rbl.conf ====
 
−
<pre>
 
−
enabled = false;
 
−
</pre>
 
−
 
 
−
==== worker-controller.inc (WebUI) ====
 
−
<pre>
 
−
password = "$2$5dj6zn4mt56sbmh8nw944c41wt537tdb$z4op8fwmunpwhe7yzbm94wgeqsdq8ajgjc4zs387e5qxnzppw46y";
 
−
bind_socket ="*:11334";
 
−
</pre>
 
−
 
 
−
=== Aktivierung Rspamd ===
 
−
<pre>
 
−
rspamadm configtest
 
−
systemctl restart rspamd
 
−
redis-cli flushall
 
−
</pre>
 
−
 
 
−
== Validierung ==
 
−
 
 
−
=== Erstellung der Test-E-Mail ===
 
−
Datei: /tmp/virus.eml
 
−
<pre>
 
−
From: Test <test@it213.int>
 
−
To: Root <root@it213.int>
 
−
Subject: EICAR Test
 
 
MIME-Version: 1.0
 
MIME-Version: 1.0
−
Content-Type: multipart/mixed; boundary="Grenzlinie"
+
Content-Type: multipart/mixed; boundary="abc"
  
−
--Grenzlinie
+
--abc
−
Content-Type: text/plain; charset="utf-8"
+
Content-Type: text/plain
  
−
Antivirus Testmail.
+
Test
  
−
--Grenzlinie
+
--abc
−
Content-Type: application/com-file; name="eicar.com"
+
Content-Type: application/octet-stream
 
Content-Disposition: attachment; filename="eicar.com"
 
Content-Disposition: attachment; filename="eicar.com"
−
Content-Transfer-Encoding: 7bit
 
  
 
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
 
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
  
−
--Grenzlinie--
+
--abc--
 
</pre>
 
</pre>
  
−
=== Testlauf ===
+
* Test:
−
<pre>
+
* rspamc /tmp/test.eml
−
rspamc --ip 1.2.3.4 /tmp/virus.eml
 
−
</pre>
 
−
Ein erfolgreicher Scan wird durch das Symbol '''CLAM_VIRUS''' und die Aktion '''reject''' bestaetigt.
 
  
−
== Fehlerdiagnose und Administration: ClamAV und Rspamd ==
+
=Rspamd Schwellenwerte=
−
 
+
{| class="wikitable"
−
Diese Zusammenfassung dient als Spickzettel fuer die taegliche Administration und Fehlerbehebung.
+
! Aktion !! Score !! Bedeutung
−
 
+
|-
−
=== Protokolldateien ueberwachen ===
+
| reject
−
Die wichtigsten Dateien zur Fehlersuche:
+
| 15.0
−
 
+
| Mail wird abgelehnt
−
* Rspamd Hauptlog: /var/log/rspamd/rspamd.log
+
|-
−
* ClamAV Scanlog: /var/log/clamav/clamav.log
+
| add_header
−
* ClamAV Update-Log: /var/log/clamav/freshclam.log
+
| 6.0
−
* System-Journal (fuer Service-Fehler): journalctl -u clamav-daemon -u rspamd
+
| Spam-Header wird gesetzt
−
 
+
|-
−
Live-Ueberwachung der Scans:
+
| greylist
−
<pre>
+
| 4.0
−
tail -f /var/log/rspamd/rspamd.log | grep -E "antivirus|clamav"
+
| temporäre Ablehnung
−
</pre>
+
|-
−
 
+
| no action
−
=== Netzwerk-Ports und Sockets ===
+
| < 4.0
−
Folgende Ports muessen auf der lokalen Schnittstelle (127.0.0.1) aktiv sein:
+
| Mail ist sauber
−
 
+
|}
−
* Port 3310: ClamAV TCP-Socket (nINSTREAM)
 
−
* Port 11333: Rspamd Worker (Normaler Mailflow)
 
−
* Port 11334: Rspamd Controller (WebUI und API)
 
−
* Port 6379: Redis Key-Value Store
 
−
 
 
−
Pruefung mit dem Befehl ss:
 
−
<pre>
 
−
ss -ltpn | grep -E "3310|11333|11334|6379"
 
−
</pre>
 
−
 
 
−
=== Redis Datenbank bereinigen ===
 
−
Wenn Rspamd unerwartete Bewertungen abgibt oder alte gelernte Daten (Bayes) stoeren, kann der Zwischenspeicher geleert werden:
 
−
 
 
−
<pre>
 
−
# Loescht alle Daten in allen Redis-Datenbanken
 
−
redis-cli flushall
 
−
</pre>
 
  
−
=== Manueller Virenscan ===
+
=Fehlerdiagnose=
−
Um zu pruefen, ob ClamAV arbeitet, ohne den Umweg ueber Rspamd zu gehen, nutzt man clamdscan oder sendet den Datenstrom direkt:
+
==Logs==
 +
* /var/log/rspamd/rspamd.log
 +
* /var/log/clamav/clamav.log
  
−
<pre>
+
==Live Analyse==
−
# Per clamdscan (nutzt die Konfiguration in /etc/clamav/clamd.conf)
+
* tail -f /var/log/rspamd/rspamd.log | grep -E "clamav|virus"
−
clamdscan /tmp/virus.eml
 
−
</pre>
 
−
 
 
−
=== Aktualisierung der Virendefinitionen ===
 
−
Das Werkzeug freshclam laeuft normalerweise als Hintergrunddienst. Manuelle Steuerung:
 
−
 
 
−
<pre>
 
−
# Status des Update-Dienstes pruefen
 
−
systemctl status clamav-freshclam
 
−
 
 
−
# Update manuell erzwingen (Dienst muss vorher gestoppt werden)
 
−
systemctl stop clamav-freshclam
 
−
freshclam
 
−
systemctl start clamav-freshclam
 
−
</pre>
 
−
 
 
−
=== Prüfung der Dienstkonfiguration ===
 
−
Bevor man Dienste neu startet, sollte immer die Syntax der Dateien geprueft werden:
 
−
 
 
−
<pre>
 
−
rspamadm configtest
 
−
</pre>
 
−
=== Rspamd kommuniziert mit ClamAV? ===
 
  
−
;Cache leeren (wichtig, sonst kommen Ergebnisse aus Redis)
+
==Kommunikation prüfen==
−
redis-cli flushall
+
* redis-cli flushall
−
systemctl restart rspamd
+
* systemctl restart rspamd
  
−
;UNIX Socket (keine Pakete sichtbar, daher Prozess-Tracing)
+
==UNIX Socket Debug==
−
apt install strace
+
* apt install strace
−
strace -p $(pidof clamd) -e trace=network
+
* strace -p $(pidof clamd) -e trace=network
  
−
;TCP Socket (klassisches Netzwerk-Debugging möglich)
+
==TCP Debug (optional)==
−
apt install tcpdump
+
* apt install tcpdump
−
tcpdump -ni lo port 3310
+
* tcpdump -ni lo port 3310

Version vom 22. März 2026, 09:07 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

Enablen und Starten der Dienste

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

Redis-Anbindung (Das Gedächtnis von Rspamd)

  • Rspamd nutzt Redis für Bayes, Cache und Greylisting.
  • Ohne Redis ist das System funktional eingeschränkt.

Konfiguration in Rspamd

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

Prüfung der Anbindung

  • rspamadm control stat

Warum das für ClamAV wichtig ist

  • Scan-Ergebnisse werden gecached.
  • Identische Anhänge werden nicht mehrfach gescannt.

Zustand prüfen

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

Rspamd Dienste und Ports

Rspamd Milter

  • Schnittstelle zu Postfix
Port: 11332/tcp

Rspamd Worker

Port: 11333/tcp

Rspamd Controller

Port: 11334/tcp

Passwort für den Rspamd Controller

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

Postfix Anbindung (Milter)

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

Spam Test (GTUBE)

  • 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)

  • Kommunikation erfolgt lokal über Socket (kein TCP notwendig)

ClamAV Konfiguration

  • Datei: /etc/clamav/clamd.conf
LocalSocket /run/clamav/clamd.ctl
LocalSocketMode 666
  • Wichtig:
  • TCPSocket und TCPAddr müssen deaktiviert sein

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";
}

Virus Test (EICAR)

  • Datei erstellen:
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--
  • Test:
  • rspamc /tmp/test.eml

Rspamd Schwellenwerte

Aktion Score Bedeutung
reject 15.0 Mail wird abgelehnt
add_header 6.0 Spam-Header wird gesetzt
greylist 4.0 temporäre Ablehnung
no action < 4.0 Mail ist sauber

Fehlerdiagnose

Logs

  • /var/log/rspamd/rspamd.log
  • /var/log/clamav/clamav.log

Live Analyse

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

Kommunikation prüfen

  • redis-cli flushall
  • systemctl restart rspamd

UNIX Socket Debug

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

TCP Debug (optional)

  • apt install tcpdump
  • tcpdump -ni lo port 3310