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:

fooarchiveproviderdomain.com    esmtp:[]:[]

Lately, I've been noticing that the primary downstream MTA ( 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 [] during client greeting

After the timeout, I see the system sending to the backup route ( 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?

  • Are you ready for a few minutes delivery delays to fooarchiveproviderdomain.com? It will simplify introducing limits on number of outgoing connections and reuse of SMTP connections in sendmail by sendmail.org. – AnFi Sep 24 '15 at 15:08
  • Are you referring to confSINGLE_THREAD_DELIVERY? – Mike B Sep 24 '15 at 17:01

You may

1) selectively skip "at once" delivery attempts using dsmtp mailer
(they produce "one message per one smtp session" deliveries) .

mailertable entry:

fooarchiveproviderdomain.com    dsmtp:[]:[]

2) Use FEATURE(queuegroup) to select custom queue group for deliveries to fooarchiveproviderdomain.com

3) choose from multitude of options how to fine tune deliveries from the queue groups e.g. via queue group parameters R=2 (two parallel runners = two SMTP session per queue group run) and I=12m (process messages in queue group every 12 minutes)

You may lower delays without "at once" delivery attempts using persistent queue runners.

Comment: changing HOW the messages are sent by "journaling app" is another option.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.