Completion of support for time stamps from different stages
of message delivery. The information is now logged as
"delays=a/b/c/d" where a=time before queue manager, b=time
- in queue manager, c=connection setup time, d=message
- transmission time. Unlike Victor's example which used time
- differences, this implementation uses absolute times. The
- decision of what numbers to subtract actually depends on
- program history, so we want to do it in one place. Files:
- global/log_adhoc.c, smtp/smtp_connect.c, smtp/smtp_proto.c,
- smtp/smtp_trouble.c, lmtp/lmtp_proto.c, lmtp/lmtp_trouble.c.
+ in queue manager, c=connection setup including HELO and
+ TLS, d=message transmission time. Unlike Victor's example
+ which used time differences, this implementation uses
+ absolute times. The decision of what numbers to subtract
+ actually depends on program history, so we want to do it
+ in one place. Files: global/log_adhoc.c, smtp/smtp_connect.c,
+ smtp/smtp_proto.c, smtp/smtp_trouble.c, lmtp/lmtp_proto.c,
+ lmtp/lmtp_trouble.c.
20051103
second. Files: *qmgr/qmgr_deliver.c, global/deliver_request.c,
global/log_adhoc.c.
+20051104
+
+ New parameter delay_logging_time_resolution (default: 10000
+ microseconds, or 0.01 second) that controls the detail in
+ the new "delays=a/b/c/d" logging. Specify a power of 10
+ in the range from 1 to 100000. File: global/log_adhoc.c.
+
Open problems:
Is it safe to cache a connection after it has been used
detailed logging of delays in various stages of message delivery.
Postfix logs additional delay information as "delays=a/b/c/d" where
a=time before queue manager, b=time in queue manager, c=connection
-setup time, d=message transmission time.
+setup time including HELO and TLS, d=message transmission time.
- Logging of the connection reuse count when SMTP connections are
used for more than one message delivery. This information is needed
and can help to diagnose interoperability problems with servers
that suffer from memory leaks or other resource leaks.
+At this point the Postfix logging for a recipient looks like this:
+
+ Nov 3 16:04:31 myname postfix/smtp[30840]: 19B6B2900FE:
+ to=<wietse@test.example.com>, orig_to=<wietse@test>,
+ relay=mail.example.com[1.2.3.4], conn_use=2, delay=0,
+ delays=0/0.01/0.05/0.1, dsn=2.0.0, status=sent (250 2.0.0 Ok)
+
+The following two logfile fields may or may not be present:
+
+ orig_to This is omitted when the address did not change.
+ conn_use This is omitted when a connection is used once.
+
Incompatibility with snapshot 20051026
======================================
handle a request before it is terminated by a
built-in watchdog timer.
+ <b><a href="postconf.5.html#delay_logging_time_resolution">delay_logging_time_resolution</a> (10000)</b>
+ The time resolution (microseconds) of the sub-sec-
+ ond delay values that are logged for subsequent
+ message delivery stages.
+
<b><a href="postconf.5.html#delay_warning_time">delay_warning_time</a> (0h)</b>
The time after which the sender receives the mes-
sage headers of mail that is still queued.
handle a request before it is terminated by a
built-in watchdog timer.
+ <b><a href="postconf.5.html#delay_logging_time_resolution">delay_logging_time_resolution</a> (10000)</b>
+ The time resolution (microseconds) of the sub-sec-
+ ond delay values that are logged for subsequent
+ message delivery stages.
+
<b><a href="postconf.5.html#double_bounce_sender">double_bounce_sender</a> (double-bounce)</b>
The sender address of postmaster notifications that
are generated by the mail system.
handle a request before it is terminated by a
built-in watchdog timer.
+ <b><a href="postconf.5.html#delay_logging_time_resolution">delay_logging_time_resolution</a> (10000)</b>
+ The time resolution (microseconds) of the sub-sec-
+ ond delay values that are logged for subsequent
+ message delivery stages.
+
<b><a href="postconf.5.html#double_bounce_sender">double_bounce_sender</a> (double-bounce)</b>
The sender address of postmaster notifications that
are generated by the mail system.
handle a request before it is terminated by a
built-in watchdog timer.
+ <b><a href="postconf.5.html#delay_logging_time_resolution">delay_logging_time_resolution</a> (10000)</b>
+ The time resolution (microseconds) of the sub-sec-
+ ond delay values that are logged for subsequent
+ message delivery stages.
+
<b><a href="postconf.5.html#disable_dns_lookups">disable_dns_lookups</a> (no)</b>
Disable DNS lookups in the Postfix SMTP and LMTP
clients.
handle a request before it is terminated by a
built-in watchdog timer.
+ <b><a href="postconf.5.html#delay_logging_time_resolution">delay_logging_time_resolution</a> (10000)</b>
+ The time resolution (microseconds) of the sub-sec-
+ ond delay values that are logged for subsequent
+ message delivery stages.
+
<b><a href="postconf.5.html#export_environment">export_environment</a> (see 'postconf -d' output)</b>
The list of environment variables that a Postfix
process will export to non-Postfix processes.
<b><a href="postconf.5.html#defer_transports">defer_transports</a> (empty)</b>
The names of message delivery transports that
- should not be delivered to unless someone issues
+ should not deliver mail unless someone issues
"<b>sendmail -q</b>" or equivalent.
+ <b><a href="postconf.5.html#delay_logging_time_resolution">delay_logging_time_resolution</a> (10000)</b>
+ The time resolution (microseconds) of the sub-sec-
+ ond delay values that are logged for subsequent
+ message delivery stages.
+
<b><a href="postconf.5.html#helpful_warnings">helpful_warnings</a> (yes)</b>
Log warnings about problematic configuration set-
tings, and provide helpful suggestions.
handle a request before it is terminated by a
built-in watchdog timer.
+ <b><a href="postconf.5.html#delay_logging_time_resolution">delay_logging_time_resolution</a> (10000)</b>
+ The time resolution (microseconds) of the sub-sec-
+ ond delay values that are logged for subsequent
+ message delivery stages.
+
<b><a href="postconf.5.html#export_environment">export_environment</a> (see 'postconf -d' output)</b>
The list of environment variables that a Postfix
process will export to non-Postfix processes.
</pre>
+</DD>
+
+<DT><b><a name="delay_logging_time_resolution">delay_logging_time_resolution</a>
+(default: 10000)</b></DT><DD>
+
+<p> The time resolution (microseconds) of the sub-second delay
+values that are logged for subsequent message delivery stages.
+Specify a power of 10 in the range from 1 to 100000. </p>
+
+<p> The format of the "delays=a/b/c/d" logging is as follows: </p>
+
+<ul>
+
+<li> a = time before the queue manager selected the queue file
+
+<li> b = time in queue manager
+
+<li> c = time in connection setup, including EHLO and TLS
+
+<li> d = time in message transfer
+
+</ul>
+
+<p> Delay values less than <a href="postconf.5.html#delay_logging_time_resolution">delay_logging_time_resolution</a> are logged
+as "0", while delay values less than 10s are logged with at most
+two-digit precision. </p>
+
+
</DD>
<DT><b><a name="delay_notice_recipient">delay_notice_recipient</a>
<b><a href="postconf.5.html#defer_transports">defer_transports</a> (empty)</b>
The names of message delivery transports that
- should not be delivered to unless someone issues
+ should not deliver mail unless someone issues
"<b>sendmail -q</b>" or equivalent.
+ <b><a href="postconf.5.html#delay_logging_time_resolution">delay_logging_time_resolution</a> (10000)</b>
+ The time resolution (microseconds) of the sub-sec-
+ ond delay values that are logged for subsequent
+ message delivery stages.
+
<b><a href="postconf.5.html#helpful_warnings">helpful_warnings</a> (yes)</b>
Log warnings about problematic configuration set-
tings, and provide helpful suggestions.
handle a request before it is terminated by a
built-in watchdog timer.
+ <b><a href="postconf.5.html#delay_logging_time_resolution">delay_logging_time_resolution</a> (10000)</b>
+ The time resolution (microseconds) of the sub-sec-
+ ond delay values that are logged for subsequent
+ message delivery stages.
+
<b><a href="postconf.5.html#disable_dns_lookups">disable_dns_lookups</a> (no)</b>
Disable DNS lookups in the Postfix SMTP and LMTP
clients.
handle a request before it is terminated by a
built-in watchdog timer.
+ <b><a href="postconf.5.html#delay_logging_time_resolution">delay_logging_time_resolution</a> (10000)</b>
+ The time resolution (microseconds) of the sub-sec-
+ ond delay values that are logged for subsequent
+ message delivery stages.
+
<b><a href="postconf.5.html#ipc_timeout">ipc_timeout</a> (3600s)</b>
The time limit for sending or receiving information
over an internal communication channel.
.fi
.ad
.ft R
+.SH delay_logging_time_resolution (default: 10000)
+The time resolution (microseconds) of the sub-second delay
+values that are logged for subsequent message delivery stages.
+Specify a power of 10 in the range from 1 to 100000.
+.PP
+The format of the "delays=a/b/c/d" logging is as follows:
+.IP \(bu
+a = time before the queue manager selected the queue file
+.IP \(bu
+b = time in queue manager
+.IP \(bu
+c = time in connection setup, including EHLO and TLS
+.IP \(bu
+d = time in message transfer
+.PP
+Delay values less than delay_logging_time_resolution are logged
+as "0", while delay values less than 10s are logged with at most
+two-digit precision.
.SH delay_notice_recipient (default: postmaster)
The recipient of postmaster notifications with the message headers
of mail that cannot be delivered within $delay_warning_time time
.IP "\fBdaemon_timeout (18000s)\fR"
How much time a Postfix daemon process may take to handle a
request before it is terminated by a built-in watchdog timer.
+.IP "\fBdelay_logging_time_resolution (10000)\fR"
+The time resolution (microseconds) of the sub-second delay
+values that are logged for subsequent message delivery stages.
.IP "\fBdelay_warning_time (0h)\fR"
The time after which the sender receives the message headers of
mail that is still queued.
.IP "\fBdaemon_timeout (18000s)\fR"
How much time a Postfix daemon process may take to handle a
request before it is terminated by a built-in watchdog timer.
+.IP "\fBdelay_logging_time_resolution (10000)\fR"
+The time resolution (microseconds) of the sub-second delay
+values that are logged for subsequent message delivery stages.
.IP "\fBdouble_bounce_sender (double-bounce)\fR"
The sender address of postmaster notifications that are generated
by the mail system.
.IP "\fBdaemon_timeout (18000s)\fR"
How much time a Postfix daemon process may take to handle a
request before it is terminated by a built-in watchdog timer.
+.IP "\fBdelay_logging_time_resolution (10000)\fR"
+The time resolution (microseconds) of the sub-second delay
+values that are logged for subsequent message delivery stages.
.IP "\fBdouble_bounce_sender (double-bounce)\fR"
The sender address of postmaster notifications that are generated
by the mail system.
.IP "\fBdaemon_timeout (18000s)\fR"
How much time a Postfix daemon process may take to handle a
request before it is terminated by a built-in watchdog timer.
+.IP "\fBdelay_logging_time_resolution (10000)\fR"
+The time resolution (microseconds) of the sub-second delay
+values that are logged for subsequent message delivery stages.
.IP "\fBdisable_dns_lookups (no)\fR"
Disable DNS lookups in the Postfix SMTP and LMTP clients.
.IP "\fBipc_timeout (3600s)\fR"
.IP "\fBdaemon_timeout (18000s)\fR"
How much time a Postfix daemon process may take to handle a
request before it is terminated by a built-in watchdog timer.
+.IP "\fBdelay_logging_time_resolution (10000)\fR"
+The time resolution (microseconds) of the sub-second delay
+values that are logged for subsequent message delivery stages.
.IP "\fBexport_environment (see 'postconf -d' output)\fR"
The list of environment variables that a Postfix process will export
to non-Postfix processes.
How much time a Postfix daemon process may take to handle a
request before it is terminated by a built-in watchdog timer.
.IP "\fBdefer_transports (empty)\fR"
-The names of message delivery transports that should not be delivered
-to unless someone issues "\fBsendmail -q\fR" or equivalent.
+The names of message delivery transports that should not deliver mail
+unless someone issues "\fBsendmail -q\fR" or equivalent.
+.IP "\fBdelay_logging_time_resolution (10000)\fR"
+The time resolution (microseconds) of the sub-second delay
+values that are logged for subsequent message delivery stages.
.IP "\fBhelpful_warnings (yes)\fR"
Log warnings about problematic configuration settings, and provide
helpful suggestions.
.IP "\fBdaemon_timeout (18000s)\fR"
How much time a Postfix daemon process may take to handle a
request before it is terminated by a built-in watchdog timer.
+.IP "\fBdelay_logging_time_resolution (10000)\fR"
+The time resolution (microseconds) of the sub-second delay
+values that are logged for subsequent message delivery stages.
.IP "\fBexport_environment (see 'postconf -d' output)\fR"
The list of environment variables that a Postfix process will export
to non-Postfix processes.
How much time a Postfix daemon process may take to handle a
request before it is terminated by a built-in watchdog timer.
.IP "\fBdefer_transports (empty)\fR"
-The names of message delivery transports that should not be delivered
-to unless someone issues "\fBsendmail -q\fR" or equivalent.
+The names of message delivery transports that should not deliver mail
+unless someone issues "\fBsendmail -q\fR" or equivalent.
+.IP "\fBdelay_logging_time_resolution (10000)\fR"
+The time resolution (microseconds) of the sub-second delay
+values that are logged for subsequent message delivery stages.
.IP "\fBhelpful_warnings (yes)\fR"
Log warnings about problematic configuration settings, and provide
helpful suggestions.
.IP "\fBdaemon_timeout (18000s)\fR"
How much time a Postfix daemon process may take to handle a
request before it is terminated by a built-in watchdog timer.
+.IP "\fBdelay_logging_time_resolution (10000)\fR"
+The time resolution (microseconds) of the sub-second delay
+values that are logged for subsequent message delivery stages.
.IP "\fBdisable_dns_lookups (no)\fR"
Disable DNS lookups in the Postfix SMTP and LMTP clients.
.IP "\fBfallback_relay (empty)\fR"
.IP "\fBdaemon_timeout (18000s)\fR"
How much time a Postfix daemon process may take to handle a
request before it is terminated by a built-in watchdog timer.
+.IP "\fBdelay_logging_time_resolution (10000)\fR"
+The time resolution (microseconds) of the sub-second delay
+values that are logged for subsequent message delivery stages.
.IP "\fBipc_timeout (3600s)\fR"
The time limit for sending or receiving information over an internal
communication channel.
s;\bdefer_code\b;<a href="postconf.5.html#defer_code">$&</a>;g;
s;\bdefer_service_name\b;<a href="postconf.5.html#defer_service_name">$&</a>;g;
s;\bdefer_transports\b;<a href="postconf.5.html#defer_transports">$&</a>;g;
+ s;\bdelay_logging_time_resolution\b;<a href="postconf.5.html#delay_logging_time_resolution">$&</a>;g;
s;\bdelay_notice_recip[-</bB>]*\n* *[<bB>]*ient\b;<a href="postconf.5.html#delay_notice_recipient">$&</a>;g;
s;\bdelay_warning_time\b;<a href="postconf.5.html#delay_warning_time">$&</a>;g;
s;\bdeliver_lock_attempts\b;<a href="postconf.5.html#deliver_lock_attempts">$&</a>;g;
"unknown" when it cannot be looked up or verified, or when name
lookup is disabled. Turning off name lookup reduces delays due to
DNS lookup and increases the maximal inbound delivery rate. </p>
+
+%PARAM delay_logging_time_resolution 10000
+
+<p> The time resolution (microseconds) of the sub-second delay
+values that are logged for subsequent message delivery stages.
+Specify a power of 10 in the range from 1 to 100000. </p>
+
+<p> The format of the "delays=a/b/c/d" logging is as follows: </p>
+
+<ul>
+
+<li> a = time before the queue manager selected the queue file
+
+<li> b = time in queue manager
+
+<li> c = time in connection setup, including EHLO and TLS
+
+<li> d = time in message transfer
+
+</ul>
+
+<p> Delay values less than delay_logging_time_resolution are logged
+as "0", while delay values less than 10s are logged with at most
+two-digit precision. </p>
/* .IP "\fBdaemon_timeout (18000s)\fR"
/* How much time a Postfix daemon process may take to handle a
/* request before it is terminated by a built-in watchdog timer.
+/* .IP "\fBdelay_logging_time_resolution (10000)\fR"
+/* The time resolution (microseconds) of the sub-second delay
+/* values that are logged for subsequent message delivery stages.
/* .IP "\fBdelay_warning_time (0h)\fR"
/* The time after which the sender receives the message headers of
/* mail that is still queued.
/* .IP "\fBdaemon_timeout (18000s)\fR"
/* How much time a Postfix daemon process may take to handle a
/* request before it is terminated by a built-in watchdog timer.
+/* .IP "\fBdelay_logging_time_resolution (10000)\fR"
+/* The time resolution (microseconds) of the sub-second delay
+/* values that are logged for subsequent message delivery stages.
/* .IP "\fBdouble_bounce_sender (double-bounce)\fR"
/* The sender address of postmaster notifications that are generated
/* by the mail system.
/* .IP "\fBdaemon_timeout (18000s)\fR"
/* How much time a Postfix daemon process may take to handle a
/* request before it is terminated by a built-in watchdog timer.
+/* .IP "\fBdelay_logging_time_resolution (10000)\fR"
+/* The time resolution (microseconds) of the sub-second delay
+/* values that are logged for subsequent message delivery stages.
/* .IP "\fBdouble_bounce_sender (double-bounce)\fR"
/* The sender address of postmaster notifications that are generated
/* by the mail system.
log_adhoc.o: dsn_buf.h
log_adhoc.o: log_adhoc.c
log_adhoc.o: log_adhoc.h
+log_adhoc.o: mail_params.h
log_adhoc.o: msg_stats.h
log_adhoc.o: recipient_list.h
mail_addr.o: ../../include/stringops.h
/* Global library. */
#include <log_adhoc.h>
+#include <mail_params.h>
/* log_adhoc - ad-hoc logging */
if (stats->reuse_count > 0)
vstring_sprintf_append(buf, ", conn_use=%d", stats->reuse_count + 1);
+#define MILLION 1000000
+#define DMILLION ((double) MILLION)
+
#define PRETTY_FORMAT(b, x) \
do { \
- if ((x).tv_sec > 0 || (x).tv_usec < 10000) { \
- vstring_sprintf_append((b), "/%ld", (long) (x).tv_sec); \
+ if ((x).tv_sec > 9 \
+ || ((x).tv_sec == 0 && (x).tv_usec < var_delay_resolution)) { \
+ vstring_sprintf_append((b), "/%ld", \
+ (long) (x).tv_sec + ((x).tv_usec > (MILLION / 2))); \
} else { \
- vstring_sprintf_append((b), "/%.1g", \
- (x).tv_sec + (x).tv_usec / 1000000.0); \
+ vstring_sprintf_append((b), "/%.2g", \
+ (x).tv_sec + ((x).tv_usec / var_delay_resolution) \
+ * (var_delay_resolution / DMILLION)); \
} \
} while (0)
/* int var_strict_encoding;
/* int var_verify_neg_cache;
/* int var_oldlog_compat;
+/* int var_delay_resolution;
/*
/* void mail_params_init()
/*
int var_strict_encoding;
int var_verify_neg_cache;
int var_oldlog_compat;
+int var_delay_resolution;
const char null_format_string[1] = "";
VAR_SMTP_TLS_LOGLEVEL, DEF_SMTP_TLS_LOGLEVEL, &var_smtp_tls_loglevel, 0, 0,
VAR_TLS_DAEMON_RAND_BYTES, DEF_TLS_DAEMON_RAND_BYTES, &var_tls_daemon_rand_bytes, 1, 0,
#endif
+ VAR_DELAY_RESOLUTION, DEF_DELAY_RESOLUTION, &var_delay_resolution, MIN_DELAY_RESOLUTION, MAX_DELAY_RESOLUTION,
0,
};
static CONFIG_TIME_TABLE time_defaults[] = {
#define DEF_FROZEN_DELIVERED 1
extern bool var_frozen_delivered;
+ /*
+ * Delay logging time resolution.
+ */
+#define VAR_DELAY_RESOLUTION "delay_logging_time_resolution"
+#define MAX_DELAY_RESOLUTION 100000
+#define DEF_DELAY_RESOLUTION 10000
+#define MIN_DELAY_RESOLUTION 1
+extern int var_delay_resolution;
+
/* LICENSE
/* .ad
/* .fi
* Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only.
*/
-#define MAIL_RELEASE_DATE "20051103"
+#define MAIL_RELEASE_DATE "20051104"
#define MAIL_VERSION_NUMBER "2.3"
#ifdef SNAPSHOT
/* SUMMARY
/* write MSG_STATS structure to stream
/* SYNOPSIS
-/* #include <msg_stats_print.h>
+/* #include <msg_stats.h>
/*
/* int msg_stats_print(print_fn, stream, flags, ptr)
/* ATTR_PRINT_MASTER_FN print_fn;
/* int flags;
/* void *ptr;
/* DESCRIPTION
-/* msg_stats_print() writes a MSG_STATS structure to the named stream using
-/* the specified attribute print routine. msg_stats_print() is meant
-/* to be passed as a call-back to attr_print(), thusly:
+/* msg_stats_print() writes an MSG_STATS structure to the named
+/* stream using the specified attribute print routine.
+/* msg_stats_print() is meant to be passed as a call-back to
+/* attr_print(), thusly:
/*
/* ... ATTR_PRINT_FUNC, msg_stats_print, (void *) stats, ...
/* DIAGNOSTICS
/* int flags;
/* void *ptr;
/* DESCRIPTION
-/* msg_stats_scan() reads a MSG_STATS from the named stream using the
-/* specified attribute scan routine. msg_stats_scan() is meant
-/* to be passed as a call-back to attr_scan(), thusly:
+/* msg_stats_scan() reads an MSG_STATS from the named stream
+/* using the specified attribute scan routine. msg_stats_scan()
+/* is meant to be passed as a call-back to attr_scan(), thusly:
/*
/* ... ATTR_SCAN_FUNC, msg_stats_scan, (void *) &stats, ...
/* DIAGNOSTICS
/* .IP "\fBdaemon_timeout (18000s)\fR"
/* How much time a Postfix daemon process may take to handle a
/* request before it is terminated by a built-in watchdog timer.
+/* .IP "\fBdelay_logging_time_resolution (10000)\fR"
+/* The time resolution (microseconds) of the sub-second delay
+/* values that are logged for subsequent message delivery stages.
/* .IP "\fBdisable_dns_lookups (no)\fR"
/* Disable DNS lookups in the Postfix SMTP and LMTP clients.
/* .IP "\fBipc_timeout (3600s)\fR"
/* .IP "\fBdaemon_timeout (18000s)\fR"
/* How much time a Postfix daemon process may take to handle a
/* request before it is terminated by a built-in watchdog timer.
+/* .IP "\fBdelay_logging_time_resolution (10000)\fR"
+/* The time resolution (microseconds) of the sub-second delay
+/* values that are logged for subsequent message delivery stages.
/* .IP "\fBexport_environment (see 'postconf -d' output)\fR"
/* The list of environment variables that a Postfix process will export
/* to non-Postfix processes.
/* How much time a Postfix daemon process may take to handle a
/* request before it is terminated by a built-in watchdog timer.
/* .IP "\fBdefer_transports (empty)\fR"
-/* The names of message delivery transports that should not be delivered
-/* to unless someone issues "\fBsendmail -q\fR" or equivalent.
+/* The names of message delivery transports that should not deliver mail
+/* unless someone issues "\fBsendmail -q\fR" or equivalent.
+/* .IP "\fBdelay_logging_time_resolution (10000)\fR"
+/* The time resolution (microseconds) of the sub-second delay
+/* values that are logged for subsequent message delivery stages.
/* .IP "\fBhelpful_warnings (yes)\fR"
/* Log warnings about problematic configuration settings, and provide
/* helpful suggestions.
/* .IP "\fBdaemon_timeout (18000s)\fR"
/* How much time a Postfix daemon process may take to handle a
/* request before it is terminated by a built-in watchdog timer.
+/* .IP "\fBdelay_logging_time_resolution (10000)\fR"
+/* The time resolution (microseconds) of the sub-second delay
+/* values that are logged for subsequent message delivery stages.
/* .IP "\fBexport_environment (see 'postconf -d' output)\fR"
/* The list of environment variables that a Postfix process will export
/* to non-Postfix processes.
/* How much time a Postfix daemon process may take to handle a
/* request before it is terminated by a built-in watchdog timer.
/* .IP "\fBdefer_transports (empty)\fR"
-/* The names of message delivery transports that should not be delivered
-/* to unless someone issues "\fBsendmail -q\fR" or equivalent.
+/* The names of message delivery transports that should not deliver mail
+/* unless someone issues "\fBsendmail -q\fR" or equivalent.
+/* .IP "\fBdelay_logging_time_resolution (10000)\fR"
+/* The time resolution (microseconds) of the sub-second delay
+/* values that are logged for subsequent message delivery stages.
/* .IP "\fBhelpful_warnings (yes)\fR"
/* Log warnings about problematic configuration settings, and provide
/* helpful suggestions.
/* .IP "\fBdaemon_timeout (18000s)\fR"
/* How much time a Postfix daemon process may take to handle a
/* request before it is terminated by a built-in watchdog timer.
+/* .IP "\fBdelay_logging_time_resolution (10000)\fR"
+/* The time resolution (microseconds) of the sub-second delay
+/* values that are logged for subsequent message delivery stages.
/* .IP "\fBdisable_dns_lookups (no)\fR"
/* Disable DNS lookups in the Postfix SMTP and LMTP clients.
/* .IP "\fBfallback_relay (empty)\fR"
/* .IP "\fBdaemon_timeout (18000s)\fR"
/* How much time a Postfix daemon process may take to handle a
/* request before it is terminated by a built-in watchdog timer.
+/* .IP "\fBdelay_logging_time_resolution (10000)\fR"
+/* The time resolution (microseconds) of the sub-second delay
+/* values that are logged for subsequent message delivery stages.
/* .IP "\fBipc_timeout (3600s)\fR"
/* The time limit for sending or receiving information over an internal
/* communication channel.