Es werden zwei qmail-Mailrelays in Reihe betrieben (dazwischen eine DMZ), beide Server mit Spamassassin.
Bisher waren beide mit den selben Spamassassin-Rulesets konfiguriert, doch um eine bessere Lastverteilung zu erreichen, werden Bild- und PDF-OCR-Tests auf den "inneren" Server verschoben und der "äußere" darf sich mit den reinen Text-Rules und diversen ORBL-Checks abkämpfen.
Wenn Spamassassin auf dem äußeren Server eine Mail bereits als Spam gekennzeichnet hat, muß sich der innere ja eigentlich nicht mehr bemühen – das shortcircuit-Plugin von Spamassassin ist ideal für diesen Zweck. Es kann auf bestimmte Ereignisse hin eine Mail sofort als Ham oder Spam kennzeichnen und alle weiteren Tests überspringen.
Der äußere Server (gate-2) taggt Spam mit der rewrite_header
– Konfiguration
rewrite_header Subject SPAM [GATE-2|S:_SCORE_|A:_AUTOLEARN_]
Dabei kommt bei Spam-Mails ein Subject heraus wie
SPAM [GATE-02|S:28.5|A:spam] Wieder Spass am Leben - mit einem Leangeren
und beim Durchlauf durch den inneren Server (gate-1) dann
SPAM [GATE-1|S:34.8|A:spam] SPAM [GATE-02|S:28.5|A:spam] Wieder Spass am Leben - mit einem Leangeren
Auf dem inneren Server wird jetzt eine neue Regel in der Datei 00_G2_shortcurcuit.cf
eingefügt mit folgendem Inhalt:
# Kurzschluss, wenn gate-2 bereits als Spam markiert hat
#
# Beispiel-Subject: "SPAM [GATE-02|S:15.2|A:spam] ......"
# Beispiel-Regex: "^SPAM \[GATE-2.*\]"
#
# Nach was wird gesucht?
header F_G2_TAGGED Subject =~ /^SPAM \[GATE-2.*\]/i
# Beschreibung fuer Regel
describe F_G2_TAGGED Bereits von gate-2 als Spam getaggt
# Score fuer Regel
score F_G2_TAGGED 0.1
# Prioritaet fuer Regel (Sehr frueh laufen)
priority F_G2_TAGGED -100
# Shortcircuit als Spam
shortcircuit F_G2_TAGGED spam
# Autolearn ausschalten
tflags F_G2_TAGGED noautolearn
Die Regex in der Zeile "header ...
" muss natürlich an das Tagging des äußeren Servers angepasst werden, um auszulösen.
Für anfängliche Tests empfiehlt es sich, die Regel-Datei mit nur den ersten 3 Zeilen anzulegen, wie folgt:
# Kurzschluss, wenn gate-2 bereits als Spam markiert hat
#
# Beispiel-Subject: "SPAM [GATE-02|S:15.2|A:spam] ......"
# Beispiel-Regex: "^SPAM \[GATE-2.*\]"
#
# Nach was wird gesucht?
header F_G2_TAGGED Subject =~ /^SPAM \[GATE-2.*\]/i
# Beschreibung fuer Regel
describe F_G2_TAGGED Bereits von gate-2 als Spam getaggt
# Score fuer Regel
score F_G2_TAGGED 0.1
Es können dann zuerst in den Header-Zeilen auf den jeweiligen Mail-Clients geprüft werden, ob die Regel F_G2_TAGGED
mit einer Score von 0.1 greift – also ob z.B. die Regex fehlerfrei ist. Die weiteren 3 Zeilen
# Prioritaet fuer Regel (Sehr frueh laufen)
priority F_G2_TAGGED -100
# Shortcircuit als Spam
shortcircuit F_G2_TAGGED spam
# Autolearn ausschalten
tflags F_G2_TAGGED noautolearn
legen dann – wenn alles ok ist und funktioniert – fest, dass diese Regel sehr früh geprüft wird (priority
), dass der "shortcircuit
als spam
" ausgeführt wird und dass autolearn
für diese Mail deaktiviert wird.
Spamassassin bricht dann jede weitere Bearbeitung ab und kann sich anderen Mails widmen.
Im spamd.log
sieht es dann aus wie folgt:
Tue Jan 22 13:19:45 2008 [6463] info: spamd: result: . 0 - F_G2_TAGGED
scantime=0.1,size=9915,user=qscand,uid=210,required_score=5.0,rhost=gate-1.XXXXXX.de,
raddr=127.0.0.1,rport=10050,mid=<01c85d3c$e5824580$1ac2867d@pampel.rycki>,
autolearn=disabled,shortcircuit=spam
F_G2_TAGGED
hat ausgelöst, autolearn
ist aus, Scanzeit ist 0,1 Sekunden, fast unschlagbar.
Dran denken: spamassassin --lint
ist Dein Freund!