PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : sendmail/fetchmail einbremsen, wie?



pibi
13.06.04, 10:29
Ich habe hier einen zentralen Server, der die ueblichen Dienste eines privaten Heimnetzes bedient: Mailserver, DHCP, BIND, Squid etc. Das funktioniert auch soweit ganz ordentlich. Ein Problem habe ich nur mit dem Mailempfang.

Fetchmail sammelt die Mail fuer alle Accounts bei diversen Providern ein. Diese werden dann via zentrales procmail an bogofilter und spamassassin "verfuettert" und je nach "Spamicity" bzw. "Bogosity" an den entspr. User zugestellt bzw. in den Spam-Kuebel geworfen. Spamassassin ist ja nun bekannt, dass er nicht gerade sparsam mit dem Ressourcen umgeht. Und da beginnt mein Problem:
Testhalber habe ich mal in einem Rutsch 50 Mails gefetcht. Dies hat mir meinen Server komplett dichtgemacht, 512 MB Swapspace waren komplett verbraucht, es gab mehr als 100 zusaetzliche Prozesse, load average > 50, zum Teil haben sich Services mangels Ressourcen bzw. wegen Timeouts beendet (BIND, syslogd).

So etwas kann ich natuerlich in einem (unbeaufsichtigten) 24h-Serverbetrieb nicht brauchen, auch wenn in der Praxis sicher nicht 50 Mails auf einmal kommen. Meine Frage nun: Wie kann ich den Mail-Empfang (Fetchmail? procmail? sendmail?) soweit einbremsen, dass nicht mehr als -sagen wir mal- 5 Mails gleichzeitig gespamcheckt und verarbeitet werden? Zeit ist kein Problem, von mir aus kann es auch einen halben Tag dauern, bis die Mails bearbeitet sind;-)

Folgende Parameter habe ich bisher in sendmail.cf probiert, allerdings ohne Erfolg:

# load average at which we just queue messages
O QueueLA=2

# load average at which we refuse connections
O RefuseLA=4

# maximum number of children we allow at one time
O MaxDaemonChildren=5
Hat jemand eine bessere Idee?

Danke und Gruss Pit.

drcux
13.06.04, 11:01
läuft spamassassin als Daemon?

pibi
13.06.04, 11:15
läuft spamassassin als Daemon?Oops, sorry, habe ich vergessen. Jein. Ja, ich arbeite mit dem Gespann spamd/spamc. Andererseits auch standalone, um bogofilter zu trainieren. Vielleicht hier nochmal der relevante Teil meiner procmailrc:
:0:
# already checked and classified as spam?
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*
$DEFAULT

:0HBWc: Spam1.lock
* < 256000
* ? $SPAMASSASSIN -e
#spam yields non-zero
#non-spam yields zero
| $BOGOFILTER -n -d $BOGOFILTER_DIR
#else (E)
:0Ec
| $BOGOFILTER -s -d $BOGOFILTER_DIR

# testhalber bogofilter mitlaufen lassen
:0fw
* < 256000
| $BOGOFILTER -u -e -p -l

# nun der bewaehrte SpamAssassin
:0fw: /var/spool/mail/Spam2.lock
* < 256000
| /usr/bin/spamc
Gruss Pit.

pibi
13.06.04, 19:56
:0HBWc: Spam1.lock
* < 256000
* ? $SPAMASSASSIN -e
#spam yields non-zero
#non-spam yields zero
| $BOGOFILTER -n -d $BOGOFILTER_DIR
#else (E)
:0Ec
| $BOGOFILTER -s -d $BOGOFILTER_DIR
Kleine Ergaenzung: Vielfach hilft es, wenn man seine Probleme mal richtig durchdenkt und im Klartext niederschreibt (sollte eigentlich in die FAQ eines jeden Echos, dann wuerde uns so mancher Schrott erspart bleiben).

Das Problem bei obiger Konfiguration was das beschriebene Training von Bogofilter durch SA (ich habe das irgendwo in einer Bogofilter-Support-Page gelesen..) Mein Bogofilter ist mittlerweile leidlich zuverlaessig trainiert, also habe ich die obige Passage mal auskommentiert. Und siehe da: Es klappt ohne wesentliche Systembelastung auch mit 50 Mails pro Fetch.

Gruss Pit.