Der Eressea-Server hat die letzten Tage ein echtes Problem damit gehabt, all meine Spams zu filtern. Was ist passiert? Meine private Email läuft über den Account, und ich bekomme einen Menge Spam. Auf meinem alten Uni-Account lagen letzte Woche z.b. 2200 Mails, von denen etwa 15-20 kein Spam waren.
Um dem ganzen Herr zu werden setze ich Spam Assassin ein. Das Programm ist super. Leider braucht es relativ viel CPU, und der Eressea-Rechner ist nicht grad schnell. Auf einer der beiden PPro 200 CPUs dauert es 40 Sekunden, eine Mail von 126 Zeilen zu bearbeiten. Irgendwann, bei einer Load jenseits von 100, hat der Rechner keinerlei Speicher mehr gehabt, er hat ja eh nur 64 MB + Swap. Und an dieser Stelle fängt Linux dann an, Prozesse in Notwehr abzuschiessen. Irgendwann lief nix mehr, und Andreas mußte physikalisch an die Maschine heran. Danke, Krawi!
Was habe ich gelernt?
1. Lass andere die Arbeit machen.
Es ist nicht gut, alles in Spam Assassin zu füttern. Die Uni Paderborn hat auf ihrem Mailserver einen eigenen Spam Assassin laufen, und den werde ich von jetzt an zumindest einen Teil der Arbeit machen lassen. Alle Mail, die über meine eigenen Domains laufen, kommen aber weiter ungefiltert zu mir. Ich benutze nebenher meinen Account bei despammed.com für alles mögliche, wo ebenfalls eine Menge für mich vorgefiltert wird.
2. spamd einsetzen
Spam Assassin kann man als Daemon starten, und das tue ich jetzt. Statt dass er jedesmal seine Konfiguration und Regeln neu laden muss, wird im Fall einer anfrage dann wirklich nur die Mail bearbeitet. In meinem Fall senkt das die Verarbeitungszeit von 40 auf etwa 25 Sekunden herunter. Immer noch eine Menge.
3. spamd richtig konfigurieren.
Ich habe mehrere Optionen angeschaltet, um spam assassin zu beschleunigen: --local --max-children 10 --auto-whitelist. Außerdem habe ich die Bayes Filter abgeschaltet (Eintrag in user_prefs: use_bayes 0)
4. exim richtig einstellen
Mein Problem wurde vor allem dadurch verschärft, dass ich mit fetchmail in regelmäßigen Abständen sehr viele Mails auf einmal bekommen habe, und exim dann für jede Mail einen procmail-Prozess gestartet hat, der wiederum einen Spam Assassin startete. Plötzlich liefen hunderte Prozesse, die alle versuchten, das gleiche Lock auf meine Mailbox zu bekommen. Das ging nicht gut. Ab heute ist mein exim so konfiguriert, das er ab einer Load von 4 keine Mails mehr auszuliefern versucht. Das geht mit den Parametern queue_only_load und deliver_load_max in der exim.conf.
Jetzt bete ich mal, dass das alles ist, und der Rechner bis zum Wochenende überlebt.