Eduardo M . Stelmaszczyk:
> Hello,
>
> I'm having problems with mail accumulating in the incoming queue under
> heavy load (2500+ SMTPd processes). The queue manager stops for a long
> time once in a while after trying to communicate with the "trace" client,
> as shown in a trace from cleanup below:
>
> --
> open("public/qmgr", O_WRONLY|O_NONBLOCK) = 14
> fstat64(14, {st_mode=S_IFIFO|0622, st_size=0, ...}) = 0
> lstat64("public/qmgr", {st_mode=S_IFIFO|0622, st_size=0, ...}) = 0
> fcntl64(14, F_GETFL) = 0x801 (flags O_WRONLY|O_NONBLOCK)
> fcntl64(14, F_SETFL, O_WRONLY|O_NONBLOCK) = 0
> poll([{fd=14, events=POLLOUT}], 1, 10000) = 0
> close(14) = 0
The queue manager has a synchronous trace_flush() client, which is
used for DSN NOTIFY=SUCCESS notification, and for sender/recipient
address verification. This trace_flush() client is subject to delays
in the cleanup server:
- trigger_timeout (default 10s) when the qmgr FIFO is full. The
minumum value is 1.
- in_flow_delay (default 1s) when new mail gets ahead of deliveries.
To disable, use "in_flow_delay = 0".
I am not aware of other delays.
If your Postfix is doing address verification on a large scale,
that may not be a good idea.
If your Postfix is sending lots of DSN NOTIFY=SUCCESS messages for
SMTP mail, turn off DSN on the SMTP daemon. One example from
http://www.postfix.org/DSN_README.html shows this:
/etc/postfix/main.cf:
smtpd_discard_ehlo_keyword_address_maps =
cidr:/etc/postfix/esmtp_access
/etc/postfix/esmtp_access:
# Allow DSN requests from local subnet only
192.168.0.0/28 silent-discard
0.0.0.0/0 silent-discard, dsn
::/0 silent-discard, dsn
Another option is
/etc/postfix/main.cf:
smtpd_discard_ehlo_keywords = silent-discard, dsn
meaning don't send DSN NOTIFY for anyone.
DSN was added long after the synchronous tls_flush() client
which was not designed for high volume.
Wietse