]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.12-20140318
authorWietse Venema <wietse@porcupine.org>
Tue, 18 Mar 2014 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <postfix-users@dukhovni.org>
Fri, 21 Mar 2014 15:51:45 +0000 (11:51 -0400)
29 files changed:
postfix/HISTORY
postfix/RELEASE_NOTES
postfix/html/lmtp.8.html
postfix/html/local.8.html
postfix/html/pipe.8.html
postfix/html/postconf.5.html
postfix/html/smtp.8.html
postfix/html/virtual.8.html
postfix/man/man5/postconf.5
postfix/man/man8/local.8
postfix/man/man8/pipe.8
postfix/man/man8/smtp.8
postfix/man/man8/virtual.8
postfix/mantools/postlink
postfix/proto/postconf.proto
postfix/src/global/bounce.c
postfix/src/global/defer.c
postfix/src/global/defer.h
postfix/src/global/mail_params.h
postfix/src/global/mail_version.h
postfix/src/global/ndr_filter.c
postfix/src/local/bounce_workaround.c
postfix/src/local/command.c
postfix/src/local/file.c
postfix/src/local/local.c
postfix/src/pipe/pipe.c
postfix/src/smtp/smtp.c
postfix/src/smtp/smtp_trouble.c
postfix/src/virtual/virtual.c

index 7d986d0daa20661d23d2e9d096c2c904e867bacb..5fbfbff68e90118aad83a15797ffa62260bcedb2 100644 (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.
index 6a3305bd18bb58e5a3ed7e4ab6dfd6ef7eb0011a..2d4cfb9a4a6cde3369ea8f0eb8fb1b7d6d7ce6bd 100644 (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.
index a56176bb1602a371c6a0c8dec8072c96fb469a2e..bbbcc1a26740041f53335b6ac33035695b6fcbd0 100644 (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:
 
index b36306d4c17a5ef6dfd3ea699cd72eb36ef1210a..8d450937f70dd09c320b7cb4c2291ed0beca2949 100644 (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
index d3db13d00e0ceb13608ebf5d088b8da8fb704d4d..1ecbcaac16f0a9d8ccabc5a25490a5851ac24743 100644 (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
index a4cf45faa877a27e24005eb2f72c80eb453f5f10..f6ddb475fb93e0eed8ef4aa321a90cb29402183d 100644 (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>
 
index a56176bb1602a371c6a0c8dec8072c96fb469a2e..bbbcc1a26740041f53335b6ac33035695b6fcbd0 100644 (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:
 
index d290a2cfd390ccdaaec0e6a5f70f7053b4200062..fd1c83ed4631fe90140f7312cf7896a6a76c7ef1 100644 (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
index 90024f6b162d7c3719c0479183b553273d233eff..6a989d565bc1185d1de1e9c7afb733bef2544744 100644 (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)
index fb50757e3d65f7a5b27a3723e5239d81275be068..b8d780b393bb022d6a6c3be085bf53203fdc73ac 100644 (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
index e30f1c8d197498a55d4b7c9c985efec0cfade5bd..578628e23d386228db923f515062f231b925657f 100644 (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
index 77292a46022a1af810426c458be17f5403e7fab8..1f257b275363f3a672301e382356a3c51f0b02b5 100644 (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
index c242e6d81c1c770aa57ba6b9c324b1c500469f81..a61cffe662353bae3ddcdfdc0f2600706a4885bc 100644 (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
index edc7613769adb17ad754e6103bb194c910cdec3e..ff86a8ffe69c36e9a41fe90adf30fdfe0dfe1759 100755 (executable)
@@ -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;
index c27a5c463fad7b43e680b1326ca01a9840716fb4..effee2c84cd9e93e9c7fea48b41f887429b5396a 100644 (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>
index fe14c4dbb965193ec8c6f4ef573760287d2b0843..77496ef3790275f385499a9d2d6a7d2a21beda33 100644 (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;
index a05b8bf5989d9993d073f4ff2cdbc369383529f9..d4aab325f920fd897ae6b86be044d142e0e61088 100644 (file)
 /*     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));
+}
index 55f98034d83fb889ff745b319227b2b55f47f971..45f878435ff7d7bdf1c2c98aecb04c406b381413 100644 (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.
index 07d89471ccf2d323147f4b01252312948bc9e516..0069c4d2b53e15c34c1f945eaa99f9e1803ebee0 100644 (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
index e4d4282ba8a3fcc89ad81ed460c828368c574ce7..8923bab872b51b84368d2697960355cdc6afd26a 100644 (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
index b0e216c32fa369737858a9ff9ef30fb6b3001745..105c21aa6b81a53981a3b944677e890bce9cac69 100644 (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.
index e7211ec552c88f83c4938067b92dcb1b16ca8f6d..7fe4aaa147751b16e8ed26985c4c55f9782d040a 100644 (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);
 }
index 707cec6c9f0205b9640dda38798800b9019c660a..b2755679952a691abacb032bd71106d7cc124f53 100644 (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;
index 4adfdf819fd5e0d574747e81aba980404804340d..0cc4c18284de5b1ed80f01e5b9d6325de89b543e 100644 (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),
index 4b69a3032d124541909e2a7f2316222057c4a698..b28a759ce918990845e7f615a4716cf9bef2a956 100644 (file)
 /*     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);
 }
index 35a9a3e791552f9dcac750c4c0ffa4bb3b3f04fb..e7737a07f6b2521321d1d1c7b4088f3cdda97373 100644 (file)
 /* .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"
 /* .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
index 1fe10044c800407f67a6b50a0351e84305600140..52456f6242e42e6d283c9fc6f0fb452acf927161 100644 (file)
 /*     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"
 /*     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
index b976b7bfcf5dae61fb44f056547b12955a4ea3eb..b3b4aacc58c1e601be1398652d9d2822b95c0c9b 100644 (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);
     }
index 106ad780487d27255d728bd5d7db51a50c29927a..c66431d2365600a898710ba59bd4f6f84df1c730 100644 (file)
 /* .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