====== rspamd ======
===== Doku =====
https://rspamd.com/doc/tutorials/quickstart.html
===== Voraussetzung =====
* [[postfix]]
* [[dovecot-imapd]]
* [[valkey]] oder [[redis]] lokal ereichbar
==== redis ====
…
bind 127.0.0.1 ::1
…
maxmemory 500mb
…
maxmemory-policy volatile-ttl
…
systemctl restart redis.service
===== Installation =====
Paket installieren:
apt install rspamd
Übersicht Konfiguration:
rspamadm configgraph
Konfiguration ausgeben:
rspamadm configdump
Auf welchen Ports lauscht rspamd?
lsof -ac rspamd -Pni -sTCP:LISTEN
Logs:
tail /var/log/rspamd/rspamd.log
===== redis =====
rspamadm configwizard checks redis
-> erzeugt:
write_servers = "localhost";
read_servers = "localhost";
===== Postfix =====
postconf -e 'smtpd_milters = inet:localhost:11332'
postconf -e 'milter_default_action = accept'
==== testen ====
Spricht postfix mit rspamd?
tcpdump -A -i lo tcp port 11332
Änderungen am Header loggen:
/(.+)/ WARN $1
postconf -e 'milter_header_checks = regexp:/etc/postfix/milter_header_checks'
Spam-Mail schicken, dann im Log schauen:
journalctl -f --facility=mail
-> ''milter-header-warning''
milter_header_checks in Produktion wieder aus machen:
postconf -# milter_header_checks
=== Spam-Test Mail schicken ===
This is the GTUBE, the
Generic
Test for
Unsolicited
Bulk
Email
If your spam filter supports it, the GTUBE provides a test by which you
can verify that the filter is installed correctly and is detecting incoming
spam. You can send yourself a test mail containing the following string of
characters (in upper case and with no white spaces and line breaks):
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
You should send this test mail from an account outside of your network.
swaks -f test@example.com -t ingo@iw-1.lxht.de --body @GTUBE
===== rspamd controller & WebUI =====
rspamadm configwizard checks controller
-> erzeugt: ''/etc/rspamd/local.d/worker-controller.inc''
Zugriff auf WebUI:
ssh -L 11334:127.0.0.1:11334 admin@example.com
-> http://localhost:11334/
===== DKIM & DMARC =====
Doku: https://rspamd.com/doc/modules/dkim_signing.html
rspamadm configwizard checks dkim
* DKIM-Selector z.B. ''dkim2025''
* "//Use domain from authenticated user for sign//" wählen
chown _rspamd /var/lib/rspamd/dkim/example.com.dkim2025.key
Public-Key für RR aus Key erzeugen:
openssl ec -in /var/lib/rspamd/dkim/example.com.dkim2025.key -pubout -outform der | openssl base64 -A | fold -w 200 | while read chunk; do echo "\"$chunk\""; done
* RR in [[bind]] zone eintragen: ''dkim2025._domainkey.example.com. TXT "v=DKIM1; k=rsa; p=" "MII..."''
* DMARC RR in [[bind]] zone eintragen: ''_dmarc.example.com TXT "v=DMARC1; p=none; rua=mailto:user1@example.com"''
Konfiguration prüfen:
dig +short dkim2025._domainkey.example.com TXT
dig +short _dmarc.example.com TXT
rspamadm configdump dkim_signing
Dienst neu laden:
systemctl reload rspamd.service
++++ Statt dessen mit ed25519 Key |
selector=dkim2024
domain=example.com
rspamadm dkim_keygen -s "$selector" -d "$domain" -t ed25519 -k "${selector}-ed25519.private" > "${selector}"-ed25519.txt
path = "/var/lib/rspamd/dkims/$domain.$selector"
++++
++++ dmarc Reports |
mit
redis-cli KEYS '*' | grep dmarc_rpt
kann man nachschauen, ob rspamd schon Berichte für andere Domains hat. In der letzten Spalte steht das Datum, an dem der Eintrag erzeugt wurde, z.B. 20250412
Mit
redis-cli ZRANGE "dmarc_rpt;lxht.de;mailto:tuxilio@tuxi.lxht.de;20250412" 0 -1
kann man sich die Werte anschauen, die beim nächsten Bericht an eine Domain verschickt werden.
Mit
rspamadm dmarc_report -n -v 20250412
kann man sehe, wie rspamd die reports verarbeiten würde.
rspamadm dmarc_report
muss dann ein Mal täglich von cron oder systemd-timer gestartet werden.
++++