Whenever an outside site connects to
sendmail's SMTP port,
sendmail fork(2)s a copy of
itself. That copy (the child) processes the incoming connection and
its message. The primary load-limiting mechanisms are the
QueueLA (QueueLA),
RefuseLA (RefuseLA), and
DelayLA (DelayLA) options.
However, these options rely on the system load average, which can
generally be sluggish and can lag behind events. This
ConnectionRateThrottle option, and similar
options, exist to help flatten out the actual load until the load
average can catch up. The ConnectionRateThrottle
option is used like this:
O ConnectionRateThrottle=num configuration file (V8.8 and later)
-OConnectionRateThrottle=num command line (V8.8 and later)
define(`confCONNECTION_RATE_THROTTLE', `num') mc configuration (V8.8 and later)
The num is of type
numeric. If it is present and greater than zero,
connections are slowed when more than that number of connections
arrive within one second. If num is less
than or equal to zero, or absent, no threshold is enforced. If the
entire option is missing, the default becomes zero. The default for
the mc technique is to omit this option.
To illustrate how the slowdown operates, consider a situation in
which num is set to 3, and 12 connections
come in simultaneously. The first three connections are handled
immediately. The next three are handled after one second. The three
after that are handled after two seconds, and so on. The
12th connection would be handled after a
delay of three seconds.
Note that this option and the MaxDaemonChildren
option (MaxDaemonChildren) affect incoming connections
differently. Also see the DelayLA option (DelayLA) as a way to delay incoming messages on high
load.
The ConnectionRateThrottle option is not safe. If
specified from the command line, it can cause
sendmail to relinquish its special privileges.