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
Message
Re: [milter-greylist] Fixing Solaris troubles
2007-09-26 by Johann Klasek
Attachments
- No local attachments were found for this message.