Re: [exim] Special log after mail has been delivered

Top Page
Delete this message
Reply to this message
Author: Evgeniy Berdnikov
Date:  
To: exim-users
Subject: Re: [exim] Special log after mail has been delivered
On Tue, May 07, 2013 at 03:13:56PM +0200, Heiko Schlittermann wrote:
> <nitpicking>
> If the pipe blocks, new exim processes will startup and try to accept
> messages, resulting in a huuuge amount of blocked exim processes, until
> the connections run into a timeout. If exim checks the log space, and
> the space is insufficient, it will 4xx on new connection attempts.
> </nitpicking>
>
> :)


Good point for digging. Result really depends on implementation details.

When exim runs as a listener, it forks for every new incoming connection.
Each child, as well as parent, do fd=open("mainlog",O_WRONLY|O_APPEND...),
write to fd adn then close it. On writing to blocked pipe each process
would block independently, regardless is it parent or child.

With default log selectors parent process accepts incoming connections
silently and all looks as you describe. With log_selector="+all" parent
process writes log record about new connection, and would block if pipe
is blocked. So exim listener would hang and stop spawning childs.
--
Eugene Berdnikov