2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-08-28 12:48:01 +00:00

postfix-2.12-20140318

This commit is contained in:
Wietse Venema 2014-03-18 00:00:00 -05:00 committed by Viktor Dukhovni
parent 977f2661d5
commit 1b55748771
29 changed files with 373 additions and 201 deletions

View File

@ -19611,15 +19611,26 @@ Apologies for any names omitted.
20140316 20140316
Feature: preliminary support to change arbitrary hard Feature: preliminary support to change arbitrary hard
delivery errors into soft errors and vice versa, originally delivery errors into soft errors and vice versa, or to
introduced for sites that want to hard-bounce mail when a replace the descriptive text of non-delivery notifications.
remote SMTP server does not announce TLS support. New main.cf This was originally introduced for sites that want to bounce
mail when no remote SMTP server announces TLS support. New
parameters: {default,smtp,pipe,virtual}_bounce_defer_filter. parameters: {default,smtp,pipe,virtual}_bounce_defer_filter.
Support for the local(8) delivery agent is awaiting additional Files: proto/postconf.proto, mantools/postlink, global/bounce.[hc],
code to emulate defer_one() support, and support for qmgr(8) bounce/defer.[hc], global/ndr_filter.[hc], global/mail_params.[hc],
is awaiting further analysis. Files: proto/postconf.proto,
mantools/postlink, global/bounce.[hc], bounce/defer.[hc],
global/ndr_filter.[hc], global/mail_params.[hc],
master/event_server.c, master/multi_server.c, master/event_server.c, master/multi_server.c,
master/single_server.c, master/trigger_server.c, smtp/smtp.c, master/single_server.c, master/trigger_server.c, smtp/smtp.c,
pipe/pipe.c, virtual/virtual.c. pipe/pipe.c, virtual/virtual.c.
20140317
Feature: local_bounce_defer_filter support. Files:
global/bounce.[hc], global/defer.[hc], local/command.c,
local/file.c, local/bounce_workaround.c, local/local.c,
global/mail_params.h.
20140318
Refinement: don't throttle an SMTP destination when the new
smtp_bounce_defer_filter feature turns a soft bounce into
a hard bounce. File: smtp/smtp_trouble.c.

View File

@ -16,17 +16,17 @@ specifies the release date of a stable release or snapshot release.
If you upgrade from Postfix 2.10 or earlier, read RELEASE_NOTES-2.11 If you upgrade from Postfix 2.10 or earlier, read RELEASE_NOTES-2.11
before proceeding. before proceeding.
Major changes with snapshot 20140316 Major changes with snapshot 20140318
==================================== ====================================
Preliminary support to change arbitrary hard delivery errors into Support to change arbitrary hard delivery errors into soft errors
soft errors and vice versa, originally implemented for sites that and vice versa, or to replace the descriptive text in non-delivery
want to bounce mail when a remote SMTP server does not support notifications. This was originally implemented for sites that want
STARTTLS. to bounce mail when no remote SMTP server supports STARTTLS.
This feature is implemented as a filter that replaces the three-number This feature is implemented as a filter that replaces the three-number
enhanced status code and descriptive text in Postfix delivery agent enhanced status code and descriptive text in Postfix delivery agent
bounce/defer messages. bounce/defer messages. Note: this will not override "soft_bounce=yes".
The following example turns specific soft TLS errors into hard The following example turns specific soft TLS errors into hard
errors, by overriding the first number in the enhanced status code. errors, by overriding the first number in the enhanced status code.
@ -38,15 +38,20 @@ errors, by overriding the first number in the enhanced status code.
/^4(\.\d+\.\d+ TLS is required, but host \S+ refused to start TLS: .+)/ 5$1 /^4(\.\d+\.\d+ TLS is required, but host \S+ refused to start TLS: .+)/ 5$1
/^4(\.\d+\.\d+ TLS is required, but was not offered by host .+)/ 5$1 /^4(\.\d+\.\d+ TLS is required, but was not offered by host .+)/ 5$1
Support is currently limited to the lmtp(8), pipe(8), smtp(8) and This feature is supported in the lmtp(8), local(8), pipe(8), smtp(8)
virtual(8) delivery agents. The new main.cf parameters and default and virtual(8) delivery agents. That is, all delivery agents that
values are: actually deliver mail.
This feature will not be supported in the error(8) or retry(8) dummy
delivery agents, because lots of things would break.
The new main.cf parameters and default values are:
default_bounce_defer_filter = default_bounce_defer_filter =
lmtp_bounce_defer_filter = $default_bounce_defer_filter lmtp_bounce_defer_filter = $default_bounce_defer_filter
local_bounce_defer_filter = $default_bounce_defer_filter
pipe_bounce_defer_filter = $default_bounce_defer_filter pipe_bounce_defer_filter = $default_bounce_defer_filter
smtp_bounce_defer_filter = $default_bounce_defer_filter smtp_bounce_defer_filter = $default_bounce_defer_filter
virtual_bounce_defer_filter = $default_bounce_defer_filter virtual_bounce_defer_filter = $default_bounce_defer_filter
See the postconf(5) manpage for more details. Support for local(8) See the postconf(5) manpage for more details.
and qmgr(8) will be added as time is available.

View File

@ -152,10 +152,6 @@ SMTP(8) SMTP(8)
<b><a href="postconf.5.html#smtp_never_send_ehlo">smtp_never_send_ehlo</a> (no)</b> <b><a href="postconf.5.html#smtp_never_send_ehlo">smtp_never_send_ehlo</a> (no)</b>
Never send EHLO at the start of an SMTP session. Never send EHLO at the start of an SMTP session.
<b><a href="postconf.5.html#smtp_bounce_defer_filter">smtp_bounce_defer_filter</a> ($<a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a>)</b>
Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa.
<b><a href="postconf.5.html#smtp_defer_if_no_mx_address_found">smtp_defer_if_no_mx_address_found</a> (no)</b> <b><a href="postconf.5.html#smtp_defer_if_no_mx_address_found">smtp_defer_if_no_mx_address_found</a> (no)</b>
Defer mail delivery when no MX record resolves to an IP address. Defer mail delivery when no MX record resolves to an IP address.
@ -164,8 +160,8 @@ SMTP(8) SMTP(8)
will send via SMTP. will send via SMTP.
<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 sending How long the Postfix SMTP client pauses before sending
".&lt;CR&gt;&lt;LF&gt;" in order to work around the PIX firewall ".&lt;CR&gt;&lt;LF&gt;" in order to work around the PIX firewall
"&lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;" bug. "&lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;" bug.
<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>
@ -174,19 +170,19 @@ SMTP(8) SMTP(8)
delivery through firewalls with "smtp fixup" mode turned on. delivery through firewalls with "smtp fixup" mode turned on.
<b><a href="postconf.5.html#smtp_pix_workarounds">smtp_pix_workarounds</a> (disable_esmtp, delay_dotcrlf)</b> <b><a href="postconf.5.html#smtp_pix_workarounds">smtp_pix_workarounds</a> (disable_esmtp, delay_dotcrlf)</b>
A list that specifies zero or more workarounds for CISCO PIX A list that specifies zero or more workarounds for CISCO PIX
firewall bugs. firewall bugs.
<b><a href="postconf.5.html#smtp_pix_workaround_maps">smtp_pix_workaround_maps</a> (empty)</b> <b><a href="postconf.5.html#smtp_pix_workaround_maps">smtp_pix_workaround_maps</a> (empty)</b>
Lookup tables, indexed by the remote SMTP server address, with Lookup tables, indexed by the remote SMTP server address, with
per-destination workarounds for CISCO PIX firewall bugs. per-destination workarounds for CISCO PIX firewall bugs.
<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 Postfix SMTP client MAIL FROM and RCPT TO Quote addresses in Postfix SMTP client MAIL FROM and RCPT TO
commands as required by <a href="http://tools.ietf.org/html/rfc5321">RFC 5321</a>. commands as required by <a href="http://tools.ietf.org/html/rfc5321">RFC 5321</a>.
<b><a href="postconf.5.html#smtp_reply_filter">smtp_reply_filter</a> (empty)</b> <b><a href="postconf.5.html#smtp_reply_filter">smtp_reply_filter</a> (empty)</b>
A mechanism to transform replies from remote SMTP servers one A mechanism to transform replies from remote SMTP servers one
line at a time. line at a time.
<b><a href="postconf.5.html#smtp_skip_5xx_greeting">smtp_skip_5xx_greeting</a> (yes)</b> <b><a href="postconf.5.html#smtp_skip_5xx_greeting">smtp_skip_5xx_greeting</a> (yes)</b>
@ -198,68 +194,68 @@ SMTP(8) SMTP(8)
Available in Postfix version 2.0 and earlier: Available in Postfix version 2.0 and earlier:
<b><a href="postconf.5.html#smtp_skip_4xx_greeting">smtp_skip_4xx_greeting</a> (yes)</b> <b><a href="postconf.5.html#smtp_skip_4xx_greeting">smtp_skip_4xx_greeting</a> (yes)</b>
Skip SMTP servers that greet with a 4XX status code (go away, Skip SMTP servers that greet with a 4XX status code (go away,
try again later). try again later).
Available in Postfix version 2.2 and later: Available in Postfix version 2.2 and later:
<b><a href="postconf.5.html#smtp_discard_ehlo_keyword_address_maps">smtp_discard_ehlo_keyword_address_maps</a> (empty)</b> <b><a href="postconf.5.html#smtp_discard_ehlo_keyword_address_maps">smtp_discard_ehlo_keyword_address_maps</a> (empty)</b>
Lookup tables, indexed by the remote SMTP server address, with Lookup tables, indexed by the remote SMTP server address, with
case insensitive lists of EHLO keywords (pipelining, starttls, case insensitive lists of EHLO keywords (pipelining, starttls,
auth, etc.) that the Postfix SMTP client will ignore in the EHLO auth, etc.) that the Postfix SMTP client will ignore in the EHLO
response from a remote SMTP server. response from a remote SMTP server.
<b><a href="postconf.5.html#smtp_discard_ehlo_keywords">smtp_discard_ehlo_keywords</a> (empty)</b> <b><a href="postconf.5.html#smtp_discard_ehlo_keywords">smtp_discard_ehlo_keywords</a> (empty)</b>
A case insensitive list of EHLO keywords (pipelining, starttls, A case insensitive list of EHLO keywords (pipelining, starttls,
auth, etc.) that the Postfix SMTP client will ignore in the EHLO auth, etc.) that the Postfix SMTP client will ignore in the EHLO
response from a remote SMTP server. response from a remote SMTP server.
<b><a href="postconf.5.html#smtp_generic_maps">smtp_generic_maps</a> (empty)</b> <b><a href="postconf.5.html#smtp_generic_maps">smtp_generic_maps</a> (empty)</b>
Optional lookup tables that perform address rewriting in the Optional lookup tables that perform address rewriting in the
Postfix SMTP client, typically to transform a locally valid Postfix SMTP client, typically to transform a locally valid
address into a globally valid address when sending mail across address into a globally valid address when sending mail across
the Internet. the Internet.
Available in Postfix version 2.2.9 and later: Available in Postfix version 2.2.9 and later:
<b><a href="postconf.5.html#smtp_cname_overrides_servername">smtp_cname_overrides_servername</a> (version dependent)</b> <b><a href="postconf.5.html#smtp_cname_overrides_servername">smtp_cname_overrides_servername</a> (version dependent)</b>
When the remote SMTP servername is a DNS CNAME, replace the When the remote SMTP servername is a DNS CNAME, replace the
servername with the result from CNAME expansion for the purpose servername with the result from CNAME expansion for the purpose
of logging, SASL password lookup, TLS policy decisions, or TLS of logging, SASL password lookup, TLS policy decisions, or TLS
certificate verification. certificate verification.
Available in Postfix version 2.3 and later: Available in Postfix version 2.3 and later:
<b><a href="postconf.5.html#lmtp_discard_lhlo_keyword_address_maps">lmtp_discard_lhlo_keyword_address_maps</a> (empty)</b> <b><a href="postconf.5.html#lmtp_discard_lhlo_keyword_address_maps">lmtp_discard_lhlo_keyword_address_maps</a> (empty)</b>
Lookup tables, indexed by the remote LMTP server address, with Lookup tables, indexed by the remote LMTP server address, with
case insensitive lists of LHLO keywords (pipelining, starttls, case insensitive lists of LHLO keywords (pipelining, starttls,
auth, etc.) that the Postfix LMTP client will ignore in the LHLO auth, etc.) that the Postfix LMTP client will ignore in the LHLO
response from a remote LMTP server. response from a remote LMTP server.
<b><a href="postconf.5.html#lmtp_discard_lhlo_keywords">lmtp_discard_lhlo_keywords</a> (empty)</b> <b><a href="postconf.5.html#lmtp_discard_lhlo_keywords">lmtp_discard_lhlo_keywords</a> (empty)</b>
A case insensitive list of LHLO keywords (pipelining, starttls, A case insensitive list of LHLO keywords (pipelining, starttls,
auth, etc.) that the Postfix LMTP client will ignore in the LHLO auth, etc.) that the Postfix LMTP client will ignore in the LHLO
response from a remote LMTP server. response from a remote LMTP server.
Available in Postfix version 2.4.4 and later: Available in Postfix version 2.4.4 and later:
<b><a href="postconf.5.html#send_cyrus_sasl_authzid">send_cyrus_sasl_authzid</a> (no)</b> <b><a href="postconf.5.html#send_cyrus_sasl_authzid">send_cyrus_sasl_authzid</a> (no)</b>
When authenticating to a remote SMTP or LMTP server with the When authenticating to a remote SMTP or LMTP server with the
default setting "no", send no SASL authoriZation ID (authzid); default setting "no", send no SASL authoriZation ID (authzid);
send only the SASL authentiCation ID (authcid) plus the auth- send only the SASL authentiCation ID (authcid) plus the auth-
cid's password. cid's password.
Available in Postfix version 2.5 and later: Available in Postfix version 2.5 and later:
<b><a href="postconf.5.html#smtp_header_checks">smtp_header_checks</a> (empty)</b> <b><a href="postconf.5.html#smtp_header_checks">smtp_header_checks</a> (empty)</b>
Restricted <a href="header_checks.5.html"><b>header_checks</b>(5)</a> tables for the Postfix SMTP client. Restricted <a href="header_checks.5.html"><b>header_checks</b>(5)</a> tables for the Postfix SMTP client.
<b><a href="postconf.5.html#smtp_mime_header_checks">smtp_mime_header_checks</a> (empty)</b> <b><a href="postconf.5.html#smtp_mime_header_checks">smtp_mime_header_checks</a> (empty)</b>
Restricted <b><a href="postconf.5.html#mime_header_checks">mime_header_checks</a></b>(5) tables for the Postfix SMTP Restricted <b><a href="postconf.5.html#mime_header_checks">mime_header_checks</a></b>(5) tables for the Postfix SMTP
client. client.
<b><a href="postconf.5.html#smtp_nested_header_checks">smtp_nested_header_checks</a> (empty)</b> <b><a href="postconf.5.html#smtp_nested_header_checks">smtp_nested_header_checks</a> (empty)</b>
Restricted <b><a href="postconf.5.html#nested_header_checks">nested_header_checks</a></b>(5) tables for the Postfix SMTP Restricted <b><a href="postconf.5.html#nested_header_checks">nested_header_checks</a></b>(5) tables for the Postfix SMTP
client. client.
<b><a href="postconf.5.html#smtp_body_checks">smtp_body_checks</a> (empty)</b> <b><a href="postconf.5.html#smtp_body_checks">smtp_body_checks</a> (empty)</b>
@ -268,7 +264,7 @@ SMTP(8) SMTP(8)
Available in Postfix version 2.6 and later: Available in Postfix version 2.6 and later:
<b><a href="postconf.5.html#tcp_windowsize">tcp_windowsize</a> (0)</b> <b><a href="postconf.5.html#tcp_windowsize">tcp_windowsize</a> (0)</b>
An optional workaround for routers that break TCP window scal- An optional workaround for routers that break TCP window scal-
ing. ing.
Available in Postfix version 2.8 and later: Available in Postfix version 2.8 and later:
@ -279,14 +275,14 @@ SMTP(8) SMTP(8)
Available in Postfix version 2.9 and later: Available in Postfix version 2.9 and later:
<b><a href="postconf.5.html#smtp_per_record_deadline">smtp_per_record_deadline</a> (no)</b> <b><a href="postconf.5.html#smtp_per_record_deadline">smtp_per_record_deadline</a> (no)</b>
Change the behavior of the smtp_*_timeout time limits, from a Change the behavior of the smtp_*_timeout time limits, from a
time limit per read or write system call, to a time limit to time limit per read or write system call, to a time limit to
send or receive a complete record (an SMTP command line, SMTP send or receive a complete record (an SMTP command line, SMTP
response line, SMTP message content line, or TLS protocol mes- response line, SMTP message content line, or TLS protocol mes-
sage). sage).
<b><a href="postconf.5.html#smtp_send_dummy_mail_auth">smtp_send_dummy_mail_auth</a> (no)</b> <b><a href="postconf.5.html#smtp_send_dummy_mail_auth">smtp_send_dummy_mail_auth</a> (no)</b>
Whether or not to append the "AUTH=&lt;&gt;" option to the MAIL FROM Whether or not to append the "AUTH=&lt;&gt;" option to the MAIL FROM
command in SASL-authenticated SMTP sessions. command in SASL-authenticated SMTP sessions.
Available in Postfix version 2.11 and later: Available in Postfix version 2.11 and later:
@ -294,6 +290,12 @@ SMTP(8) SMTP(8)
<b><a href="postconf.5.html#smtp_dns_support_level">smtp_dns_support_level</a> (empty)</b> <b><a href="postconf.5.html#smtp_dns_support_level">smtp_dns_support_level</a> (empty)</b>
Level of DNS support in the Postfix SMTP client. Level of DNS support in the Postfix SMTP client.
Available in Postfix version 2.12 and later:
<b><a href="postconf.5.html#smtp_bounce_defer_filter">smtp_bounce_defer_filter</a> ($<a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a>)</b>
Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa in the <a href="smtp.8.html"><b>smtp</b>(8)</a> delivery agent.
<b>MIME PROCESSING CONTROLS</b> <b>MIME PROCESSING CONTROLS</b>
Available in Postfix version 2.0 and later: Available in Postfix version 2.0 and later:

View File

@ -358,39 +358,45 @@ LOCAL(8) LOCAL(8)
attribute, when delivering mail to a child alias that does not attribute, when delivering mail to a child alias that does not
have its own owner alias. have its own owner alias.
Available in Postfix version 2.12 and later:
<b><a href="postconf.5.html#local_bounce_defer_filter">local_bounce_defer_filter</a> ($<a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a>)</b>
Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa in the <a href="local.8.html"><b>local</b>(8)</a> delivery agent.
<b>DELIVERY METHOD CONTROLS</b> <b>DELIVERY METHOD CONTROLS</b>
The precedence of <a href="local.8.html"><b>local</b>(8)</a> delivery methods from high to low is: The precedence of <a href="local.8.html"><b>local</b>(8)</a> delivery methods from high to low is:
aliases, .forward files, <a href="postconf.5.html#mailbox_transport_maps">mailbox_transport_maps</a>, <a href="postconf.5.html#mailbox_transport">mailbox_transport</a>, aliases, .forward files, <a href="postconf.5.html#mailbox_transport_maps">mailbox_transport_maps</a>, <a href="postconf.5.html#mailbox_transport">mailbox_transport</a>,
<a href="postconf.5.html#mailbox_command_maps">mailbox_command_maps</a>, <a href="postconf.5.html#mailbox_command">mailbox_command</a>, <a href="postconf.5.html#home_mailbox">home_mailbox</a>, <a href="postconf.5.html#mail_spool_directory">mail_spool_direc</a>- <a href="postconf.5.html#mailbox_command_maps">mailbox_command_maps</a>, <a href="postconf.5.html#mailbox_command">mailbox_command</a>, <a href="postconf.5.html#home_mailbox">home_mailbox</a>, <a href="postconf.5.html#mail_spool_directory">mail_spool_direc</a>-
<a href="postconf.5.html#mail_spool_directory">tory</a>, <a href="postconf.5.html#fallback_transport_maps">fallback_transport_maps</a>, <a href="postconf.5.html#fallback_transport">fallback_transport</a>, and <a href="postconf.5.html#luser_relay">luser_relay</a>. <a href="postconf.5.html#mail_spool_directory">tory</a>, <a href="postconf.5.html#fallback_transport_maps">fallback_transport_maps</a>, <a href="postconf.5.html#fallback_transport">fallback_transport</a>, and <a href="postconf.5.html#luser_relay">luser_relay</a>.
<b><a href="postconf.5.html#alias_maps">alias_maps</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#alias_maps">alias_maps</a> (see 'postconf -d' output)</b>
The alias databases that are used for <a href="local.8.html"><b>local</b>(8)</a> delivery. The alias databases that are used for <a href="local.8.html"><b>local</b>(8)</a> delivery.
<b><a href="postconf.5.html#forward_path">forward_path</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#forward_path">forward_path</a> (see 'postconf -d' output)</b>
The <a href="local.8.html"><b>local</b>(8)</a> delivery agent search list for finding a .forward The <a href="local.8.html"><b>local</b>(8)</a> delivery agent search list for finding a .forward
file with user-specified delivery methods. file with user-specified delivery methods.
<b><a href="postconf.5.html#mailbox_transport_maps">mailbox_transport_maps</a> (empty)</b> <b><a href="postconf.5.html#mailbox_transport_maps">mailbox_transport_maps</a> (empty)</b>
Optional lookup tables with per-recipient message delivery Optional lookup tables with per-recipient message delivery
transports to use for <a href="local.8.html"><b>local</b>(8)</a> mailbox delivery, whether or not transports to use for <a href="local.8.html"><b>local</b>(8)</a> mailbox delivery, whether or not
the recipients are found in the UNIX passwd database. the recipients are found in the UNIX passwd database.
<b><a href="postconf.5.html#mailbox_transport">mailbox_transport</a> (empty)</b> <b><a href="postconf.5.html#mailbox_transport">mailbox_transport</a> (empty)</b>
Optional message delivery transport that the <a href="local.8.html"><b>local</b>(8)</a> delivery Optional message delivery transport that the <a href="local.8.html"><b>local</b>(8)</a> delivery
agent should use for mailbox delivery to all local recipients, agent should use for mailbox delivery to all local recipients,
whether or not they are found in the UNIX passwd database. whether or not they are found in the UNIX passwd database.
<b><a href="postconf.5.html#mailbox_command_maps">mailbox_command_maps</a> (empty)</b> <b><a href="postconf.5.html#mailbox_command_maps">mailbox_command_maps</a> (empty)</b>
Optional lookup tables with per-recipient external commands to Optional lookup tables with per-recipient external commands to
use for <a href="local.8.html"><b>local</b>(8)</a> mailbox delivery. use for <a href="local.8.html"><b>local</b>(8)</a> mailbox delivery.
<b><a href="postconf.5.html#mailbox_command">mailbox_command</a> (empty)</b> <b><a href="postconf.5.html#mailbox_command">mailbox_command</a> (empty)</b>
Optional external command that the <a href="local.8.html"><b>local</b>(8)</a> delivery agent Optional external command that the <a href="local.8.html"><b>local</b>(8)</a> delivery agent
should use for mailbox delivery. should use for mailbox delivery.
<b><a href="postconf.5.html#home_mailbox">home_mailbox</a> (empty)</b> <b><a href="postconf.5.html#home_mailbox">home_mailbox</a> (empty)</b>
Optional pathname of a mailbox file relative to a <a href="local.8.html"><b>local</b>(8)</a> Optional pathname of a mailbox file relative to a <a href="local.8.html"><b>local</b>(8)</a>
user's home directory. user's home directory.
<b><a href="postconf.5.html#mail_spool_directory">mail_spool_directory</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#mail_spool_directory">mail_spool_directory</a> (see 'postconf -d' output)</b>
@ -402,17 +408,17 @@ LOCAL(8) LOCAL(8)
not find in the <a href="aliases.5.html"><b>aliases</b>(5)</a> or UNIX password database. not find in the <a href="aliases.5.html"><b>aliases</b>(5)</a> or UNIX password database.
<b><a href="postconf.5.html#fallback_transport">fallback_transport</a> (empty)</b> <b><a href="postconf.5.html#fallback_transport">fallback_transport</a> (empty)</b>
Optional message delivery transport that the <a href="local.8.html"><b>local</b>(8)</a> delivery Optional message delivery transport that the <a href="local.8.html"><b>local</b>(8)</a> delivery
agent should use for names that are not found in the <a href="aliases.5.html"><b>aliases</b>(5)</a> agent should use for names that are not found in the <a href="aliases.5.html"><b>aliases</b>(5)</a>
or UNIX password database. or UNIX password database.
<b><a href="postconf.5.html#luser_relay">luser_relay</a> (empty)</b> <b><a href="postconf.5.html#luser_relay">luser_relay</a> (empty)</b>
Optional catch-all destination for unknown <a href="local.8.html"><b>local</b>(8)</a> recipients. Optional catch-all destination for unknown <a href="local.8.html"><b>local</b>(8)</a> recipients.
Available in Postfix version 2.2 and later: Available in Postfix version 2.2 and later:
<b><a href="postconf.5.html#command_execution_directory">command_execution_directory</a> (empty)</b> <b><a href="postconf.5.html#command_execution_directory">command_execution_directory</a> (empty)</b>
The <a href="local.8.html"><b>local</b>(8)</a> delivery agent working directory for delivery to The <a href="local.8.html"><b>local</b>(8)</a> delivery agent working directory for delivery to
external command. external command.
<b>MAILBOX LOCKING CONTROLS</b> <b>MAILBOX LOCKING CONTROLS</b>
@ -421,15 +427,15 @@ LOCAL(8) LOCAL(8)
mailbox file or <a href="bounce.8.html"><b>bounce</b>(8)</a> logfile. mailbox file or <a href="bounce.8.html"><b>bounce</b>(8)</a> logfile.
<b><a href="postconf.5.html#deliver_lock_delay">deliver_lock_delay</a> (1s)</b> <b><a href="postconf.5.html#deliver_lock_delay">deliver_lock_delay</a> (1s)</b>
The time between attempts to acquire an exclusive lock on a The time between attempts to acquire an exclusive lock on a
mailbox file or <a href="bounce.8.html"><b>bounce</b>(8)</a> logfile. mailbox file or <a href="bounce.8.html"><b>bounce</b>(8)</a> logfile.
<b><a href="postconf.5.html#stale_lock_time">stale_lock_time</a> (500s)</b> <b><a href="postconf.5.html#stale_lock_time">stale_lock_time</a> (500s)</b>
The time after which a stale exclusive mailbox lockfile is The time after which a stale exclusive mailbox lockfile is
removed. removed.
<b><a href="postconf.5.html#mailbox_delivery_lock">mailbox_delivery_lock</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#mailbox_delivery_lock">mailbox_delivery_lock</a> (see 'postconf -d' output)</b>
How to lock a UNIX-style <a href="local.8.html"><b>local</b>(8)</a> mailbox before attempting How to lock a UNIX-style <a href="local.8.html"><b>local</b>(8)</a> mailbox before attempting
delivery. delivery.
<b>RESOURCE AND RATE CONTROLS</b> <b>RESOURCE AND RATE CONTROLS</b>
@ -442,18 +448,18 @@ LOCAL(8) LOCAL(8)
<a href="showq.8.html"><b>showq</b>(8)</a> queue displays. <a href="showq.8.html"><b>showq</b>(8)</a> queue displays.
<b><a href="postconf.5.html#local_destination_concurrency_limit">local_destination_concurrency_limit</a> (2)</b> <b><a href="postconf.5.html#local_destination_concurrency_limit">local_destination_concurrency_limit</a> (2)</b>
The maximal number of parallel deliveries via the local mail The maximal number of parallel deliveries via the local mail
delivery transport to the same recipient (when "<a href="postconf.5.html#local_destination_recipient_limit">local_destina</a>- delivery transport to the same recipient (when "<a href="postconf.5.html#local_destination_recipient_limit">local_destina</a>-
<a href="postconf.5.html#local_destination_recipient_limit">tion_recipient_limit</a> = 1") or the maximal number of parallel <a href="postconf.5.html#local_destination_recipient_limit">tion_recipient_limit</a> = 1") or the maximal number of parallel
deliveries to the same local domain (when "<a href="postconf.5.html#local_destination_recipient_limit">local_destina</a>- deliveries to the same local domain (when "<a href="postconf.5.html#local_destination_recipient_limit">local_destina</a>-
<a href="postconf.5.html#local_destination_recipient_limit">tion_recipient_limit</a> &gt; 1"). <a href="postconf.5.html#local_destination_recipient_limit">tion_recipient_limit</a> &gt; 1").
<b><a href="postconf.5.html#local_destination_recipient_limit">local_destination_recipient_limit</a> (1)</b> <b><a href="postconf.5.html#local_destination_recipient_limit">local_destination_recipient_limit</a> (1)</b>
The maximal number of recipients per message delivery via the The maximal number of recipients per message delivery via the
local mail delivery transport. local mail delivery transport.
<b><a href="postconf.5.html#mailbox_size_limit">mailbox_size_limit</a> (51200000)</b> <b><a href="postconf.5.html#mailbox_size_limit">mailbox_size_limit</a> (51200000)</b>
The maximal size of any <a href="local.8.html"><b>local</b>(8)</a> individual mailbox or maildir The maximal size of any <a href="local.8.html"><b>local</b>(8)</a> individual mailbox or maildir
file, or zero (no limit). file, or zero (no limit).
<b>SECURITY CONTROLS</b> <b>SECURITY CONTROLS</b>
@ -464,49 +470,49 @@ LOCAL(8) LOCAL(8)
Restrict <a href="local.8.html"><b>local</b>(8)</a> mail delivery to external files. Restrict <a href="local.8.html"><b>local</b>(8)</a> mail delivery to external files.
<b><a href="postconf.5.html#command_expansion_filter">command_expansion_filter</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#command_expansion_filter">command_expansion_filter</a> (see 'postconf -d' output)</b>
Restrict the characters that the <a href="local.8.html"><b>local</b>(8)</a> delivery agent allows Restrict the characters that the <a href="local.8.html"><b>local</b>(8)</a> delivery agent allows
in $name expansions of $<a href="postconf.5.html#mailbox_command">mailbox_command</a> and $<a href="postconf.5.html#command_execution_directory">command_execu</a>- in $name expansions of $<a href="postconf.5.html#mailbox_command">mailbox_command</a> and $<a href="postconf.5.html#command_execution_directory">command_execu</a>-
<a href="postconf.5.html#command_execution_directory">tion_directory</a>. <a href="postconf.5.html#command_execution_directory">tion_directory</a>.
<b><a href="postconf.5.html#default_privs">default_privs</a> (nobody)</b> <b><a href="postconf.5.html#default_privs">default_privs</a> (nobody)</b>
The default rights used by the <a href="local.8.html"><b>local</b>(8)</a> delivery agent for The default rights used by the <a href="local.8.html"><b>local</b>(8)</a> delivery agent for
delivery to external file or command. delivery to external file or command.
<b><a href="postconf.5.html#forward_expansion_filter">forward_expansion_filter</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#forward_expansion_filter">forward_expansion_filter</a> (see 'postconf -d' output)</b>
Restrict the characters that the <a href="local.8.html"><b>local</b>(8)</a> delivery agent allows Restrict the characters that the <a href="local.8.html"><b>local</b>(8)</a> delivery agent allows
in $name expansions of $<a href="postconf.5.html#forward_path">forward_path</a>. in $name expansions of $<a href="postconf.5.html#forward_path">forward_path</a>.
Available in Postfix version 2.2 and later: Available in Postfix version 2.2 and later:
<b><a href="postconf.5.html#execution_directory_expansion_filter">execution_directory_expansion_filter</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#execution_directory_expansion_filter">execution_directory_expansion_filter</a> (see 'postconf -d' output)</b>
Restrict the characters that the <a href="local.8.html"><b>local</b>(8)</a> delivery agent allows Restrict the characters that the <a href="local.8.html"><b>local</b>(8)</a> delivery agent allows
in $name expansions of $<a href="postconf.5.html#command_execution_directory">command_execution_directory</a>. in $name expansions of $<a href="postconf.5.html#command_execution_directory">command_execution_directory</a>.
Available in Postfix version 2.5.3 and later: Available in Postfix version 2.5.3 and later:
<b><a href="postconf.5.html#strict_mailbox_ownership">strict_mailbox_ownership</a> (yes)</b> <b><a href="postconf.5.html#strict_mailbox_ownership">strict_mailbox_ownership</a> (yes)</b>
Defer delivery when a mailbox file is not owned by its recipi- Defer delivery when a mailbox file is not owned by its recipi-
ent. ent.
<b>MISCELLANEOUS CONTROLS</b> <b>MISCELLANEOUS CONTROLS</b>
<b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
The default location of the Postfix <a href="postconf.5.html">main.cf</a> and <a href="master.5.html">master.cf</a> con- The default location of the Postfix <a href="postconf.5.html">main.cf</a> and <a href="master.5.html">master.cf</a> con-
figuration files. figuration files.
<b><a href="postconf.5.html#daemon_timeout">daemon_timeout</a> (18000s)</b> <b><a href="postconf.5.html#daemon_timeout">daemon_timeout</a> (18000s)</b>
How much time a Postfix daemon process may take to handle a How much time a Postfix daemon process may take to handle a
request before it is terminated by a built-in watchdog timer. request before it is terminated by a built-in watchdog timer.
<b><a href="postconf.5.html#delay_logging_resolution_limit">delay_logging_resolution_limit</a> (2)</b> <b><a href="postconf.5.html#delay_logging_resolution_limit">delay_logging_resolution_limit</a> (2)</b>
The maximal number of digits after the decimal point when log- The maximal number of digits after the decimal point when log-
ging sub-second delay values. ging sub-second delay values.
<b><a href="postconf.5.html#export_environment">export_environment</a> (see 'postconf -d' output)</b> <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 The list of environment variables that a Postfix process will
export to non-Postfix processes. export to non-Postfix processes.
<b><a href="postconf.5.html#ipc_timeout">ipc_timeout</a> (3600s)</b> <b><a href="postconf.5.html#ipc_timeout">ipc_timeout</a> (3600s)</b>
The time limit for sending or receiving information over an The time limit for sending or receiving information over an
internal communication channel. internal communication channel.
<b><a href="postconf.5.html#local_command_shell">local_command_shell</a> (empty)</b> <b><a href="postconf.5.html#local_command_shell">local_command_shell</a> (empty)</b>
@ -514,7 +520,7 @@ LOCAL(8) LOCAL(8)
mand. mand.
<b><a href="postconf.5.html#max_idle">max_idle</a> (100s)</b> <b><a href="postconf.5.html#max_idle">max_idle</a> (100s)</b>
The maximum amount of time that an idle Postfix daemon process The maximum amount of time that an idle Postfix daemon process
waits for an incoming connection before terminating voluntarily. waits for an incoming connection before terminating voluntarily.
<b><a href="postconf.5.html#max_use">max_use</a> (100)</b> <b><a href="postconf.5.html#max_use">max_use</a> (100)</b>
@ -522,8 +528,8 @@ LOCAL(8) LOCAL(8)
process will service before terminating voluntarily. process will service before terminating voluntarily.
<b><a href="postconf.5.html#prepend_delivered_header">prepend_delivered_header</a> (command, file, forward)</b> <b><a href="postconf.5.html#prepend_delivered_header">prepend_delivered_header</a> (command, file, forward)</b>
The message delivery contexts where the Postfix <a href="local.8.html"><b>local</b>(8)</a> deliv- The message delivery contexts where the Postfix <a href="local.8.html"><b>local</b>(8)</a> deliv-
ery agent prepends a Delivered-To: message header with the ery agent prepends a Delivered-To: message header with the
address that the mail was delivered to. address that the mail was delivered to.
<b><a href="postconf.5.html#process_id">process_id</a> (read-only)</b> <b><a href="postconf.5.html#process_id">process_id</a> (read-only)</b>
@ -533,15 +539,15 @@ LOCAL(8) LOCAL(8)
The process name of a Postfix command or daemon process. The process name of a Postfix command or daemon process.
<b><a href="postconf.5.html#propagate_unmatched_extensions">propagate_unmatched_extensions</a> (canonical, virtual)</b> <b><a href="postconf.5.html#propagate_unmatched_extensions">propagate_unmatched_extensions</a> (canonical, virtual)</b>
What address lookup tables copy an address extension from the What address lookup tables copy an address extension from the
lookup key to the lookup result. lookup key to the lookup result.
<b><a href="postconf.5.html#queue_directory">queue_directory</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#queue_directory">queue_directory</a> (see 'postconf -d' output)</b>
The location of the Postfix top-level queue directory. The location of the Postfix top-level queue directory.
<b><a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a> (empty)</b> <b><a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a> (empty)</b>
The set of characters that can separate a user name from its The set of characters that can separate a user name from its
extension (example: user+foo), or a .forward file name from its extension (example: user+foo), or a .forward file name from its
extension (example: .forward+foo). extension (example: .forward+foo).
<b><a href="postconf.5.html#require_home_directory">require_home_directory</a> (no)</b> <b><a href="postconf.5.html#require_home_directory">require_home_directory</a> (no)</b>
@ -552,8 +558,8 @@ LOCAL(8) LOCAL(8)
The syslog facility of Postfix logging. The syslog facility of Postfix logging.
<b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
The mail system name that is prepended to the process name in The mail system name that is prepended to the process name in
syslog records, so that "smtpd" becomes, for example, "post- syslog records, so that "smtpd" becomes, for example, "post-
fix/smtpd". fix/smtpd".
<b>FILES</b> <b>FILES</b>
@ -576,10 +582,10 @@ LOCAL(8) LOCAL(8)
The Secure Mailer license must be distributed with this software. The Secure Mailer license must be distributed with this software.
<b>HISTORY</b> <b>HISTORY</b>
The <b>Delivered-To:</b> message header appears in the <b>qmail</b> system by Daniel The <b>Delivered-To:</b> message header appears in the <b>qmail</b> system by Daniel
Bernstein. Bernstein.
The <i>maildir</i> structure appears in the <b>qmail</b> system by Daniel Bernstein. The <i>maildir</i> structure appears in the <b>qmail</b> system by Daniel Bernstein.
<b>AUTHOR(S)</b> <b>AUTHOR(S)</b>
Wietse Venema Wietse Venema

View File

@ -425,10 +425,6 @@ PIPE(8) PIPE(8)
The maximal number of incoming connections that a Postfix daemon The maximal number of incoming connections that a Postfix daemon
process will service before terminating voluntarily. process will service before terminating voluntarily.
<b><a href="postconf.5.html#pipe_bounce_defer_filter">pipe_bounce_defer_filter</a> ($<a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a>)</b>
Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa.
<b><a href="postconf.5.html#process_id">process_id</a> (read-only)</b> <b><a href="postconf.5.html#process_id">process_id</a> (read-only)</b>
The process ID of a Postfix command or daemon process. The process ID of a Postfix command or daemon process.
@ -439,18 +435,24 @@ PIPE(8) PIPE(8)
The location of the Postfix top-level queue directory. The location of the Postfix top-level queue directory.
<b><a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a> (empty)</b> <b><a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a> (empty)</b>
The set of characters that can separate a user name from its The set of characters that can separate a user name from its
extension (example: user+foo), or a .forward file name from its extension (example: user+foo), or a .forward file name from its
extension (example: .forward+foo). extension (example: .forward+foo).
<b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b> <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
The syslog facility of Postfix logging. The syslog facility of Postfix logging.
<b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b> <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
The mail system name that is prepended to the process name in The mail system name that is prepended to the process name in
syslog records, so that "smtpd" becomes, for example, "post- syslog records, so that "smtpd" becomes, for example, "post-
fix/smtpd". fix/smtpd".
Available in Postfix version 2.12 and later:
<b><a href="postconf.5.html#pipe_bounce_defer_filter">pipe_bounce_defer_filter</a> ($<a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a>)</b>
Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa in the <a href="pipe.8.html"><b>pipe</b>(8)</a> delivery agent.
<b>SEE ALSO</b> <b>SEE ALSO</b>
<a href="qmgr.8.html">qmgr(8)</a>, queue manager <a href="qmgr.8.html">qmgr(8)</a>, queue manager
<a href="bounce.8.html">bounce(8)</a>, delivery status reports <a href="bounce.8.html">bounce(8)</a>, delivery status reports

View File

@ -5127,6 +5127,18 @@ This feature is available in Postfix 2.1 and later.
</p> </p>
</DD>
<DT><b><a name="local_bounce_defer_filter">local_bounce_defer_filter</a>
(default: $<a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a>)</b></DT><DD>
<p> Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa in the <a href="local.8.html">local(8)</a> delivery agent. See
<a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a> for details. </p>
<p> This feature is available in Postfix 2.12 and later. </p>
</DD> </DD>
<DT><b><a name="local_command_shell">local_command_shell</a> <DT><b><a name="local_command_shell">local_command_shell</a>
@ -7005,8 +7017,8 @@ This feature is available in Postfix 2.0 and later.
(default: $<a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a>)</b></DT><DD> (default: $<a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a>)</b></DT><DD>
<p> Optional filter to change arbitrary hard delivery errors into <p> Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa. See <a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a> for soft errors and vice versa in the <a href="pipe.8.html">pipe(8)</a> delivery agent. See
details. </p> <a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a> for details. </p>
<p> This feature is available in Postfix 2.12 and later. </p> <p> This feature is available in Postfix 2.12 and later. </p>
@ -9582,8 +9594,8 @@ that change the delivery time or destination are not available.
(default: $<a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a>)</b></DT><DD> (default: $<a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a>)</b></DT><DD>
<p> Optional filter to change arbitrary hard delivery errors into <p> Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa. See <a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a> for soft errors and vice versa in the <a href="smtp.8.html">smtp(8)</a> delivery agent. See
details. </p> <a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a> for details. </p>
<p> NOTE: This feature modifies error messages that are generated <p> NOTE: This feature modifies error messages that are generated
by the Postfix SMTP client, and that may or may not be derived from by the Postfix SMTP client, and that may or may not be derived from
@ -18211,8 +18223,8 @@ This feature is available in Postfix 2.1 and later.
(default: $<a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a>)</b></DT><DD> (default: $<a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a>)</b></DT><DD>
<p> Optional filter to change arbitrary hard delivery errors into <p> Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa. See <a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a> for soft errors and vice versa in the <a href="virtual.8.html">virtual(8)</a> delivery agent. See
details. </p> <a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a> for details. </p>
<p> This feature is available in Postfix 2.12 and later. </p> <p> This feature is available in Postfix 2.12 and later. </p>

View File

@ -152,10 +152,6 @@ SMTP(8) SMTP(8)
<b><a href="postconf.5.html#smtp_never_send_ehlo">smtp_never_send_ehlo</a> (no)</b> <b><a href="postconf.5.html#smtp_never_send_ehlo">smtp_never_send_ehlo</a> (no)</b>
Never send EHLO at the start of an SMTP session. Never send EHLO at the start of an SMTP session.
<b><a href="postconf.5.html#smtp_bounce_defer_filter">smtp_bounce_defer_filter</a> ($<a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a>)</b>
Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa.
<b><a href="postconf.5.html#smtp_defer_if_no_mx_address_found">smtp_defer_if_no_mx_address_found</a> (no)</b> <b><a href="postconf.5.html#smtp_defer_if_no_mx_address_found">smtp_defer_if_no_mx_address_found</a> (no)</b>
Defer mail delivery when no MX record resolves to an IP address. Defer mail delivery when no MX record resolves to an IP address.
@ -164,8 +160,8 @@ SMTP(8) SMTP(8)
will send via SMTP. will send via SMTP.
<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 sending How long the Postfix SMTP client pauses before sending
".&lt;CR&gt;&lt;LF&gt;" in order to work around the PIX firewall ".&lt;CR&gt;&lt;LF&gt;" in order to work around the PIX firewall
"&lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;" bug. "&lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;" bug.
<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>
@ -174,19 +170,19 @@ SMTP(8) SMTP(8)
delivery through firewalls with "smtp fixup" mode turned on. delivery through firewalls with "smtp fixup" mode turned on.
<b><a href="postconf.5.html#smtp_pix_workarounds">smtp_pix_workarounds</a> (disable_esmtp, delay_dotcrlf)</b> <b><a href="postconf.5.html#smtp_pix_workarounds">smtp_pix_workarounds</a> (disable_esmtp, delay_dotcrlf)</b>
A list that specifies zero or more workarounds for CISCO PIX A list that specifies zero or more workarounds for CISCO PIX
firewall bugs. firewall bugs.
<b><a href="postconf.5.html#smtp_pix_workaround_maps">smtp_pix_workaround_maps</a> (empty)</b> <b><a href="postconf.5.html#smtp_pix_workaround_maps">smtp_pix_workaround_maps</a> (empty)</b>
Lookup tables, indexed by the remote SMTP server address, with Lookup tables, indexed by the remote SMTP server address, with
per-destination workarounds for CISCO PIX firewall bugs. per-destination workarounds for CISCO PIX firewall bugs.
<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 Postfix SMTP client MAIL FROM and RCPT TO Quote addresses in Postfix SMTP client MAIL FROM and RCPT TO
commands as required by <a href="http://tools.ietf.org/html/rfc5321">RFC 5321</a>. commands as required by <a href="http://tools.ietf.org/html/rfc5321">RFC 5321</a>.
<b><a href="postconf.5.html#smtp_reply_filter">smtp_reply_filter</a> (empty)</b> <b><a href="postconf.5.html#smtp_reply_filter">smtp_reply_filter</a> (empty)</b>
A mechanism to transform replies from remote SMTP servers one A mechanism to transform replies from remote SMTP servers one
line at a time. line at a time.
<b><a href="postconf.5.html#smtp_skip_5xx_greeting">smtp_skip_5xx_greeting</a> (yes)</b> <b><a href="postconf.5.html#smtp_skip_5xx_greeting">smtp_skip_5xx_greeting</a> (yes)</b>
@ -198,68 +194,68 @@ SMTP(8) SMTP(8)
Available in Postfix version 2.0 and earlier: Available in Postfix version 2.0 and earlier:
<b><a href="postconf.5.html#smtp_skip_4xx_greeting">smtp_skip_4xx_greeting</a> (yes)</b> <b><a href="postconf.5.html#smtp_skip_4xx_greeting">smtp_skip_4xx_greeting</a> (yes)</b>
Skip SMTP servers that greet with a 4XX status code (go away, Skip SMTP servers that greet with a 4XX status code (go away,
try again later). try again later).
Available in Postfix version 2.2 and later: Available in Postfix version 2.2 and later:
<b><a href="postconf.5.html#smtp_discard_ehlo_keyword_address_maps">smtp_discard_ehlo_keyword_address_maps</a> (empty)</b> <b><a href="postconf.5.html#smtp_discard_ehlo_keyword_address_maps">smtp_discard_ehlo_keyword_address_maps</a> (empty)</b>
Lookup tables, indexed by the remote SMTP server address, with Lookup tables, indexed by the remote SMTP server address, with
case insensitive lists of EHLO keywords (pipelining, starttls, case insensitive lists of EHLO keywords (pipelining, starttls,
auth, etc.) that the Postfix SMTP client will ignore in the EHLO auth, etc.) that the Postfix SMTP client will ignore in the EHLO
response from a remote SMTP server. response from a remote SMTP server.
<b><a href="postconf.5.html#smtp_discard_ehlo_keywords">smtp_discard_ehlo_keywords</a> (empty)</b> <b><a href="postconf.5.html#smtp_discard_ehlo_keywords">smtp_discard_ehlo_keywords</a> (empty)</b>
A case insensitive list of EHLO keywords (pipelining, starttls, A case insensitive list of EHLO keywords (pipelining, starttls,
auth, etc.) that the Postfix SMTP client will ignore in the EHLO auth, etc.) that the Postfix SMTP client will ignore in the EHLO
response from a remote SMTP server. response from a remote SMTP server.
<b><a href="postconf.5.html#smtp_generic_maps">smtp_generic_maps</a> (empty)</b> <b><a href="postconf.5.html#smtp_generic_maps">smtp_generic_maps</a> (empty)</b>
Optional lookup tables that perform address rewriting in the Optional lookup tables that perform address rewriting in the
Postfix SMTP client, typically to transform a locally valid Postfix SMTP client, typically to transform a locally valid
address into a globally valid address when sending mail across address into a globally valid address when sending mail across
the Internet. the Internet.
Available in Postfix version 2.2.9 and later: Available in Postfix version 2.2.9 and later:
<b><a href="postconf.5.html#smtp_cname_overrides_servername">smtp_cname_overrides_servername</a> (version dependent)</b> <b><a href="postconf.5.html#smtp_cname_overrides_servername">smtp_cname_overrides_servername</a> (version dependent)</b>
When the remote SMTP servername is a DNS CNAME, replace the When the remote SMTP servername is a DNS CNAME, replace the
servername with the result from CNAME expansion for the purpose servername with the result from CNAME expansion for the purpose
of logging, SASL password lookup, TLS policy decisions, or TLS of logging, SASL password lookup, TLS policy decisions, or TLS
certificate verification. certificate verification.
Available in Postfix version 2.3 and later: Available in Postfix version 2.3 and later:
<b><a href="postconf.5.html#lmtp_discard_lhlo_keyword_address_maps">lmtp_discard_lhlo_keyword_address_maps</a> (empty)</b> <b><a href="postconf.5.html#lmtp_discard_lhlo_keyword_address_maps">lmtp_discard_lhlo_keyword_address_maps</a> (empty)</b>
Lookup tables, indexed by the remote LMTP server address, with Lookup tables, indexed by the remote LMTP server address, with
case insensitive lists of LHLO keywords (pipelining, starttls, case insensitive lists of LHLO keywords (pipelining, starttls,
auth, etc.) that the Postfix LMTP client will ignore in the LHLO auth, etc.) that the Postfix LMTP client will ignore in the LHLO
response from a remote LMTP server. response from a remote LMTP server.
<b><a href="postconf.5.html#lmtp_discard_lhlo_keywords">lmtp_discard_lhlo_keywords</a> (empty)</b> <b><a href="postconf.5.html#lmtp_discard_lhlo_keywords">lmtp_discard_lhlo_keywords</a> (empty)</b>
A case insensitive list of LHLO keywords (pipelining, starttls, A case insensitive list of LHLO keywords (pipelining, starttls,
auth, etc.) that the Postfix LMTP client will ignore in the LHLO auth, etc.) that the Postfix LMTP client will ignore in the LHLO
response from a remote LMTP server. response from a remote LMTP server.
Available in Postfix version 2.4.4 and later: Available in Postfix version 2.4.4 and later:
<b><a href="postconf.5.html#send_cyrus_sasl_authzid">send_cyrus_sasl_authzid</a> (no)</b> <b><a href="postconf.5.html#send_cyrus_sasl_authzid">send_cyrus_sasl_authzid</a> (no)</b>
When authenticating to a remote SMTP or LMTP server with the When authenticating to a remote SMTP or LMTP server with the
default setting "no", send no SASL authoriZation ID (authzid); default setting "no", send no SASL authoriZation ID (authzid);
send only the SASL authentiCation ID (authcid) plus the auth- send only the SASL authentiCation ID (authcid) plus the auth-
cid's password. cid's password.
Available in Postfix version 2.5 and later: Available in Postfix version 2.5 and later:
<b><a href="postconf.5.html#smtp_header_checks">smtp_header_checks</a> (empty)</b> <b><a href="postconf.5.html#smtp_header_checks">smtp_header_checks</a> (empty)</b>
Restricted <a href="header_checks.5.html"><b>header_checks</b>(5)</a> tables for the Postfix SMTP client. Restricted <a href="header_checks.5.html"><b>header_checks</b>(5)</a> tables for the Postfix SMTP client.
<b><a href="postconf.5.html#smtp_mime_header_checks">smtp_mime_header_checks</a> (empty)</b> <b><a href="postconf.5.html#smtp_mime_header_checks">smtp_mime_header_checks</a> (empty)</b>
Restricted <b><a href="postconf.5.html#mime_header_checks">mime_header_checks</a></b>(5) tables for the Postfix SMTP Restricted <b><a href="postconf.5.html#mime_header_checks">mime_header_checks</a></b>(5) tables for the Postfix SMTP
client. client.
<b><a href="postconf.5.html#smtp_nested_header_checks">smtp_nested_header_checks</a> (empty)</b> <b><a href="postconf.5.html#smtp_nested_header_checks">smtp_nested_header_checks</a> (empty)</b>
Restricted <b><a href="postconf.5.html#nested_header_checks">nested_header_checks</a></b>(5) tables for the Postfix SMTP Restricted <b><a href="postconf.5.html#nested_header_checks">nested_header_checks</a></b>(5) tables for the Postfix SMTP
client. client.
<b><a href="postconf.5.html#smtp_body_checks">smtp_body_checks</a> (empty)</b> <b><a href="postconf.5.html#smtp_body_checks">smtp_body_checks</a> (empty)</b>
@ -268,7 +264,7 @@ SMTP(8) SMTP(8)
Available in Postfix version 2.6 and later: Available in Postfix version 2.6 and later:
<b><a href="postconf.5.html#tcp_windowsize">tcp_windowsize</a> (0)</b> <b><a href="postconf.5.html#tcp_windowsize">tcp_windowsize</a> (0)</b>
An optional workaround for routers that break TCP window scal- An optional workaround for routers that break TCP window scal-
ing. ing.
Available in Postfix version 2.8 and later: Available in Postfix version 2.8 and later:
@ -279,14 +275,14 @@ SMTP(8) SMTP(8)
Available in Postfix version 2.9 and later: Available in Postfix version 2.9 and later:
<b><a href="postconf.5.html#smtp_per_record_deadline">smtp_per_record_deadline</a> (no)</b> <b><a href="postconf.5.html#smtp_per_record_deadline">smtp_per_record_deadline</a> (no)</b>
Change the behavior of the smtp_*_timeout time limits, from a Change the behavior of the smtp_*_timeout time limits, from a
time limit per read or write system call, to a time limit to time limit per read or write system call, to a time limit to
send or receive a complete record (an SMTP command line, SMTP send or receive a complete record (an SMTP command line, SMTP
response line, SMTP message content line, or TLS protocol mes- response line, SMTP message content line, or TLS protocol mes-
sage). sage).
<b><a href="postconf.5.html#smtp_send_dummy_mail_auth">smtp_send_dummy_mail_auth</a> (no)</b> <b><a href="postconf.5.html#smtp_send_dummy_mail_auth">smtp_send_dummy_mail_auth</a> (no)</b>
Whether or not to append the "AUTH=&lt;&gt;" option to the MAIL FROM Whether or not to append the "AUTH=&lt;&gt;" option to the MAIL FROM
command in SASL-authenticated SMTP sessions. command in SASL-authenticated SMTP sessions.
Available in Postfix version 2.11 and later: Available in Postfix version 2.11 and later:
@ -294,6 +290,12 @@ SMTP(8) SMTP(8)
<b><a href="postconf.5.html#smtp_dns_support_level">smtp_dns_support_level</a> (empty)</b> <b><a href="postconf.5.html#smtp_dns_support_level">smtp_dns_support_level</a> (empty)</b>
Level of DNS support in the Postfix SMTP client. Level of DNS support in the Postfix SMTP client.
Available in Postfix version 2.12 and later:
<b><a href="postconf.5.html#smtp_bounce_defer_filter">smtp_bounce_defer_filter</a> ($<a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a>)</b>
Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa in the <a href="smtp.8.html"><b>smtp</b>(8)</a> delivery agent.
<b>MIME PROCESSING CONTROLS</b> <b>MIME PROCESSING CONTROLS</b>
Available in Postfix version 2.0 and later: Available in Postfix version 2.0 and later:

View File

@ -261,9 +261,11 @@ VIRTUAL(8) VIRTUAL(8)
syslog records, so that "smtpd" becomes, for example, "post- syslog records, so that "smtpd" becomes, for example, "post-
fix/smtpd". fix/smtpd".
Available in Postfix version 2.12 and later:
<b><a href="postconf.5.html#virtual_bounce_defer_filter">virtual_bounce_defer_filter</a> ($<a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a>)</b> <b><a href="postconf.5.html#virtual_bounce_defer_filter">virtual_bounce_defer_filter</a> ($<a href="postconf.5.html#default_bounce_defer_filter">default_bounce_defer_filter</a>)</b>
Optional filter to change arbitrary hard delivery errors into Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa. soft errors and vice versa in the <a href="virtual.8.html"><b>virtual</b>(8)</a> delivery agent.
<b>SEE ALSO</b> <b>SEE ALSO</b>
<a href="qmgr.8.html">qmgr(8)</a>, queue manager <a href="qmgr.8.html">qmgr(8)</a>, queue manager

View File

@ -2929,6 +2929,12 @@ Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
The default time unit is s (seconds). The default time unit is s (seconds).
.PP .PP
This feature is available in Postfix 2.1 and later. This feature is available in Postfix 2.1 and later.
.SH local_bounce_defer_filter (default: $default_bounce_defer_filter)
Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa in the \fBlocal\fR(8) delivery agent. See
default_bounce_defer_filter for details.
.PP
This feature is available in Postfix 2.12 and later.
.SH local_command_shell (default: empty) .SH local_command_shell (default: empty)
Optional shell program for \fBlocal\fR(8) delivery to non-Postfix command. Optional shell program for \fBlocal\fR(8) delivery to non-Postfix command.
By default, non-Postfix commands are executed directly; commands By default, non-Postfix commands are executed directly; commands
@ -4169,8 +4175,8 @@ submissions from the Postfix maildrop queue.
This feature is available in Postfix 2.0 and later. This feature is available in Postfix 2.0 and later.
.SH pipe_bounce_defer_filter (default: $default_bounce_defer_filter) .SH pipe_bounce_defer_filter (default: $default_bounce_defer_filter)
Optional filter to change arbitrary hard delivery errors into Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa. See default_bounce_defer_filter for soft errors and vice versa in the \fBpipe\fR(8) delivery agent. See
details. default_bounce_defer_filter for details.
.PP .PP
This feature is available in Postfix 2.12 and later. This feature is available in Postfix 2.12 and later.
.SH plaintext_reject_code (default: 450) .SH plaintext_reject_code (default: 450)
@ -5848,8 +5854,8 @@ that change the delivery time or destination are not available.
This feature is available in Postfix 2.5 and later. This feature is available in Postfix 2.5 and later.
.SH smtp_bounce_defer_filter (default: $default_bounce_defer_filter) .SH smtp_bounce_defer_filter (default: $default_bounce_defer_filter)
Optional filter to change arbitrary hard delivery errors into Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa. See default_bounce_defer_filter for soft errors and vice versa in the \fBsmtp\fR(8) delivery agent. See
details. default_bounce_defer_filter for details.
.PP .PP
NOTE: This feature modifies error messages that are generated NOTE: This feature modifies error messages that are generated
by the Postfix SMTP client, and that may or may not be derived from by the Postfix SMTP client, and that may or may not be derived from
@ -12334,8 +12340,8 @@ change in the future.
This feature is available in Postfix 2.1 and later. This feature is available in Postfix 2.1 and later.
.SH virtual_bounce_defer_filter (default: $default_bounce_defer_filter) .SH virtual_bounce_defer_filter (default: $default_bounce_defer_filter)
Optional filter to change arbitrary hard delivery errors into Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa. See default_bounce_defer_filter for soft errors and vice versa in the \fBvirtual\fR(8) delivery agent. See
details. default_bounce_defer_filter for details.
.PP .PP
This feature is available in Postfix 2.12 and later. This feature is available in Postfix 2.12 and later.
.SH virtual_destination_concurrency_limit (default: $default_destination_concurrency_limit) .SH virtual_destination_concurrency_limit (default: $default_destination_concurrency_limit)

View File

@ -419,6 +419,11 @@ Defer delivery when a mailbox file is not owned by its recipient.
Reset the \fBlocal\fR(8) delivery agent's idea of the owner-alias Reset the \fBlocal\fR(8) delivery agent's idea of the owner-alias
attribute, when delivering mail to a child alias that does not have attribute, when delivering mail to a child alias that does not have
its own owner alias. its own owner alias.
.PP
Available in Postfix version 2.12 and later:
.IP "\fBlocal_bounce_defer_filter ($default_bounce_defer_filter)\fR"
Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa in the \fBlocal\fR(8) delivery agent.
.SH "DELIVERY METHOD CONTROLS" .SH "DELIVERY METHOD CONTROLS"
.na .na
.nf .nf

View File

@ -409,9 +409,6 @@ for an incoming connection before terminating voluntarily.
.IP "\fBmax_use (100)\fR" .IP "\fBmax_use (100)\fR"
The maximal number of incoming connections that a Postfix daemon The maximal number of incoming connections that a Postfix daemon
process will service before terminating voluntarily. process will service before terminating voluntarily.
.IP "\fBpipe_bounce_defer_filter ($default_bounce_defer_filter)\fR"
Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa.
.IP "\fBprocess_id (read-only)\fR" .IP "\fBprocess_id (read-only)\fR"
The process ID of a Postfix command or daemon process. The process ID of a Postfix command or daemon process.
.IP "\fBprocess_name (read-only)\fR" .IP "\fBprocess_name (read-only)\fR"
@ -427,6 +424,11 @@ The syslog facility of Postfix logging.
.IP "\fBsyslog_name (see 'postconf -d' output)\fR" .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
The mail system name that is prepended to the process name in syslog The mail system name that is prepended to the process name in syslog
records, so that "smtpd" becomes, for example, "postfix/smtpd". records, so that "smtpd" becomes, for example, "postfix/smtpd".
.PP
Available in Postfix version 2.12 and later:
.IP "\fBpipe_bounce_defer_filter ($default_bounce_defer_filter)\fR"
Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa in the \fBpipe\fR(8) delivery agent.
.SH "SEE ALSO" .SH "SEE ALSO"
.na .na
.nf .nf

View File

@ -163,9 +163,6 @@ Ignore DNS MX lookups that produce no response.
Always send EHLO at the start of an SMTP session. Always send EHLO at the start of an SMTP session.
.IP "\fBsmtp_never_send_ehlo (no)\fR" .IP "\fBsmtp_never_send_ehlo (no)\fR"
Never send EHLO at the start of an SMTP session. Never send EHLO at the start of an SMTP session.
.IP "\fBsmtp_bounce_defer_filter ($default_bounce_defer_filter)\fR"
Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa.
.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_line_length_limit (998)\fR" .IP "\fBsmtp_line_length_limit (998)\fR"
@ -277,6 +274,11 @@ FROM command in SASL-authenticated SMTP sessions.
Available in Postfix version 2.11 and later: Available in Postfix version 2.11 and later:
.IP "\fBsmtp_dns_support_level (empty)\fR" .IP "\fBsmtp_dns_support_level (empty)\fR"
Level of DNS support in the Postfix SMTP client. Level of DNS support in the Postfix SMTP client.
.PP
Available in Postfix version 2.12 and later:
.IP "\fBsmtp_bounce_defer_filter ($default_bounce_defer_filter)\fR"
Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa in the \fBsmtp\fR(8) delivery agent.
.SH "MIME PROCESSING CONTROLS" .SH "MIME PROCESSING CONTROLS"
.na .na
.nf .nf

View File

@ -281,9 +281,11 @@ The syslog facility of Postfix logging.
.IP "\fBsyslog_name (see 'postconf -d' output)\fR" .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
The mail system name that is prepended to the process name in syslog The mail system name that is prepended to the process name in syslog
records, so that "smtpd" becomes, for example, "postfix/smtpd". records, so that "smtpd" becomes, for example, "postfix/smtpd".
.PP
Available in Postfix version 2.12 and later:
.IP "\fBvirtual_bounce_defer_filter ($default_bounce_defer_filter)\fR" .IP "\fBvirtual_bounce_defer_filter ($default_bounce_defer_filter)\fR"
Optional filter to change arbitrary hard delivery errors into Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa. soft errors and vice versa in the \fBvirtual\fR(8) delivery agent.
.SH "SEE ALSO" .SH "SEE ALSO"
.na .na
.nf .nf

View File

@ -307,6 +307,7 @@ while (<>) {
s;\blmtp_skip_quit_response\b;<a href="postconf.5.html#lmtp_skip_quit_response">$&</a>;g; s;\blmtp_skip_quit_response\b;<a href="postconf.5.html#lmtp_skip_quit_response">$&</a>;g;
s;\blmtp_tcp_port\b;<a href="postconf.5.html#lmtp_tcp_port">$&</a>;g; s;\blmtp_tcp_port\b;<a href="postconf.5.html#lmtp_tcp_port">$&</a>;g;
s;\blmtp_xforward_timeout\b;<a href="postconf.5.html#lmtp_xforward_timeout">$&</a>;g; s;\blmtp_xforward_timeout\b;<a href="postconf.5.html#lmtp_xforward_timeout">$&</a>;g;
s;\blocal_bounce_defer_filter\b;<a href="postconf.5.html#local_bounce_defer_filter">$&</a>;g;
s;\blocal_command_shell\b;<a href="postconf.5.html#local_command_shell">$&</a>;g; s;\blocal_command_shell\b;<a href="postconf.5.html#local_command_shell">$&</a>;g;
s;\blocal_destina[-</bB>]*\n* *[<bB>]*tion_concurrency_limit\b;<a href="postconf.5.html#local_destination_concurrency_limit">$&</a>;g; s;\blocal_destina[-</bB>]*\n* *[<bB>]*tion_concurrency_limit\b;<a href="postconf.5.html#local_destination_concurrency_limit">$&</a>;g;
s;\blocal_destina[-</bB>]*\n* *[<bB>]*tion_recip[-</bB>]*\n* *[<bB>]*ient_limit\b;<a href="postconf.5.html#local_destination_recipient_limit">$&</a>;g; s;\blocal_destina[-</bB>]*\n* *[<bB>]*tion_recip[-</bB>]*\n* *[<bB>]*ient_limit\b;<a href="postconf.5.html#local_destination_recipient_limit">$&</a>;g;

View File

@ -15683,8 +15683,8 @@ sender. </p>
%PARAM smtp_bounce_defer_filter $default_bounce_defer_filter %PARAM smtp_bounce_defer_filter $default_bounce_defer_filter
<p> Optional filter to change arbitrary hard delivery errors into <p> Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa. See default_bounce_defer_filter for soft errors and vice versa in the smtp(8) delivery agent. See
details. </p> default_bounce_defer_filter for details. </p>
<p> NOTE: This feature modifies error messages that are generated <p> NOTE: This feature modifies error messages that are generated
by the Postfix SMTP client, and that may or may not be derived from by the Postfix SMTP client, and that may or may not be derived from
@ -15702,15 +15702,23 @@ configuration parameter. See there for details. </p>
%PARAM pipe_bounce_defer_filter $default_bounce_defer_filter %PARAM pipe_bounce_defer_filter $default_bounce_defer_filter
<p> Optional filter to change arbitrary hard delivery errors into <p> Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa. See default_bounce_defer_filter for soft errors and vice versa in the pipe(8) delivery agent. See
details. </p> default_bounce_defer_filter for details. </p>
<p> This feature is available in Postfix 2.12 and later. </p> <p> This feature is available in Postfix 2.12 and later. </p>
%PARAM virtual_bounce_defer_filter $default_bounce_defer_filter %PARAM virtual_bounce_defer_filter $default_bounce_defer_filter
<p> Optional filter to change arbitrary hard delivery errors into <p> Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa. See default_bounce_defer_filter for soft errors and vice versa in the virtual(8) delivery agent. See
details. </p> default_bounce_defer_filter for details. </p>
<p> This feature is available in Postfix 2.12 and later. </p>
%PARAM local_bounce_defer_filter $default_bounce_defer_filter
<p> Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa in the local(8) delivery agent. See
default_bounce_defer_filter for details. </p>
<p> This feature is available in Postfix 2.12 and later. </p> <p> This feature is available in Postfix 2.12 and later. </p>

View File

@ -90,8 +90,8 @@
/* /*
/* bounce_client_init() initializes an optional DSN filter. /* bounce_client_init() initializes an optional DSN filter.
/* /*
/* bounce_append_intern() is for use after the DSN filter. DSN /* bounce_append_intern() and bounce_one_intern() are for use
/* filtering is not yet supported for bounce_one(). /* after the DSN filter.
/* /*
/* Arguments: /* Arguments:
/* .IP flags /* .IP flags
@ -393,7 +393,7 @@ int bounce_one(int flags, const char *queue, const char *id,
const char *relay, DSN *dsn) const char *relay, DSN *dsn)
{ {
DSN my_dsn = *dsn; DSN my_dsn = *dsn;
int status; DSN *dsn_res;
/* /*
* Sanity check. * Sanity check.
@ -403,6 +403,30 @@ int bounce_one(int flags, const char *queue, const char *id,
my_dsn.status = "5.0.0"; my_dsn.status = "5.0.0";
} }
/*
* DSN filter (Postfix 2.12).
*/
if (bounce_defer_filter != 0
&& (dsn_res = ndr_filter_lookup(bounce_defer_filter, &my_dsn)) != 0) {
if (dsn_res->status[0] == '4')
return (defer_append_intern(flags, id, stats, rcpt, relay, dsn_res));
my_dsn = *dsn_res;
}
return (bounce_one_intern(flags, queue, id, encoding, sender, dsn_envid,
dsn_ret, stats, rcpt, relay, &my_dsn));
}
/* bounce_one_intern - send notice for one recipient */
int bounce_one_intern(int flags, const char *queue, const char *id,
const char *encoding, const char *sender,
const char *dsn_envid, int dsn_ret,
MSG_STATS *stats, RECIPIENT *rcpt,
const char *relay, DSN *dsn)
{
DSN my_dsn = *dsn;
int status;
/* /*
* MTA-requested address verification information is stored in the verify * MTA-requested address verification information is stored in the verify
* service database. * service database.
@ -429,7 +453,7 @@ int bounce_one(int flags, const char *queue, const char *id,
* based procedure. * based procedure.
*/ */
else if (var_soft_bounce) { else if (var_soft_bounce) {
return (bounce_append(flags, id, stats, rcpt, relay, &my_dsn)); return (bounce_append_intern(flags, id, stats, rcpt, relay, &my_dsn));
} }
/* /*
@ -469,7 +493,7 @@ int bounce_one(int flags, const char *queue, const char *id,
vstring_sprintf(junk, "%s or %s service failure", vstring_sprintf(junk, "%s or %s service failure",
var_bounce_service, var_trace_service); var_bounce_service, var_trace_service);
my_dsn.reason = vstring_str(junk); my_dsn.reason = vstring_str(junk);
status = defer_append(flags, id, stats, rcpt, relay, &my_dsn); status = defer_append_intern(flags, id, stats, rcpt, relay, &my_dsn);
vstring_free(junk); vstring_free(junk);
} else { } else {
status = -1; status = -1;

View File

@ -31,6 +31,20 @@
/* const char *sender; /* const char *sender;
/* const char *dsn_envid; /* const char *dsn_envid;
/* int dsn_ret; /* int dsn_ret;
/*
/* int defer_one(flags, queue, id, encoding, sender, envid, ret,
/* stats, recipient, relay, dsn)
/* int flags;
/* const char *queue;
/* const char *id;
/* const char *encoding;
/* const char *sender;
/* const char *dsn_envid;
/* int dsn_ret;
/* MSG_STATS *stats;
/* RECIPIENT *rcpt;
/* const char *relay;
/* DSN *dsn;
/* INTERNAL API /* INTERNAL API
/* int defer_append_intern(flags, id, stats, rcpt, relay, dsn) /* int defer_append_intern(flags, id, stats, rcpt, relay, dsn)
/* int flags; /* int flags;
@ -63,6 +77,9 @@
/* question has been deferred. The defer log is not deleted, /* question has been deferred. The defer log is not deleted,
/* and no recipients are deleted from the original queue file. /* and no recipients are deleted from the original queue file.
/* /*
/* defer_one() implements ndr_filter(3) compatibility for the
/* bounce_one() routine.
/*
/* defer_append_intern() is for use after the DSN filter. /* defer_append_intern() is for use after the DSN filter.
/* /*
/* Arguments: /* Arguments:
@ -311,3 +328,36 @@ int defer_warn(int flags, const char *queue, const char *id,
return (-1); return (-1);
} }
} }
/* defer_one - defer mail for one recipient */
int defer_one(int flags, const char *queue, const char *id,
const char *encoding, const char *sender,
const char *dsn_envid, int dsn_ret,
MSG_STATS *stats, RECIPIENT *rcpt,
const char *relay, DSN *dsn)
{
DSN my_dsn = *dsn;
DSN *dsn_res;
/*
* Sanity check.
*/
if (my_dsn.status[0] != '4' || !dsn_valid(my_dsn.status)) {
msg_warn("defer_one: ignoring dsn code \"%s\"", my_dsn.status);
my_dsn.status = "4.0.0";
}
/*
* DSN filter (Postfix 2.12).
*/
if (bounce_defer_filter != 0
&& (dsn_res = ndr_filter_lookup(bounce_defer_filter, &my_dsn)) != 0) {
if (dsn_res->status[0] == '5')
return (bounce_one_intern(flags, queue, id, encoding, sender,
dsn_envid, dsn_ret, stats, rcpt,
relay, dsn_res));
my_dsn = *dsn_res;
}
return (defer_append_intern(flags, id, stats, rcpt, relay, &my_dsn));
}

View File

@ -25,6 +25,10 @@ extern int defer_flush(int, const char *, const char *, const char *,
const char *, const char *, int); const char *, const char *, int);
extern int defer_warn(int, const char *, const char *, const char *, extern int defer_warn(int, const char *, const char *, const char *,
const char *, int); const char *, int);
extern int defer_one(int, const char *, const char *, const char *,
const char *, const char *,
int, MSG_STATS *, RECIPIENT *,
const char *, DSN *);
/* /*
* Start of private API. * Start of private API.

View File

@ -3765,6 +3765,10 @@ extern char *var_pipe_ndr_filter;
#define DEF_VIRT_NDR_FILTER "$" VAR_NDR_FILTER #define DEF_VIRT_NDR_FILTER "$" VAR_NDR_FILTER
extern char *var_virt_ndr_filter; extern char *var_virt_ndr_filter;
#define VAR_LOCAL_NDR_FILTER "local_bounce_defer_filter"
#define DEF_LOCAL_NDR_FILTER "$" VAR_NDR_FILTER
extern char *var_local_ndr_filter;
/* LICENSE /* LICENSE
/* .ad /* .ad
/* .fi /* .fi

View File

@ -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 "20140316" #define MAIL_RELEASE_DATE "20140318"
#define MAIL_VERSION_NUMBER "2.12" #define MAIL_VERSION_NUMBER "2.12"
#ifdef SNAPSHOT #ifdef SNAPSHOT

View File

@ -12,7 +12,7 @@
/* /*
/* DSN *ndr_filter_lookup( /* DSN *ndr_filter_lookup(
/* NDR_FILTER *fp, /* NDR_FILTER *fp,
/* DSN dsn) /* DSN *dsn)
/* /*
/* void dsn_free( /* void dsn_free(
/* NDR_FILTER *fp) /* NDR_FILTER *fp)
@ -125,8 +125,12 @@ DSN *ndr_filter_lookup(NDR_FILTER *fp, DSN *dsn)
if (msg_verbose) if (msg_verbose)
msg_info("%s: %s %s", myname, dsn->status, dsn->reason); msg_info("%s: %s %s", myname, dsn->status, dsn->reason);
/*
* XXX Instead of hard-coded '4' or '5', use some form of encapsulation
* to read or update the class field.
*/
#define IS_NDR_DSN(s) \ #define IS_NDR_DSN(s) \
(dsn_valid(s) && (s)[1] == '.' && ((s)[0] == '4' || (s)[0] == '5')) (dsn_valid(s) && ((s)[0] == '4' || (s)[0] == '5'))
/* /*
* Sanity check. We filter only bounce/defer DSNs. * Sanity check. We filter only bounce/defer DSNs.

View File

@ -37,6 +37,7 @@
/* Attributes describing alias, include or forward expansion. /* Attributes describing alias, include or forward expansion.
/* A table with the results from expanding aliases or lists. /* A table with the results from expanding aliases or lists.
/* A table with delivered-to: addresses taken from the message. /* A table with delivered-to: addresses taken from the message.
/* The non-delivery status must be either 4.X.X or 5.X.X.
/* DIAGNOSTICS /* DIAGNOSTICS
/* Fatal errors: out of memory. The result is non-zero when /* Fatal errors: out of memory. The result is non-zero when
/* the operation should be tried again. Warnings: malformed /* the operation should be tried again. Warnings: malformed
@ -121,10 +122,13 @@ int bounce_workaround(LOCAL_STATE state)
SET_OWNER_ATTR(state.msg_attr, STR(canon_owner), state.level); SET_OWNER_ATTR(state.msg_attr, STR(canon_owner), state.level);
} }
myfree(owner_alias); myfree(owner_alias);
if (alias_maps->error != 0) if (alias_maps->error != 0) {
/* At this point, canon_owner == 0. */ /* At this point, canon_owner == 0. */
dsb_simple(state.msg_attr.why, "4.3.0",
"alias database unavailable");
return (defer_append(BOUNCE_FLAGS(state.request), return (defer_append(BOUNCE_FLAGS(state.request),
BOUNCE_ATTR(state.msg_attr))); BOUNCE_ATTR(state.msg_attr)));
}
} }
/* /*
@ -132,8 +136,11 @@ int bounce_workaround(LOCAL_STATE state)
* substitute sender address, before completion of the delivery request. * substitute sender address, before completion of the delivery request.
*/ */
if (canon_owner) { if (canon_owner) {
rcpt_stat = bounce_one(BOUNCE_FLAGS(state.request), rcpt_stat =
BOUNCE_ONE_ATTR(state.msg_attr)); (STR(state.msg_attr.why->status)[0] == '4' ?
defer_one : bounce_one)
(BOUNCE_FLAGS(state.request),
BOUNCE_ONE_ATTR(state.msg_attr));
vstring_free(canon_owner); vstring_free(canon_owner);
} }
@ -142,8 +149,11 @@ int bounce_workaround(LOCAL_STATE state)
* delivery request. * delivery request.
*/ */
else { else {
rcpt_stat = bounce_append(BOUNCE_FLAGS(state.request), rcpt_stat =
BOUNCE_ATTR(state.msg_attr)); (STR(state.msg_attr.why->status)[0] == '4' ?
defer_append : bounce_append)
(BOUNCE_FLAGS(state.request),
BOUNCE_ATTR(state.msg_attr));
} }
return (rcpt_stat); return (rcpt_stat);
} }

View File

@ -235,13 +235,8 @@ int deliver_command(LOCAL_STATE state, USER_ATTR usr_attr, const char *comma
break; break;
case PIPE_STAT_BOUNCE: case PIPE_STAT_BOUNCE:
case PIPE_STAT_DEFER: case PIPE_STAT_DEFER:
if (STR(why->status)[0] == '4') /* Account for possible owner- sender address override. */
deliver_status = deliver_status = bounce_workaround(state);
defer_append(BOUNCE_FLAGS(state.request),
BOUNCE_ATTR(state.msg_attr));
else
/* Account for possible owner- sender address override. */
deliver_status = bounce_workaround(state);
break; break;
case PIPE_STAT_CORRUPT: case PIPE_STAT_CORRUPT:
deliver_status = DEL_STAT_DEFER; deliver_status = DEL_STAT_DEFER;

View File

@ -184,13 +184,8 @@ int deliver_file(LOCAL_STATE state, USER_ATTR usr_attr, char *path)
} else if (mail_copy_status != 0) { } else if (mail_copy_status != 0) {
vstring_sprintf_prepend(why->reason, vstring_sprintf_prepend(why->reason,
"cannot append message to file %s: ", path); "cannot append message to file %s: ", path);
if (STR(why->status)[0] == '4') /* Account for possible owner- sender address override. */
deliver_status = deliver_status = bounce_workaround(state);
defer_append(BOUNCE_FLAGS(state.request),
BOUNCE_ATTR(state.msg_attr));
else
/* Account for possible owner- sender address override. */
deliver_status = bounce_workaround(state);
} else { } else {
dsb_simple(why, "2.0.0", "delivered to file: %s", path); dsb_simple(why, "2.0.0", "delivered to file: %s", path);
deliver_status = sent(BOUNCE_FLAGS(state.request), deliver_status = sent(BOUNCE_FLAGS(state.request),

View File

@ -385,6 +385,11 @@
/* Reset the \fBlocal\fR(8) delivery agent's idea of the owner-alias /* Reset the \fBlocal\fR(8) delivery agent's idea of the owner-alias
/* attribute, when delivering mail to a child alias that does not have /* attribute, when delivering mail to a child alias that does not have
/* its own owner alias. /* its own owner alias.
/* .PP
/* Available in Postfix version 2.12 and later:
/* .IP "\fBlocal_bounce_defer_filter ($default_bounce_defer_filter)\fR"
/* Optional filter to change arbitrary hard delivery errors into
/* soft errors and vice versa in the \fBlocal\fR(8) delivery agent.
/* DELIVERY METHOD CONTROLS /* DELIVERY METHOD CONTROLS
/* .ad /* .ad
/* .fi /* .fi
@ -663,6 +668,7 @@ int local_ext_prop_mask;
int local_deliver_hdr_mask; int local_deliver_hdr_mask;
int local_mbox_lock_mask; int local_mbox_lock_mask;
MAPS *alias_maps; MAPS *alias_maps;
char *var_local_ndr_filter;
/* local_deliver - deliver message with extreme prejudice */ /* local_deliver - deliver message with extreme prejudice */
@ -898,6 +904,7 @@ int main(int argc, char **argv)
VAR_DELIVER_HDR, DEF_DELIVER_HDR, &var_deliver_hdr, 0, 0, VAR_DELIVER_HDR, DEF_DELIVER_HDR, &var_deliver_hdr, 0, 0,
VAR_MAILBOX_LOCK, DEF_MAILBOX_LOCK, &var_mailbox_lock, 1, 0, VAR_MAILBOX_LOCK, DEF_MAILBOX_LOCK, &var_mailbox_lock, 1, 0,
VAR_MAILBOX_CMD_MAPS, DEF_MAILBOX_CMD_MAPS, &var_mailbox_cmd_maps, 0, 0, VAR_MAILBOX_CMD_MAPS, DEF_MAILBOX_CMD_MAPS, &var_mailbox_cmd_maps, 0, 0,
VAR_LOCAL_NDR_FILTER, DEF_LOCAL_NDR_FILTER, &var_local_ndr_filter, 0, 0,
0, 0,
}; };
static const CONFIG_BOOL_TABLE bool_table[] = { static const CONFIG_BOOL_TABLE bool_table[] = {
@ -936,5 +943,7 @@ int main(int argc, char **argv)
MAIL_SERVER_POST_INIT, post_init, MAIL_SERVER_POST_INIT, post_init,
MAIL_SERVER_PRE_ACCEPT, pre_accept, MAIL_SERVER_PRE_ACCEPT, pre_accept,
MAIL_SERVER_PRIVILEGED, MAIL_SERVER_PRIVILEGED,
MAIL_SERVER_BOUNCE_INIT, VAR_LOCAL_NDR_FILTER,
&var_local_ndr_filter,
0); 0);
} }

View File

@ -387,9 +387,6 @@
/* .IP "\fBmax_use (100)\fR" /* .IP "\fBmax_use (100)\fR"
/* The maximal number of incoming connections that a Postfix daemon /* The maximal number of incoming connections that a Postfix daemon
/* process will service before terminating voluntarily. /* process will service before terminating voluntarily.
/* .IP "\fBpipe_bounce_defer_filter ($default_bounce_defer_filter)\fR"
/* Optional filter to change arbitrary hard delivery errors into
/* soft errors and vice versa.
/* .IP "\fBprocess_id (read-only)\fR" /* .IP "\fBprocess_id (read-only)\fR"
/* The process ID of a Postfix command or daemon process. /* The process ID of a Postfix command or daemon process.
/* .IP "\fBprocess_name (read-only)\fR" /* .IP "\fBprocess_name (read-only)\fR"
@ -405,6 +402,11 @@
/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR" /* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
/* The mail system name that is prepended to the process name in syslog /* The mail system name that is prepended to the process name in syslog
/* records, so that "smtpd" becomes, for example, "postfix/smtpd". /* records, so that "smtpd" becomes, for example, "postfix/smtpd".
/* .PP
/* Available in Postfix version 2.12 and later:
/* .IP "\fBpipe_bounce_defer_filter ($default_bounce_defer_filter)\fR"
/* Optional filter to change arbitrary hard delivery errors into
/* soft errors and vice versa in the \fBpipe\fR(8) delivery agent.
/* SEE ALSO /* SEE ALSO
/* qmgr(8), queue manager /* qmgr(8), queue manager
/* bounce(8), delivery status reports /* bounce(8), delivery status reports

View File

@ -141,9 +141,6 @@
/* Always send EHLO at the start of an SMTP session. /* Always send EHLO at the start of an SMTP session.
/* .IP "\fBsmtp_never_send_ehlo (no)\fR" /* .IP "\fBsmtp_never_send_ehlo (no)\fR"
/* Never send EHLO at the start of an SMTP session. /* Never send EHLO at the start of an SMTP session.
/* .IP "\fBsmtp_bounce_defer_filter ($default_bounce_defer_filter)\fR"
/* Optional filter to change arbitrary hard delivery errors into
/* soft errors and vice versa.
/* .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_line_length_limit (998)\fR" /* .IP "\fBsmtp_line_length_limit (998)\fR"
@ -255,6 +252,11 @@
/* Available in Postfix version 2.11 and later: /* Available in Postfix version 2.11 and later:
/* .IP "\fBsmtp_dns_support_level (empty)\fR" /* .IP "\fBsmtp_dns_support_level (empty)\fR"
/* Level of DNS support in the Postfix SMTP client. /* Level of DNS support in the Postfix SMTP client.
/* .PP
/* Available in Postfix version 2.12 and later:
/* .IP "\fBsmtp_bounce_defer_filter ($default_bounce_defer_filter)\fR"
/* Optional filter to change arbitrary hard delivery errors into
/* soft errors and vice versa in the \fBsmtp\fR(8) delivery agent.
/* MIME PROCESSING CONTROLS /* MIME PROCESSING CONTROLS
/* .ad /* .ad
/* .fi /* .fi

View File

@ -195,6 +195,7 @@ static int smtp_bulk_fail(SMTP_STATE *state, int throttle_queue)
DSN_BUF *why = state->why; DSN_BUF *why = state->why;
RECIPIENT *rcpt; RECIPIENT *rcpt;
int status; int status;
int aggregate_status;
int soft_error = (STR(why->status)[0] == '4'); int soft_error = (STR(why->status)[0] == '4');
int soft_bounce_error = (STR(why->status)[0] == '5' && var_soft_bounce); int soft_bounce_error = (STR(why->status)[0] == '5' && var_soft_bounce);
int nrcpt; int nrcpt;
@ -239,6 +240,7 @@ static int smtp_bulk_fail(SMTP_STATE *state, int throttle_queue)
GETTIMEOFDAY(&request->msg_stats.deliver_done); GETTIMEOFDAY(&request->msg_stats.deliver_done);
(void) DSN_FROM_DSN_BUF(why); (void) DSN_FROM_DSN_BUF(why);
aggregate_status = 0;
for (nrcpt = 0; nrcpt < SMTP_RCPT_LEFT(state); nrcpt++) { for (nrcpt = 0; nrcpt < SMTP_RCPT_LEFT(state); nrcpt++) {
rcpt = request->rcpt_list.info + nrcpt; rcpt = request->rcpt_list.info + nrcpt;
if (SMTP_RCPT_ISMARKED(rcpt)) if (SMTP_RCPT_ISMARKED(rcpt))
@ -250,10 +252,11 @@ static int smtp_bulk_fail(SMTP_STATE *state, int throttle_queue)
if (status == 0) if (status == 0)
deliver_completed(state->src, rcpt->offset); deliver_completed(state->src, rcpt->offset);
SMTP_RCPT_DROP(state, rcpt); SMTP_RCPT_DROP(state, rcpt);
state->status |= status; aggregate_status |= status;
} }
state->status |= aggregate_status;
if ((state->misc_flags & SMTP_MISC_FLAG_COMPLETE_SESSION) == 0 if ((state->misc_flags & SMTP_MISC_FLAG_COMPLETE_SESSION) == 0
&& throttle_queue && (soft_error || soft_bounce_error) && throttle_queue && aggregate_status
&& request->hop_status == 0) && request->hop_status == 0)
request->hop_status = DSN_COPY(&why->dsn); request->hop_status = DSN_COPY(&why->dsn);
} }

View File

@ -245,9 +245,11 @@
/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR" /* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
/* The mail system name that is prepended to the process name in syslog /* The mail system name that is prepended to the process name in syslog
/* records, so that "smtpd" becomes, for example, "postfix/smtpd". /* records, so that "smtpd" becomes, for example, "postfix/smtpd".
/* .PP
/* Available in Postfix version 2.12 and later:
/* .IP "\fBvirtual_bounce_defer_filter ($default_bounce_defer_filter)\fR" /* .IP "\fBvirtual_bounce_defer_filter ($default_bounce_defer_filter)\fR"
/* Optional filter to change arbitrary hard delivery errors into /* Optional filter to change arbitrary hard delivery errors into
/* soft errors and vice versa. /* soft errors and vice versa in the \fBvirtual\fR(8) delivery agent.
/* SEE ALSO /* SEE ALSO
/* qmgr(8), queue manager /* qmgr(8), queue manager
/* bounce(8), delivery status reports /* bounce(8), delivery status reports