![](https://seccdn.libravatar.org/avatar/75973ede5fa153b26deb187a8fead743.jpg?s=120&d=mm&r=g)
On Thu, Dec 09, 2004 at 03:42:30PM +0100, Bastian Bense wrote:
Liebe Liste,
ich hoffe das jemand eine Kombination aus Exim (+exiscan) und SpamAssassin auf einem Produktionssystem einsetzt. Bei unserem
Klar!
Testsystem bin ich auf jeden Fall auf einige schwerwiegende Probleme gestossen. Ich habe SpamAssassin und Exim (die aktuellsten Versionen) installiert und konfiguriert. Beides funktioniert auch wunderbar und Spam wird auch zu 99% gefiltert.
Nach einem Spam(Load)-Test auf den Server (1.000 Nachrichten) war auf dem Server schon nach kurzer Zeit kein Speicher mehr verfügbar.
Das ist so -- bei viel Speicherbedarf hilft nur viel Speicher. (Oder Auslagern zB des Scanners auf zusaetzliche Maschinen)
Logischerweise fing die Box dann an auf den Swap auszulagern und einige Minuten später war nicht mal mehr das Keyboard für jegliche Eingaben empfänglich. Der einzige Weg den Rechner wiederzubeleben ist der Reset-Taster -- nicht so toll, vor allem für Fernwartung, dachte ich mir.
Wie es aussieht versucht Exim alle reinkommenden Nachrichten auf einmal zu Scannen und überfordert somit den Spamd, welcher unter 'top' in einem einzigen Prozess den ganzen Speicher aufbraucht. Der Kernel fängt zum Schluss dann an andere Prozesse wie die mysql-Datenbank zu killen. Ich lasse SpamAssassin als spamd laufen, und Exim (wie in der exiscan-Doku beschrieben) über eine lokale Socket drauf zugreifen. Es macht jedoch kein Unterschied wenn ich TCP als Socket verwende. Mit der "-m 2" Option habe ich schon versucht die Prozesse von Spamd zu limitieren, hat aber auch nichts gebracht.
Schon probiert, den Speicherverbrauch mittels ulimit zu begrenzen?
Spamd wird 'at SMTP-time' aufgerufen, dass heisst, noch während die Nachricht vom anderen Server empfangen wird kann diese mit einem möglichen Spam-Score direkt zurückgewiesen werden.
Falls jemand dieses Problem schon hatte, gibt es eine Lösung? Gibt es eine Option in Exim um zu verhindern dass Spamd überfordert wird?
Du solltest ein paar Limits setzen, wie von Andreas bereits beschrieben. Die exiscan Regeln sollten etwas wie condition = ${if <{$message_size}{500k}{1}{0}} enthalten (jede der scannenden Regeln braucht die Bedingung!). Verwende ausserdem die queue_only_load u.ae. Direktiven. Auch message_size_limit wuerde ich erwaegen.
PS: Tut mir leid wenn ich hier frage, aber auf google-groups und anderen Listenarchiven finde ich keine sinnvollen Informationen -- es scheint jedoch als wenn ich nicht der einzige bin der dieses Problem hat.
Ich bin wirklich dankbar für jede Hilfe!
Auf der exim-users Liste waerest Du auf jeden Fall richtig. Peter