Rspamd Neu

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Installation von Rspamd, Postfix und Dovecot

Um ein funktionsfähiges Anti-Spam-System aufzubauen, müssen die Pakete für den Filter, den Virenscanner und die Sieve-Erweiterung installiert werden.

Paketinstallation

Die Installation erfolgt unter Debian/Ubuntu über die Standard-Repositorys:

  • apt update
  • apt install rspamd clamav-daemon dovecot-sieve dovecot-managesieved

Rspamd: Modul-Konfiguration

Die Steuerung erfolgt über Dateien im Verzeichnis /etc/rspamd/local.d/.

Virenscanner-Anbindung (ClamAV)

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

clamav {
  scan_mime_parts = true;
  scan_text_mime = true;
  scan_image_mime = true;
  symbol = "CLAM_VIRUS";
  type = "clamav";
  servers = "/run/clamav/clamd.ctl";
}

Statistischer Filter (Bayes)

Datei: /etc/rspamd/local.d/classifier-bayes.conf

enabled = true;
autolearn = true;
backend = "sqlite3";

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

backend = "sqlite3";

Web-Interface Zugriff

Datei: /etc/rspamd/local.d/worker-controller.inc

bind_socket = "127.0.0.1:11334";
password = "$2$abcdef..."; # Erstellt via: rspamadm pw

Postfix: Milter-Integration

Damit Postfix jede Mail an Rspamd zur Prüfung übergibt, wird die Milter-Schnittstelle konfiguriert.

Berechtigungen

Der User postfix muss in die Gruppe rspamd aufgenommen werden, um auf den Socket zugreifen zu können:

  • usermod -aG rspamd postfix

Postfix Hauptkonfiguration

Datei: /etc/postfix/main.cf

# Milter-Einstellungen für Rspamd
smtpd_milters = unix:/var/lib/rspamd/rspamd.sock
non_smtpd_milters = unix:/var/lib/rspamd/rspamd.sock
milter_default_action = accept
milter_protocol = 6

Dienste aktualisieren:

  • systemctl restart rspamd
  • systemctl restart postfix

Dovecot: Sieve-Sortierung (Spam-to-Junk)

Hier wird festgelegt, dass Mails mit Spam-Markierung automatisch in den Junk-Ordner verschoben werden.

LMTP-Plugin Aktivierung

Datei: /etc/dovecot/conf.d/20-lmtp.conf

protocol lmtp {
  mail_plugins = $mail_plugins sieve
}

Sieve-Regel (Global)

Datei: /var/lib/dovecot/sieve/default.sieve

require ["fileinto"];

if header :contains "X-Spam" "Yes" {
  fileinto "Junk";
  stop;
}

Regel aktivieren und Dovecot neu starten:

  • sievec /var/lib/dovecot/sieve/default.sieve
  • systemctl restart dovecot

Validierung und Tests

EICAR-Virus Test

Sendet eine Test-Mail mit dem Standard-Virenstring:

  • echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' | mail -s "Virus-Test" user@example.com

Log-Überwachung

Prüfung der Rspamd-Entscheidungen (Score, Symbole, Action):

  • tail -f /var/log/rspamd/rspamd.log

Fazit

Durch die Installation der Pakete und die anschließende Verknüpfung über Milter (Postfix) und Sieve (Dovecot) ist das System in der Lage, Mails automatisiert zu filtern und zu sortieren.

Script

#!/bin/bash

# --- Parameter-Handling ---
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

# --- 1. Installation ---
apt update
apt install -y rspamd clamav-daemon dovecot-sieve dovecot-managesieved postfix

# --- 2. Rspamd Konfiguration ---
RSPAMD_HASH=$(rspamadm pw -p "$USER_PASS")
mkdir -p /etc/rspamd/local.d/

# Web-Interface auf allen Schnittstellen öffnen
cat <<EOF > /etc/rspamd/local.d/worker-controller.inc
bind_socket = "0.0.0.0:11334";
password = "$RSPAMD_HASH";
enable_password = "$RSPAMD_HASH";
EOF

# ClamAV Integration
cat <<EOF > /etc/rspamd/local.d/antivirus.conf
clamav {
  scan_mime_parts = true;
  symbol = "CLAM_VIRUS";
  type = "clamav";
  servers = "/run/clamav/clamd.ctl";
}
EOF

# --- 3. Postfix Integration ---
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"

# --- 4. 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/
cat <<EOF > /var/lib/dovecot/sieve/default.sieve
require ["fileinto"];
if header :contains "X-Spam" "Yes" {
  fileinto "Junk";
  stop;
}
EOF

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/

# --- 5. Neustart der Dienste ---
systemctl restart clamav-daemon rspamd postfix dovecot

echo "Setup abgeschlossen."
echo "URL: http://$(hostname -I | awk '{print $1}'):11334"