Yahoo Groups archive

Milter-greylist

Index last updated: 2026-04-28 23:32 UTC

Message

Re: [milter-greylist] Fixing Solaris troubles

2007-09-26 by Johann Klasek

On Wed, Sep 26, 2007 at 04:36:27PM -0400, Chris Hoogendyk wrote:
> 
> 
> manu@... wrote:
> > shuttlebox <shuttlebox@...> wrote:
> >
> >   
> >> Another thing, the patch for Solaris file descriptor problems never
> >> made it? There was talk about an option, disabled by default.
> >>     
> >
> > I just integrated 4 out of the 5 patches from Johann E. Klasek:
> >
> >         Cleanup temporary file after DB dump failure
> >         Handle libc that fails stdio without setting errno 
> >         Fixes the usage of the thread-proof resolver library
> >         Do not quit on non fatal errors
> >
> > The last one is the biggest, it's the workaround for Solaris' limitation
> > to file descriptors < 256. We had a positive report and a negative one.
> > It would be nice if more people could give it a try:
> > http://jk.kom.tuwien.ac.at/~jklasek/software/milter-greylist/
> > mg.stdio-solaris.patch
> >
> > I'm also somewhat puzzled about the Solaris fiasco: it seems
> > milter-greylist used to work on Solaris. What change broke it? Who is
> > using Solaris with a 32 bit milter-greylist? What is milter-greylist
> > version?
> 
> 
> hmm. milter-greylist-1.6 compiled 32bit on Solaris 9 with gcc 3.3.2. 
> SPARC (Sun E250).
> 
> I have no idea if this is the same issue. We periodically find 
> milter-greylist not running. This happens more often on our more heavily 
> loaded mail system. We have a cron job that checks whether it is running 
> and restarts it if it is not. It appears that it may happen at times 
> when we are really being hammered by spammers.

A far as I have experienced in Solaris this may have one of following
reasons:

  - Up to Solaris 9 the default file descriptor limit is set to 256. As
	long this is not increased the basic libc stdio file handle
	problem does not come into play. Milter-greylist will just exit
	because the file *descriptor* limit hits. This rapidly happens
	on higher request rates (spam attack) when concurrent sessions
	are going to lift up.
	In low traffic environments this will not happen often.

 - If someone increases the file descriptor limit to above 256, someone
	will observe that milter-greylist will terminate even at times
	not related with higher request rates. This is because the
	file descriptor number (not the count of used file descriptors) is
	counted up and up exceeding 255 - Solaris libc's stdio
	implementation has in its file handle structure only a 8-bit
	component only capable to hold file descriptor values from 0 to
	255. fopen() or fdopen() are failing forcing milter-greylist to
	exit ...

I tend to connect Chris problem with the first reason.
To overcome this problem you need to raise the file descriptor limit to
above 256 *and* take either the Solaris workaround patch mentioned in
the discussion before or using a stdio replacement like SFIO (not tested
yet - speaking for myself). Or you could switch to Solaris 10 which has
easier ways to overcome this file handle issue.


Johann

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.