Rspamd Neu: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 110: Zeile 110:
 
== Script ==
 
== Script ==
 
<pre>
 
<pre>
#!/bin/bash
+
##!/bin/bash
  
# Rspamd, Postfix, Dovecot Setup Skript
+
# --- Parameter-Handling mit getopts ---
# Zur Verwendung in der Schularbeit (Debian/Ubuntu)
+
# Erlaubt den Aufruf mit: ./setup_rspamd.sh -p "DeinPasswort"
  
# 1. Installation der Pakete
+
while getopts "p:" opt; do
 +
  case $opt in
 +
    p) USER_PASS=$OPTARG ;;
 +
    *) echo "Benutzung: $0 -p <passwort>"; exit 1 ;;
 +
  esac
 +
done
 +
 
 +
if [ -z "$USER_PASS" ]; then
 +
    echo "Fehler: Kein Passwort mit -p angegeben!"
 +
    echo "Benutzung: $0 -p <passwort>"
 +
    exit 1
 +
fi
 +
 
 +
# --- Schritt 1: Installation ---
 
apt update
 
apt update
 
apt install -y rspamd clamav-daemon dovecot-sieve dovecot-managesieved postfix
 
apt install -y rspamd clamav-daemon dovecot-sieve dovecot-managesieved postfix
  
# 2. Rspamd Konfiguration (local.d)
+
# --- Schritt 2: Rspamd Hash-Generierung ---
 +
# Nutzt das offizielle Tool, um den Passwort-Hash für die Config zu erstellen
 +
RSPAMD_HASH=$(rspamadm pw -p "$USER_PASS")
 +
 
 +
# --- Schritt 3: Rspamd Konfiguration ---
 
mkdir -p /etc/rspamd/local.d/
 
mkdir -p /etc/rspamd/local.d/
  
# Virenscanner (ClamAV)
+
# ClamAV Integration
 
cat <<EOF > /etc/rspamd/local.d/antivirus.conf
 
cat <<EOF > /etc/rspamd/local.d/antivirus.conf
 
clamav {
 
clamav {
 
   scan_mime_parts = true;
 
   scan_mime_parts = true;
  scan_text_mime = true;
 
  scan_image_mime = true;
 
 
   symbol = "CLAM_VIRUS";
 
   symbol = "CLAM_VIRUS";
 
   type = "clamav";
 
   type = "clamav";
Zeile 134: Zeile 149:
 
EOF
 
EOF
  
# Bayes Filter
+
# Web-Interface Absicherung
cat <<EOF > /etc/rspamd/local.d/classifier-bayes.conf
 
enabled = true;
 
autolearn = true;
 
backend = "sqlite3";
 
EOF
 
 
 
cat <<EOF > /etc/rspamd/local.d/statistic.conf
 
backend = "sqlite3";
 
EOF
 
 
 
# Web-Interface (Passwort ist standardmäßig 'qwertz' - bitte ändern!)
 
 
cat <<EOF > /etc/rspamd/local.d/worker-controller.inc
 
cat <<EOF > /etc/rspamd/local.d/worker-controller.inc
 
bind_socket = "127.0.0.1:11334";
 
bind_socket = "127.0.0.1:11334";
password = "\$2\$6ms8p6u96u6m6j9z9z9z9z9z9z9z9z9z";  
+
password = "$RSPAMD_HASH";
 +
enable_password = "$RSPAMD_HASH";
 
EOF
 
EOF
  
# 3. Postfix Integration
+
# --- Schritt 4: Postfix Integration ---
 +
# Berechtigungen für den Milter-Socket
 
usermod -aG rspamd postfix
 
usermod -aG rspamd postfix
  
 +
# Milter in Postfix registrieren
 
postconf -e "smtpd_milters = unix:/var/lib/rspamd/rspamd.sock"
 
postconf -e "smtpd_milters = unix:/var/lib/rspamd/rspamd.sock"
 
postconf -e "non_smtpd_milters = unix:/var/lib/rspamd/rspamd.sock"
 
postconf -e "non_smtpd_milters = unix:/var/lib/rspamd/rspamd.sock"
Zeile 159: Zeile 166:
 
postconf -e "milter_protocol = 6"
 
postconf -e "milter_protocol = 6"
  
# 4. Dovecot Sieve Konfiguration
+
# --- Schritt 5: Dovecot Sieve ---
# LMTP Plugin aktivieren (einfaches Append, falls Datei existiert)
+
# Sieve-Plugin für LMTP aktivieren
 
sed -i 's/mail_plugins = \$mail_plugins/mail_plugins = \$mail_plugins sieve/g' /etc/dovecot/conf.d/20-lmtp.conf
 
sed -i 's/mail_plugins = \$mail_plugins/mail_plugins = \$mail_plugins sieve/g' /etc/dovecot/conf.d/20-lmtp.conf
  
# Globales Sieve Verzeichnis erstellen
+
# Globales Sieve-Skript für Spam-Sortierung
 
mkdir -p /var/lib/dovecot/sieve/
 
mkdir -p /var/lib/dovecot/sieve/
 
 
cat <<EOF > /var/lib/dovecot/sieve/default.sieve
 
cat <<EOF > /var/lib/dovecot/sieve/default.sieve
 
require ["fileinto"];
 
require ["fileinto"];
Zeile 174: Zeile 180:
 
EOF
 
EOF
  
# Sieve kompilieren und Rechte setzen
+
# Kompilieren und Berechtigungen (vmail oder dovecot)
 
sievec /var/lib/dovecot/sieve/default.sieve
 
sievec /var/lib/dovecot/sieve/default.sieve
chown -R vmail:vmail /var/lib/dovecot/sieve/
+
chown -R vmail:vmail /var/lib/dovecot/sieve/ 2>/dev/null || chown -R dovecot:dovecot /var/lib/dovecot/sieve/
  
# 5. Dienste Neustart
+
# --- Schritt 6: Neustart der Dienste ---
 
systemctl restart clamav-daemon
 
systemctl restart clamav-daemon
 
systemctl restart rspamd
 
systemctl restart rspamd
Zeile 184: Zeile 190:
 
systemctl restart dovecot
 
systemctl restart dovecot
  
echo "Setup abgeschlossen. Rspamd Web-UI erreichbar unter http://localhost:11334"
+
echo "Setup abgeschlossen. Web-UI: http://localhost:11334"
 
</pre>
 
</pre>

Version vom 18. März 2026, 17:42 Uhr

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 mit getopts ---
# Erlaubt den Aufruf mit: ./setup_rspamd.sh -p "DeinPasswort"

while getopts "p:" opt; do
  case $opt in
    p) USER_PASS=$OPTARG ;;
    *) echo "Benutzung: $0 -p <passwort>"; exit 1 ;;
  esac
done

if [ -z "$USER_PASS" ]; then
    echo "Fehler: Kein Passwort mit -p angegeben!"
    echo "Benutzung: $0 -p <passwort>"
    exit 1
fi

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

# --- Schritt 2: Rspamd Hash-Generierung ---
# Nutzt das offizielle Tool, um den Passwort-Hash für die Config zu erstellen
RSPAMD_HASH=$(rspamadm pw -p "$USER_PASS")

# --- Schritt 3: Rspamd Konfiguration ---
mkdir -p /etc/rspamd/local.d/

# 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

# Web-Interface Absicherung
cat <<EOF > /etc/rspamd/local.d/worker-controller.inc
bind_socket = "127.0.0.1:11334";
password = "$RSPAMD_HASH";
enable_password = "$RSPAMD_HASH";
EOF

# --- Schritt 4: Postfix Integration ---
# Berechtigungen für den Milter-Socket
usermod -aG rspamd postfix

# Milter in Postfix registrieren
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"

# --- Schritt 5: Dovecot Sieve ---
# Sieve-Plugin für LMTP aktivieren
sed -i 's/mail_plugins = \$mail_plugins/mail_plugins = \$mail_plugins sieve/g' /etc/dovecot/conf.d/20-lmtp.conf

# Globales Sieve-Skript für Spam-Sortierung
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

# Kompilieren und Berechtigungen (vmail oder dovecot)
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/

# --- Schritt 6: Neustart der Dienste ---
systemctl restart clamav-daemon
systemctl restart rspamd
systemctl restart postfix
systemctl restart dovecot

echo "Setup abgeschlossen. Web-UI: http://localhost:11334"