We handle incoming smtp mail for users who are not connected when the
mail arrives by accepting it as mailhub and creating a separate queue.
We then use another copy of sendmail tuned with a separate sendmail.cf
which keeps attemting to deliver to these users.
Ideally we would like sendmail to try every outstanding user every 30
seconds or so to ensure that they did not sign on and off without
having new mail pushed in their direction.
Unfortunately there appears to be a fundamental socket timeout which
applies for ftp, telnet and smtp services of about 77 seconds. Thus
when a long queue is processed it appears that children are not
spawned for each user in parallel so that ALL outstanding nodes are
checked for a connection together, but rather that this is done one at
a time. If there are 50 nodes with mail for them then the delay is far
outside acceptable parameters because the node will have signed off
before Sendmail sees they are on-line.
At present we are having to work around by cycling the queue processing
every 10 seconds. The new process then determines that a previous
process is trying to open a socket to xyz node and goes on to the next
node in the list. We then end up with 50 processes which is hardly
efficient and these are cycling all the time.
Ideally we want to tune the timeout to a few seconds for these socket
connection attempts. This is like tuning ping to timeout quicker. Has
anybody any idea how this might be done please?
For info we have traced the code through sendmail and it seems to be
calling a library function for socket connection. We obviously don't
want to tinker with, say, an ftp timeout.
Thankyou for your time
Stuart McKenzie
Received on Fri Sep 20 1996 - 12:23:06 NZST