mirror of
https://github.com/vdukhovni/postfix
synced 2025-08-31 22:25:24 +00:00
postfix-2.3-20051229
This commit is contained in:
committed by
Viktor Dukhovni
parent
4049d5fab2
commit
790bb6870f
@@ -11690,22 +11690,17 @@ Apologies for any names omitted.
|
|||||||
(example: sockaddr_to_hostaddr: Unknown error: success).
|
(example: sockaddr_to_hostaddr: Unknown error: success).
|
||||||
File: util/myaddrinfo.c.
|
File: util/myaddrinfo.c.
|
||||||
|
|
||||||
20051228
|
20051229
|
||||||
|
|
||||||
Workaround: don't pipeline the DOT+QUIT commands in the
|
Workaround: when mail is still queued after 3000 seconds,
|
||||||
SMTP client. The 20050929 paranoia about malformed server
|
the SMTP client no longer pipelines the DOT+QUIT commands.
|
||||||
replies eliminated a rare occurrence of "lost mail" with
|
The 20050929 paranoia about malformed server replies
|
||||||
sites that mis-implement DOT+QUIT pipelining. However, we
|
eliminated a rare occurrence of "lost mail" with sites that
|
||||||
now have a larger occurrence of repeated deliveries to sites
|
mis-implement DOT+QUIT pipelining, but resulted in a larger
|
||||||
with different implementation errors.
|
occurrence of repeated deliveries to sites with a different
|
||||||
|
DOT+QUIT pipelining bug. The time threshold is set with the
|
||||||
The default "smtp_pipeline_dot_quit = never" setting
|
smtp_dot_quit_workaround_threshold_time parameter. Files:
|
||||||
eliminates the repeated deliveries at the cost of a small
|
smtp/smtp_proto.c, smtp/smtp.c.
|
||||||
performance loss with normal deliveries. Other settings
|
|
||||||
are "always" (always pipeline the DOT+QUIT commands, when
|
|
||||||
pipelining is enabled) and "newmail" (pipeline DOT+QUIT
|
|
||||||
only when mail is newer than $minimal_backoff_time).
|
|
||||||
Files: smtp/smtp_proto.c, smtp/smtp.c.
|
|
||||||
|
|
||||||
Open problems:
|
Open problems:
|
||||||
|
|
||||||
|
@@ -20,16 +20,16 @@ before proceeding.
|
|||||||
Incompatibility with snapshot 20051228
|
Incompatibility with snapshot 20051228
|
||||||
======================================
|
======================================
|
||||||
|
|
||||||
New parameter "smtp_pipeline_dot_quit" (default: "never") to work
|
New workaround to limit the number of repeated deliveries with
|
||||||
around broken servers and firewalls. After one documented case of
|
servers or firewalls that mis-implement DOT+QUIT command pipelining.
|
||||||
lost mail, as of 20050929 Postfix is more paranoid about malformed
|
After one documented case of lost mail, as of 20050929 Postfix is
|
||||||
SMTP server replies. Unfortuately this results in repeated delivery
|
more paranoid about malformed SMTP server replies. Unfortuately
|
||||||
attempts with other broken systems. To avoid this, the SMTP+LMTP
|
this results in repeated deliveries with other broken systems. To
|
||||||
client no longer pipelines the DOT+QUIT commands by default. Instead
|
limit the number of repeated deliveries, the SMTP client no longer
|
||||||
of "never" you can specify "always" (self-evident) or "newmail"
|
pipelines the DOT+QUIT commands when mail is queued longer than the
|
||||||
(pipeline DOT+QUIT only when mail is newer than $minimal_backoff_time,
|
time specified with the smtp_dot_quit_workaround_threshold_time
|
||||||
so that the number of duplicate deliveries is limited). More details
|
parameter (default: 3000s). More details are in the postconf(5)
|
||||||
are in the postconf(5) manual.
|
manual.
|
||||||
|
|
||||||
Major changes with snapshot 20051222
|
Major changes with snapshot 20051222
|
||||||
====================================
|
====================================
|
||||||
|
@@ -3253,6 +3253,15 @@ discard LHLO keywords selectively. </p>
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
</DD>
|
||||||
|
|
||||||
|
<DT><b><a name="lmtp_dot_quit_workaround_threshold_time">lmtp_dot_quit_workaround_threshold_time</a>
|
||||||
|
(default: 3000s)</b></DT><DD>
|
||||||
|
|
||||||
|
<p> The LMTP-specific version of the <a href="postconf.5.html#smtp_dot_quit_workaround_threshold_time">smtp_dot_quit_workaround_threshold_time</a>
|
||||||
|
configuration parameter. See there for details. </p>
|
||||||
|
|
||||||
|
|
||||||
</DD>
|
</DD>
|
||||||
|
|
||||||
<DT><b><a name="lmtp_enforce_tls">lmtp_enforce_tls</a>
|
<DT><b><a name="lmtp_enforce_tls">lmtp_enforce_tls</a>
|
||||||
@@ -3377,15 +3386,6 @@ parameter. See there for details. </p>
|
|||||||
<p> This feature is available in Postfix 2.3 and later. </p>
|
<p> This feature is available in Postfix 2.3 and later. </p>
|
||||||
|
|
||||||
|
|
||||||
</DD>
|
|
||||||
|
|
||||||
<DT><b><a name="lmtp_pipeline_dot_quit">lmtp_pipeline_dot_quit</a>
|
|
||||||
(default: never)</b></DT><DD>
|
|
||||||
|
|
||||||
<p> The LMTP-specific version of the <a href="postconf.5.html#smtp_pipeline_dot_quit">smtp_pipeline_dot_quit</a>
|
|
||||||
configuration parameter. See there for details. </p>
|
|
||||||
|
|
||||||
|
|
||||||
</DD>
|
</DD>
|
||||||
|
|
||||||
<DT><b><a name="lmtp_pix_workaround_delay_time">lmtp_pix_workaround_delay_time</a>
|
<DT><b><a name="lmtp_pix_workaround_delay_time">lmtp_pix_workaround_delay_time</a>
|
||||||
@@ -6678,6 +6678,39 @@ discard EHLO keywords selectively. </p>
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
</DD>
|
||||||
|
|
||||||
|
<DT><b><a name="smtp_dot_quit_workaround_threshold_time">smtp_dot_quit_workaround_threshold_time</a>
|
||||||
|
(default: 3000s)</b></DT><DD>
|
||||||
|
|
||||||
|
<p> How long a message must be queued before the "." + QUIT bug
|
||||||
|
workaround is turned on for all deliveries; this limits the
|
||||||
|
number of repeated deliveries with servers or firewalls that
|
||||||
|
mis-implement END-OF-DATA + QUIT pipelining. </p>
|
||||||
|
|
||||||
|
<p> When the workaround is turned on, the Postfix SMTP client will
|
||||||
|
not send the QUIT command until it has received the server's
|
||||||
|
END-OF-DATA reply. This workaround incurs a small performance loss
|
||||||
|
with delivery to sites that correctly implement SMTP command
|
||||||
|
pipelining. </p>
|
||||||
|
|
||||||
|
<p> By default, the workaround is turned off for mail that is queued
|
||||||
|
for less than 3000 seconds. In other words, the workaround is
|
||||||
|
normally turned off for the first few delivery attempts of personal
|
||||||
|
mail and of small mailing lists. </p>
|
||||||
|
|
||||||
|
<p> Specify 0 to enable this workaround upon the first delivery
|
||||||
|
attempt, and specify a large value such as $<a href="postconf.5.html#maximal_queue_lifetime">maximal_queue_lifetime</a>
|
||||||
|
to disable the workaround for practically all delivery attempts.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p> Note: when the <a href="postconf.5.html#smtp_fallback_relay">smtp_fallback_relay</a> feature is used, there will
|
||||||
|
be no second delivery attempt, and the workaround may have no effect.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p> This feature is available in Postfix 2.3 and later. </p>
|
||||||
|
|
||||||
|
|
||||||
</DD>
|
</DD>
|
||||||
|
|
||||||
<DT><b><a name="smtp_enforce_tls">smtp_enforce_tls</a>
|
<DT><b><a name="smtp_enforce_tls">smtp_enforce_tls</a>
|
||||||
@@ -6901,45 +6934,6 @@ complete the EHLO and TLS handshake (Postfix version 2.3 and later). </p>
|
|||||||
<a href="postconf.5.html#smtp_always_send_ehlo">smtp_always_send_ehlo</a> parameter. </p>
|
<a href="postconf.5.html#smtp_always_send_ehlo">smtp_always_send_ehlo</a> parameter. </p>
|
||||||
|
|
||||||
|
|
||||||
</DD>
|
|
||||||
|
|
||||||
<DT><b><a name="smtp_pipeline_dot_quit">smtp_pipeline_dot_quit</a>
|
|
||||||
(default: never)</b></DT><DD>
|
|
||||||
|
|
||||||
<p> When ESMTP command pipelining is enabled, whether or not the
|
|
||||||
SMTP client will send the QUIT command before it has received the
|
|
||||||
server's END-OF-DATA reply. </p>
|
|
||||||
|
|
||||||
<p> Specify one of the following: </p>
|
|
||||||
|
|
||||||
<dl>
|
|
||||||
|
|
||||||
<dt> <b>always</b> </dt> <dd> Always pipeline the END-OF-DATA and
|
|
||||||
QUIT commands. With servers or firewalls that mis-implement
|
|
||||||
END-OF-DATA + QUIT pipelining, mail will be delivered repeatedly
|
|
||||||
until it expires in the queue. </dd>
|
|
||||||
|
|
||||||
<dt> <b>never</b> </dt> <dd> Wait for the server's END-OF-DATA reply
|
|
||||||
before sending the QUIT command. This avoids repeated delivery
|
|
||||||
attempts with servers and firewalls that mis-implement END-OF-DATA
|
|
||||||
+ QUIT pipelining, at the cost of a small performance loss with
|
|
||||||
sites that correctly implement SMTP. </dd>
|
|
||||||
|
|
||||||
<dt> <b>newmail</b> </dt> <dd> Pipeline the END-OF-DATA and QUIT
|
|
||||||
commands only when mail is newer than $<a href="postconf.5.html#minimal_backoff_time">minimal_backoff_time</a>. This
|
|
||||||
limits the number of repeated deliveries with servers and firewalls
|
|
||||||
that mis-implement END-OF-DATA + QUIT pipelining, while avoiding
|
|
||||||
the performance loss associated with the "never" setting for normal
|
|
||||||
deliveries. </dd>
|
|
||||||
|
|
||||||
</dl>
|
|
||||||
|
|
||||||
<p> Note: when <a href="postconf.5.html#smtp_fallback_relay">smtp_fallback_relay</a> is used, the "always" and "newmail"
|
|
||||||
settings become identical in practice. </p>
|
|
||||||
|
|
||||||
<p> This feature is available in Postfix 2.3 and later. </p>
|
|
||||||
|
|
||||||
|
|
||||||
</DD>
|
</DD>
|
||||||
|
|
||||||
<DT><b><a name="smtp_pix_workaround_delay_time">smtp_pix_workaround_delay_time</a>
|
<DT><b><a name="smtp_pix_workaround_delay_time">smtp_pix_workaround_delay_time</a>
|
||||||
@@ -6965,7 +6959,7 @@ sending large messages over slow network connections.
|
|||||||
<p>
|
<p>
|
||||||
How long a message must be queued before the PIX firewall
|
How long a message must be queued before the PIX firewall
|
||||||
"<CR><LF>.<CR><LF>" bug workaround is turned
|
"<CR><LF>.<CR><LF>" bug workaround is turned
|
||||||
on.
|
on for delivery through firewalls with "smtp fixup" mode turned on.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
@@ -166,16 +166,17 @@ SMTP(8) SMTP(8)
|
|||||||
Defer mail delivery when no MX record resolves to
|
Defer mail delivery when no MX record resolves to
|
||||||
an IP address.
|
an IP address.
|
||||||
|
|
||||||
|
<b><a href="postconf.5.html#smtp_dot_quit_workaround_threshold_time">smtp_dot_quit_workaround_threshold_time</a> (3000s)</b>
|
||||||
|
How long a message must be queued before the "." +
|
||||||
|
QUIT bug workaround is turned on for all deliver-
|
||||||
|
ies; this limits the number of repeated deliveries
|
||||||
|
with servers or firewalls that mis-implement END-
|
||||||
|
OF-DATA + QUIT pipelining.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_line_length_limit">smtp_line_length_limit</a> (990)</b>
|
<b><a href="postconf.5.html#smtp_line_length_limit">smtp_line_length_limit</a> (990)</b>
|
||||||
The maximal length of message header and body lines
|
The maximal length of message header and body lines
|
||||||
that Postfix will send via SMTP.
|
that Postfix will send via SMTP.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_pipeline_dot_quit">smtp_pipeline_dot_quit</a> (never)</b>
|
|
||||||
When ESMTP command pipelining is enabled, whether
|
|
||||||
or not the SMTP client will send the QUIT command
|
|
||||||
before it has received the server's END-OF-DATA
|
|
||||||
reply.
|
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_pix_workaround_delay_time">smtp_pix_workaround_delay_time</a> (10s)</b>
|
<b><a href="postconf.5.html#smtp_pix_workaround_delay_time">smtp_pix_workaround_delay_time</a> (10s)</b>
|
||||||
How long the Postfix SMTP client pauses before
|
How long the Postfix SMTP client pauses before
|
||||||
sending ".<CR><LF>" in order to work around the PIX
|
sending ".<CR><LF>" in order to work around the PIX
|
||||||
@@ -184,7 +185,8 @@ SMTP(8) SMTP(8)
|
|||||||
<b><a href="postconf.5.html#smtp_pix_workaround_threshold_time">smtp_pix_workaround_threshold_time</a> (500s)</b>
|
<b><a href="postconf.5.html#smtp_pix_workaround_threshold_time">smtp_pix_workaround_threshold_time</a> (500s)</b>
|
||||||
How long a message must be queued before the PIX
|
How long a message must be queued before the PIX
|
||||||
firewall "<CR><LF>.<CR><LF>" bug workaround is
|
firewall "<CR><LF>.<CR><LF>" bug workaround is
|
||||||
turned on.
|
turned on for delivery through firewalls with "smtp
|
||||||
|
fixup" mode turned on.
|
||||||
|
|
||||||
<b><a href="postconf.5.html#smtp_quote_rfc821_envelope">smtp_quote_rfc821_envelope</a> (yes)</b>
|
<b><a href="postconf.5.html#smtp_quote_rfc821_envelope">smtp_quote_rfc821_envelope</a> (yes)</b>
|
||||||
Quote addresses in SMTP MAIL FROM and RCPT TO com-
|
Quote addresses in SMTP MAIL FROM and RCPT TO com-
|
||||||
|
@@ -1746,6 +1746,9 @@ this action from being logged.
|
|||||||
.IP \(bu
|
.IP \(bu
|
||||||
Use the lmtp_discard_lhlo_keyword_address_maps feature to
|
Use the lmtp_discard_lhlo_keyword_address_maps feature to
|
||||||
discard LHLO keywords selectively.
|
discard LHLO keywords selectively.
|
||||||
|
.SH lmtp_dot_quit_workaround_threshold_time (default: 3000s)
|
||||||
|
The LMTP-specific version of the smtp_dot_quit_workaround_threshold_time
|
||||||
|
configuration parameter. See there for details.
|
||||||
.SH lmtp_enforce_tls (default: no)
|
.SH lmtp_enforce_tls (default: no)
|
||||||
The LMTP-specific version of the smtp_enforce_tls configuration
|
The LMTP-specific version of the smtp_enforce_tls configuration
|
||||||
parameter. See there for details.
|
parameter. See there for details.
|
||||||
@@ -1808,9 +1811,6 @@ The LMTP-specific version of the smtp_mx_session_limit configuration
|
|||||||
parameter. See there for details.
|
parameter. See there for details.
|
||||||
.PP
|
.PP
|
||||||
This feature is available in Postfix 2.3 and later.
|
This feature is available in Postfix 2.3 and later.
|
||||||
.SH lmtp_pipeline_dot_quit (default: never)
|
|
||||||
The LMTP-specific version of the smtp_pipeline_dot_quit
|
|
||||||
configuration parameter. See there for details.
|
|
||||||
.SH lmtp_pix_workaround_delay_time (default: 10s)
|
.SH lmtp_pix_workaround_delay_time (default: 10s)
|
||||||
The LMTP-specific version of the smtp_pix_workaround_delay_time
|
The LMTP-specific version of the smtp_pix_workaround_delay_time
|
||||||
configuration parameter. See there for details.
|
configuration parameter. See there for details.
|
||||||
@@ -3723,6 +3723,31 @@ this action from being logged.
|
|||||||
.IP \(bu
|
.IP \(bu
|
||||||
Use the smtp_discard_ehlo_keyword_address_maps feature to
|
Use the smtp_discard_ehlo_keyword_address_maps feature to
|
||||||
discard EHLO keywords selectively.
|
discard EHLO keywords selectively.
|
||||||
|
.SH smtp_dot_quit_workaround_threshold_time (default: 3000s)
|
||||||
|
How long a message must be queued before the "." + QUIT bug
|
||||||
|
workaround is turned on for all deliveries; this limits the
|
||||||
|
number of repeated deliveries with servers or firewalls that
|
||||||
|
mis-implement END-OF-DATA + QUIT pipelining.
|
||||||
|
.PP
|
||||||
|
When the workaround is turned on, the Postfix SMTP client will
|
||||||
|
not send the QUIT command until it has received the server's
|
||||||
|
END-OF-DATA reply. This workaround incurs a small performance loss
|
||||||
|
with delivery to sites that correctly implement SMTP command
|
||||||
|
pipelining.
|
||||||
|
.PP
|
||||||
|
By default, the workaround is turned off for mail that is queued
|
||||||
|
for less than 3000 seconds. In other words, the workaround is
|
||||||
|
normally turned off for the first few delivery attempts of personal
|
||||||
|
mail and of small mailing lists.
|
||||||
|
.PP
|
||||||
|
Specify 0 to enable this workaround upon the first delivery
|
||||||
|
attempt, and specify a large value such as $maximal_queue_lifetime
|
||||||
|
to disable the workaround for practically all delivery attempts.
|
||||||
|
.PP
|
||||||
|
Note: when the smtp_fallback_relay feature is used, there will
|
||||||
|
be no second delivery attempt, and the workaround may have no effect.
|
||||||
|
.PP
|
||||||
|
This feature is available in Postfix 2.3 and later.
|
||||||
.SH smtp_enforce_tls (default: no)
|
.SH smtp_enforce_tls (default: no)
|
||||||
Enforcement mode: require that remote SMTP servers use TLS
|
Enforcement mode: require that remote SMTP servers use TLS
|
||||||
encryption, and never send mail in the clear. This also requires
|
encryption, and never send mail in the clear. This also requires
|
||||||
@@ -3841,35 +3866,6 @@ This feature is available in Postfix 2.1 and later.
|
|||||||
.SH smtp_never_send_ehlo (default: no)
|
.SH smtp_never_send_ehlo (default: no)
|
||||||
Never send EHLO at the start of an SMTP session. See also the
|
Never send EHLO at the start of an SMTP session. See also the
|
||||||
smtp_always_send_ehlo parameter.
|
smtp_always_send_ehlo parameter.
|
||||||
.SH smtp_pipeline_dot_quit (default: never)
|
|
||||||
When ESMTP command pipelining is enabled, whether or not the
|
|
||||||
SMTP client will send the QUIT command before it has received the
|
|
||||||
server's END-OF-DATA reply.
|
|
||||||
.PP
|
|
||||||
Specify one of the following:
|
|
||||||
.IP "\fBalways\fR"
|
|
||||||
Always pipeline the END-OF-DATA and
|
|
||||||
QUIT commands. With servers or firewalls that mis-implement
|
|
||||||
END-OF-DATA + QUIT pipelining, mail will be delivered repeatedly
|
|
||||||
until it expires in the queue.
|
|
||||||
.IP "\fBnever\fR"
|
|
||||||
Wait for the server's END-OF-DATA reply
|
|
||||||
before sending the QUIT command. This avoids repeated delivery
|
|
||||||
attempts with servers and firewalls that mis-implement END-OF-DATA
|
|
||||||
+ QUIT pipelining, at the cost of a small performance loss with
|
|
||||||
sites that correctly implement SMTP.
|
|
||||||
.IP "\fBnewmail\fR"
|
|
||||||
Pipeline the END-OF-DATA and QUIT
|
|
||||||
commands only when mail is newer than $minimal_backoff_time. This
|
|
||||||
limits the number of repeated deliveries with servers and firewalls
|
|
||||||
that mis-implement END-OF-DATA + QUIT pipelining, while avoiding
|
|
||||||
the performance loss associated with the "never" setting for normal
|
|
||||||
deliveries.
|
|
||||||
.PP
|
|
||||||
Note: when smtp_fallback_relay is used, the "always" and "newmail"
|
|
||||||
settings become identical in practice.
|
|
||||||
.PP
|
|
||||||
This feature is available in Postfix 2.3 and later.
|
|
||||||
.SH smtp_pix_workaround_delay_time (default: 10s)
|
.SH smtp_pix_workaround_delay_time (default: 10s)
|
||||||
How long the Postfix SMTP client pauses before sending
|
How long the Postfix SMTP client pauses before sending
|
||||||
".<CR><LF>" in order to work around the PIX firewall
|
".<CR><LF>" in order to work around the PIX firewall
|
||||||
@@ -3880,7 +3876,7 @@ sending large messages over slow network connections.
|
|||||||
.SH smtp_pix_workaround_threshold_time (default: 500s)
|
.SH smtp_pix_workaround_threshold_time (default: 500s)
|
||||||
How long a message must be queued before the PIX firewall
|
How long a message must be queued before the PIX firewall
|
||||||
"<CR><LF>.<CR><LF>" bug workaround is turned
|
"<CR><LF>.<CR><LF>" bug workaround is turned
|
||||||
on.
|
on for delivery through firewalls with "smtp fixup" mode turned on.
|
||||||
.PP
|
.PP
|
||||||
By default, the workaround is turned off for mail that is queued
|
By default, the workaround is turned off for mail that is queued
|
||||||
for less than 500 seconds. In other words, the workaround is normally
|
for less than 500 seconds. In other words, the workaround is normally
|
||||||
|
@@ -162,13 +162,14 @@ Always send EHLO at the start of an SMTP session.
|
|||||||
Never send EHLO at the start of an SMTP session.
|
Never send EHLO at the start of an SMTP session.
|
||||||
.IP "\fBsmtp_defer_if_no_mx_address_found (no)\fR"
|
.IP "\fBsmtp_defer_if_no_mx_address_found (no)\fR"
|
||||||
Defer mail delivery when no MX record resolves to an IP address.
|
Defer mail delivery when no MX record resolves to an IP address.
|
||||||
|
.IP "\fBsmtp_dot_quit_workaround_threshold_time (3000s)\fR"
|
||||||
|
How long a message must be queued before the "." + QUIT bug
|
||||||
|
workaround is turned on for all deliveries; this limits the
|
||||||
|
number of repeated deliveries with servers or firewalls that
|
||||||
|
mis-implement END-OF-DATA + QUIT pipelining.
|
||||||
.IP "\fBsmtp_line_length_limit (990)\fR"
|
.IP "\fBsmtp_line_length_limit (990)\fR"
|
||||||
The maximal length of message header and body lines that Postfix
|
The maximal length of message header and body lines that Postfix
|
||||||
will send via SMTP.
|
will send via SMTP.
|
||||||
.IP "\fBsmtp_pipeline_dot_quit (never)\fR"
|
|
||||||
When ESMTP command pipelining is enabled, whether or not the
|
|
||||||
SMTP client will send the QUIT command before it has received the
|
|
||||||
server's END-OF-DATA reply.
|
|
||||||
.IP "\fBsmtp_pix_workaround_delay_time (10s)\fR"
|
.IP "\fBsmtp_pix_workaround_delay_time (10s)\fR"
|
||||||
How long the Postfix SMTP client pauses before sending
|
How long the Postfix SMTP client pauses before sending
|
||||||
".<CR><LF>" in order to work around the PIX firewall
|
".<CR><LF>" in order to work around the PIX firewall
|
||||||
@@ -176,7 +177,7 @@ How long the Postfix SMTP client pauses before sending
|
|||||||
.IP "\fBsmtp_pix_workaround_threshold_time (500s)\fR"
|
.IP "\fBsmtp_pix_workaround_threshold_time (500s)\fR"
|
||||||
How long a message must be queued before the PIX firewall
|
How long a message must be queued before the PIX firewall
|
||||||
"<CR><LF>.<CR><LF>" bug workaround is turned
|
"<CR><LF>.<CR><LF>" bug workaround is turned
|
||||||
on.
|
on for delivery through firewalls with "smtp fixup" mode turned on.
|
||||||
.IP "\fBsmtp_quote_rfc821_envelope (yes)\fR"
|
.IP "\fBsmtp_quote_rfc821_envelope (yes)\fR"
|
||||||
Quote addresses in SMTP MAIL FROM and RCPT TO commands as required
|
Quote addresses in SMTP MAIL FROM and RCPT TO commands as required
|
||||||
by RFC 821.
|
by RFC 821.
|
||||||
|
@@ -387,7 +387,7 @@ while (<>) {
|
|||||||
s;\bsmtp_mx_session_limit\b;<a href="postconf.5.html#smtp_mx_session_limit">$&</a>;g;
|
s;\bsmtp_mx_session_limit\b;<a href="postconf.5.html#smtp_mx_session_limit">$&</a>;g;
|
||||||
s;\bsmtp_never_send_ehlo\b;<a href="postconf.5.html#smtp_never_send_ehlo">$&</a>;g;
|
s;\bsmtp_never_send_ehlo\b;<a href="postconf.5.html#smtp_never_send_ehlo">$&</a>;g;
|
||||||
s;\bsmtp_sender_depen[-</bB>]*\n*[ <bB>]*dent_authentication\b;<a href="postconf.5.html#smtp_sender_dependent_authentication">$&</a>;g;
|
s;\bsmtp_sender_depen[-</bB>]*\n*[ <bB>]*dent_authentication\b;<a href="postconf.5.html#smtp_sender_dependent_authentication">$&</a>;g;
|
||||||
s;\bsmtp_pipeline_dot_quit\b;<a href="postconf.5.html#smtp_pipeline_dot_quit">$&</a>;g;
|
s;\bsmtp_dot_quit_workaround_threshold_time\b;<a href="postconf.5.html#smtp_dot_quit_workaround_threshold_time">$&</a>;g;
|
||||||
s;\bsmtp_pix_workaround_delay_time\b;<a href="postconf.5.html#smtp_pix_workaround_delay_time">$&</a>;g;
|
s;\bsmtp_pix_workaround_delay_time\b;<a href="postconf.5.html#smtp_pix_workaround_delay_time">$&</a>;g;
|
||||||
s;\bsmtp_pix_workaround_threshold_time\b;<a href="postconf.5.html#smtp_pix_workaround_threshold_time">$&</a>;g;
|
s;\bsmtp_pix_workaround_threshold_time\b;<a href="postconf.5.html#smtp_pix_workaround_threshold_time">$&</a>;g;
|
||||||
s;\bsmtp_quit_timeout\b;<a href="postconf.5.html#smtp_quit_timeout">$&</a>;g;
|
s;\bsmtp_quit_timeout\b;<a href="postconf.5.html#smtp_quit_timeout">$&</a>;g;
|
||||||
|
@@ -3950,7 +3950,7 @@ smtp_always_send_ehlo parameter. </p>
|
|||||||
<p>
|
<p>
|
||||||
How long a message must be queued before the PIX firewall
|
How long a message must be queued before the PIX firewall
|
||||||
"<CR><LF>.<CR><LF>" bug workaround is turned
|
"<CR><LF>.<CR><LF>" bug workaround is turned
|
||||||
on.
|
on for delivery through firewalls with "smtp fixup" mode turned on.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@@ -9126,42 +9126,36 @@ rejecting the address as invalid. </p>
|
|||||||
|
|
||||||
<p> This feature is available in Postfix 2.3 and later.
|
<p> This feature is available in Postfix 2.3 and later.
|
||||||
|
|
||||||
%PARAM smtp_pipeline_dot_quit never
|
%PARAM smtp_dot_quit_workaround_threshold_time 3000s
|
||||||
|
|
||||||
<p> When ESMTP command pipelining is enabled, whether or not the
|
<p> How long a message must be queued before the "." + QUIT bug
|
||||||
SMTP client will send the QUIT command before it has received the
|
workaround is turned on for all deliveries; this limits the
|
||||||
server's END-OF-DATA reply. </p>
|
number of repeated deliveries with servers or firewalls that
|
||||||
|
mis-implement END-OF-DATA + QUIT pipelining. </p>
|
||||||
|
|
||||||
<p> Specify one of the following: </p>
|
<p> When the workaround is turned on, the Postfix SMTP client will
|
||||||
|
not send the QUIT command until it has received the server's
|
||||||
|
END-OF-DATA reply. This workaround incurs a small performance loss
|
||||||
|
with delivery to sites that correctly implement SMTP command
|
||||||
|
pipelining. </p>
|
||||||
|
|
||||||
<dl>
|
<p> By default, the workaround is turned off for mail that is queued
|
||||||
|
for less than 3000 seconds. In other words, the workaround is
|
||||||
|
normally turned off for the first few delivery attempts of personal
|
||||||
|
mail and of small mailing lists. </p>
|
||||||
|
|
||||||
<dt> <b>always</b> </dt> <dd> Always pipeline the END-OF-DATA and
|
<p> Specify 0 to enable this workaround upon the first delivery
|
||||||
QUIT commands. With servers or firewalls that mis-implement
|
attempt, and specify a large value such as $maximal_queue_lifetime
|
||||||
END-OF-DATA + QUIT pipelining, mail will be delivered repeatedly
|
to disable the workaround for practically all delivery attempts.
|
||||||
until it expires in the queue. </dd>
|
</p>
|
||||||
|
|
||||||
<dt> <b>never</b> </dt> <dd> Wait for the server's END-OF-DATA reply
|
<p> Note: when the smtp_fallback_relay feature is used, there will
|
||||||
before sending the QUIT command. This avoids repeated delivery
|
be no second delivery attempt, and the workaround may have no effect.
|
||||||
attempts with servers and firewalls that mis-implement END-OF-DATA
|
</p>
|
||||||
+ QUIT pipelining, at the cost of a small performance loss with
|
|
||||||
sites that correctly implement SMTP. </dd>
|
|
||||||
|
|
||||||
<dt> <b>newmail</b> </dt> <dd> Pipeline the END-OF-DATA and QUIT
|
|
||||||
commands only when mail is newer than $minimal_backoff_time. This
|
|
||||||
limits the number of repeated deliveries with servers and firewalls
|
|
||||||
that mis-implement END-OF-DATA + QUIT pipelining, while avoiding
|
|
||||||
the performance loss associated with the "never" setting for normal
|
|
||||||
deliveries. </dd>
|
|
||||||
|
|
||||||
</dl>
|
|
||||||
|
|
||||||
<p> Note: when smtp_fallback_relay is used, the "always" and "newmail"
|
|
||||||
settings become identical in practice. </p>
|
|
||||||
|
|
||||||
<p> This feature is available in Postfix 2.3 and later. </p>
|
<p> This feature is available in Postfix 2.3 and later. </p>
|
||||||
|
|
||||||
%PARAM lmtp_pipeline_dot_quit never
|
%PARAM lmtp_dot_quit_workaround_threshold_time 3000s
|
||||||
|
|
||||||
<p> The LMTP-specific version of the smtp_pipeline_dot_quit
|
<p> The LMTP-specific version of the smtp_dot_quit_workaround_threshold_time
|
||||||
configuration parameter. See there for details. </p>
|
configuration parameter. See there for details. </p>
|
||||||
|
@@ -1006,15 +1006,11 @@ extern int var_smtp_pix_thresh;
|
|||||||
#define DEF_LMTP_PIX_DELAY "10s"
|
#define DEF_LMTP_PIX_DELAY "10s"
|
||||||
extern int var_smtp_pix_delay;
|
extern int var_smtp_pix_delay;
|
||||||
|
|
||||||
#define SMTP_PIPE_DOT_QUIT_NEVER "never"
|
#define VAR_SMTP_DOTQ_THRESH "smtp_dot_quit_workaround_threshold"
|
||||||
#define SMTP_PIPE_DOT_QUIT_NEWMAIL "newmail"
|
#define DEF_SMTP_DOTQ_THRESH "3000s"
|
||||||
#define SMTP_PIPE_DOT_QUIT_ALWAYS "always"
|
#define VAR_LMTP_DOTQ_THRESH "lmtp_dot_quit_workaround_threshold"
|
||||||
|
#define DEF_LMTP_DOTQ_THRESH "3000s"
|
||||||
#define VAR_SMTP_PIPE_DOT_QUIT "smtp_pipeline_dot_quit"
|
extern int var_smtp_dotq_thresh;
|
||||||
#define DEF_SMTP_PIPE_DOT_QUIT SMTP_PIPE_DOT_QUIT_NEVER
|
|
||||||
#define VAR_LMTP_PIPE_DOT_QUIT "lmtp_pipeline_dot_quit"
|
|
||||||
#define DEF_LMTP_PIPE_DOT_QUIT SMTP_PIPE_DOT_QUIT_NEVER
|
|
||||||
extern char *var_smtp_pipe_dot_quit;
|
|
||||||
|
|
||||||
#define VAR_SMTP_DEFER_MXADDR "smtp_defer_if_no_mx_address_found"
|
#define VAR_SMTP_DEFER_MXADDR "smtp_defer_if_no_mx_address_found"
|
||||||
#define DEF_SMTP_DEFER_MXADDR 0
|
#define DEF_SMTP_DEFER_MXADDR 0
|
||||||
|
@@ -20,7 +20,7 @@
|
|||||||
* Patches change both the patchlevel and the release date. Snapshots have no
|
* Patches change both the patchlevel and the release date. Snapshots have no
|
||||||
* patchlevel; they change the release date only.
|
* patchlevel; they change the release date only.
|
||||||
*/
|
*/
|
||||||
#define MAIL_RELEASE_DATE "20051228"
|
#define MAIL_RELEASE_DATE "20051229"
|
||||||
#define MAIL_VERSION_NUMBER "2.3"
|
#define MAIL_VERSION_NUMBER "2.3"
|
||||||
|
|
||||||
#ifdef SNAPSHOT
|
#ifdef SNAPSHOT
|
||||||
|
@@ -22,7 +22,6 @@
|
|||||||
VAR_PROP_EXTENSION, DEF_PROP_EXTENSION, &var_prop_extension, 0, 0,
|
VAR_PROP_EXTENSION, DEF_PROP_EXTENSION, &var_prop_extension, 0, 0,
|
||||||
VAR_LMTP_GENERIC_MAPS, DEF_LMTP_GENERIC_MAPS, &var_smtp_generic_maps, 0, 0,
|
VAR_LMTP_GENERIC_MAPS, DEF_LMTP_GENERIC_MAPS, &var_smtp_generic_maps, 0, 0,
|
||||||
VAR_LMTP_TCP_PORT, DEF_LMTP_TCP_PORT, &var_lmtp_tcp_port, 0, 0,
|
VAR_LMTP_TCP_PORT, DEF_LMTP_TCP_PORT, &var_lmtp_tcp_port, 0, 0,
|
||||||
VAR_LMTP_PIPE_DOT_QUIT, DEF_LMTP_PIPE_DOT_QUIT, &var_smtp_pipe_dot_quit, 1, 0,
|
|
||||||
0,
|
0,
|
||||||
};
|
};
|
||||||
static CONFIG_TIME_TABLE lmtp_time_table[] = {
|
static CONFIG_TIME_TABLE lmtp_time_table[] = {
|
||||||
@@ -45,6 +44,9 @@
|
|||||||
#endif
|
#endif
|
||||||
VAR_SCACHE_PROTO_TMOUT, DEF_SCACHE_PROTO_TMOUT, &var_scache_proto_tmout, 1, 0,
|
VAR_SCACHE_PROTO_TMOUT, DEF_SCACHE_PROTO_TMOUT, &var_scache_proto_tmout, 1, 0,
|
||||||
VAR_MIN_BACKOFF_TIME, DEF_MIN_BACKOFF_TIME, &var_min_backoff_time, 1, 0,
|
VAR_MIN_BACKOFF_TIME, DEF_MIN_BACKOFF_TIME, &var_min_backoff_time, 1, 0,
|
||||||
|
VAR_MAX_BACKOFF_TIME, DEF_MAX_BACKOFF_TIME, &var_max_backoff_time, 1, 0,
|
||||||
|
VAR_MAX_QUEUE_TIME, DEF_MAX_QUEUE_TIME, &var_max_queue_time, 0, 0,
|
||||||
|
VAR_LMTP_DOTQ_THRESH, DEF_LMTP_DOTQ_THRESH, &var_smtp_dotq_thresh, 0, 0,
|
||||||
0,
|
0,
|
||||||
};
|
};
|
||||||
static CONFIG_INT_TABLE lmtp_int_table[] = {
|
static CONFIG_INT_TABLE lmtp_int_table[] = {
|
||||||
|
@@ -140,13 +140,14 @@
|
|||||||
/* Never send EHLO at the start of an SMTP session.
|
/* Never send EHLO at the start of an SMTP session.
|
||||||
/* .IP "\fBsmtp_defer_if_no_mx_address_found (no)\fR"
|
/* .IP "\fBsmtp_defer_if_no_mx_address_found (no)\fR"
|
||||||
/* Defer mail delivery when no MX record resolves to an IP address.
|
/* Defer mail delivery when no MX record resolves to an IP address.
|
||||||
|
/* .IP "\fBsmtp_dot_quit_workaround_threshold_time (3000s)\fR"
|
||||||
|
/* How long a message must be queued before the "." + QUIT bug
|
||||||
|
/* workaround is turned on for all deliveries; this limits the
|
||||||
|
/* number of repeated deliveries with servers or firewalls that
|
||||||
|
/* mis-implement END-OF-DATA + QUIT pipelining.
|
||||||
/* .IP "\fBsmtp_line_length_limit (990)\fR"
|
/* .IP "\fBsmtp_line_length_limit (990)\fR"
|
||||||
/* The maximal length of message header and body lines that Postfix
|
/* The maximal length of message header and body lines that Postfix
|
||||||
/* will send via SMTP.
|
/* will send via SMTP.
|
||||||
/* .IP "\fBsmtp_pipeline_dot_quit (never)\fR"
|
|
||||||
/* When ESMTP command pipelining is enabled, whether or not the
|
|
||||||
/* SMTP client will send the QUIT command before it has received the
|
|
||||||
/* server's END-OF-DATA reply.
|
|
||||||
/* .IP "\fBsmtp_pix_workaround_delay_time (10s)\fR"
|
/* .IP "\fBsmtp_pix_workaround_delay_time (10s)\fR"
|
||||||
/* How long the Postfix SMTP client pauses before sending
|
/* How long the Postfix SMTP client pauses before sending
|
||||||
/* ".<CR><LF>" in order to work around the PIX firewall
|
/* ".<CR><LF>" in order to work around the PIX firewall
|
||||||
@@ -154,7 +155,7 @@
|
|||||||
/* .IP "\fBsmtp_pix_workaround_threshold_time (500s)\fR"
|
/* .IP "\fBsmtp_pix_workaround_threshold_time (500s)\fR"
|
||||||
/* How long a message must be queued before the PIX firewall
|
/* How long a message must be queued before the PIX firewall
|
||||||
/* "<CR><LF>.<CR><LF>" bug workaround is turned
|
/* "<CR><LF>.<CR><LF>" bug workaround is turned
|
||||||
/* on.
|
/* on for delivery through firewalls with "smtp fixup" mode turned on.
|
||||||
/* .IP "\fBsmtp_quote_rfc821_envelope (yes)\fR"
|
/* .IP "\fBsmtp_quote_rfc821_envelope (yes)\fR"
|
||||||
/* Quote addresses in SMTP MAIL FROM and RCPT TO commands as required
|
/* Quote addresses in SMTP MAIL FROM and RCPT TO commands as required
|
||||||
/* by RFC 821.
|
/* by RFC 821.
|
||||||
@@ -530,7 +531,6 @@
|
|||||||
#include <msg.h>
|
#include <msg.h>
|
||||||
#include <mymalloc.h>
|
#include <mymalloc.h>
|
||||||
#include <name_mask.h>
|
#include <name_mask.h>
|
||||||
#include <name_code.h>
|
|
||||||
|
|
||||||
/* Global library. */
|
/* Global library. */
|
||||||
|
|
||||||
@@ -622,8 +622,12 @@ char *var_prop_extension;
|
|||||||
bool var_smtp_sender_auth;
|
bool var_smtp_sender_auth;
|
||||||
char *var_lmtp_tcp_port;
|
char *var_lmtp_tcp_port;
|
||||||
int var_scache_proto_tmout;
|
int var_scache_proto_tmout;
|
||||||
char *var_smtp_pipe_dot_quit;
|
int var_smtp_dotq_thresh;
|
||||||
|
|
||||||
|
/* Workaround for "smtp_dot_quit_workaround_threshold_time = $name". */
|
||||||
int var_min_backoff_time;
|
int var_min_backoff_time;
|
||||||
|
int var_max_backoff_time;
|
||||||
|
int var_max_queue_time;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Global variables. smtp_errno is set by the address lookup routines and by
|
* Global variables. smtp_errno is set by the address lookup routines and by
|
||||||
@@ -636,7 +640,6 @@ SCACHE *smtp_scache;
|
|||||||
MAPS *smtp_ehlo_dis_maps;
|
MAPS *smtp_ehlo_dis_maps;
|
||||||
MAPS *smtp_generic_maps;
|
MAPS *smtp_generic_maps;
|
||||||
int smtp_ext_prop_mask;
|
int smtp_ext_prop_mask;
|
||||||
int smtp_pipe_dot_quit;
|
|
||||||
|
|
||||||
#ifdef USE_TLS
|
#ifdef USE_TLS
|
||||||
|
|
||||||
@@ -730,12 +733,6 @@ static void post_init(char *unused_name, char **unused_argv)
|
|||||||
SMTP_HOST_LOOKUP_NATIVE, SMTP_HOST_FLAG_NATIVE,
|
SMTP_HOST_LOOKUP_NATIVE, SMTP_HOST_FLAG_NATIVE,
|
||||||
0,
|
0,
|
||||||
};
|
};
|
||||||
static NAME_CODE pipe_dot_quit_codes[] = {
|
|
||||||
SMTP_PIPE_DOT_QUIT_NEVER, SMTP_PIPE_DOT_QUIT_CODE_NEVER,
|
|
||||||
SMTP_PIPE_DOT_QUIT_NEWMAIL, SMTP_PIPE_DOT_QUIT_CODE_NEWMAIL,
|
|
||||||
SMTP_PIPE_DOT_QUIT_ALWAYS, SMTP_PIPE_DOT_QUIT_CODE_ALWAYS,
|
|
||||||
0, SMTP_PIPE_DOT_QUIT_CODE_ERROR,
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Select hostname lookup mechanisms.
|
* Select hostname lookup mechanisms.
|
||||||
@@ -762,16 +759,6 @@ static void post_init(char *unused_name, char **unused_argv)
|
|||||||
var_ipc_idle_limit,
|
var_ipc_idle_limit,
|
||||||
var_ipc_ttl_limit);
|
var_ipc_ttl_limit);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
|
||||||
* Initialize dot-quit pipelining workaround.
|
|
||||||
*/
|
|
||||||
smtp_pipe_dot_quit = name_code(pipe_dot_quit_codes,
|
|
||||||
NAME_CODE_FLAG_NONE,
|
|
||||||
var_smtp_pipe_dot_quit);
|
|
||||||
if (smtp_pipe_dot_quit == SMTP_PIPE_DOT_QUIT_CODE_ERROR)
|
|
||||||
msg_fatal("unknown %s value: %s", VAR_SMTP_PIPE_DOT_QUIT,
|
|
||||||
var_smtp_pipe_dot_quit);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* pre_init - pre-jail initialization */
|
/* pre_init - pre-jail initialization */
|
||||||
|
@@ -166,13 +166,6 @@ extern SSL_CTX *smtp_tls_ctx; /* client-side TLS engine */
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define SMTP_PIPE_DOT_QUIT_CODE_ERROR 0
|
|
||||||
#define SMTP_PIPE_DOT_QUIT_CODE_NEVER 1
|
|
||||||
#define SMTP_PIPE_DOT_QUIT_CODE_NEWMAIL 2
|
|
||||||
#define SMTP_PIPE_DOT_QUIT_CODE_ALWAYS 3
|
|
||||||
|
|
||||||
extern int smtp_pipe_dot_quit;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* smtp_session.c
|
* smtp_session.c
|
||||||
*/
|
*/
|
||||||
|
@@ -290,6 +290,9 @@ SMTP_RESP *smtp_chat_resp(SMTP_SESSION *session)
|
|||||||
(session->state->misc_flags &
|
(session->state->misc_flags &
|
||||||
SMTP_MISC_FLAG_USE_LMTP) ? "LMTP" : "ESMTP",
|
SMTP_MISC_FLAG_USE_LMTP) ? "LMTP" : "ESMTP",
|
||||||
session->namaddrport, STR(session->buffer));
|
session->namaddrport, STR(session->buffer));
|
||||||
|
msg_warn("consider turning off pipelining selectively with %s",
|
||||||
|
(session->state->misc_flags & SMTP_MISC_FLAG_USE_LMTP) ?
|
||||||
|
VAR_LMTP_EHLO_DIS_WORDS : VAR_SMTP_EHLO_DIS_MAPS);
|
||||||
vstream_longjmp(session->stream, SMTP_ERR_PROTO);
|
vstream_longjmp(session->stream, SMTP_ERR_PROTO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -23,7 +23,6 @@
|
|||||||
VAR_PROP_EXTENSION, DEF_PROP_EXTENSION, &var_prop_extension, 0, 0,
|
VAR_PROP_EXTENSION, DEF_PROP_EXTENSION, &var_prop_extension, 0, 0,
|
||||||
VAR_SMTP_GENERIC_MAPS, DEF_SMTP_GENERIC_MAPS, &var_smtp_generic_maps, 0, 0,
|
VAR_SMTP_GENERIC_MAPS, DEF_SMTP_GENERIC_MAPS, &var_smtp_generic_maps, 0, 0,
|
||||||
VAR_LMTP_TCP_PORT, DEF_LMTP_TCP_PORT, &var_lmtp_tcp_port, 0, 0,
|
VAR_LMTP_TCP_PORT, DEF_LMTP_TCP_PORT, &var_lmtp_tcp_port, 0, 0,
|
||||||
VAR_SMTP_PIPE_DOT_QUIT, DEF_SMTP_PIPE_DOT_QUIT, &var_smtp_pipe_dot_quit, 1, 0,
|
|
||||||
0,
|
0,
|
||||||
};
|
};
|
||||||
static CONFIG_TIME_TABLE smtp_time_table[] = {
|
static CONFIG_TIME_TABLE smtp_time_table[] = {
|
||||||
@@ -46,6 +45,9 @@
|
|||||||
#endif
|
#endif
|
||||||
VAR_SCACHE_PROTO_TMOUT, DEF_SCACHE_PROTO_TMOUT, &var_scache_proto_tmout, 1, 0,
|
VAR_SCACHE_PROTO_TMOUT, DEF_SCACHE_PROTO_TMOUT, &var_scache_proto_tmout, 1, 0,
|
||||||
VAR_MIN_BACKOFF_TIME, DEF_MIN_BACKOFF_TIME, &var_min_backoff_time, 1, 0,
|
VAR_MIN_BACKOFF_TIME, DEF_MIN_BACKOFF_TIME, &var_min_backoff_time, 1, 0,
|
||||||
|
VAR_MAX_BACKOFF_TIME, DEF_MAX_BACKOFF_TIME, &var_max_backoff_time, 1, 0,
|
||||||
|
VAR_MAX_QUEUE_TIME, DEF_MAX_QUEUE_TIME, &var_max_queue_time, 0, 0,
|
||||||
|
VAR_SMTP_DOTQ_THRESH, DEF_SMTP_DOTQ_THRESH, &var_smtp_dotq_thresh, 0, 0,
|
||||||
0,
|
0,
|
||||||
};
|
};
|
||||||
static CONFIG_INT_TABLE smtp_int_table[] = {
|
static CONFIG_INT_TABLE smtp_int_table[] = {
|
||||||
|
@@ -926,16 +926,11 @@ static int smtp_loop(SMTP_STATE *state, NOCLOBBER int send_state,
|
|||||||
#define SENDER_IS_AHEAD \
|
#define SENDER_IS_AHEAD \
|
||||||
(recv_state < send_state || recv_rcpt != send_rcpt)
|
(recv_state < send_state || recv_rcpt != send_rcpt)
|
||||||
|
|
||||||
#define DONT_PIPELINE_DOT_QUIT \
|
|
||||||
(smtp_pipe_dot_quit == SMTP_PIPE_DOT_QUIT_CODE_NEVER \
|
|
||||||
|| (smtp_pipe_dot_quit == SMTP_PIPE_DOT_QUIT_CODE_NEWMAIL \
|
|
||||||
&& request->msg_stats.incoming_arrival.tv_sec \
|
|
||||||
< vstream_ftime(session->stream) - var_min_backoff_time))
|
|
||||||
|
|
||||||
#define SENDER_IN_WAIT_STATE \
|
#define SENDER_IN_WAIT_STATE \
|
||||||
(send_state == SMTP_STATE_DOT || send_state == SMTP_STATE_LAST \
|
(send_state == SMTP_STATE_DOT || send_state == SMTP_STATE_LAST \
|
||||||
|| (recv_state == SMTP_STATE_DOT && send_state == SMTP_STATE_QUIT \
|
|| (recv_state == SMTP_STATE_DOT && send_state == SMTP_STATE_QUIT \
|
||||||
&& DONT_PIPELINE_DOT_QUIT))
|
&& request->msg_stats.incoming_arrival.tv_sec \
|
||||||
|
<= vstream_ftime(session->stream) - var_smtp_dotq_thresh))
|
||||||
|
|
||||||
#define SENDING_MAIL \
|
#define SENDING_MAIL \
|
||||||
(recv_state <= SMTP_STATE_DOT)
|
(recv_state <= SMTP_STATE_DOT)
|
||||||
@@ -1591,7 +1586,7 @@ static int smtp_loop(SMTP_STATE *state, NOCLOBBER int send_state,
|
|||||||
smtp_fputs("", 0, session->stream);
|
smtp_fputs("", 0, session->stream);
|
||||||
if ((session->features & SMTP_FEATURE_MAYBEPIX) != 0
|
if ((session->features & SMTP_FEATURE_MAYBEPIX) != 0
|
||||||
&& request->msg_stats.incoming_arrival.tv_sec
|
&& request->msg_stats.incoming_arrival.tv_sec
|
||||||
< vstream_ftime(session->stream) - var_smtp_pix_thresh) {
|
<= vstream_ftime(session->stream) - var_smtp_pix_thresh) {
|
||||||
msg_info("%s: enabling PIX <CRLF>.<CRLF> workaround for %s",
|
msg_info("%s: enabling PIX <CRLF>.<CRLF> workaround for %s",
|
||||||
request->queue_id, session->namaddrport);
|
request->queue_id, session->namaddrport);
|
||||||
smtp_flush(session->stream); /* hurts performance */
|
smtp_flush(session->stream); /* hurts performance */
|
||||||
|
Reference in New Issue
Block a user