I have several Sendmail servers which relay a lot (hundreds of thousands) of journaled emails to a downstream archive repository via SMTP. All of these emails have the same recipient domain (lets call it "fooarchiveproviderdomain.com"). On my side, I have a simple route set in
/etc/mail/mailertable for the archive domain:
Lately, I've been noticing that the primary downstream MTA (18.104.22.168 in my example above) will get overloaded and sometimes not send back a banner greeting in a timely manner. On my side, Sendmail will throw an error in maillog like:
timeout waiting for input from [22.214.171.124] during client greeting
After the timeout, I see the system sending to the backup route (126.96.36.199 in my example above) and immediately getting accepted.
I'm reasonably certain that this is related to load since these timeouts occur more during peak business hours. That being said, I want to understand how many connections my server is initiating when processing new emails and previously queued messages, all intended for the same domain.
I think that sendmail retries queued messages in single file right? So if I have, say, 10000 emails deferred messages... the queuerunner won't initiate 10000 simultaneous connections... it'll just issue one?
I also think that new incoming messages that arrive in separate SMTP sessions get handled separately right? So if, say, a sendmail box gets 15 separate new messages, each will be handled by a separate sendmail child daemon which will initiate it's own separate SMTP connections to the downstream MTA?
Is there a means to restrict simultaneous downstream connections without impacting the amount of incoming connections my server can handle?