Wer jahrelang einen Mailserver auf Debian-Basis mit Postfix betrieben hat, kam an Postgrey kaum vorbei. Doch die Zeiten ändern sich. Während Postgrey lange im Einsatz war, ist Rspamd jetzt der moderne Nachfolger, der mehr Intelligenz auf den Server bringt.
In diesem Beitrag schauen wir uns an, warum der Wechsel lohnt und wie man die alten gepflegten Whitelists per Skript migrieren kann.
Was ist Postgrey?
Postgrey ist ein klassischer Policy-Daemon. Das Prinzip ist simpel, aber effektiv: „Greylisting“. Jede Mail von einem unbekannten Absender wird beim ersten Zustellversuch mit einem temporären Fehler abgewiesen. Ein legitimer Mailserver versucht es nach ein paar Minuten erneut – Spambots oft nicht.
Der Nachteil: Postgrey denkt nicht mit. Es verzögert jede erste Mail, egal wie seriös der Absender wirkt.
Warum Rspamd der bessere Weg ist
Rspamd ist nicht nur ein Greylisting-Tool, sondern ein komplettes Spam-Filtering-System: Intelligentes Greylisting.
Rspamd schaut sich den Spam-Score einer Mail an. Nur wenn eine Mail „verdächtig“ wirkt (z. B. Score zwischen 4 und 6), wird sie gegreylistet. Mails von Google, Microsoft oder validierte Newsletter gehen sofort durch (auch auf Basis von Whitelists). Das schont die Nerven der Nutzer und spart Ressourcen.
Warum alte Whitelists mitnehmen?
Über Jahre hat man in Postgrey Ausnahmen für Partner-Server oder lokale Netze gesammelt. Diese „Erfahrungswerte“ sind wertvoll. Bevor man bei null anfängt, ist es sinnvoll, diese Listen in Rspamd zu integrieren, damit bekannte „Gute Versender“ niemals im Greylisting hängen bleiben.
Der technische Unterschied
Postgrey und Rspamd sprechen unterschiedliche Sprachen:
- Postgrey nutzt oft unvollständige IP-Fragmente (z. B.
192.168) oder komplexe Reguläre Ausdrücke (Regex). - Rspamd bevorzugt klare Strukturen: Valide CIDR-Netzmasken für IPs (z. B.
192.168.0.0/16) und reine Domain-Listen für Absender. Dank der automatischen Subdomain-Erkennung in Rspamd-Maps brauchen wir dort keine wilden Regex-Konstrukte mehr.
Das Migrations-Skript
Damit du nicht hunderte Zeilen händisch kopieren musst, hilft dieses Bash-Skript. Es trennt deine whitelist_clients automatisch in eine IP-Liste und eine Domain-Liste für Rspamd und bereinigt dabei alte Regex-Altlasten.
#!/bin/bash
# Migration: Postgrey Whitelist -> Rspamd Maps
POSTGREY_FILE="/etc/postgrey/whitelist_clients"
RSPAMD_IP_FILE="/etc/rspamd/local.d/greylist_whitelist_ip.inc"
RSPAMD_DOMAIN_FILE="/etc/rspamd/local.d/greylist-whitelist-domains.inc"
echo "Migriere Postgrey Whitelists..."
# Leere Ziel-Dateien erstellen
> "$RSPAMD_IP_FILE"
> "$RSPAMD_DOMAIN_FILE"
grep -vE '^\s*#|^\s*$' "$POSTGREY_FILE" | while read -r line; do
line=$(echo "$line" | xargs) # Whitespace entfernen
# Check: Ist es eine IP oder ein Netz?
if [[ "$line" =~ ^[0-9]{1,3}\.[0-9]{1,3} ]]; then
# IP-Fragmente wie '10.1' zu validem CIDR '10.1.0.0/16' (Beispielhaft)
# Hier sollte man manuell prüfen, ob man lieber /8, /16 oder /24 nutzt
echo "$line" >> "$RSPAMD_IP_FILE"
else
# Regex säubern (Entfernt /, ^, $, \ und Start-Punkte)
clean=$(echo "$line" | sed -E 's|^/||; s|/$||; s|^\^||; s|\$$||; s|\\\.|.|g; s|^\.||')
[ -n "$clean" ] && echo "$clean" >> "$RSPAMD_DOMAIN_FILE"
fi
done
# Duplikate entfernen
sort -u "$RSPAMD_IP_FILE" -o "$RSPAMD_IP_FILE"
sort -u "$RSPAMD_DOMAIN_FILE" -o "$RSPAMD_DOMAIN_FILE"
echo "Migration abgeschlossen. Dateien in /etc/rspamd/local.d/ prüfen!"
Der Umstieg auf Rspamd macht den Mail-Empfang schneller und den Filter präziser und mit dem Skript verliert man keine alten Whitelist-Einträge, sondern räumt sogar etwas auf.
Die Whitelisteinträge werden in der multimap.conf oder greylist.conf in Rspamd eingebunden.