Rspamd kurz und gut
Rspamd + ClamAV Integration (Postfix)
Ziel
- Integration eines Spam- und Virenfilters in eine bestehende Mailserver-Umgebung.
- Am Ende können Spam (GTUBE), Viren (EICAR) und SPF-Bewertungen demonstriert werden.
Schritt 1: Aufräumen (Tabula Rasa)
- Alte Rspamd- und ClamAV-Komponenten werden entfernt, um Konflikte zu vermeiden.
- Dadurch wird sichergestellt, dass keine alten Konfigurationen das Verhalten beeinflussen.
systemctl stop rspamd clamav-daemon 2>/dev/null || true service rspamd stop 2>/dev/null || true service clamav-daemon stop 2>/dev/null || true apt -y purge rspamd clamav clamav-daemon || true apt -y autoremove apt -y autoclean rm -rf /etc/rspamd rm -rf /var/lib/rspamd rm -rf /var/log/rspamd
Schritt 2: Installation
- Die benötigten Pakete für Spam- und Virenfilter werden installiert.
- Rspamd übernimmt die Analyse, ClamAV die Virenerkennung.
apt update apt -y install rspamd clamav clamav-daemon
Schritt 3: Virensignaturen aktualisieren
- ClamAV benötigt aktuelle Signaturen, um zuverlässig Viren zu erkennen.
- Der Befehl lädt die neuesten Definitionen herunter.
freshclam || true
Schritt 4: Grundkonfiguration
- Das Verzeichnis für lokale Rspamd-Konfigurationen wird angelegt.
- Hier werden alle eigenen Anpassungen gespeichert.
mkdir -p /etc/rspamd/local.d
Schritt 5: ClamAV Integration
- Rspamd wird so konfiguriert, dass eingehende Mails an ClamAV übergeben werden.
- Wird ein Virus erkannt, wird die Mail sofort abgelehnt.
cat <<EOF > /etc/rspamd/local.d/antivirus.conf
clamav {
action = "reject";
symbol = "CLAM_VIRUS";
type = "clamav";
servers = "127.0.0.1:3310";
}
EOF
Schritt 6: Aktionen
- Die Schwellwerte bestimmen, ab wann eine Mail abgelehnt oder markiert wird.
- Für Schulungen sind die Werte bewusst niedrig gewählt.
cat <<EOF > /etc/rspamd/local.d/actions.conf
reject = 5; add_header = 3; greylist = 4;
EOF
Schritt 7: Webinterface
- Das Webinterface ermöglicht die Analyse der Mailbewertung.
- Ein festes Passwort erlaubt den Zugriff.
cat <<'EOF' > /etc/rspamd/local.d/worker-controller.inc
password = "$2$kKqzF3cH9x7L9u1w0ZJ8R.Hp9m2l8pG6yVv8eR6m3yY1p2Q3w4e5G"; enable_password = "$2$kKqzF3cH9x7L9u1w0ZJ8R.Hp9m2l8pG6yVv8eR6m3yY1p2Q3w4e5G"; bind_socket = "0.0.0.0:11334";
EOF
Schritt 8: Postfix anbinden
- Postfix wird so konfiguriert, dass jede Mail durch Rspamd geprüft wird.
- Dies erfolgt über das Milter-Interface.
postconf -e "milter_protocol = 6" postconf -e "milter_default_action = accept" postconf -e "smtpd_milters = inet:127.0.0.1:11332" postconf -e "non_smtpd_milters = inet:127.0.0.1:11332"
Schritt 9: Dienste starten
- Die Dienste werden gestartet oder neu geladen.
- Fallbacks sorgen dafür, dass das Script auch ohne systemd funktioniert.
systemctl restart clamav-daemon 2>/dev/null || clamd & systemctl restart rspamd 2>/dev/null || rspamd -d systemctl restart postfix 2>/dev/null || service postfix restart
Ergebnis
- Rspamd filtert Spam und bewertet Mails anhand verschiedener Kriterien.
- ClamAV blockiert schädliche Anhänge zuverlässig.
Webinterface
- Zugriff über den Browser zur Analyse der Mails.
http://SERVER-IP:11334
- Passwort: xinux123
Rspamd / ClamAV Tests
Ziel
- Überprüfung der Mail-Filterung
- Nachweis von Spam-Erkennung (GTUBE)
- Nachweis von Virus-Erkennung (ClamAV / EICAR)
- Sichtbarkeit von SPF-Bewertung
Vorbereitung
- Zielbenutzer: thomas@it213.int
- Mailserver lokal erreichbar (127.0.0.1)
- swaks installiert
Test Spam (GTUBE)
Test
- Der GTUBE-String ist ein standardisierter Test für Spamfilter und wird immer erkannt
- Die Mail muss durch Rspamd blockiert oder als Spam markiert werden
swaks --to thomas@it213.int --server 127.0.0.1 --data "Subject: spam test XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X"
Prüfung
- Live-Logs beobachten um zu sehen ob Rspamd eingreift
journalctl -f -u rspamd -u postfix -u clamav-daemon
Erwartung
- Rspamd erkennt den GTUBE-String
- Postfix lehnt die Mail über den Milter ab
- Die Mail wird nicht zugestellt
- In den Logs erscheint:
milter-reject: END-OF-MESSAGE Gtube pattern
Ergebnis
- Mail wird abgelehnt
- Beispiel Log:
Mar 20 14:14:06 mail.it213.int postfix/cleanup[30205]: 04BC8C0995: milter-reject: END-OF-MESSAGE from localhost[127.0.0.1]: 5.7.1 Gtube pattern; from=<root@mail.it213.int> to=<thomas@it213.int> proto=ESMTP helo=<mail.it213.int> Mar 20 14:14:06 mail.it213.int postfix/cleanup[30205]: 04BC8C0995: removed (canceled) Mar 20 14:18:59 mail.it213.int postfix/cleanup[30218]: CDDD8C0995: milter-reject: END-OF-MESSAGE from localhost[127.0.0.1]: 5.7.1 Gtube pattern; from=<root@mail.it213.int> to=<thomas@it213.int> proto=ESMTP helo=<mail.it213.int> Mar 20 14:18:59 mail.it213.int postfix/cleanup[30218]: CDDD8C0995: removed (canceled)
Interpretation
- Rspamd läuft korrekt
- Milter-Anbindung funktioniert
- Spam wird aktiv geblockt
- System verhält sich wie erwartet
Test Spam (GTUBE)
Test
- Der GTUBE-String ist ein standardisierter Test für Spamfilter und wird immer erkannt
- Die Mail muss durch Rspamd blockiert oder als Spam markiert werden
swaks --to thomas@it213.int --server 127.0.0.1 --data "Subject: spam test XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X"
Prüfung
- Live-Logs beobachten um zu sehen ob Rspamd eingreift
journalctl -f -u rspamd -u postfix -u clamav-daemon
Erwartung
- Rspamd erkennt den GTUBE-String
- Postfix lehnt die Mail über den Milter ab
- Die Mail wird nicht zugestellt
- In den Logs erscheint:
milter-reject: END-OF-MESSAGE Gtube pattern
Test 3: SPF
- Es wird eine Mail mit gefälschtem Absender erzeugt.
- SPF wird durch Rspamd bewertet und beeinflusst den Score.
swaks --to thomas@it213.int --server 127.0.0.1 \ --from fake@gmail.com
- Erwartung: SPF_FAIL erscheint in den Logs oder im Rspamd Webinterface und erhöht den Spam-Score.
Live-Beobachtung
- Die Verarbeitung der Mails kann live verfolgt werden.
journalctl -f
- Erwartung:
- Spam: "Gtube pattern" oder "milter-reject"
- Virus: "CLAM_VIRUS"
- SPF: "SPF_FAIL"