2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-08-22 09:57:34 +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
Feature: preliminary support to change arbitrary hard
delivery errors into soft errors and vice versa, originally
introduced for sites that want to hard-bounce mail when a
remote SMTP server does not announce TLS support. New main.cf
delivery errors into soft errors and vice versa, or to
replace the descriptive text of non-delivery notifications.
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.
Support for the local(8) delivery agent is awaiting additional
code to emulate defer_one() support, and support for qmgr(8)
is awaiting further analysis. Files: proto/postconf.proto,
mantools/postlink, global/bounce.[hc], bounce/defer.[hc],
global/ndr_filter.[hc], global/mail_params.[hc],
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/single_server.c, master/trigger_server.c, smtp/smtp.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
before proceeding.
Major changes with snapshot 20140316
Major changes with snapshot 20140318
====================================
Preliminary support to change arbitrary hard delivery errors into
soft errors and vice versa, originally implemented for sites that
want to bounce mail when a remote SMTP server does not support
STARTTLS.
Support to change arbitrary hard delivery errors into soft errors
and vice versa, or to replace the descriptive text in non-delivery
notifications. This was originally implemented for sites that want
to bounce mail when no remote SMTP server supports STARTTLS.
This feature is implemented as a filter that replaces the three-number
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
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 was not offered by host .+)/ 5$1
Support is currently limited to the lmtp(8), pipe(8), smtp(8) and
virtual(8) delivery agents. The new main.cf parameters and default
values are:
This feature is supported in the lmtp(8), local(8), pipe(8), smtp(8)
and virtual(8) delivery agents. That is, all delivery agents that
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 =
lmtp_bounce_defer_filter = $default_bounce_defer_filter
local_bounce_defer_filter = $default_bounce_defer_filter
pipe_bounce_defer_filter = $default_bounce_defer_filter
smtp_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)
and qmgr(8) will be added as time is available.
See the postconf(5) manpage for more details.

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>
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>
Defer mail delivery when no MX record resolves to an IP address.
@ -164,8 +160,8 @@ SMTP(8) SMTP(8)
will send via SMTP.
<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
".&lt;CR&gt;&lt;LF&gt;" in order to work around the PIX firewall
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;.&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>
@ -174,19 +170,19 @@ SMTP(8) SMTP(8)
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>
A list that specifies zero or more workarounds for CISCO PIX
A list that specifies zero or more workarounds for CISCO PIX
firewall bugs.
<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.
<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>.
<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.
<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:
<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).
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>
Lookup tables, indexed by the remote SMTP server address, with
case insensitive lists of EHLO keywords (pipelining, starttls,
Lookup tables, indexed by the remote SMTP server address, with
case insensitive lists of EHLO keywords (pipelining, starttls,
auth, etc.) that the Postfix SMTP client will ignore in the EHLO
response from a remote SMTP server.
<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
response from a remote SMTP server.
<b><a href="postconf.5.html#smtp_generic_maps">smtp_generic_maps</a> (empty)</b>
Optional lookup tables that perform address rewriting in the
Postfix SMTP client, typically to transform a locally valid
address into a globally valid address when sending mail across
Optional lookup tables that perform address rewriting in the
Postfix SMTP client, typically to transform a locally valid
address into a globally valid address when sending mail across
the Internet.
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>
When the remote SMTP servername is a DNS CNAME, replace the
servername with the result from CNAME expansion for the purpose
of logging, SASL password lookup, TLS policy decisions, or TLS
When the remote SMTP servername is a DNS CNAME, replace the
servername with the result from CNAME expansion for the purpose
of logging, SASL password lookup, TLS policy decisions, or TLS
certificate verification.
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>
Lookup tables, indexed by the remote LMTP server address, with
case insensitive lists of LHLO keywords (pipelining, starttls,
Lookup tables, indexed by the remote LMTP server address, with
case insensitive lists of LHLO keywords (pipelining, starttls,
auth, etc.) that the Postfix LMTP client will ignore in the LHLO
response from a remote LMTP server.
<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
response from a remote LMTP server.
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>
When authenticating to a remote SMTP or LMTP server with the
default setting "no", send no SASL authoriZation ID (authzid);
send only the SASL authentiCation ID (authcid) plus the auth-
When authenticating to a remote SMTP or LMTP server with the
default setting "no", send no SASL authoriZation ID (authzid);
send only the SASL authentiCation ID (authcid) plus the auth-
cid's password.
Available in Postfix version 2.5 and later:
<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>
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.
<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.
<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:
<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.
Available in Postfix version 2.8 and later:
@ -279,14 +275,14 @@ SMTP(8) SMTP(8)
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>
Change the behavior of the smtp_*_timeout time limits, from a
time limit per read or write system call, to a time limit to
send or receive a complete record (an SMTP command line, SMTP
response line, SMTP message content line, or TLS protocol mes-
Change the behavior of the smtp_*_timeout time limits, from a
time limit per read or write system call, to a time limit to
send or receive a complete record (an SMTP command line, SMTP
response line, SMTP message content line, or TLS protocol mes-
sage).
<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.
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>
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>
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
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>
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>,
<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>.
<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.
<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.
<b><a href="postconf.5.html#mailbox_transport_maps">mailbox_transport_maps</a> (empty)</b>
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.
<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
agent should use for mailbox delivery to all local recipients,
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,
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>
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.
<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.
<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.
<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.
<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
agent should use for names that are not found in the <a href="aliases.5.html"><b>aliases</b>(5)</a>
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>
or UNIX password database.
<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:
<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.
<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.
<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.
<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.
<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.
<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.
<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
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
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>-
<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>-
<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>
The maximal number of recipients per message delivery via the
The maximal number of recipients per message delivery via the
local mail delivery transport.
<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).
<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.
<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
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>-
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>-
<a href="postconf.5.html#command_execution_directory">tion_directory</a>.
<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.
<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>.
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>
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>.
Available in Postfix version 2.5.3 and later:
<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.
<b>MISCELLANEOUS CONTROLS</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.
<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.
<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.
<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.
<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.
<b><a href="postconf.5.html#local_command_shell">local_command_shell</a> (empty)</b>
@ -514,7 +520,7 @@ LOCAL(8) LOCAL(8)
mand.
<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.
<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.
<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-
ery agent prepends a Delivered-To: message header with the
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
address that the mail was delivered to.
<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.
<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.
<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.
<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
extension (example: user+foo), or a .forward file 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: .forward+foo).
<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.
<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
syslog records, so that "smtpd" becomes, for example, "post-
The mail system name that is prepended to the process name in
syslog records, so that "smtpd" becomes, for example, "post-
fix/smtpd".
<b>FILES</b>
@ -576,10 +582,10 @@ LOCAL(8) LOCAL(8)
The Secure Mailer license must be distributed with this software.
<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.
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>
Wietse Venema

View File

@ -425,10 +425,6 @@ PIPE(8) PIPE(8)
The maximal number of incoming connections that a Postfix daemon
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>
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.
<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
extension (example: user+foo), or a .forward file 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: .forward+foo).
<b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
The syslog facility of Postfix logging.
<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
syslog records, so that "smtpd" becomes, for example, "post-
The mail system name that is prepended to the process name in
syslog records, so that "smtpd" becomes, for example, "post-
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>
<a href="qmgr.8.html">qmgr(8)</a>, queue manager
<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>
</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>
<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>
<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
details. </p>
soft errors and vice versa in the <a href="pipe.8.html">pipe(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>
@ -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>
<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
details. </p>
soft errors and vice versa in the <a href="smtp.8.html">smtp(8)</a> delivery agent. See
<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
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>
<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
details. </p>
soft errors and vice versa in the <a href="virtual.8.html">virtual(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>

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>
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>
Defer mail delivery when no MX record resolves to an IP address.
@ -164,8 +160,8 @@ SMTP(8) SMTP(8)
will send via SMTP.
<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
".&lt;CR&gt;&lt;LF&gt;" in order to work around the PIX firewall
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;.&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>
@ -174,19 +170,19 @@ SMTP(8) SMTP(8)
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>
A list that specifies zero or more workarounds for CISCO PIX
A list that specifies zero or more workarounds for CISCO PIX
firewall bugs.
<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.
<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>.
<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.
<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:
<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).
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>
Lookup tables, indexed by the remote SMTP server address, with
case insensitive lists of EHLO keywords (pipelining, starttls,
Lookup tables, indexed by the remote SMTP server address, with
case insensitive lists of EHLO keywords (pipelining, starttls,
auth, etc.) that the Postfix SMTP client will ignore in the EHLO
response from a remote SMTP server.
<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
response from a remote SMTP server.
<b><a href="postconf.5.html#smtp_generic_maps">smtp_generic_maps</a> (empty)</b>
Optional lookup tables that perform address rewriting in the
Postfix SMTP client, typically to transform a locally valid
address into a globally valid address when sending mail across
Optional lookup tables that perform address rewriting in the
Postfix SMTP client, typically to transform a locally valid
address into a globally valid address when sending mail across
the Internet.
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>
When the remote SMTP servername is a DNS CNAME, replace the
servername with the result from CNAME expansion for the purpose
of logging, SASL password lookup, TLS policy decisions, or TLS
When the remote SMTP servername is a DNS CNAME, replace the
servername with the result from CNAME expansion for the purpose
of logging, SASL password lookup, TLS policy decisions, or TLS
certificate verification.
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>
Lookup tables, indexed by the remote LMTP server address, with
case insensitive lists of LHLO keywords (pipelining, starttls,
Lookup tables, indexed by the remote LMTP server address, with
case insensitive lists of LHLO keywords (pipelining, starttls,
auth, etc.) that the Postfix LMTP client will ignore in the LHLO
response from a remote LMTP server.
<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
response from a remote LMTP server.
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>
When authenticating to a remote SMTP or LMTP server with the
default setting "no", send no SASL authoriZation ID (authzid);
send only the SASL authentiCation ID (authcid) plus the auth-
When authenticating to a remote SMTP or LMTP server with the
default setting "no", send no SASL authoriZation ID (authzid);
send only the SASL authentiCation ID (authcid) plus the auth-
cid's password.
Available in Postfix version 2.5 and later:
<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>
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.
<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.
<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:
<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.
Available in Postfix version 2.8 and later:
@ -279,14 +275,14 @@ SMTP(8) SMTP(8)
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>
Change the behavior of the smtp_*_timeout time limits, from a
time limit per read or write system call, to a time limit to
send or receive a complete record (an SMTP command line, SMTP
response line, SMTP message content line, or TLS protocol mes-
Change the behavior of the smtp_*_timeout time limits, from a
time limit per read or write system call, to a time limit to
send or receive a complete record (an SMTP command line, SMTP
response line, SMTP message content line, or TLS protocol mes-
sage).
<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.
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>
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>
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-
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>
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>
<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).
.PP
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)
Optional shell program for \fBlocal\fR(8) delivery to non-Postfix command.
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.
.SH pipe_bounce_defer_filter (default: $default_bounce_defer_filter)
Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa. See default_bounce_defer_filter for
details.
soft errors and vice versa in the \fBpipe\fR(8) delivery agent. See
default_bounce_defer_filter for details.
.PP
This feature is available in Postfix 2.12 and later.
.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.
.SH smtp_bounce_defer_filter (default: $default_bounce_defer_filter)
Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa. See default_bounce_defer_filter for
details.
soft errors and vice versa in the \fBsmtp\fR(8) delivery agent. See
default_bounce_defer_filter for details.
.PP
NOTE: This feature modifies error messages that are generated
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.
.SH virtual_bounce_defer_filter (default: $default_bounce_defer_filter)
Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa. See default_bounce_defer_filter for
details.
soft errors and vice versa in the \fBvirtual\fR(8) delivery agent. See
default_bounce_defer_filter for details.
.PP
This feature is available in Postfix 2.12 and later.
.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
attribute, when delivering mail to a child alias that does not have
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"
.na
.nf

View File

@ -409,9 +409,6 @@ for an incoming connection before terminating voluntarily.
.IP "\fBmax_use (100)\fR"
The maximal number of incoming connections that a Postfix daemon
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"
The process ID of a Postfix command or daemon process.
.IP "\fBprocess_name (read-only)\fR"
@ -427,6 +424,11 @@ The syslog facility of Postfix logging.
.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
The mail system name that is prepended to the process name in syslog
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"
.na
.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.
.IP "\fBsmtp_never_send_ehlo (no)\fR"
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"
Defer mail delivery when no MX record resolves to an IP address.
.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:
.IP "\fBsmtp_dns_support_level (empty)\fR"
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"
.na
.nf

View File

@ -281,9 +281,11 @@ The syslog facility of Postfix logging.
.IP "\fBsyslog_name (see 'postconf -d' output)\fR"
The mail system name that is prepended to the process name in syslog
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"
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"
.na
.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_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;\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_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;

View File

@ -15683,8 +15683,8 @@ sender. </p>
%PARAM smtp_bounce_defer_filter $default_bounce_defer_filter
<p> Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa. See default_bounce_defer_filter for
details. </p>
soft errors and vice versa in the smtp(8) delivery agent. See
default_bounce_defer_filter for details. </p>
<p> NOTE: This feature modifies error messages that are generated
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
<p> Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa. See default_bounce_defer_filter for
details. </p>
soft errors and vice versa in the pipe(8) delivery agent. See
default_bounce_defer_filter for details. </p>
<p> This feature is available in Postfix 2.12 and later. </p>
%PARAM virtual_bounce_defer_filter $default_bounce_defer_filter
<p> Optional filter to change arbitrary hard delivery errors into
soft errors and vice versa. See default_bounce_defer_filter for
details. </p>
soft errors and vice versa in the virtual(8) delivery agent. See
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>

View File

@ -90,8 +90,8 @@
/*
/* bounce_client_init() initializes an optional DSN filter.
/*
/* bounce_append_intern() is for use after the DSN filter. DSN
/* filtering is not yet supported for bounce_one().
/* bounce_append_intern() and bounce_one_intern() are for use
/* after the DSN filter.
/*
/* Arguments:
/* .IP flags
@ -393,7 +393,7 @@ int bounce_one(int flags, const char *queue, const char *id,
const char *relay, DSN *dsn)
{
DSN my_dsn = *dsn;
int status;
DSN *dsn_res;
/*
* Sanity check.
@ -403,6 +403,30 @@ int bounce_one(int flags, const char *queue, const char *id,
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
* service database.
@ -429,7 +453,7 @@ int bounce_one(int flags, const char *queue, const char *id,
* based procedure.
*/
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",
var_bounce_service, var_trace_service);
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);
} else {
status = -1;

View File

@ -31,6 +31,20 @@
/* const char *sender;
/* const char *dsn_envid;
/* 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
/* int defer_append_intern(flags, id, stats, rcpt, relay, dsn)
/* int flags;
@ -63,6 +77,9 @@
/* question has been deferred. The defer log is not deleted,
/* 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.
/*
/* Arguments:
@ -311,3 +328,36 @@ int defer_warn(int flags, const char *queue, const char *id,
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);
extern int defer_warn(int, const char *, const char *, const char *,
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.

View File

@ -3765,6 +3765,10 @@ extern char *var_pipe_ndr_filter;
#define DEF_VIRT_NDR_FILTER "$" VAR_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
/* .ad
/* .fi

View File

@ -20,7 +20,7 @@
* Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only.
*/
#define MAIL_RELEASE_DATE "20140316"
#define MAIL_RELEASE_DATE "20140318"
#define MAIL_VERSION_NUMBER "2.12"
#ifdef SNAPSHOT

View File

@ -12,7 +12,7 @@
/*
/* DSN *ndr_filter_lookup(
/* NDR_FILTER *fp,
/* DSN dsn)
/* DSN *dsn)
/*
/* void dsn_free(
/* NDR_FILTER *fp)
@ -125,8 +125,12 @@ DSN *ndr_filter_lookup(NDR_FILTER *fp, DSN *dsn)
if (msg_verbose)
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) \
(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.

View File

@ -37,6 +37,7 @@
/* Attributes describing alias, include or forward expansion.
/* A table with the results from expanding aliases or lists.
/* 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
/* Fatal errors: out of memory. The result is non-zero when
/* 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);
}
myfree(owner_alias);
if (alias_maps->error != 0)
if (alias_maps->error != 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),
BOUNCE_ATTR(state.msg_attr)));
}
}
/*
@ -132,8 +136,11 @@ int bounce_workaround(LOCAL_STATE state)
* substitute sender address, before completion of the delivery request.
*/
if (canon_owner) {
rcpt_stat = bounce_one(BOUNCE_FLAGS(state.request),
BOUNCE_ONE_ATTR(state.msg_attr));
rcpt_stat =
(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);
}
@ -142,8 +149,11 @@ int bounce_workaround(LOCAL_STATE state)
* delivery request.
*/
else {
rcpt_stat = bounce_append(BOUNCE_FLAGS(state.request),
BOUNCE_ATTR(state.msg_attr));
rcpt_stat =
(STR(state.msg_attr.why->status)[0] == '4' ?
defer_append : bounce_append)
(BOUNCE_FLAGS(state.request),
BOUNCE_ATTR(state.msg_attr));
}
return (rcpt_stat);
}

View File

@ -235,13 +235,8 @@ int deliver_command(LOCAL_STATE state, USER_ATTR usr_attr, const char *comma
break;
case PIPE_STAT_BOUNCE:
case PIPE_STAT_DEFER:
if (STR(why->status)[0] == '4')
deliver_status =
defer_append(BOUNCE_FLAGS(state.request),
BOUNCE_ATTR(state.msg_attr));
else
/* Account for possible owner- sender address override. */
deliver_status = bounce_workaround(state);
/* Account for possible owner- sender address override. */
deliver_status = bounce_workaround(state);
break;
case PIPE_STAT_CORRUPT:
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) {
vstring_sprintf_prepend(why->reason,
"cannot append message to file %s: ", path);
if (STR(why->status)[0] == '4')
deliver_status =
defer_append(BOUNCE_FLAGS(state.request),
BOUNCE_ATTR(state.msg_attr));
else
/* Account for possible owner- sender address override. */
deliver_status = bounce_workaround(state);
/* Account for possible owner- sender address override. */
deliver_status = bounce_workaround(state);
} else {
dsb_simple(why, "2.0.0", "delivered to file: %s", path);
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
/* attribute, when delivering mail to a child alias that does not have
/* 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
/* .ad
/* .fi
@ -663,6 +668,7 @@ int local_ext_prop_mask;
int local_deliver_hdr_mask;
int local_mbox_lock_mask;
MAPS *alias_maps;
char *var_local_ndr_filter;
/* 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_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_LOCAL_NDR_FILTER, DEF_LOCAL_NDR_FILTER, &var_local_ndr_filter, 0, 0,
0,
};
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_PRE_ACCEPT, pre_accept,
MAIL_SERVER_PRIVILEGED,
MAIL_SERVER_BOUNCE_INIT, VAR_LOCAL_NDR_FILTER,
&var_local_ndr_filter,
0);
}

View File

@ -387,9 +387,6 @@
/* .IP "\fBmax_use (100)\fR"
/* The maximal number of incoming connections that a Postfix daemon
/* 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"
/* The process ID of a Postfix command or daemon process.
/* .IP "\fBprocess_name (read-only)\fR"
@ -405,6 +402,11 @@
/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
/* The mail system name that is prepended to the process name in syslog
/* 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
/* qmgr(8), queue manager
/* bounce(8), delivery status reports

View File

@ -141,9 +141,6 @@
/* Always send EHLO at the start of an SMTP session.
/* .IP "\fBsmtp_never_send_ehlo (no)\fR"
/* 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"
/* Defer mail delivery when no MX record resolves to an IP address.
/* .IP "\fBsmtp_line_length_limit (998)\fR"
@ -255,6 +252,11 @@
/* Available in Postfix version 2.11 and later:
/* .IP "\fBsmtp_dns_support_level (empty)\fR"
/* 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
/* .ad
/* .fi

View File

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

View File

@ -245,9 +245,11 @@
/* .IP "\fBsyslog_name (see 'postconf -d' output)\fR"
/* The mail system name that is prepended to the process name in syslog
/* 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"
/* 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
/* qmgr(8), queue manager
/* bounce(8), delivery status reports