procmail: out of memory - login.conf?

kazcor

Reigstreed Usre
Morgen :)

Mein procmail hat mich die Nacht über genervt, er können nicht genug Speicher alloziieren:
Code:
Apr  4 06:03:07 host procmail[64692]: Out of memory as I tried to allocate 4476945 bytes
Apr  4 06:03:07 host sm-mta[64589]: l33Kxtp9041142: to="|exec /usr/local/bin/procmail || exit 75 #user", ctladdr=
user (1001/1001), delay=07:03:10, xdelay=00:01:04, mailer=prog, pri=7261415, dsn=4.0.0, stat=Operating system error
Google brachte mich dann auf folgendes:
Code:
Procmail's memory allocation technique appears to non-optimal for some OS/libc combos, namely implementation of the libc system function realloc() (FreeBSD has been reported). It's conceivable that the configuration process could be enhanced to detect this system limitation to use a strategy more efficient on them. Don't hold your breath.
Da bisher aber alles sauber lief, gehe ich eher davon aus, dass meine jüngsten Änderungen der login.conf da mit reinspielen. Jetzt ist die Frage - als was bzw. von wem wird procmail eigentlich aufgerufen, wenn es in die .forward des Benutzers eingetragen ist? Doch eigentlich immernoch als der Benutzer unter welchem sendmail läuft, denke ich. Ist sendmail automatisch als daemon klassifiziert, so dass hier die entsprechende Sektion "daemon" in der login.conf greift, oder fällt er dann auf die Klasse "default" zurück? Und wenn ja, wo könnte ich das speziell für sendmail einstellen? Hab da nichts brauchbares gefunden soweit :confused:
Die beiden Klassen der login.conf:
Code:
default:\
        :passwd_format=blf:\
        :copyright=/etc/COPYRIGHT:\
        :welcome=/etc/motd:\
        :setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES:\
        :path=/bin /usr/bin /usr/local/bin /usr/X11R6/bin ~/bin:\
        :nologin=/var/run/nologin:\
        :cputime=unlimited:\
        :datasize=4M:\
        :stacksize=4M:\
        :memorylocked=8M:\
        :memoryuse=8M:\
        :filesize=unlimited:\
        :coredumpsize=0M:\
        :openfiles=32:\
        :maxproc=48:\
        :sbsize=unlimited:\
        :vmemoryuse=64M:\
        :priority=0:\
        :ignoretime@:\
        :idletime=30:\
        :umask=022:

standard:\
        :passwd_format=blf:\
        :copyright=/etc/COPYRIGHT:\
        :welcome=/etc/motd:\
        :setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES:\
        :path=/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin /usr/X11R6/bin ~/bin:\
        :nologin=/var/run/nologin:\
        :cputime=unlimited:\
        :datasize=unlimited:\
        :stacksize=unlimited:\
        :memorylocked=unlimited:\
        :memoryuse=unlimited:\
        :filesize=unlimited:\
        :coredumpsize=unlimited:\
        :openfiles=unlimited:\
        :maxproc=unlimited:\
        :sbsize=unlimited:\
        :vmemoryuse=unlimited:\
        :priority=0:\
        :ignoretime@:\
        :umask=022:

daemon:\
        :coredumpsize@:\
        :coredumpsize-cur=0:\
        :datasize=infinity:\
        :datasize-cur@:\
        :maxproc=512:\
        :maxproc-cur@:\
        :memoryuse-cur=64M:\
        :memorylocked-cur=64M:\
        :openfiles=1024:\
        :openfiles-cur@:\
        :stacksize=16M:\
        :stacksize-cur@:\
        :tc=standard:

baba,
kaz
 
Ach, da gibbets viele Gründe. Ich weise allen Benutzern denen ich traue eine spezielle Klasse zu (die hier nicht aufgeführt und weniger restriktiv ist). Demnach verhält sich default als fallback für Benutzer denen ich eh nicht traue. Ansonsten ist das hier nicht gerade ne performante Kiste, welche gleichzeitig als Server und Workstation missbraucht wird und von aussen (indirekt) zugänglich ist. Ausserdem wollte ich ursprünglich mal austesten, was so minimal gebraucht wird - hatte die letzten Wochen allerdings noch keine Probleme. Naja und ausserdem ist man doch auch mal etwas verspielt und will nicht immer wohl definierte Szenarien ausprobieren ;)
 
4MB sind sicherlich zuwenig. Bei mir braucht fetchmail max. 3 MB um 8 Mails von 3 Accounts abzuholen.
Fetchmail? Du meinst fetchmail+procmail combo? Fetchmail wird bei mir per cronjob vom Benutzer gestartet - der hat auch passende limits.

Whatever, soweit ich das gelesen und evtl. auch verstanden habe, muss procmail vor dem filtern einer Mail diese komplett in den Speicher laden. Die besagte Mail war 5MB gross - die Grenze für einen Benutzer der default Klasse 4MB. Das wirds wohl schon sein.

Die Frage ist und bleibt, wie man einem Prozess eine login class zuweisen kann. Vorerst ueber den Benutzer, welcher den Prozess ausfuehrt, aber was fuer ein uebler Hack sollte das sein, dass Programme, die per /etc/rc gestartet werden, automatisch die daemon Klasse verwenden? Hab inzwischen versucht, den Benutzern smmsp/mailnull die daemon Klasse zuzuweisen, ändert jedoch nix.
Da es um eine lokale Zustellung ging (verhunzter daily periodic) und das wahrscheinlich nicht noch mal passiert, ist es nicht tragisch.

Danke jedenfalls soweit :)
 
Zurück
Oben