Rspamd Neu: Unterschied zwischen den Versionen
(→Script) |
|||
| Zeile 110: | Zeile 110: | ||
== Script == | == Script == | ||
<pre> | <pre> | ||
| − | #!/bin/bash | + | ##!/bin/bash |
| − | # | + | # --- Parameter-Handling mit getopts --- |
| − | # | + | # Erlaubt den Aufruf mit: ./setup_rspamd.sh -p "DeinPasswort" |
| − | # 1 | + | 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 | + | # --- 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/ | ||
| − | # | + | # 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; | ||
| − | |||
| − | |||
symbol = "CLAM_VIRUS"; | symbol = "CLAM_VIRUS"; | ||
type = "clamav"; | type = "clamav"; | ||
| Zeile 134: | Zeile 149: | ||
EOF | EOF | ||
| − | + | # Web-Interface Absicherung | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | # Web-Interface | ||
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 = " | + | password = "$RSPAMD_HASH"; |
| + | enable_password = "$RSPAMD_HASH"; | ||
EOF | EOF | ||
| − | # | + | # --- 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" | ||
| − | # | + | # --- Schritt 5: Dovecot Sieve --- |
| − | # LMTP | + | # 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 | + | # 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 | ||
| − | # | + | # 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/ |
| − | # | + | # --- 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. | + | 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"