Rspamd Neu
Architektur und E-Mail-Datenfluss
Der E-Mail-Eingang folgt einer festen Kette technischer Instanzen:
- Postfix (MTA): Empfängt die Nachricht und reicht sie über die Milter-Schnittstelle an Rspamd weiter.
- Rspamd (Filter): Bewertet die Nachricht anhand von Heuristiken und fragt den Virenscanner ab.
- ClamAV (Scanner): Prüft Anhänge auf Schadcode und meldet das Ergebnis an Rspamd zurück.
- Dovecot (LDA/LMTP): Übernimmt die Nachricht von Postfix. Das Sieve-Modul verschiebt Spam anhand der Rspamd-Header automatisch in den Junk-Ordner.
Manuelle Paketeinrichtung und Grundkonfiguration
Systemweite Paketinstallation
Die Installation der benötigten Dienste erfolgt unter Debian oder Ubuntu:
- apt update
- apt install -y rspamd clamav-daemon dovecot-sieve dovecot-managesieved postfix
Vorbereitung des Rspamd Web-Interface
Da Rspamd Passwörter verschlüsselt speichert, muss vor der Konfiguration ein Hash erzeugt werden:
- rspamadm pw -p DEIN_WUNSCH_PASSWORT
Der resultierende Hash (beginnend mit $2$) wird in die Controller-Konfiguration übertragen:
Datei: /etc/rspamd/local.d/worker-controller.inc
bind_socket = "0.0.0.0:11334"; # Zugriff aus dem Netzwerk erlauben password = "DEIN_ERZEUGTER_HASH"; enable_password = "DEIN_ERZEUGTER_HASH";
Virenscanner-Anbindung
Datei: /etc/rspamd/local.d/antivirus.conf
clamav {
scan_mime_parts = true;
symbol = "CLAM_VIRUS";
type = "clamav";
servers = "/run/clamav/clamd.ctl";
}
Systemübergreifende Integration
Milter-Anbindung in Postfix
Der Benutzer 'postfix' benötigt Zugriff auf die Rspamd-Schnittstelle:
- usermod -aG rspamd postfix
Die Integration erfolgt in der Hauptkonfiguration:
Datei: /etc/postfix/main.cf
smtpd_milters = unix:/var/lib/rspamd/rspamd.sock non_smtpd_milters = unix:/var/lib/rspamd/rspamd.sock milter_protocol = 6 milter_default_action = accept
Automatische Postfach-Sortierung via Dovecot Sieve
Aktivierung des Sieve-Plugins für die Zustellung:
Datei: /etc/dovecot/conf.d/20-lmtp.conf
protocol lmtp {
mail_plugins = $mail_plugins sieve
}
Erstellung der globalen Sortierregel:
Datei: /var/lib/dovecot/sieve/default.sieve
require ["fileinto"];
if header :contains "X-Spam" "Yes" {
fileinto "Junk";
stop;
}
- sievec /var/lib/dovecot/sieve/default.sieve
Automatisierung mittels Setup-Skript
Das folgende Skript (setup_mail.sh) führt die oben genannten Schritte konsistent aus. Es nutzt getopt für die Passwortübergabe.
#!/bin/bash
# Aufruf: ./setup_mail.sh -p <Passwort>
while getopts "p:" opt; do
case $opt in
p) USER_PASS=$OPTARG ;;
*) echo "Nutzung: $0 -p <passwort>"; exit 1 ;;
esac
done
if [ -z "$USER_PASS" ]; then
echo "Fehler: Passwort mit -p angeben!"
exit 1
fi
# Pakete installieren
apt update && apt install -y rspamd clamav-daemon dovecot-sieve dovecot-managesieved postfix
# Hash generieren
RSPAMD_HASH=$(rspamadm pw -p "$USER_PASS")
mkdir -p /etc/rspamd/local.d/
# Netzwerk-Bindung priorisieren (options.inc erzwingt 0.0.0.0)
echo 'bind_socket = "0.0.0.0:11334";' > /etc/rspamd/local.d/options.inc
cat <<EOF > /etc/rspamd/local.d/worker-controller.inc
bind_socket = "0.0.0.0:11334";
password = "$RSPAMD_HASH";
enable_password = "$RSPAMD_HASH";
EOF
cat <<EOF > /etc/rspamd/local.d/antivirus.conf
clamav {
scan_mime_parts = true;
symbol = "CLAM_VIRUS";
type = "clamav";
servers = "/run/clamav/clamd.ctl";
}
EOF
# Postfix Milter
usermod -aG rspamd postfix
postconf -e "smtpd_milters = unix:/var/lib/rspamd/rspamd.sock"
postconf -e "non_smtpd_milters = unix:/var/lib/rspamd/rspamd.sock"
postconf -e "milter_default_action = accept"
postconf -e "milter_protocol = 6"
# Dovecot Sieve
sed -i 's/mail_plugins = \$mail_plugins/mail_plugins = \$mail_plugins sieve/g' /etc/dovecot/conf.d/20-lmtp.conf
mkdir -p /var/lib/dovecot/sieve/
echo 'require ["fileinto"]; if header :contains "X-Spam" "Yes" { fileinto "Junk"; stop; }' > /var/lib/dovecot/sieve/default.sieve
sievec /var/lib/dovecot/sieve/default.sieve
chown -R vmail:vmail /var/lib/dovecot/sieve/ 2>/dev/null || chown -R dovecot:dovecot /var/lib/dovecot/sieve/
# Dienste neu starten
systemctl restart clamav-daemon rspamd postfix dovecot
echo "Setup abgeschlossen. Web-UI: http://$(hostname -I | awk '{print $1}'):11334"
Ergebnisanalyse und Funktionstest
Überprüfung der Filterentscheidungen
Die Analyse erfolgt live über das Systemd-Journal. Dies zeigt Scores und aktive Symbole:
- journalctl -u rspamd -f | grep -E "symbol|action"
Validierung mittels GTUBE-Testmail
Senden des standardisierten Spam-Test-Strings zur Prüfung der Sieve-Regel (Verschiebung nach Junk):
- echo "XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-SPAM-TEST-EMAIL*C.34X" | mail -s "Spam-Test" nutzer@beispiel.de
Diagnose über das Web-Interface
- Aufruf von http://<Server-IP>:11334 im Browser.
- Anmeldung mit dem vergebenen Passwort.
- Einsicht in die Historie (History), um Scores und aktive Symbole (z.B. GTUBE, BAYES_SPAM) zu evaluieren.
Fazit
- Transparenz
- Rspamd ermöglicht durch das Scoring-System eine präzise Nachvollziehbarkeit von Filterentscheidungen.
- Effizienz
- Die Integration als Milter verhindert die Annahme unerwünschter Nachrichten bereits während des SMTP-Dialogs.
- Benutzerkomfort
- Durch die Kopplung mit Sieve wird die Postfachpflege für den Endanwender automatisiert.