]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.3-20060103
authorWietse Venema <wietse@porcupine.org>
Tue, 3 Jan 2006 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <viktor@dukhovni.org>
Tue, 5 Feb 2013 06:32:02 +0000 (06:32 +0000)
32 files changed:
postfix/HISTORY
postfix/README_FILES/FILTER_README
postfix/RELEASE_NOTES
postfix/examples/chroot-setup/LINUX2
postfix/html/FILTER_README.html
postfix/html/anvil.8.html
postfix/html/local.8.html
postfix/html/postconf.5.html
postfix/html/smtp.8.html
postfix/man/man5/postconf.5
postfix/man/man8/local.8
postfix/man/man8/smtp.8
postfix/mantools/postlink
postfix/proto/FILTER_README.html
postfix/proto/postconf.proto
postfix/src/anvil/anvil.c
postfix/src/global/mail_params.h
postfix/src/global/mail_version.h
postfix/src/local/local.c
postfix/src/local/mailbox.c
postfix/src/local/unknown.c
postfix/src/master/master.h
postfix/src/master/master_avail.c
postfix/src/master/master_conf.c
postfix/src/master/master_ent.c
postfix/src/master/master_status.c
postfix/src/master/master_wakeup.c
postfix/src/smtp/lmtp_params.c
postfix/src/smtp/smtp.c
postfix/src/smtp/smtp_chat.c
postfix/src/smtp/smtp_params.c
postfix/src/smtp/smtp_proto.c

index 0e687f07a59382cf31fa444b7df6d15191a0bb65..87355d1e6d5c3f3da2a5b3e06918693295827e49 100644 (file)
@@ -11702,6 +11702,31 @@ Apologies for any names omitted.
        smtp_dot_quit_workaround_threshold_time parameter.  Files:
        smtp/smtp_proto.c, smtp/smtp.c.
 
+       Feature: mailbox_transport_maps and fallback_transport_maps
+       to search delivery transports by recipient name. Files:
+       local/mailbox.c, local/unknown.c.
+
+       Feature: the master daemon now logs a warning when all
+       servers are busy that may accept remote connections, and
+       suggests to either increase the process count or to reduce
+       the service time per client.  Files: master/master_ent.c,
+       master/master_avail.c.
+
+20051231
+
+       Bugfix: the anvil server would terminate after "max_idle"
+       seconds, even when this was less than the anvil_rate_time_unit
+       interval. File: anvil/anvil.c.
+
+20060102
+
+       Deleted the 20051229 dot-quit bug workaround.  Automatically
+       deferring delivery created "no delivery" and "repeated
+       delivery" problems; and automatically turning off pipelining
+       for delayed mail was a bad workaround for a bad workaround.
+       The administrator still has the option to turn off pipelining
+       by hand if loss of mail is a concern.
+
 Open problems:
 
        "postsuper -r" no longer resets the message arrival time,
index 7b0245bb50cffd840e6e5d7745ea895f539bb141..c6246bc8eac8c743b7332f0a3caca5798933a5c4 100644 (file)
@@ -100,7 +100,7 @@ The content filter can be a simple shell script like this:
      5
      6 # Localize these. The -G option does nothing before Postfix 2.3.
      7 INSPECT_DIR=/var/spool/filter
-     8 SENDMAIL="/usr/sbin/sendmail -G -i"
+     8 SENDMAIL="/usr/sbin/sendmail -G -i" # NEVER NEVER NEVER use "-t" here.
      9
     10 # Exit codes from <sysexits.h>
     11 EX_TEMPFAIL=75
@@ -132,6 +132,9 @@ Notes:
   * Line 8: The -i option says don't stop reading input when a line contains
     "." only.
 
+  * Line 8: NEVER NEVER NEVER use the "-t" command-line option here. It will
+    mis-deliver mail, like sending mailing list mail back to the mailing list.
+
   * Line 21: The idea is to first capture the message to file and then run the
     content through a third-party content filter program.
 
@@ -335,9 +338,10 @@ the Postfix master.cf file:
     time.
 
   * With "-o smtp_send_xforward_command=yes", the scan transport will try to
-    forward the original client name and IP address to the after-filter smtpd
-    process, so that filtered mail is logged with the real client name IP
-    address. See smtp(8) and XFORWARD_README for more information.
+    forward the original client name and IP address through the content filter
+    to the after-filter smtpd process, so that filtered mail is logged with the
+    real client name IP address. See smtp(8) and XFORWARD_README for more
+    information.
 
 A\bAd\bdv\bva\ban\bnc\bce\bed\bd c\bco\bon\bnt\bte\ben\bnt\bt f\bfi\bil\blt\bte\ber\br:\b: r\bru\bun\bnn\bni\bin\bng\bg t\bth\bhe\be c\bco\bon\bnt\bte\ben\bnt\bt f\bfi\bil\blt\bte\ber\br
 
index 9dec3fe0d30cd11e0ff88cb531aed06f52a2b067..fe5033314fb118df8918ac52c81a0555fd0ea477 100644 (file)
@@ -17,19 +17,13 @@ Incompatibility with Postfix 2.1 and earlier
 If you upgrade from Postfix 2.1 or earlier, read RELEASE_NOTES-2.2
 before proceeding.
 
-Incompatibility with snapshot 20051228
+Incompatibility with snapshot 20060103
 ======================================
 
-New workaround to limit the number of repeated deliveries with
-servers or firewalls that mis-implement DOT+QUIT command pipelining.
-After one documented case of lost mail, as of 20050929 Postfix is
-more paranoid about malformed SMTP server replies. Unfortuately
-this results in repeated deliveries with other broken systems.  To
-limit the number of repeated deliveries, the SMTP client no longer
-pipelines the DOT+QUIT commands when mail is queued longer than the
-time specified with the smtp_dot_quit_workaround_threshold_time
-parameter (default: 3000s). More details are in the postconf(5)
-manual.
+The Postfix SMTP/LMTP client no longer defers mail when it receives
+a malformed SMTP server reply in a session with command pipelining.
+When helpful warnings are enabled, it will suggest that command
+pipelining be disabled for the affected destination.
 
 Major changes with snapshot 20051222
 ====================================
index f63c22c17472809b028eee6b145eb63f69c26fc9..f9c6184d8e987908ffcef3977c6f92413ec5447e 100644 (file)
@@ -42,6 +42,8 @@
 # Revision 1.4  2001/01/15 09:36:35  emma
 # add note it was successfully tested on Debian sid
 #
+# 20060101 /lib64 support by Keith Owens.
+#
 
 CP="cp -p"
 
@@ -62,6 +64,7 @@ POSTFIX_DIR=${POSTFIX_DIR-/var/spool/postfix}
 cd ${POSTFIX_DIR}
 
 mkdir -p etc lib usr/lib/zoneinfo
+test -d /lib64 && mkdir -p lib64
 
 # find localtime (SuSE 5.3 does not have /etc/localtime)
 lt=/etc/localtime
@@ -79,5 +82,10 @@ ln -s -f /etc/localtime usr/lib/zoneinfo
 cond_copy '/lib/libnss_*.so*' lib
 cond_copy '/lib/libresolv.so*' lib
 cond_copy '/lib/libdb.so*' lib
+if test -d /lib64; then
+  cond_copy '/lib64/libnss_*.so*' lib64
+  cond_copy '/lib64/libresolv.so*' lib64
+  cond_copy '/lib64/libdb.so*' lib64
+fi
 
 postfix reload
index f864a1f0715caca4847cc51f538b4bb456779925..a89f31ac0c2e595eb260ae7bb70d7d68d787a9aa 100644 (file)
@@ -252,7 +252,7 @@ document for an introduction to the Postfix architecture. </p>
  5 
  6 # Localize these. The -G option does nothing before Postfix 2.3.
  7 INSPECT_DIR=/var/spool/filter
- 8 SENDMAIL="/usr/sbin/sendmail -G -i"
+ 8 SENDMAIL="/usr/sbin/sendmail -G -i" # NEVER NEVER NEVER use "-t" here.
  9 
 10 # Exit codes from &lt;sysexits.h&gt;
 11 EX_TEMPFAIL=75
@@ -288,6 +288,10 @@ otherwise it disables address rewriting of message headers. </p>
 <li> <p> Line 8: The -i option says don't stop reading input when
 a line contains "." only.  </p>
 
+<li> <p> Line 8: NEVER NEVER NEVER use the "-t" command-line option
+here. It will mis-deliver mail, like sending mailing list mail back
+to the mailing list. </p>
+
 <li> <p> Line 21: The idea is to first capture the message to
 file and then run the content through a third-party content filter
 program. </p>
@@ -348,7 +352,7 @@ is supposed to store its temporary files. </p>
 with the <a href="pipe.8.html">pipe(8)</a> delivery agent. </p>
 
 <pre>
-/etc/postfix/master.cf:
+/etc/postfix/<a href="master.5.html">master.cf</a>:
   # =============================================================
   # service type  private unpriv  chroot  wakeup  maxproc command
   #               (yes)   (yes)   (yes)   (never) (100)
@@ -364,11 +368,11 @@ up a lot of system resources, so you don't want to have too much
 of it running at the same time. </p>
 
 <li> <p> To turn on content filtering for mail arriving via SMTP
-only, append "-o <a href="postconf.5.html#content_filter">content_filter</a>=filter:dummy" to the master.cf
+only, append "-o <a href="postconf.5.html#content_filter">content_filter</a>=filter:dummy" to the <a href="master.5.html">master.cf</a>
 entry that defines the Postfix SMTP server: </p>
 
 <pre>
-/etc/postfix/master.cf:
+/etc/postfix/<a href="master.5.html">master.cf</a>:
   # =============================================================
   # service type  private unpriv  chroot  wakeup  maxproc command
   #               (yes)   (yes)   (yes)   (never) (100)
@@ -423,7 +427,7 @@ for filtered mail. </p>
 
 <p> To turn off "simple" content filtering: </p>
 
-<ul> <li> <p> Edit the master.cf file, remove the "-o
+<ul> <li> <p> Edit the <a href="master.5.html">master.cf</a> file, remove the "-o
 <a href="postconf.5.html#content_filter">content_filter</a>=filter:dummy" text from the entry that defines the
 Postfix SMTP server. </p>
 
@@ -562,11 +566,11 @@ performance loss. </p>
 <h3>Advanced content filter: requesting that all mail is filtered</h3>  
 
 <p> To enable the advanced content filter method for all mail,
-specify in main.cf:  </p>
+specify in <a href="postconf.5.html">main.cf</a>:  </p>
 
 <blockquote>
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#content_filter">content_filter</a> = scan:localhost:10025
     <a href="postconf.5.html#receive_override_options">receive_override_options</a> = <a href="postconf.5.html#no_address_mappings">no_address_mappings</a>
 </pre>
@@ -599,12 +603,12 @@ filter</h3>
 
 <p> In this example, "scan" is an instance of the Postfix SMTP
 client with slightly different configuration parameters. This is
-how one would set up the service in the Postfix master.cf file:
+how one would set up the service in the Postfix <a href="master.5.html">master.cf</a> file:
 </p>
 
 <blockquote>
 <pre>
-/etc/postfix/master.cf:
+/etc/postfix/<a href="master.5.html">master.cf</a>:
     # =============================================================
     # service type  private unpriv  chroot  wakeup  maxproc command
     #               (yes)   (yes)   (yes)   (never) (100)
@@ -623,7 +627,8 @@ gobble up a lot of system resources, so you don't want to have too
 much of it running at the same time. </p>
 
 <li> <p> With "-o <a href="postconf.5.html#smtp_send_xforward_command">smtp_send_xforward_command</a>=yes", the scan transport
-will try to forward the original client name and IP address to the
+will try to forward the original client name and IP address 
+through the content filter to the
 after-filter smtpd process, so that filtered mail is logged with
 the real client name IP address. See <a href="smtp.8.html">smtp(8)</a> and <a href="XFORWARD_README.html">XFORWARD_README</a>
 for more information. </p>
@@ -638,7 +643,7 @@ up to 10 content filtering processes on localhost port 10025: </p>
 
 <blockquote>
 <pre>
-/etc/postfix/master.cf:
+/etc/postfix/<a href="master.5.html">master.cf</a>:
     # ===================================================================
     # service       type  private unpriv  chroot  wakeup  maxproc command
     #                     (yes)   (yes)   (yes)   (never) (100)
@@ -676,7 +681,7 @@ that injects mail back into Postfix. </p>
 
 <blockquote>
 <pre>
-/etc/postfix/master.cf:
+/etc/postfix/<a href="master.5.html">master.cf</a>:
     # ===================================================================
     # service       type  private unpriv  chroot  wakeup  maxproc command
     #                     (yes)   (yes)   (yes)   (never) (100)
@@ -698,16 +703,16 @@ that injects mail back into Postfix. </p>
 <li> <p> Note: do not use spaces around the "=" or "," characters. </p>
 
 <li> <p> Note: the SMTP server must not have a smaller process
-limit than the "filter" master.cf entry. </p>
+limit than the "filter" <a href="master.5.html">master.cf</a> entry. </p>
 
-<li> <p> The "-o <a href="postconf.5.html#content_filter">content_filter</a>=" overrides main.cf settings, and
+<li> <p> The "-o <a href="postconf.5.html#content_filter">content_filter</a>=" overrides <a href="postconf.5.html">main.cf</a> settings, and
 requests no content filtering for mail from the content filter.
 This is required or else mail will stay in the content filtering
 loop. </p>
 
-<li> <p> The "-o <a href="postconf.5.html#receive_override_options">receive_override_options</a>" overrides main.cf
+<li> <p> The "-o <a href="postconf.5.html#receive_override_options">receive_override_options</a>" overrides <a href="postconf.5.html">main.cf</a>
 settings. It is complementary to the options that are specified in
-main.cf: </p>
+<a href="postconf.5.html">main.cf</a>: </p>
 
 <ul>
 
@@ -726,7 +731,7 @@ main.cf: </p>
   </p>
 
 <li> <p> The "-o smtpd_xxx_restrictions" and "-o <a href="postconf.5.html#mynetworks">mynetworks</a>=127.0.0.0/8"
-override main.cf settings. They turn off junk mail controls that
+override <a href="postconf.5.html">main.cf</a> settings. They turn off junk mail controls that
 would only waste time here.
 
 <li> <p> With "-o <a href="postconf.5.html#smtpd_authorized_xforward_hosts">smtpd_authorized_xforward_hosts</a>=127.0.0.0/8",
@@ -757,13 +762,13 @@ Postfix instances will be covered in a future version.  </p>
 
 <p> To turn off "advanced" content filtering: </p>
 
-<ul> <li> <p> Delete or comment out the two following main.cf lines.
+<ul> <li> <p> Delete or comment out the two following <a href="postconf.5.html">main.cf</a> lines.
 The other changes made for advanced content filtering have no effect
 when content filtering is turned off. </p>
 
 <blockquote>
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#content_filter">content_filter</a> = scan:localhost:10025
     <a href="postconf.5.html#receive_override_options">receive_override_options</a> = <a href="postconf.5.html#no_address_mappings">no_address_mappings</a>
 </pre>
@@ -779,7 +784,7 @@ filter information from existing queue files. </p>
 <h2><a name="remote_only">Filtering mail from outside users only</a></h2>
 
 <p> The easiest approach is to configure ONE Postfix instance with
-multiple SMTP server IP addresses in master.cf: </p>
+multiple SMTP server IP addresses in <a href="master.5.html">master.cf</a>: </p>
 
 <ul>
 
@@ -787,7 +792,7 @@ multiple SMTP server IP addresses in master.cf: </p>
 with content filtering turned off. </p>
 
 <pre>
-/etc/postfix.master.cf:
+/etc/postfix.<a href="master.5.html">master.cf</a>:
     # ==================================================================
     # service      type  private unpriv  chroot  wakeup  maxproc command
     #                    (yes)   (yes)   (yes)   (never) (100)
@@ -802,7 +807,7 @@ with content filtering turned off. </p>
 content filtering turned on. </p>
 
 <pre>
-/etc/postfix.master.cf:
+/etc/postfix.<a href="master.5.html">master.cf</a>:
     # =================================================================
     # service     type  private unpriv  chroot  wakeup  maxproc command
     #                   (yes)   (yes)   (yes)   (never) (100)
@@ -817,19 +822,19 @@ content filtering turned on. </p>
 <p> After this, you can follow the same procedure as outlined in
 the "advanced" or "simple" content filtering examples above, except
 that you must not specify "<a href="postconf.5.html#content_filter">content_filter</a>" or "<a href="postconf.5.html#receive_override_options">receive_override_options</a>"
-in the main.cf file. </p>
+in the <a href="postconf.5.html">main.cf</a> file. </p>
 
 <h2><a name="domain_dependent">Different filters for different
 domains</a></h2>
 
 <p> If you are an MX service provider and want to apply different
 content filters for different domains, you can configure ONE Postfix
-instance with multiple SMTP server IP addresses in master.cf. Each
+instance with multiple SMTP server IP addresses in <a href="master.5.html">master.cf</a>. Each
 address provides a different content filter service. </p>
 
 <blockquote>
 <pre>
-/etc/postfix.master.cf:
+/etc/postfix.<a href="master.5.html">master.cf</a>:
     # =================================================================
     # service     type  private unpriv  chroot  wakeup  maxproc command
     #                   (yes)   (yes)   (yes)   (never) (100)
@@ -849,7 +854,7 @@ address provides a different content filter service. </p>
 <p> After this, you can follow the same procedure as outlined in
 the "advanced" or "simple" content filtering examples above, except
 that you must not specify "<a href="postconf.5.html#content_filter">content_filter</a>" or "<a href="postconf.5.html#receive_override_options">receive_override_options</a>"
-in the main.cf file. </p>
+in the <a href="postconf.5.html">main.cf</a> file. </p>
 
 <p> Set up MX records in the DNS that route each domain to the
 proper SMTP server instance. </p>
@@ -892,7 +897,7 @@ loop. </p>
 <ul>
 
 <li> <p> FILTER actions from smtpd access maps and header/body_checks
-take precedence over filters specified with the main.cf <a href="postconf.5.html#content_filter">content_filter</a>
+take precedence over filters specified with the <a href="postconf.5.html">main.cf</a> <a href="postconf.5.html#content_filter">content_filter</a>
 parameter. </p>
 
 <li> <p> If a message triggers more than one filter action, only
index 2852582ffb984fe152978ad53bcb6615ce96d4bf..b8f45190cd3472bcc37486f3aa31d30ed650825d 100644 (file)
@@ -151,7 +151,7 @@ ANVIL(8)                                                              ANVIL(8)
        explicitly limit them.
 
 <b>CONFIGURATION PARAMETERS</b>
-       On low-traffic mail systems, changes to <b>main.cf</b> are picked
+       On low-traffic mail systems, changes to <a href="postconf.5.html"><b>main.cf</b></a> are picked
        up automatically as <a href="anvil.8.html"><b>anvil</b>(8)</a> processes run for only a lim-
        ited amount of time. On other mail systems, use  the  com-
        mand "<b>postfix reload</b>" to speed up a change.
@@ -168,8 +168,8 @@ ANVIL(8)                                                              ANVIL(8)
               limiting server logs peak usage information.
 
        <b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
-              The default location of  the  Postfix  main.cf  and
-              master.cf configuration files.
+              The default location of  the  Postfix  <a href="postconf.5.html">main.cf</a>  and
+              <a href="master.5.html">master.cf</a> configuration files.
 
        <b><a href="postconf.5.html#daemon_timeout">daemon_timeout</a> (18000s)</b>
               How  much time a Postfix daemon process may take to
index 35a836dbec61a78c5328721530612ae4c7cc8fa3..3fca90874d2200e50bdc76614a16f6c758da5648 100644 (file)
@@ -105,20 +105,22 @@ LOCAL(8)                                                              LOCAL(8)
        <b>maildir</b> delivery.
 
        Mailbox  delivery  can be delegated to an external command
-       specified with the <b><a href="postconf.5.html#mailbox_command">mailbox_command</a></b>  configuration  parame-
-       ter.  The  command  executes  with  the  privileges of the
-       recipient  user  (exceptions:  secondary  groups  are  not
-       enabled; in case of delivery as root, the command executes
-       with the privileges of <b><a href="postconf.5.html#default_privs">default_privs</a></b>).
-
-       Mailbox delivery can be delegated to  alternative  message
-       transports  specified  in  the  <b>master.cf</b> file.  The <b><a href="postconf.5.html#mailbox_transport">mail</a>-</b>
-       <b><a href="postconf.5.html#mailbox_transport">box_transport</a></b> configuration parameter specifies a  message
-       transport  that  is  to  be used for all local recipients,
-       regardless of whether they are found in  the  UNIX  passwd
-       database.   The  <b><a href="postconf.5.html#fallback_transport">fallback_transport</a></b>  parameter specifies a
-       message transport for recipients that are not found in the
-       UNIX passwd database.
+       specified with the <b><a href="postconf.5.html#mailbox_command_maps">mailbox_command_maps</a></b>  and  <b><a href="postconf.5.html#mailbox_command">mailbox_com</a>-</b>
+       <b><a href="postconf.5.html#mailbox_command">mand</a></b>  configuration  parameters. The command executes with
+       the privileges of the  recipient  user  (exceptions:  sec-
+       ondary  groups  are  not  enabled;  in case of delivery as
+       root,  the  command  executes  with  the   privileges   of
+       <b><a href="postconf.5.html#default_privs">default_privs</a></b>).
+
+       Mailbox  delivery  can be delegated to alternative message
+       transports specified in the  <a href="master.5.html"><b>master.cf</b></a>  file.   The  <b><a href="postconf.5.html#mailbox_transport_maps">mail</a>-</b>
+       <b><a href="postconf.5.html#mailbox_transport_maps">box_transport_maps</a></b>   and  <b><a href="postconf.5.html#mailbox_transport">mailbox_transport</a></b>  configuration
+       parameters specify an optional message transport  that  is
+       to be used for all local recipients, regardless of whether
+       they are found in the UNIX  passwd  database.   The  <b><a href="postconf.5.html#fallback_transport_maps">fall</a>-</b>
+       <b><a href="postconf.5.html#fallback_transport_maps">back_transport_maps</a></b>   and   <b><a href="postconf.5.html#fallback_transport">fallback_transport</a></b>  parameters
+       specify an optional message transport for recipients  that
+       are not found in the <a href="aliases.5.html">aliases(5)</a> or UNIX passwd database.
 
        In  the  case of UNIX-style mailbox delivery, the <a href="local.8.html"><b>local</b>(8)</a>
        daemon prepends a "<b>From</b> <i>sender time</i><b>_</b><i>stamp</i>" envelope header
@@ -351,7 +353,7 @@ LOCAL(8)                                                              LOCAL(8)
        broken by the use of the <b>Delivered-To:</b> message header.
 
 <b>CONFIGURATION PARAMETERS</b>
-       Changes   to  <b>main.cf</b>  are  picked  up  automatically,  as
+       Changes   to  <a href="postconf.5.html"><b>main.cf</b></a>  are  picked  up  automatically,  as
        <a href="local.8.html"><b>local</b>(8)</a> processes run for only a limited amount of  time.
        Use the command "<b>postfix reload</b>" to speed up a change.
 
@@ -388,9 +390,10 @@ LOCAL(8)                                                              LOCAL(8)
 
 <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: aliases, .forward files, <a href="postconf.5.html#mailbox_transport">mailbox_transport</a>, <a href="postconf.5.html#mailbox_command_maps">mail</a>-
-       <a href="postconf.5.html#mailbox_command_maps">box_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_directory</a>,  <a href="postconf.5.html#fallback_transport">fallback_transport</a> and <a href="postconf.5.html#luser_relay">luser_relay</a>.
+       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_directory</a>,    fallback_trans-
+       port_maps, <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>
@@ -401,33 +404,45 @@ LOCAL(8)                                                              LOCAL(8)
               a .forward file with user-specified delivery  meth-
               ods.
 
+       <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 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, whether or not
+              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
+              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> deliv-
+              Optional external command that the <a href="local.8.html"><b>local</b>(8)</a>  deliv-
               ery 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
+              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>
-              The  directory  where <a href="local.8.html"><b>local</b>(8)</a> UNIX-style mailboxes
+              The directory where <a href="local.8.html"><b>local</b>(8)</a>  UNIX-style  mailboxes
               are kept.
 
+       <b><a href="postconf.5.html#fallback_transport_maps">fallback_transport_maps</a> (empty)</b>
+              Optional  lookup  tables with per-recipient message
+              delivery  transports  for   recipients   that   the
+              <a href="local.8.html"><b>local</b>(8)</a>  delivery  agent  could  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> database or in  the
-              UNIX passwd database.
+              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>
@@ -492,8 +507,8 @@ LOCAL(8)                                                              LOCAL(8)
 
        <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  $mailbox_com-
-              mand.
+              agent allows in $name expansions  of  $<a href="postconf.5.html#mailbox_command">mailbox_com</a>-
+              <a href="postconf.5.html#mailbox_command">mand</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
@@ -513,8 +528,8 @@ LOCAL(8)                                                              LOCAL(8)
 
 <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  main.cf  and
-              master.cf configuration files.
+              The default location of  the  Postfix  <a href="postconf.5.html">main.cf</a>  and
+              <a href="master.5.html">master.cf</a> configuration files.
 
        <b><a href="postconf.5.html#daemon_timeout">daemon_timeout</a> (18000s)</b>
               How  much time a Postfix daemon process may take to
index fb8c14ab457737594061a877968cd1e398630a75..44758e17ef9192d9feef354efce5a436b54e7f2c 100644 (file)
@@ -1004,7 +1004,7 @@ the Postfix SMTP client returns such mail as undeliverable.
 Specify, for example, "<a href="postconf.5.html#best_mx_transport">best_mx_transport</a> = local" to pass the mail
 from the SMTP client to the <a href="local.8.html">local(8)</a> delivery agent. You can specify
 any message delivery "transport" or "transport:nexthop" that is
-defined in the master.cf file. See the <a href="transport.5.html">transport(5)</a> manual page
+defined in the <a href="master.5.html">master.cf</a> file. See the <a href="transport.5.html">transport(5)</a> manual page
 for the syntax and meaning of "transport" or "transport:nexthop".
 </p>
 
@@ -1030,7 +1030,7 @@ notification with the UNIX command "<a href="postconf.5.html#biff">biff</a> y".
 <p>
 For compatibility reasons this feature is on by default.  On systems
 with lots of interactive users, the <a href="postconf.5.html#biff">biff</a> service can be a performance
-drain.  Specify "<a href="postconf.5.html#biff">biff</a> = no" in main.cf to disable.
+drain.  Specify "<a href="postconf.5.html#biff">biff</a> = no" in <a href="postconf.5.html">main.cf</a> to disable.
 </p>
 
 
@@ -1355,7 +1355,7 @@ global <a href="postconf.5.html#ipc_timeout">ipc_timeout</a> parameter as well.
 <DT><b><a name="config_directory">config_directory</a>
 (default: see "postconf -d" output)</b></DT><DD>
 
-<p> The default location of the Postfix main.cf and master.cf
+<p> The default location of the Postfix <a href="postconf.5.html">main.cf</a> and <a href="master.5.html">master.cf</a>
 configuration files. This can be overruled via the following
 mechanisms: </p>
 
@@ -1371,7 +1371,7 @@ and commands). </p>
 <p> With Postfix command that run with set-gid privileges, a
 <a href="postconf.5.html#config_directory">config_directory</a> override requires either root privileges, or it
 requires that the directory is listed with the <a href="postconf.5.html#alternate_config_directories">alternate_config_directories</a>
-parameter in the default main.cf file.  </p>
+parameter in the default <a href="postconf.5.html">main.cf</a> file.  </p>
 
 
 </DD>
@@ -1714,7 +1714,7 @@ PRIVILEGED USER OR THE POSTFIX OWNER</b>.
 <p>
 The default maximal number of Postfix child processes that provide
 a given service. This limit can be overruled for specific services
-in the master.cf file.
+in the <a href="master.5.html">master.cf</a> file.
 </p>
 
 
@@ -1876,7 +1876,7 @@ table.
 
 <p>
 Specify a string of the form <i>transport:nexthop</i>, where <i>transport</i>
-is the name of a mail delivery transport defined in master.cf.
+is the name of a mail delivery transport defined in <a href="master.5.html">master.cf</a>.
 The <i>:nexthop</i> part is optional.  For more details see the
 <a href="transport.5.html">transport(5)</a> manual page.
 </p>
@@ -1945,7 +1945,7 @@ This feature is available in Postfix 2.0 and later.
 The names of message delivery transports that should not deliver mail
 unless someone issues "<b>sendmail -q</b>" or equivalent. Specify zero
 or more names of mail delivery transports names that appear in the
-first field of master.cf.
+first field of <a href="master.5.html">master.cf</a>.
 </p>
 
 <p>
@@ -2339,9 +2339,9 @@ is unavailable. </p>
 
 <ul>
 
-<li> In main.cf specify "<a href="postconf.5.html#relay_transport">relay_transport</a> = relay",
+<li> In <a href="postconf.5.html">main.cf</a> specify "<a href="postconf.5.html#relay_transport">relay_transport</a> = relay",
 
-<li> In master.cf specify "-o <a href="postconf.5.html#fallback_relay">fallback_relay</a> =" (i.e., empty) at
+<li> In <a href="master.5.html">master.cf</a> specify "-o <a href="postconf.5.html#fallback_relay">fallback_relay</a> =" (i.e., empty) at
 the end of the <tt>relay</tt> entry.
 
 <li> In transport maps, specify "relay:<i>nexthop...</i>"
@@ -2362,9 +2362,31 @@ for destinations that it is MX host for.
 <p>
 Optional message delivery transport that the <a href="local.8.html">local(8)</a> delivery
 agent should use for names that are not found in the <a href="aliases.5.html">aliases(5)</a>
-database or in the UNIX passwd database.
+or UNIX password database.
 </p>
 
+<p> The precedence of <a href="local.8.html">local(8)</a> delivery features 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_directory</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>.  </p>
+
+
+</DD>
+
+<DT><b><a name="fallback_transport_maps">fallback_transport_maps</a>
+(default: empty)</b></DT><DD>
+
+<p> Optional lookup tables with per-recipient message delivery
+transports for recipients that the <a href="local.8.html">local(8)</a> delivery agent could
+not find in the <a href="aliases.5.html">aliases(5)</a> or UNIX password database. </p>
+
+<p> The precedence of <a href="local.8.html">local(8)</a> delivery features 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_directory</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>.  </p>
+
+<p> This feature is available in Postfix 2.3 and later. </p>
+
 
 </DD>
 
@@ -2684,12 +2706,10 @@ home directory.
 Specify a pathname ending in "/" for qmail-style delivery.
 </p>
 
-<p>
-The precedence of <a href="local.8.html">local(8)</a> delivery features from high to low is:
-aliases, .forward files, <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_directory</a>, <a href="postconf.5.html#fallback_transport">fallback_transport</a>
-and <a href="postconf.5.html#luser_relay">luser_relay</a>.
-</p>
+<p> The precedence of <a href="local.8.html">local(8)</a> delivery features 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_directory</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>.  </p>
 
 <p>
 Examples:
@@ -2832,7 +2852,7 @@ for IPv6. </p>
 <p>
 A better solution for multi-homed firewalls is to leave <a href="postconf.5.html#inet_interfaces">inet_interfaces</a>
 at the default value and instead use explicit IP addresses in
-the master.cf SMTP server definitions.  This preserves the SMTP client's
+the <a href="master.5.html">master.cf</a> SMTP server definitions.  This preserves the SMTP client's
 loop detection, by ensuring that each side of the firewall knows that the
 other IP address is still the same host. Setting $<a href="postconf.5.html#inet_interfaces">inet_interfaces</a> to a
 single IPv4 and/or IPV6 address is primarily useful with virtual
@@ -3196,7 +3216,7 @@ configuration parameter.  See there for details. </p>
 <p> The maximal number of parallel deliveries to the same destination
 via the lmtp message delivery transport. This limit is enforced by
 the queue manager. The message delivery transport name is the first
-field in the entry in the master.cf file.  </p>
+field in the entry in the <a href="master.5.html">master.cf</a> file.  </p>
 
 
 </DD>
@@ -3207,7 +3227,7 @@ field in the entry in the master.cf file.  </p>
 <p> The maximal number of recipients per delivery via the lmtp
 message delivery transport. This limit is enforced by the queue
 manager. The message delivery transport name is the first field in
-the entry in the master.cf file.  </p>
+the entry in the <a href="master.5.html">master.cf</a> file.  </p>
 
 <p> Setting this parameter to a value of 1 changes the meaning of
 <a href="postconf.5.html#lmtp_destination_concurrency_limit">lmtp_destination_concurrency_limit</a> from concurrency per domain into
@@ -3253,15 +3273,6 @@ discard LHLO keywords selectively. </p>
 </ul>
 
 
-</DD>
-
-<DT><b><a name="lmtp_dot_quit_workaround_threshold_time">lmtp_dot_quit_workaround_threshold_time</a>
-(default: 3000s)</b></DT><DD>
-
-<p> The LMTP-specific version of the <a href="postconf.5.html#smtp_dot_quit_workaround_threshold_time">smtp_dot_quit_workaround_threshold_time</a>
-configuration parameter.  See there for details. </p>
-
-
 </DD>
 
 <DT><b><a name="lmtp_enforce_tls">lmtp_enforce_tls</a>
@@ -3310,13 +3321,13 @@ The default value is the machine hostname.  Specify a hostname or
 </p>
 
 <p>
-This information can be specified in the main.cf file for all LMTP
-clients, or it can be specified in the master.cf file for a specific
+This information can be specified in the <a href="postconf.5.html">main.cf</a> file for all LMTP
+clients, or it can be specified in the <a href="master.5.html">master.cf</a> file for a specific
 client, for example:
 </p>
 
 <pre>
-  /etc/postfix/master.cf:
+  /etc/postfix/<a href="master.5.html">master.cf</a>:
         mylmtp ... lmtp -o <a href="postconf.5.html#lmtp_lhloname">lmtp_lhlo_name</a>=foo.bar.com
 </pre>
 
@@ -3783,7 +3794,7 @@ delivery transport to the same recipient (when
 parallel deliveries to the same <a href="ADDRESS_CLASS_README.html#local_domain_class">local domain</a> (when
 "<a href="postconf.5.html#local_destination_recipient_limit">local_destination_recipient_limit</a> &gt; 1"). This limit is enforced by
 the queue manager. The message delivery transport name is the first
-field in the entry in the master.cf file. </p>
+field in the entry in the <a href="master.5.html">master.cf</a> file. </p>
 
 <p> A low limit of 2 is recommended, just in case someone has an
 expensive shell command in a .forward file or in an alias (e.g.,
@@ -3799,7 +3810,7 @@ the same time.  </p>
 <p> The maximal number of recipients per message delivery via the
 local mail delivery transport. This limit is enforced by the queue
 manager. The message delivery transport name is the first field in
-the entry in the master.cf file. </p>
+the entry in the <a href="master.5.html">master.cf</a> file. </p>
 
 <p> Setting this parameter to a value &gt; 1 changes the meaning of
 <a href="postconf.5.html#local_destination_concurrency_limit">local_destination_concurrency_limit</a> from concurrency per recipient
@@ -3933,9 +3944,9 @@ delivery agent for local delivery. You need to update the
 
 <ul>
 
-<li>You redefine the local delivery agent in master.cf.
+<li>You redefine the local delivery agent in <a href="master.5.html">master.cf</a>.
 
-<li>You redefine the "<a href="postconf.5.html#local_transport">local_transport</a>" setting in main.cf.
+<li>You redefine the "<a href="postconf.5.html#local_transport">local_transport</a>" setting in <a href="postconf.5.html">main.cf</a>.
 
 <li>You use the "<a href="postconf.5.html#luser_relay">luser_relay</a>", "<a href="postconf.5.html#mailbox_transport">mailbox_transport</a>", or "<a href="postconf.5.html#fallback_transport">fallback_transport</a>"
 feature of the Postfix <a href="local.8.html">local(8)</a> delivery agent.
@@ -3974,12 +3985,12 @@ This information can be overruled with the <a href="transport.5.html">transport(
 
 <p>
 By default, local mail is delivered to the transport called "local",
-which is just the name of a service that is defined the master.cf file.
+which is just the name of a service that is defined the <a href="master.5.html">master.cf</a> file.
 </p>
 
 <p>
 Specify a string of the form <i>transport:nexthop</i>, where <i>transport</i>
-is the name of a mail delivery transport defined in master.cf.
+is the name of a mail delivery transport defined in <a href="master.5.html">master.cf</a>.
 The <i>:nexthop</i> part is optional.  For more details see the
 <a href="transport.5.html">transport(5)</a> manual page.
 </p>
@@ -4062,7 +4073,7 @@ Note: <a href="postconf.5.html#luser_relay">luser_relay</a> works only for the P
 <p>
 Note: if you use this feature for accounts not in the UNIX password
 file, then you must specify "<a href="postconf.5.html#local_recipient_maps">local_recipient_maps</a> =" (i.e. empty)
-in the main.cf file, otherwise the Postfix SMTP server will reject mail
+in the <a href="postconf.5.html">main.cf</a> file, otherwise the Postfix SMTP server will reject mail
 for non-UNIX accounts with "User unknown in local recipient table".
 </p>
 
@@ -4271,12 +4282,10 @@ system-wide, you must set up an alias that forwards mail for root
 to a real user.
 </p>
 
-<p>
-The precedence of <a href="local.8.html">local(8)</a> delivery features from high to low is:
-aliases, .forward files, <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_directory</a>, <a href="postconf.5.html#fallback_transport">fallback_transport</a>
-and <a href="postconf.5.html#luser_relay">luser_relay</a>.
-</p>
+<p> The precedence of <a href="local.8.html">local(8)</a> delivery features 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_directory</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>.  </p>
 
 <p>
 Examples:
@@ -4300,12 +4309,10 @@ Optional lookup tables with per-recipient external commands to use
 for <a href="local.8.html">local(8)</a> mailbox delivery.  Behavior is as with <a href="postconf.5.html#mailbox_command">mailbox_command</a>.
 </p>
 
-<p>
-The precedence of <a href="local.8.html">local(8)</a> delivery features from high to low is:
-aliases, .forward files, <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_directory</a>, <a href="postconf.5.html#fallback_transport">fallback_transport</a>
-and <a href="postconf.5.html#luser_relay">luser_relay</a>.
-</p>
+<p> The precedence of <a href="local.8.html">local(8)</a> delivery features 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_directory</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>.  </p>
 
 
 </DD>
@@ -4361,12 +4368,27 @@ agent should use for mailbox delivery to all local recipients,
 whether or not they are found in the UNIX passwd database.
 </p>
 
-<p>
-The precedence of <a href="local.8.html">local(8)</a> delivery features from high to low is:
-aliases, .forward files, <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_directory</a>, <a href="postconf.5.html#fallback_transport">fallback_transport</a>
-and <a href="postconf.5.html#luser_relay">luser_relay</a>.
-</p>
+<p> The precedence of <a href="local.8.html">local(8)</a> delivery features 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_directory</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>.  </p>
+
+
+</DD>
+
+<DT><b><a name="mailbox_transport_maps">mailbox_transport_maps</a>
+(default: empty)</b></DT><DD>
+
+<p> Optional lookup tables with per-recipient message delivery
+transports to use for <a href="local.8.html">local(8)</a> mailbox delivery, whether or not the
+recipients are found in the UNIX passwd database. </p>
+
+<p> The precedence of <a href="local.8.html">local(8)</a> delivery features 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_directory</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>.  </p>
+
+<p> This feature is available in Postfix 2.3 and later. </p>
 
 
 </DD>
@@ -5545,11 +5567,11 @@ configure or operate a specific Postfix subsystem or feature.
 
 <p> Enable or disable recipient validation, built-in content
 filtering, or address mapping. Typically, these are specified in
-master.cf as command-line arguments for the <a href="smtpd.8.html">smtpd(8)</a>, <a href="qmqpd.8.html">qmqpd(8)</a> or
+<a href="master.5.html">master.cf</a> as command-line arguments for the <a href="smtpd.8.html">smtpd(8)</a>, <a href="qmqpd.8.html">qmqpd(8)</a> or
 <a href="pickup.8.html">pickup(8)</a> daemons. </p>
 
 <p> Specify zero or more of the following options.  The options
-override main.cf settings and are either implemented by <a href="smtpd.8.html">smtpd(8)</a>,
+override <a href="postconf.5.html">main.cf</a> settings and are either implemented by <a href="smtpd.8.html">smtpd(8)</a>,
 <a href="qmqpd.8.html">qmqpd(8)</a>, or <a href="pickup.8.html">pickup(8)</a> themselves, or they are forwarded to the
 cleanup server.  </p>
 
@@ -5577,8 +5599,8 @@ an external content filter. </dd>
 
 <p>
 Note: when the "BEFORE content filter" <a href="postconf.5.html#receive_override_options">receive_override_options</a>
-setting is specified in the main.cf file, specify the "AFTER content
-filter" <a href="postconf.5.html#receive_override_options">receive_override_options</a> setting in master.cf (and vice
+setting is specified in the <a href="postconf.5.html">main.cf</a> file, specify the "AFTER content
+filter" <a href="postconf.5.html#receive_override_options">receive_override_options</a> setting in <a href="master.5.html">master.cf</a> (and vice
 versa).
 </p>
 
@@ -5774,7 +5796,7 @@ See <a href="RESTRICTION_CLASS_README.html">RESTRICTION_CLASS_README</a>.</p>
 <p> The maximal number of parallel deliveries to the same destination
 via the relay message delivery transport. This limit is enforced
 by the queue manager. The message delivery transport name is the
-first field in the entry in the master.cf file.  </p>
+first field in the entry in the <a href="master.5.html">master.cf</a> file.  </p>
 
 <p> This feature is available in Postfix 2.0 and later. </p>
 
@@ -5787,7 +5809,7 @@ first field in the entry in the master.cf file.  </p>
 <p> The maximal number of recipients per delivery via the relay
 message delivery transport. This limit is enforced by the queue
 manager. The message delivery transport name is the first field in
-the entry in the master.cf file.  </p>
+the entry in the <a href="master.5.html">master.cf</a> file.  </p>
 
 <p> Setting this parameter to a value of 1 changes the meaning of
 <a href="postconf.5.html#relay_destination_concurrency_limit">relay_destination_concurrency_limit</a> from concurrency per domain
@@ -5893,7 +5915,7 @@ the <a href="transport.5.html">transport(5)</a> table.
 
 <p>
 Specify a string of the form <i>transport:nexthop</i>, where <i>transport</i>
-is the name of a mail delivery transport defined in master.cf.
+is the name of a mail delivery transport defined in <a href="master.5.html">master.cf</a>.
 The <i>:nexthop</i> part is optional.  For more details see the
 <a href="transport.5.html">transport(5)</a> manual page.
 </p>
@@ -6324,13 +6346,13 @@ bind to when making an IPv4 connection.
 </p>
 
 <p>
-This can be specified in the main.cf file for all SMTP clients, or
-it can be specified in the master.cf file for a specific client,
+This can be specified in the <a href="postconf.5.html">main.cf</a> file for all SMTP clients, or
+it can be specified in the <a href="master.5.html">master.cf</a> file for a specific client,
 for example:
 </p>
 
 <pre>
-  /etc/postfix/master.cf:
+  /etc/postfix/<a href="master.5.html">master.cf</a>:
         smtp ... smtp -o <a href="postconf.5.html#smtp_bind_address">smtp_bind_address</a>=11.22.33.44
 </pre>
 
@@ -6357,13 +6379,13 @@ bind to when making an IPv6 connection.
 <p> This feature is available in Postfix 2.2 and later. </p>
 
 <p>
-This can be specified in the main.cf file for all SMTP clients, or
-it can be specified in the master.cf file for a specific client,
+This can be specified in the <a href="postconf.5.html">main.cf</a> file for all SMTP clients, or
+it can be specified in the <a href="master.5.html">master.cf</a> file for a specific client,
 for example:
 </p>
 
 <pre>
-  /etc/postfix/master.cf:
+  /etc/postfix/<a href="master.5.html">master.cf</a>:
         smtp ... smtp -o <a href="postconf.5.html#smtp_bind_address6">smtp_bind_address6</a>=1:2:3:4:5:6:7:8
 </pre>
 
@@ -6422,7 +6444,7 @@ right-hand side of an email address, without the [] around a numeric
 IP address),
 
 <li> if mail is sent via a <a href="postconf.5.html#relayhost">relay host</a>: a <a href="postconf.5.html#relayhost">relay host</a> name (without
-[] or non-default TCP port), as specified in main.cf or in the
+[] or non-default TCP port), as specified in <a href="postconf.5.html">main.cf</a> or in the
 transport map,
 
 <li> if mail is sent via a UNIX-domain socket: a pathname (without
@@ -6621,7 +6643,7 @@ This feature is available in Postfix 2.1 and later.
 <p> The maximal number of parallel deliveries to the same destination
 via the smtp message delivery transport. This limit is enforced by
 the queue manager. The message delivery transport name is the first
-field in the entry in the master.cf file.  </p>
+field in the entry in the <a href="master.5.html">master.cf</a> file.  </p>
 
 
 </DD>
@@ -6632,7 +6654,7 @@ field in the entry in the master.cf file.  </p>
 <p> The maximal number of recipients per delivery via the smtp
 message delivery transport. This limit is enforced by the queue
 manager. The message delivery transport name is the first field in
-the entry in the master.cf file.  </p>
+the entry in the <a href="master.5.html">master.cf</a> file.  </p>
 
 <p> Setting this parameter to a value of 1 changes the meaning of
 <a href="postconf.5.html#smtp_destination_concurrency_limit">smtp_destination_concurrency_limit</a> from concurrency per domain
@@ -6678,39 +6700,6 @@ discard EHLO keywords selectively. </p>
 </ul>
 
 
-</DD>
-
-<DT><b><a name="smtp_dot_quit_workaround_threshold_time">smtp_dot_quit_workaround_threshold_time</a>
-(default: 3000s)</b></DT><DD>
-
-<p> How long a message must be queued before the "." + QUIT bug
-workaround is turned on for all deliveries; this limits the
-number of repeated deliveries with servers or firewalls that
-mis-implement END-OF-DATA + QUIT pipelining. </p>
-
-<p> When the workaround is turned on, the Postfix SMTP client will
-not send the QUIT command until it has received the server's
-END-OF-DATA reply.  This workaround incurs a small performance loss
-with delivery to sites that correctly implement SMTP command
-pipelining.  </p>
-
-<p> By default, the workaround is turned off for mail that is queued
-for less than 3000 seconds. In other words, the workaround is
-normally turned off for the first few delivery attempts of personal
-mail and of small mailing lists.  </p>
-
-<p> Specify 0 to enable this workaround upon the first delivery
-attempt, and specify a large value such as $<a href="postconf.5.html#maximal_queue_lifetime">maximal_queue_lifetime</a>
-to disable the workaround for practically all delivery attempts.
-</p>
-
-<p> Note: when the <a href="postconf.5.html#smtp_fallback_relay">smtp_fallback_relay</a> feature is used, there will
-be no second delivery attempt, and the workaround may have no effect.
-</p>
-
-<p> This feature is available in Postfix 2.3 and later. </p>
-
-
 </DD>
 
 <DT><b><a name="smtp_enforce_tls">smtp_enforce_tls</a>
@@ -6794,13 +6783,13 @@ The default value is the machine hostname.  Specify a hostname or
 </p>
 
 <p>
-This information can be specified in the main.cf file for all SMTP
-clients, or it can be specified in the master.cf file for a specific
+This information can be specified in the <a href="postconf.5.html">main.cf</a> file for all SMTP
+clients, or it can be specified in the <a href="master.5.html">master.cf</a> file for a specific
 client, for example:
 </p>
 
 <pre>
-  /etc/postfix/master.cf:
+  /etc/postfix/<a href="master.5.html">master.cf</a>:
         mysmtp ... smtp -o <a href="postconf.5.html#smtp_helo_name">smtp_helo_name</a>=foo.bar.com
 </pre>
 
@@ -7004,11 +6993,11 @@ that ends in ".".
 
 <p>
 The default is to comply with <a href="http://www.faqs.org/rfcs/rfc821.html">RFC 821</a>. If you have to send mail to
-a broken SMTP server, configure a special SMTP client in master.cf:
+a broken SMTP server, configure a special SMTP client in <a href="master.5.html">master.cf</a>:
 </p>
 
 <pre>
-    /etc/postfix/master.cf:
+    /etc/postfix/<a href="master.5.html">master.cf</a>:
         broken-smtp . . . smtp -o <a href="postconf.5.html#smtp_quote_rfc821_envelope">smtp_quote_rfc821_envelope</a>=no
 </pre>
 
@@ -8173,7 +8162,7 @@ the next restriction in the list, if any. This may stop zombie
 mail when used as:
 
 <pre>
-/etc/postfix/main.cf:
+/etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#smtpd_client_restrictions">smtpd_client_restrictions</a> =
         sleep 1, <a href="postconf.5.html#reject_unauth_pipelining">reject_unauth_pipelining</a>
     <a href="postconf.5.html#smtpd_delay_reject">smtpd_delay_reject</a> = no
@@ -9879,7 +9868,7 @@ $<a href="postconf.5.html#smtpd_tls_session_cache_timeout">smtpd_tls_session_cac
 instead of using the STARTTLS command. </p>
 
 <p> If you want to support this service, enable a special port in
-master.cf, and specify "-o <a href="postconf.5.html#smtpd_tls_wrappermode">smtpd_tls_wrappermode</a>=yes" on the SMTP
+<a href="master.5.html">master.cf</a>, and specify "-o <a href="postconf.5.html#smtpd_tls_wrappermode">smtpd_tls_wrappermode</a>=yes" on the SMTP
 server's command line. Port 465 (smtps) was once chosen for this
 purpose. </p>
 
@@ -10104,7 +10093,7 @@ Warning: a non-default <a href="postconf.5.html#syslog_facility">syslog_facility
 after a Postfix process has completed initialization.  Errors during
 process initialization will be logged with the default facility.
 Examples are errors while parsing the command line arguments, and
-errors while accessing the Postfix main.cf configuration file.
+errors while accessing the Postfix <a href="postconf.5.html">main.cf</a> configuration file.
 </p>
 
 
@@ -10123,7 +10112,7 @@ Warning: a non-default <a href="postconf.5.html#syslog_name">syslog_name</a> set
 a Postfix process has completed initialization. Errors during
 process initialization will be logged with the default name. Examples
 are errors while parsing the command line arguments, and errors
-while accessing the Postfix main.cf configuration file.
+while accessing the Postfix <a href="postconf.5.html">main.cf</a> configuration file.
 </p>
 
 
@@ -10600,7 +10589,7 @@ This feature is available in Postfix 2.1 and later.
 <p> The maximal number of parallel deliveries to the same destination
 via the virtual message delivery transport. This limit is enforced
 by the queue manager. The message delivery transport name is the
-first field in the entry in the master.cf file.  </p>
+first field in the entry in the <a href="master.5.html">master.cf</a> file.  </p>
 
 
 </DD>
@@ -10611,7 +10600,7 @@ first field in the entry in the master.cf file.  </p>
 <p> The maximal number of recipients per delivery via the virtual
 message delivery transport. This limit is enforced by the queue
 manager. The message delivery transport name is the first field in
-the entry in the master.cf file.  </p>
+the entry in the <a href="master.5.html">master.cf</a> file.  </p>
 
 <p> Setting this parameter to a value of 1 changes the meaning of
 <a href="postconf.5.html#virtual_destination_concurrency_limit">virtual_destination_concurrency_limit</a> from concurrency per domain
@@ -10821,7 +10810,7 @@ This information can be overruled with the <a href="transport.5.html">transport(
 
 <p>
 Specify a string of the form <i>transport:nexthop</i>, where <i>transport</i>
-is the name of a mail delivery transport defined in master.cf.
+is the name of a mail delivery transport defined in <a href="master.5.html">master.cf</a>.
 The <i>:nexthop</i> part is optional.  For more details see the
 <a href="transport.5.html">transport(5)</a> manual page.
 </p>
index 4ed672cfb68899bd643e07d165ee170b2c3da396..9c0b5d460ac1897b21778d9cce3a6e4124b7a17a 100644 (file)
@@ -145,7 +145,7 @@ SMTP(8)                                                                SMTP(8)
        document describes only those LMTP-related parameters that
        aren't simply "ghost" parameters.
 
-       Changes to <b>main.cf</b> are picked up automatically, as <a href="smtp.8.html"><b>smtp</b>(8)</a>
+       Changes to <a href="postconf.5.html"><b>main.cf</b></a> are picked up automatically, as <a href="smtp.8.html"><b>smtp</b>(8)</a>
        processes  run  for only a limited amount of time. Use the
        command "<b>postfix reload</b>" to speed up a change.
 
@@ -166,13 +166,6 @@ SMTP(8)                                                                SMTP(8)
               Defer  mail  delivery when no MX record resolves to
               an IP address.
 
-       <b><a href="postconf.5.html#smtp_dot_quit_workaround_threshold_time">smtp_dot_quit_workaround_threshold_time</a> (3000s)</b>
-              How long a message must be queued before the "."  +
-              QUIT  bug  workaround is turned on for all deliver-
-              ies; this limits the number of repeated  deliveries
-              with  servers  or firewalls that mis-implement END-
-              OF-DATA + QUIT pipelining.
-
        <b><a href="postconf.5.html#smtp_line_length_limit">smtp_line_length_limit</a> (990)</b>
               The maximal length of message header and body lines
               that Postfix will send via SMTP.
@@ -533,8 +526,8 @@ SMTP(8)                                                                SMTP(8)
               condition.
 
        <b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
-              The  default  location  of  the Postfix main.cf and
-              master.cf configuration files.
+              The  default  location  of  the Postfix <a href="postconf.5.html">main.cf</a> and
+              <a href="master.5.html">master.cf</a> configuration files.
 
        <b><a href="postconf.5.html#daemon_timeout">daemon_timeout</a> (18000s)</b>
               How much time a Postfix daemon process may take  to
index 9bfc3e5236076c425cfd85e903495ef5983ad96f..7e1dece6e68ded9931d00b99043eba0b73202089 100644 (file)
@@ -1270,7 +1270,23 @@ for destinations that it is MX host for.
 .SH fallback_transport (default: empty)
 Optional message delivery transport that the \fBlocal\fR(8) delivery
 agent should use for names that are not found in the \fBaliases\fR(5)
-database or in the UNIX passwd database.
+or UNIX password database.
+.PP
+The precedence of \fBlocal\fR(8) delivery features from high to low
+is: aliases, .forward files, mailbox_transport_maps, mailbox_transport,
+mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory,
+fallback_transport_maps, fallback_transport and luser_relay.
+.SH fallback_transport_maps (default: empty)
+Optional lookup tables with per-recipient message delivery
+transports for recipients that the \fBlocal\fR(8) delivery agent could
+not find in the \fBaliases\fR(5) or UNIX password database.
+.PP
+The precedence of \fBlocal\fR(8) delivery features from high to low
+is: aliases, .forward files, mailbox_transport_maps, mailbox_transport,
+mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory,
+fallback_transport_maps, fallback_transport and luser_relay.
+.PP
+This feature is available in Postfix 2.3 and later.
 .SH fast_flush_domains (default: $relay_domains)
 Optional list of destinations that are eligible for per-destination
 logfiles with mail that is queued to those destinations.
@@ -1421,10 +1437,10 @@ home directory.
 .PP
 Specify a pathname ending in "/" for qmail-style delivery.
 .PP
-The precedence of \fBlocal\fR(8) delivery features from high to low is:
-aliases, .forward files, mailbox_transport, mailbox_command_maps,
-mailbox_command, home_mailbox, mail_spool_directory, fallback_transport
-and luser_relay.
+The precedence of \fBlocal\fR(8) delivery features from high to low
+is: aliases, .forward files, mailbox_transport_maps, mailbox_transport,
+mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory,
+fallback_transport_maps, fallback_transport and luser_relay.
 .PP
 Examples:
 .PP
@@ -1746,9 +1762,6 @@ this action from being logged.
 .IP \(bu
 Use the lmtp_discard_lhlo_keyword_address_maps feature to
 discard LHLO keywords selectively.
-.SH lmtp_dot_quit_workaround_threshold_time (default: 3000s)
-The LMTP-specific version of the smtp_dot_quit_workaround_threshold_time
-configuration parameter.  See there for details.
 .SH lmtp_enforce_tls (default: no)
 The LMTP-specific version of the smtp_enforce_tls configuration
 parameter.  See there for details.
@@ -2309,10 +2322,10 @@ Note: if you use the mailbox_command feature to deliver mail
 system-wide, you must set up an alias that forwards mail for root
 to a real user.
 .PP
-The precedence of \fBlocal\fR(8) delivery features from high to low is:
-aliases, .forward files, mailbox_transport, mailbox_command_maps,
-mailbox_command, home_mailbox, mail_spool_directory, fallback_transport
-and luser_relay.
+The precedence of \fBlocal\fR(8) delivery features from high to low
+is: aliases, .forward files, mailbox_transport_maps, mailbox_transport,
+mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory,
+fallback_transport_maps, fallback_transport and luser_relay.
 .PP
 Examples:
 .PP
@@ -2330,10 +2343,10 @@ mailbox_command = /some/where/maildrop -d "$USER"
 Optional lookup tables with per-recipient external commands to use
 for \fBlocal\fR(8) mailbox delivery.  Behavior is as with mailbox_command.
 .PP
-The precedence of \fBlocal\fR(8) delivery features from high to low is:
-aliases, .forward files, mailbox_transport, mailbox_command_maps,
-mailbox_command, home_mailbox, mail_spool_directory, fallback_transport
-and luser_relay.
+The precedence of \fBlocal\fR(8) delivery features from high to low
+is: aliases, .forward files, mailbox_transport_maps, mailbox_transport,
+mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory,
+fallback_transport_maps, fallback_transport and luser_relay.
 .SH mailbox_delivery_lock (default: see "postconf -d" output)
 How to lock a UNIX-style \fBlocal\fR(8) mailbox before attempting delivery.
 For a list of available file locking methods, use the "\fBpostconf
@@ -2359,10 +2372,21 @@ Optional message delivery transport that the \fBlocal\fR(8) delivery
 agent should use for mailbox delivery to all local recipients,
 whether or not they are found in the UNIX passwd database.
 .PP
-The precedence of \fBlocal\fR(8) delivery features from high to low is:
-aliases, .forward files, mailbox_transport, mailbox_command_maps,
-mailbox_command, home_mailbox, mail_spool_directory, fallback_transport
-and luser_relay.
+The precedence of \fBlocal\fR(8) delivery features from high to low
+is: aliases, .forward files, mailbox_transport_maps, mailbox_transport,
+mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory,
+fallback_transport_maps, fallback_transport and luser_relay.
+.SH mailbox_transport_maps (default: empty)
+Optional lookup tables with per-recipient message delivery
+transports to use for \fBlocal\fR(8) mailbox delivery, whether or not the
+recipients are found in the UNIX passwd database.
+.PP
+The precedence of \fBlocal\fR(8) delivery features from high to low
+is: aliases, .forward files, mailbox_transport_maps, mailbox_transport,
+mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory,
+fallback_transport_maps, fallback_transport and luser_relay.
+.PP
+This feature is available in Postfix 2.3 and later.
 .SH mailq_path (default: see "postconf -d" output)
 Sendmail compatibility feature that specifies where the Postfix
 \fBmailq\fR(1) command is installed. This command can be used to
@@ -3723,31 +3747,6 @@ this action from being logged.
 .IP \(bu
 Use the smtp_discard_ehlo_keyword_address_maps feature to
 discard EHLO keywords selectively.
-.SH smtp_dot_quit_workaround_threshold_time (default: 3000s)
-How long a message must be queued before the "." + QUIT bug
-workaround is turned on for all deliveries; this limits the
-number of repeated deliveries with servers or firewalls that
-mis-implement END-OF-DATA + QUIT pipelining.
-.PP
-When the workaround is turned on, the Postfix SMTP client will
-not send the QUIT command until it has received the server's
-END-OF-DATA reply.  This workaround incurs a small performance loss
-with delivery to sites that correctly implement SMTP command
-pipelining.
-.PP
-By default, the workaround is turned off for mail that is queued
-for less than 3000 seconds. In other words, the workaround is
-normally turned off for the first few delivery attempts of personal
-mail and of small mailing lists.
-.PP
-Specify 0 to enable this workaround upon the first delivery
-attempt, and specify a large value such as $maximal_queue_lifetime
-to disable the workaround for practically all delivery attempts.
-.PP
-Note: when the smtp_fallback_relay feature is used, there will
-be no second delivery attempt, and the workaround may have no effect.
-.PP
-This feature is available in Postfix 2.3 and later.
 .SH smtp_enforce_tls (default: no)
 Enforcement mode: require that remote SMTP servers use TLS
 encryption, and never send mail in the clear.  This also requires
index 17ebdc14ea0c507894da8e668e84158e46f064fa..586d1d2dc4778f974825fb4ba0992e7b3bc613dc 100644 (file)
@@ -113,18 +113,23 @@ configuration parameter. Specify a relative path name. Specify a name
 ending in \fB/\fR for \fBqmail\fR-compatible \fBmaildir\fR delivery.
 
 Mailbox delivery can be delegated to an external command specified
-with the \fBmailbox_command\fR configuration parameter. The command
+with the \fBmailbox_command_maps\fR and \fBmailbox_command\fR
+configuration parameters. The command
 executes with the privileges of the recipient user (exceptions:
 secondary groups are not enabled; in case of delivery as root,
 the command executes with the privileges of \fBdefault_privs\fR).
 
 Mailbox delivery can be delegated to alternative message transports
 specified in the \fBmaster.cf\fR file.
-The \fBmailbox_transport\fR configuration parameter specifies a
+The \fBmailbox_transport_maps\fR and \fBmailbox_transport\fR
+configuration parameters specify an optional
 message transport that is to be used for all local recipients,
 regardless of whether they are found in the UNIX passwd database.
-The \fBfallback_transport\fR parameter specifies a message transport
-for recipients that are not found in the UNIX passwd database.
+The \fBfallback_transport_maps\fR and
+\fBfallback_transport\fR parameters specify an optional
+message transport
+for recipients that are not found in the aliases(5) or UNIX
+passwd database.
 
 In the case of UNIX-style mailbox delivery,
 the \fBlocal\fR(8) daemon prepends a "\fBFrom \fIsender time_stamp\fR"
@@ -405,14 +410,19 @@ expanding aliases or .forward files.
 .ad
 .fi
 The precedence of \fBlocal\fR(8) delivery methods from high to low is:
-aliases, .forward files, mailbox_transport, mailbox_command_maps,
-mailbox_command, home_mailbox, mail_spool_directory, fallback_transport
-and luser_relay.
+aliases, .forward files, mailbox_transport_maps,
+mailbox_transport, mailbox_command_maps, mailbox_command,
+home_mailbox, mail_spool_directory, fallback_transport_maps,
+fallback_transport, and luser_relay.
 .IP "\fBalias_maps (see 'postconf -d' output)\fR"
 The alias databases that are used for \fBlocal\fR(8) delivery.
 .IP "\fBforward_path (see 'postconf -d' output)\fR"
 The \fBlocal\fR(8) delivery agent search list for finding a .forward
 file with user-specified delivery methods.
+.IP "\fBmailbox_transport_maps (empty)\fR"
+Optional lookup tables with per-recipient message delivery
+transports to use for \fBlocal\fR(8) mailbox delivery, whether or not the
+recipients are found in the UNIX passwd database.
 .IP "\fBmailbox_transport (empty)\fR"
 Optional message delivery transport that the \fBlocal\fR(8) delivery
 agent should use for mailbox delivery to all local recipients,
@@ -428,10 +438,14 @@ Optional pathname of a mailbox file relative to a \fBlocal\fR(8) user's
 home directory.
 .IP "\fBmail_spool_directory (see 'postconf -d' output)\fR"
 The directory where \fBlocal\fR(8) UNIX-style mailboxes are kept.
+.IP "\fBfallback_transport_maps (empty)\fR"
+Optional lookup tables with per-recipient message delivery
+transports for recipients that the \fBlocal\fR(8) delivery agent could
+not find in the \fBaliases\fR(5) or UNIX password database.
 .IP "\fBfallback_transport (empty)\fR"
 Optional message delivery transport that the \fBlocal\fR(8) delivery
 agent should use for names that are not found in the \fBaliases\fR(5)
-database or in the UNIX passwd database.
+or UNIX password database.
 .IP "\fBluser_relay (empty)\fR"
 Optional catch-all destination for unknown \fBlocal\fR(8) recipients.
 .PP
index 5126a27cbb8a49f06d8002b0d2870a43d3d552b3..0b3b09396dc45b6f31d63d177580a1e15973272a 100644 (file)
@@ -162,11 +162,6 @@ Always send EHLO at the start of an SMTP session.
 Never send EHLO at the start of an SMTP session.
 .IP "\fBsmtp_defer_if_no_mx_address_found (no)\fR"
 Defer mail delivery when no MX record resolves to an IP address.
-.IP "\fBsmtp_dot_quit_workaround_threshold_time (3000s)\fR"
-How long a message must be queued before the "." + QUIT bug
-workaround is turned on for all deliveries; this limits the
-number of repeated deliveries with servers or firewalls that
-mis-implement END-OF-DATA + QUIT pipelining.
 .IP "\fBsmtp_line_length_limit (990)\fR"
 The maximal length of message header and body lines that Postfix
 will send via SMTP.
index 405b2dbe20e116dc343dad4fda0b7c288f938673..c2c674a05f4cdc9e85e447325dbc021acbade9d9 100755 (executable)
@@ -161,8 +161,9 @@ while (<>) {
     s;\berror_service_name\b;<a href="postconf.5.html#error_service_name">$&</a>;g;
     s;\bexpand_owner_alias\b;<a href="postconf.5.html#expand_owner_alias">$&</a>;g;
     s;\bexport_environment\b;<a href="postconf.5.html#export_environment">$&</a>;g;
-    s;\bfallback_relay\b;<a href="postconf.5.html#fallback_relay">$&</a>;g;
-    s;\bfallback_transport\b;<a href="postconf.5.html#fallback_transport">$&</a>;g;
+    s;\bfall[-</bB>]*\n* *[<bB>]*back_relay\b;<a href="postconf.5.html#fallback_relay">$&</a>;g;
+    s;\bfall[-</bB>]*\n* *[<bB>]*back_transport\b;<a href="postconf.5.html#fallback_transport">$&</a>;g;
+    s;\bfall[-</bB>]*\n* *[<bB>]*back_transport_maps\b;<a href="postconf.5.html#fallback_transport_maps">$&</a>;g;
     s;\bfast_flush_domains\b;<a href="postconf.5.html#fast_flush_domains">$&</a>;g;
     s;\bfast_flush_purge_time\b;<a href="postconf.5.html#fast_flush_purge_time">$&</a>;g;
     s;\bfast_flush_refresh_time\b;<a href="postconf.5.html#fast_flush_refresh_time">$&</a>;g;
@@ -252,11 +253,12 @@ while (<>) {
     s;\bmail_release_date\b;<a href="postconf.5.html#mail_release_date">$&</a>;g;
     s;\bmail_spool_direc[-</bB>]*\n* *[<bB>]*tory\b;<a href="postconf.5.html#mail_spool_directory">$&</a>;g;
     s;\bmail_version\b;<a href="postconf.5.html#mail_version">$&</a>;g;
-    s;\bmail[-</bB>]*\n* *[<bB>]*box_command\b;<a href="postconf.5.html#mailbox_command">$&</a>;g;
-    s;\bmail[-</bB>]*\n* *[<bB>]*box_command_maps\b;<a href="postconf.5.html#mailbox_command_maps">$&</a>;g;
+    s;\bmail[-</bB>]*\n* *[<bB>]*box_com[-</bB>]*\n* *[<bB>]*mand\b;<a href="postconf.5.html#mailbox_command">$&</a>;g;
+    s;\bmail[-</bB>]*\n* *[<bB>]*box_com[-</bB>]*\n* *[<bB>]*mand_maps\b;<a href="postconf.5.html#mailbox_command_maps">$&</a>;g;
     s;\bmail[-</bB>]*\n* *[<bB>]*box_deliv[-</Bb>]*\n* *[<Bb>]*ery_lock\b;<a href="postconf.5.html#mailbox_delivery_lock">$&</a>;g;
     s;\bmail[-</bB>]*\n* *[<bB>]*box_size_limit\b;<a href="postconf.5.html#mailbox_size_limit">$&</a>;g;
     s;\bmail[-</bB>]*\n* *[<bB>]*box_transport\b;<a href="postconf.5.html#mailbox_transport">$&</a>;g;
+    s;\bmail[-</bB>]*\n* *[<bB>]*box_transport_maps\b;<a href="postconf.5.html#mailbox_transport_maps">$&</a>;g;
     s;\bmailq_path\b;<a href="postconf.5.html#mailq_path">$&</a>;g;
     s;\bmanpage_directory\b;<a href="postconf.5.html#manpage_directory">$&</a>;g;
     s;\bmaps_rbl_domains\b;<a href="postconf.5.html#maps_rbl_domains">$&</a>;g;
@@ -387,7 +389,6 @@ while (<>) {
     s;\bsmtp_mx_session_limit\b;<a href="postconf.5.html#smtp_mx_session_limit">$&</a>;g;
     s;\bsmtp_never_send_ehlo\b;<a href="postconf.5.html#smtp_never_send_ehlo">$&</a>;g;
     s;\bsmtp_sender_depen[-</bB>]*\n*[ <bB>]*dent_authentication\b;<a href="postconf.5.html#smtp_sender_dependent_authentication">$&</a>;g;
-    s;\bsmtp_dot_quit_workaround_threshold_time\b;<a href="postconf.5.html#smtp_dot_quit_workaround_threshold_time">$&</a>;g;
     s;\bsmtp_pix_workaround_delay_time\b;<a href="postconf.5.html#smtp_pix_workaround_delay_time">$&</a>;g;
     s;\bsmtp_pix_workaround_threshold_time\b;<a href="postconf.5.html#smtp_pix_workaround_threshold_time">$&</a>;g;
     s;\bsmtp_quit_timeout\b;<a href="postconf.5.html#smtp_quit_timeout">$&</a>;g;
@@ -627,6 +628,9 @@ while (<>) {
     s/[<bB>]*body_checks[<\/bB>]*\(5\)/<a href="header_checks.5.html">$&<\/a>/g;
     s/[<bB>]*header_checks[<\/bB>]*\(5\)/<a href="header_checks.5.html">$&<\/a>/g;
 
+    s/[<bB>]*main\.cf[<\/bB>]*/<a href="postconf.5.html">$&<\/a>/g;
+    s/[<bB>]*master\.cf[<\/bB>]*/<a href="master.5.html">$&<\/a>/g;
+
     # Hyperlink README document names
 
     s/\b([A-Z][A-Z0-9_]*)[-]*\n*[ ]*([A-Z0-9_]*_README)\b/<a href="$1$2.html">$&<\/a>/g;
index c028ee5afa92400ad5ce35d49ab88cefe870b070..0405e2838f57d6b1b0ace269af1480be3c68bd1a 100644 (file)
@@ -252,7 +252,7 @@ document for an introduction to the Postfix architecture. </p>
  5 
  6 # Localize these. The -G option does nothing before Postfix 2.3.
  7 INSPECT_DIR=/var/spool/filter
- 8 SENDMAIL="/usr/sbin/sendmail -G -i"
+ 8 SENDMAIL="/usr/sbin/sendmail -G -i" # NEVER NEVER NEVER use "-t" here.
  9 
 10 # Exit codes from &lt;sysexits.h&gt;
 11 EX_TEMPFAIL=75
@@ -288,6 +288,10 @@ otherwise it disables address rewriting of message headers. </p>
 <li> <p> Line 8: The -i option says don't stop reading input when
 a line contains "." only.  </p>
 
+<li> <p> Line 8: NEVER NEVER NEVER use the "-t" command-line option
+here. It will mis-deliver mail, like sending mailing list mail back
+to the mailing list. </p>
+
 <li> <p> Line 21: The idea is to first capture the message to
 file and then run the content through a third-party content filter
 program. </p>
@@ -623,7 +627,8 @@ gobble up a lot of system resources, so you don't want to have too
 much of it running at the same time. </p>
 
 <li> <p> With "-o smtp_send_xforward_command=yes", the scan transport
-will try to forward the original client name and IP address to the
+will try to forward the original client name and IP address 
+through the content filter to the
 after-filter smtpd process, so that filtered mail is logged with
 the real client name IP address. See smtp(8) and XFORWARD_README
 for more information. </p>
index 1294e41f04a323d7a7ea3d0d8356fbaa7e771ce5..65e620d06759885e203d76ebdd526b6fb5782a37 100644 (file)
@@ -1588,12 +1588,10 @@ home directory.
 Specify a pathname ending in "/" for qmail-style delivery.
 </p>
 
-<p>
-The precedence of local(8) delivery features from high to low is:
-aliases, .forward files, mailbox_transport, mailbox_command_maps,
-mailbox_command, home_mailbox, mail_spool_directory, fallback_transport
-and luser_relay.
-</p>
+<p> The precedence of local(8) delivery features from high to low
+is: aliases, .forward files, mailbox_transport_maps, mailbox_transport,
+mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory,
+fallback_transport_maps, fallback_transport and luser_relay.  </p>
 
 <p>
 Examples:
@@ -2389,12 +2387,10 @@ system-wide, you must set up an alias that forwards mail for root
 to a real user.
 </p>
 
-<p>
-The precedence of local(8) delivery features from high to low is:
-aliases, .forward files, mailbox_transport, mailbox_command_maps,
-mailbox_command, home_mailbox, mail_spool_directory, fallback_transport
-and luser_relay.
-</p>
+<p> The precedence of local(8) delivery features from high to low
+is: aliases, .forward files, mailbox_transport_maps, mailbox_transport,
+mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory,
+fallback_transport_maps, fallback_transport and luser_relay.  </p>
 
 <p>
 Examples:
@@ -6659,8 +6655,13 @@ sender address to the name of the "owner-aliasname" alias.
 <p>
 Optional message delivery transport that the local(8) delivery
 agent should use for names that are not found in the aliases(5)
-database or in the UNIX passwd database.
+or UNIX password database.
 </p>
+<p> The precedence of local(8) delivery features from high to low
+is: aliases, .forward files, mailbox_transport_maps, mailbox_transport,
+mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory,
+fallback_transport_maps, fallback_transport and luser_relay.  </p>
 
 %PARAM fault_injection_code 0
 
@@ -6820,12 +6821,10 @@ Optional lookup tables with per-recipient external commands to use
 for local(8) mailbox delivery.  Behavior is as with mailbox_command.
 </p>
 
-<p>
-The precedence of local(8) delivery features from high to low is:
-aliases, .forward files, mailbox_transport, mailbox_command_maps,
-mailbox_command, home_mailbox, mail_spool_directory, fallback_transport
-and luser_relay.
-</p>
+<p> The precedence of local(8) delivery features from high to low
+is: aliases, .forward files, mailbox_transport_maps, mailbox_transport,
+mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory,
+fallback_transport_maps, fallback_transport and luser_relay.  </p>
 
 %PARAM mailbox_delivery_lock see "postconf -d" output
 
@@ -6857,12 +6856,10 @@ agent should use for mailbox delivery to all local recipients,
 whether or not they are found in the UNIX passwd database.
 </p>
 
-<p>
-The precedence of local(8) delivery features from high to low is:
-aliases, .forward files, mailbox_transport, mailbox_command_maps,
-mailbox_command, home_mailbox, mail_spool_directory, fallback_transport
-and luser_relay.
-</p>
+<p> The precedence of local(8) delivery features from high to low
+is: aliases, .forward files, mailbox_transport_maps, mailbox_transport,
+mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory,
+fallback_transport_maps, fallback_transport and luser_relay.  </p>
 
 %PARAM mailq_path see "postconf -d" output
 
@@ -9126,36 +9123,28 @@ rejecting the address as invalid.  </p>
 
 <p> This feature is available in Postfix 2.3 and later.
 
-%PARAM smtp_dot_quit_workaround_threshold_time 3000s
-
-<p> How long a message must be queued before the "." + QUIT bug
-workaround is turned on for all deliveries; this limits the
-number of repeated deliveries with servers or firewalls that
-mis-implement END-OF-DATA + QUIT pipelining. </p>
-
-<p> When the workaround is turned on, the Postfix SMTP client will
-not send the QUIT command until it has received the server's
-END-OF-DATA reply.  This workaround incurs a small performance loss
-with delivery to sites that correctly implement SMTP command
-pipelining.  </p>
-
-<p> By default, the workaround is turned off for mail that is queued
-for less than 3000 seconds. In other words, the workaround is
-normally turned off for the first few delivery attempts of personal
-mail and of small mailing lists.  </p>
-
-<p> Specify 0 to enable this workaround upon the first delivery
-attempt, and specify a large value such as $maximal_queue_lifetime
-to disable the workaround for practically all delivery attempts.
-</p>
-
-<p> Note: when the smtp_fallback_relay feature is used, there will
-be no second delivery attempt, and the workaround may have no effect.
-</p>
+%PARAM mailbox_transport_maps
 
+<p> Optional lookup tables with per-recipient message delivery
+transports to use for local(8) mailbox delivery, whether or not the
+recipients are found in the UNIX passwd database. </p>
+<p> The precedence of local(8) delivery features from high to low
+is: aliases, .forward files, mailbox_transport_maps, mailbox_transport,
+mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory,
+fallback_transport_maps, fallback_transport and luser_relay.  </p>
 <p> This feature is available in Postfix 2.3 and later. </p>
 
-%PARAM lmtp_dot_quit_workaround_threshold_time 3000s
+%PARAM fallback_transport_maps
 
-<p> The LMTP-specific version of the smtp_dot_quit_workaround_threshold_time
-configuration parameter.  See there for details. </p>
+<p> Optional lookup tables with per-recipient message delivery
+transports for recipients that the local(8) delivery agent could
+not find in the aliases(5) or UNIX password database. </p>
+<p> The precedence of local(8) delivery features from high to low
+is: aliases, .forward files, mailbox_transport_maps, mailbox_transport,
+mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory,
+fallback_transport_maps, fallback_transport and luser_relay.  </p>
+<p> This feature is available in Postfix 2.3 and later. </p>
index fb0aa89e6844dc62a5b8d6ee6580e966a7d87491..d9e70e59d75ecffbea4482cba4e8c0e8094be918 100644 (file)
@@ -937,6 +937,12 @@ static void post_jail_init(char *unused_name, char **unused_argv)
      * Do not limit the number of client requests.
      */
     var_use_limit = 0;
+
+    /*
+     * Don't exit before the sampling interval ends.
+     */
+    if (var_idle_limit < var_anvil_time_unit)
+       var_idle_limit = var_anvil_time_unit;
 }
 
 /* main - pass control to the multi-threaded skeleton */
index acfa48531e8e9d3ee63ab5fe911e9f5c336393fc..97f39f26aaf01415bff9e3cbf5cebcc4db1f2c3a 100644 (file)
@@ -491,10 +491,18 @@ extern char *var_mailbox_cmd_maps;
 #define DEF_MAILBOX_TRANSP     ""
 extern char *var_mailbox_transport;
 
+#define VAR_MBOX_TRANSP_MAPS   "mailbox_transport_maps"
+#define DEF_MBOX_TRANSP_MAPS   ""
+extern char *var_mbox_transp_maps;
+
 #define VAR_FALLBACK_TRANSP    "fallback_transport"
 #define DEF_FALLBACK_TRANSP    ""
 extern char *var_fallback_transport;
 
+#define VAR_FBCK_TRANSP_MAPS   "fallback_transport_maps"
+#define DEF_FBCK_TRANSP_MAPS   ""
+extern char *var_fbck_transp_maps;
+
  /*
   * Local delivery: path to per-user forwarding file.
   */
@@ -1006,12 +1014,6 @@ extern int var_smtp_pix_thresh;
 #define DEF_LMTP_PIX_DELAY     "10s"
 extern int var_smtp_pix_delay;
 
-#define VAR_SMTP_DOTQ_THRESH   "smtp_dot_quit_workaround_threshold"
-#define DEF_SMTP_DOTQ_THRESH   "3000s"
-#define VAR_LMTP_DOTQ_THRESH   "lmtp_dot_quit_workaround_threshold"
-#define DEF_LMTP_DOTQ_THRESH   "3000s"
-extern int var_smtp_dotq_thresh;
-
 #define VAR_SMTP_DEFER_MXADDR  "smtp_defer_if_no_mx_address_found"
 #define DEF_SMTP_DEFER_MXADDR  0
 #define VAR_LMTP_DEFER_MXADDR  "lmtp_defer_if_no_mx_address_found"
index 3bd0e89536c7aa7ccb3b2a462e4c19e836e9d496..ee8ce66aadca2758df7b7d40349d4aa2f41c0424 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      "20051229"
+#define MAIL_RELEASE_DATE      "20060103"
 #define MAIL_VERSION_NUMBER    "2.3"
 
 #ifdef SNAPSHOT
index 5de53e485605e5c3b235aef1fa2c8efcf3bdec7f..759f71c34ddb403cb40bbea43c580753eb25ba60 100644 (file)
 /*     ending in \fB/\fR for \fBqmail\fR-compatible \fBmaildir\fR delivery.
 /*
 /*     Mailbox delivery can be delegated to an external command specified
-/*     with the \fBmailbox_command\fR configuration parameter. The command
+/*     with the \fBmailbox_command_maps\fR and \fBmailbox_command\fR
+/*     configuration parameters. The command
 /*     executes with the privileges of the recipient user (exceptions:
 /*     secondary groups are not enabled; in case of delivery as root,
 /*     the command executes with the privileges of \fBdefault_privs\fR).
 /*
 /*     Mailbox delivery can be delegated to alternative message transports
 /*     specified in the \fBmaster.cf\fR file.
-/*     The \fBmailbox_transport\fR configuration parameter specifies a
+/*     The \fBmailbox_transport_maps\fR and \fBmailbox_transport\fR
+/*     configuration parameters specify an optional
 /*     message transport that is to be used for all local recipients,
 /*     regardless of whether they are found in the UNIX passwd database.
-/*     The \fBfallback_transport\fR parameter specifies a message transport
-/*     for recipients that are not found in the UNIX passwd database.
+/*     The \fBfallback_transport_maps\fR and
+/*     \fBfallback_transport\fR parameters specify an optional
+/*     message transport
+/*     for recipients that are not found in the aliases(5) or UNIX
+/*     passwd database.
 /*
 /*     In the case of UNIX-style mailbox delivery,
 /*     the \fBlocal\fR(8) daemon prepends a "\fBFrom \fIsender time_stamp\fR"
 /* .ad
 /* .fi
 /*     The precedence of \fBlocal\fR(8) delivery methods from high to low is:
-/*     aliases, .forward files, mailbox_transport, mailbox_command_maps,
-/*     mailbox_command, home_mailbox, mail_spool_directory, fallback_transport
-/*     and luser_relay.
+/*     aliases, .forward files, mailbox_transport_maps,
+/*     mailbox_transport, mailbox_command_maps, mailbox_command,
+/*     home_mailbox, mail_spool_directory, fallback_transport_maps,
+/*     fallback_transport, and luser_relay.
 /* .IP "\fBalias_maps (see 'postconf -d' output)\fR"
 /*     The alias databases that are used for \fBlocal\fR(8) delivery.
 /* .IP "\fBforward_path (see 'postconf -d' output)\fR"
 /*     The \fBlocal\fR(8) delivery agent search list for finding a .forward
 /*     file with user-specified delivery methods.
+/* .IP "\fBmailbox_transport_maps (empty)\fR"
+/*     Optional lookup tables with per-recipient message delivery
+/*     transports to use for \fBlocal\fR(8) mailbox delivery, whether or not the
+/*     recipients are found in the UNIX passwd database.
 /* .IP "\fBmailbox_transport (empty)\fR"
 /*     Optional message delivery transport that the \fBlocal\fR(8) delivery
 /*     agent should use for mailbox delivery to all local recipients,
 /*     home directory.
 /* .IP "\fBmail_spool_directory (see 'postconf -d' output)\fR"
 /*     The directory where \fBlocal\fR(8) UNIX-style mailboxes are kept.
+/* .IP "\fBfallback_transport_maps (empty)\fR"
+/*     Optional lookup tables with per-recipient message delivery
+/*     transports for recipients that the \fBlocal\fR(8) delivery agent could
+/*     not find in the \fBaliases\fR(5) or UNIX password database.
 /* .IP "\fBfallback_transport (empty)\fR"
 /*     Optional message delivery transport that the \fBlocal\fR(8) delivery
 /*     agent should use for names that are not found in the \fBaliases\fR(5)
-/*     database or in the UNIX passwd database.
+/*     or UNIX password database.
 /* .IP "\fBluser_relay (empty)\fR"
 /*     Optional catch-all destination for unknown \fBlocal\fR(8) recipients.
 /* .PP
@@ -604,7 +618,9 @@ char   *var_luser_relay;
 int     var_biff;
 char   *var_mail_spool_dir;
 char   *var_mailbox_transport;
+char   *var_mbox_transp_maps;
 char   *var_fallback_transport;
+char   *var_fbck_transp_maps;
 char   *var_exec_directory;
 char   *var_exec_exp_filter;
 char   *var_forward_path;
@@ -843,13 +859,16 @@ int     main(int argc, char **argv)
        VAR_LOCAL_CMD_SHELL, DEF_LOCAL_CMD_SHELL, &var_local_cmd_shell, 0, 0,
        VAR_MAIL_SPOOL_DIR, DEF_MAIL_SPOOL_DIR, &var_mail_spool_dir, 0, 0,
        VAR_MAILBOX_TRANSP, DEF_MAILBOX_TRANSP, &var_mailbox_transport, 0, 0,
+       VAR_MBOX_TRANSP_MAPS, DEF_MBOX_TRANSP_MAPS, &var_mbox_transp_maps, 0, 0,
        VAR_FALLBACK_TRANSP, DEF_FALLBACK_TRANSP, &var_fallback_transport, 0, 0,
+       VAR_FBCK_TRANSP_MAPS, DEF_FBCK_TRANSP_MAPS, &var_fbck_transp_maps, 0, 0,
        VAR_CMD_EXP_FILTER, DEF_CMD_EXP_FILTER, &var_cmd_exp_filter, 1, 0,
        VAR_FWD_EXP_FILTER, DEF_FWD_EXP_FILTER, &var_fwd_exp_filter, 1, 0,
        VAR_EXEC_EXP_FILTER, DEF_EXEC_EXP_FILTER, &var_exec_exp_filter, 1, 0,
        VAR_PROP_EXTENSION, DEF_PROP_EXTENSION, &var_prop_extension, 0, 0,
        VAR_DELIVER_HDR, DEF_DELIVER_HDR, &var_deliver_hdr, 0, 0,
        VAR_MAILBOX_LOCK, DEF_MAILBOX_LOCK, &var_mailbox_lock, 1, 0,
+       VAR_MAILBOX_CMD_MAPS, DEF_MAILBOX_CMD_MAPS, &var_mailbox_cmd_maps, 0, 0,
        0,
     };
     static CONFIG_BOOL_TABLE bool_table[] = {
@@ -866,7 +885,6 @@ int     main(int argc, char **argv)
        VAR_EXEC_DIRECTORY, DEF_EXEC_DIRECTORY, &var_exec_directory, 0, 0,
        VAR_FORWARD_PATH, DEF_FORWARD_PATH, &var_forward_path, 0, 0,
        VAR_MAILBOX_COMMAND, DEF_MAILBOX_COMMAND, &var_mailbox_command, 0, 0,
-       VAR_MAILBOX_CMD_MAPS, DEF_MAILBOX_CMD_MAPS, &var_mailbox_cmd_maps, 0, 0,
        VAR_LUSER_RELAY, DEF_LUSER_RELAY, &var_luser_relay, 0, 0,
        0,
     };
index 9b43950a3206c750830633d11c22cf283cc5b6b4..fc2119a6960ee55d12f7dc83445f8fc6c3d651cc 100644 (file)
@@ -245,6 +245,8 @@ int     deliver_mailbox(LOCAL_STATE state, USER_ATTR usr_attr, int *statusp)
     int     status;
     struct mypasswd *mbox_pwd;
     char   *path;
+    static MAPS *transp_maps;
+    const char *map_transport;
     static MAPS *cmd_maps;
     const char *map_command;
 
@@ -266,6 +268,17 @@ int     deliver_mailbox(LOCAL_STATE state, USER_ATTR usr_attr, int *statusp)
     /*
      * Delegate mailbox delivery to another message transport.
      */
+    if (*var_mbox_transp_maps && transp_maps == 0)
+       transp_maps = maps_create(VAR_MBOX_TRANSP_MAPS, var_mbox_transp_maps,
+                                 DICT_FLAG_LOCK);
+    if (*var_mbox_transp_maps
+       && (map_transport = maps_find(transp_maps, state.msg_attr.user,
+                                     DICT_FLAG_FIXED)) != 0) {
+       state.msg_attr.rcpt.offset = -1L;
+       *statusp = deliver_pass(MAIL_CLASS_PRIVATE, map_transport,
+                               state.request, &state.msg_attr.rcpt);
+       return (YES);
+    }
     if (*var_mailbox_transport) {
        state.msg_attr.rcpt.offset = -1L;
        *statusp = deliver_pass(MAIL_CLASS_PRIVATE, var_mailbox_transport,
index 3821fcf2f5a1f2c72250b30bbc7efe618ae0a485..cc0a07458d05deb06e5d091e254877feeaef768f 100644 (file)
@@ -84,6 +84,8 @@ int     deliver_unknown(LOCAL_STATE state, USER_ATTR usr_attr)
     char   *myname = "deliver_unknown";
     int     status;
     VSTRING *expand_luser;
+    static MAPS *transp_maps;
+    const char *map_transport;
 
     /*
      * Make verbose logging easier to understand.
@@ -104,6 +106,15 @@ int     deliver_unknown(LOCAL_STATE state, USER_ATTR usr_attr)
      * The fall-back transport specifies a delivery machanism that handles
      * users not found in the aliases or UNIX passwd databases.
      */
+    if (*var_fbck_transp_maps && transp_maps == 0)
+       transp_maps = maps_create(VAR_FBCK_TRANSP_MAPS, var_fbck_transp_maps,
+                                 DICT_FLAG_LOCK);
+    if (*var_fbck_transp_maps
+       && (map_transport = maps_find(transp_maps, state.msg_attr.user,
+                                     DICT_FLAG_FIXED)) != 0) {
+       return (deliver_pass(MAIL_CLASS_PRIVATE, map_transport,
+                            state.request, &state.msg_attr.rcpt));
+    }
     if (*var_fallback_transport) {
        state.msg_attr.rcpt.offset = -1L;
        return (deliver_pass(MAIL_CLASS_PRIVATE, var_fallback_transport,
index c1772722b73a56a5b001eac22c6ead7428077677..8470a189dc09363ac36f15c7952a1d5bbf13181c 100644 (file)
   * when idle for a configurable amount of time, or after servicing a
   * configurable number of requests; the master process spawns new processes
   * on demand up to a configurable concurrency limit and/or periodically.
+  * 
+  * The canonical service name is what we use internally, so that we correctly
+  * handle a request to "reload" after someone changes "smtp" into "25".
+  * 
+  * We use the external service name from master.cf when reporting problems, so
+  * that the user can figure out what we are talking about. Of course we also
+  * include the canonical service name so that the UNIX-domain smtp service
+  * can be distinguished from the Internet smtp service.
   */
 typedef struct MASTER_SERV {
     int     flags;                     /* status, features, etc. */
-    char   *name;                      /* service endpoint name */
+    char   *ext_name;                  /* service endpoint name (master.cf) */
+    char   *name;                      /* service endpoint name (canonical) */
     int     type;                      /* UNIX-domain, INET, etc. */
+    time_t  busy_warn_time;            /* limit "all servers busy" warning */
     int     wakeup_time;               /* wakeup interval */
     int    *listen_fd;                 /* incoming requests */
     int     listen_fd_count;           /* nr of descriptors */
@@ -54,6 +64,7 @@ typedef struct MASTER_SERV {
 #define MASTER_FLAG_MARK       (1<<1)  /* garbage collection support */
 #define MASTER_FLAG_CONDWAKE   (1<<2)  /* wake up if actually used */
 #define MASTER_FLAG_INETHOST   (1<<3)  /* endpoint name specifies host */
+#define MASTER_FLAG_LOCAL_ONLY (1<<4)  /* no remote clients */
 
 #define MASTER_THROTTLED(f)    ((f)->flags & MASTER_FLAG_THROTTLE)
 
index e5507ef6d9b95f1fb196458c43a45a99b8f319d8..496f6078da6d190d5566806cbcfad603d743b17d 100644 (file)
@@ -93,6 +93,7 @@ static void master_avail_event(int event, char *context)
 void    master_avail_listen(MASTER_SERV *serv)
 {
     char   *myname = "master_avail_listen";
+    time_t  now;
     int     n;
 
     /*
@@ -104,14 +105,22 @@ void    master_avail_listen(MASTER_SERV *serv)
     if (msg_verbose)
        msg_info("%s: avail %d total %d max %d", myname,
                 serv->avail_proc, serv->total_proc, serv->max_proc);
-    if (serv->avail_proc < 1
-       && MASTER_LIMIT_OK(serv->max_proc, serv->total_proc)
-       && !MASTER_THROTTLED(serv)) {
-       if (msg_verbose)
-           msg_info("%s: enable events %s", myname, serv->name);
-       for (n = 0; n < serv->listen_fd_count; n++)
-           event_enable_read(serv->listen_fd[n], master_avail_event,
-                             (char *) serv);
+    if (serv->avail_proc < 1 && !MASTER_THROTTLED(serv)) {
+       if (MASTER_LIMIT_OK(serv->max_proc, serv->total_proc)) {
+           if (msg_verbose)
+               msg_info("%s: enable events %s", myname, serv->name);
+           for (n = 0; n < serv->listen_fd_count; n++)
+               event_enable_read(serv->listen_fd[n], master_avail_event,
+                                 (char *) serv);
+       } else if ((serv->flags & MASTER_FLAG_LOCAL_ONLY) == 0
+                  && (now = event_time()) - serv->busy_warn_time > 1000) {
+           serv->busy_warn_time = now;
+           msg_warn("service \"%s\" (%s) has reached its process limit \"%d\": "
+                    "new clients may experience noticeable delays",
+                    serv->ext_name, serv->name, serv->max_proc);
+           msg_warn("to avoid this condition, increase the process count "
+                    "in master.cf or reduce the service time per client");
+       }
     }
 }
 
index 2c24cdb9c504afdef80c699ccbd56973b41c60c8..55ab4e92964264ead55951410781f78528882567 100644 (file)
@@ -131,6 +131,7 @@ void    master_config(void)
            serv->wakeup_time = entry->wakeup_time;
            serv->max_proc = entry->max_proc;
            serv->throttle_delay = entry->throttle_delay;
+           SWAP(char *, serv->ext_name, entry->ext_name);
            SWAP(char *, serv->path, entry->path);
            SWAP(ARGV *, serv->args, entry->args);
            master_restart_service(serv);
index 9646b339469bbe51b5350d14edfd9eeaed2e8a98..22c1835ce79944306001e86f921206a3c58b8891 100644 (file)
@@ -86,6 +86,7 @@
 #include <inet_addr_list.h>
 #include <host_port.h>
 #include <inet_addr_host.h>
+#include <sock_addr.h>
 
 /* Global library. */
 
@@ -280,9 +281,15 @@ MASTER_SERV *get_master_ent()
      */
     serv->flags = 0;
 
+    /*
+     * All servers busy warning timer.
+     */
+    serv->busy_warn_time = 0;
+
     /*
      * Service name. Syntax is transport-specific.
      */
+    serv->ext_name = mystrdup(cp);
     name = cp;
 
     /*
@@ -294,7 +301,7 @@ MASTER_SERV *get_master_ent()
     if (STR_SAME(transport, MASTER_XPORT_NAME_INET)) {
        if (!STR_SAME(saved_interfaces, var_inet_interfaces)) {
            msg_warn("service %s: ignoring %s change",
-                    name, VAR_INET_INTERFACES);
+                    serv->ext_name, VAR_INET_INTERFACES);
            msg_warn("to change %s, stop and start Postfix",
                     VAR_INET_INTERFACES);
        }
@@ -323,16 +330,27 @@ MASTER_SERV *get_master_ent()
            serv->listen_fd_count = MASTER_INET_ADDRLIST(serv)->used;
        }
        MASTER_INET_PORT(serv) = mystrdup(port);
+       for (n = 0; /* see below */ ; n++) {
+           if (n >= MASTER_INET_ADDRLIST(serv)->used) {
+               serv->flags |= MASTER_FLAG_LOCAL_ONLY;
+               break;
+           }
+           if (!sock_addr_in_loopback(SOCK_ADDR_PTR(MASTER_INET_ADDRLIST(serv)->addrs + n)))
+               break;
+       }
     } else if (STR_SAME(transport, MASTER_XPORT_NAME_UNIX)) {
        serv->type = MASTER_SERV_TYPE_UNIX;
        serv->listen_fd_count = 1;
+       serv->flags |= MASTER_FLAG_LOCAL_ONLY;
     } else if (STR_SAME(transport, MASTER_XPORT_NAME_FIFO)) {
        serv->type = MASTER_SERV_TYPE_FIFO;
        serv->listen_fd_count = 1;
+       serv->flags |= MASTER_FLAG_LOCAL_ONLY;
 #ifdef MASTER_SERV_TYPE_PASS
     } else if (STR_SAME(transport, MASTER_XPORT_NAME_PASS)) {
        serv->type = MASTER_SERV_TYPE_PASS;
        serv->listen_fd_count = 1;
+       /* If this is a connection screener, remote clients are likely. */
 #endif
     } else {
        fatal_with_context("bad transport type: %s", transport);
@@ -354,7 +372,11 @@ MASTER_SERV *get_master_ent()
 
        if (private)
            fatal_with_context("inet service cannot be private");
-#ifdef SNAPSHOT
+
+       /*
+        * Canonicalize endpoint names so that we correctly handle "reload"
+        * requests after someone changes "25" into "smtp" or vice versa.
+        */
        if (*host == 0)
            host = 0;
        /* Canonicalize numeric host and numeric or symbolic service. */
@@ -378,7 +400,6 @@ MASTER_SERV *get_master_ent()
        }
        /* Bad service name? */
        else
-#endif
            serv->name = mystrdup(name);
        myfree(atmp);
     } else if (serv->type == MASTER_SERV_TYPE_UNIX) {
@@ -552,6 +573,7 @@ void    free_master_ent(MASTER_SERV *serv)
     }
     if (serv->type == MASTER_SERV_TYPE_INET)
        myfree(MASTER_INET_PORT(serv));
+    myfree(serv->ext_name);
     myfree(serv->name);
     myfree(serv->path);
     argv_free(serv->args);
index 13cd6b9fbdcdd6baf96b6ed4ead4c3c6717bdfb7..28eb99c197440117f1e2ca5b56881f55a40b3190 100644 (file)
@@ -89,8 +89,8 @@ static void master_status_event(int event, char *context)
        /* NOTREACHED */
 
     default:
-       msg_warn("service %s: child (pid %d) sent partial status update (%d bytes)",
-                serv->name, stat.pid, n);
+       msg_warn("service %s(%s): child (pid %d) sent partial status update (%d bytes)",
+                serv->ext_name, serv->name, stat.pid, n);
        return;
 
     case sizeof(stat):
index 7e7328a3fa04630adaa664b5a9b21a2f612e3603..f04e91dd6cfa6f8df7abef202325d8c314e57d55 100644 (file)
@@ -139,7 +139,8 @@ static void master_wakeup_timer_event(int unused_event, char *context)
            msg_panic("%s: unknown service type: %d", myname, serv->type);
        }
        if (status < 0)
-           msg_warn("%s: service %s: %m", myname, serv->name);
+           msg_warn("%s: service %s(%s): %m",
+                    myname, serv->ext_name, serv->name);
     }
 
     /*
index b8d3d47361de435b2c2a34d53cefacaef6f18d45..efb85e3e624594e2917c9c78b2a3e9a29f6cf7ee 100644 (file)
        VAR_LMTP_STARTTLS_TMOUT, DEF_LMTP_STARTTLS_TMOUT, &var_smtp_starttls_tmout, 1, 0,
 #endif
        VAR_SCACHE_PROTO_TMOUT, DEF_SCACHE_PROTO_TMOUT, &var_scache_proto_tmout, 1, 0,
-       VAR_MIN_BACKOFF_TIME, DEF_MIN_BACKOFF_TIME, &var_min_backoff_time, 1, 0,
-       VAR_MAX_BACKOFF_TIME, DEF_MAX_BACKOFF_TIME, &var_max_backoff_time, 1, 0,
-       VAR_MAX_QUEUE_TIME, DEF_MAX_QUEUE_TIME, &var_max_queue_time, 0, 0,
-       VAR_LMTP_DOTQ_THRESH, DEF_LMTP_DOTQ_THRESH, &var_smtp_dotq_thresh, 0, 0,
        0,
     };
     static CONFIG_INT_TABLE lmtp_int_table[] = {
index 00b3cae5caada0e30cf0e51eac9813daef665cc4..cc1199d4a4e4a8538298fa7b8fc0bb3c2c9f4b4c 100644 (file)
 /*     Never send EHLO at the start of an SMTP session.
 /* .IP "\fBsmtp_defer_if_no_mx_address_found (no)\fR"
 /*     Defer mail delivery when no MX record resolves to an IP address.
-/* .IP "\fBsmtp_dot_quit_workaround_threshold_time (3000s)\fR"
-/*     How long a message must be queued before the "." + QUIT bug
-/*     workaround is turned on for all deliveries; this limits the
-/*     number of repeated deliveries with servers or firewalls that
-/*     mis-implement END-OF-DATA + QUIT pipelining.
 /* .IP "\fBsmtp_line_length_limit (990)\fR"
 /*     The maximal length of message header and body lines that Postfix
 /*     will send via SMTP.
@@ -622,12 +617,6 @@ char   *var_prop_extension;
 bool    var_smtp_sender_auth;
 char   *var_lmtp_tcp_port;
 int     var_scache_proto_tmout;
-int     var_smtp_dotq_thresh;
-
-/* Workaround for "smtp_dot_quit_workaround_threshold_time = $name". */
-int     var_min_backoff_time;
-int     var_max_backoff_time;
-int     var_max_queue_time;
 
  /*
   * Global variables. smtp_errno is set by the address lookup routines and by
index 753061996be46d456da0261fdb9046203ad65105..0b645dc473829f9d4c9e0137b15b13fef2bb56b6 100644 (file)
@@ -144,7 +144,6 @@ void    smtp_chat_init(SMTP_SESSION *session)
 
 void    smtp_chat_reset(SMTP_SESSION *session)
 {
-
     if (session->history) {
        argv_free(session->history);
        session->history = 0;
@@ -277,23 +276,44 @@ SMTP_RESP *smtp_chat_resp(SMTP_SESSION *session)
        }
 
        /*
-        * XXX Do not ignore garbage when ESMTP command pipelining is turned
-        * on. After sending ".<CR><LF>QUIT<CR><LF>", Postfix might recognize
-        * the server's 2XX QUIT reply as a 2XX END-OF-DATA reply after
-        * garbage, causing mail to be lost. Instead, make a long jump so
-        * that all recipients of multi-recipient mail get consistent
-        * treatment.
+        * XXX Do not simply ignore garbage in the server reply when ESMTP
+        * command pipelining is turned on.  For example, after sending
+        * ".<CR><LF>QUIT<CR><LF>" and receiving garbage followed by a
+        * legitimate 2XX reply, Postfix recognizes the server's QUIT reply
+        * as the END-OF-DATA reply after garbage, causing mail to be lost.
+        * 
+        * Without the ability to store per-domain status information in queue
+        * files, automatic workarounds are problematic:
+        * 
+        * - Automatically deferring delivery creates a "repeated delivery"
+        * problem when garbage arrives after the DATA stage. Without the
+        * workaround, Postfix delivers only once.
+        * 
+        * - Automatically deferring delivery creates a "no delivery" problem
+        * when the garbage arrives before the DATA stage. Without the
+        * workaround, mail might still get through.
+        * 
+        * - Automatically turning off pipelining for delayed mail affects
+        * deliveries to correctly implemented servers, and may also affect
+        * delivery of large mailing lists.
+        * 
+        * So we leave the decision with the administrator, but we don't force
+        * them to take action, like we would with automatic deferral.  If
+        * loss of mail is not acceptable then they can turn off pipelining
+        * for specific sites, or they can turn off pipelining globally when
+        * they find that there are just too many broken sites.
         */
        session->error_mask |= MAIL_ERROR_PROTOCOL;
        if (session->features & SMTP_FEATURE_PIPELINING) {
-           msg_warn("non-%s response from %s: %s",
-                    (session->state->misc_flags &
-                     SMTP_MISC_FLAG_USE_LMTP) ? "LMTP" : "ESMTP",
-                    session->namaddrport, STR(session->buffer));
-           msg_warn("consider turning off pipelining selectively with %s",
+           msg_warn("non-%s response from %s: %.100s",
                     (session->state->misc_flags & SMTP_MISC_FLAG_USE_LMTP) ?
-                    VAR_LMTP_EHLO_DIS_WORDS : VAR_SMTP_EHLO_DIS_MAPS);
-           vstream_longjmp(session->stream, SMTP_ERR_PROTO);
+                    "LMTP" : "ESMTP", session->namaddrport,
+                    STR(session->buffer));
+           if (var_helpful_warnings)
+               msg_warn("to prevent loss of mail, turn off command pipelining "
+                        "for %s with the %s parameter", session->addr,
+                   (session->state->misc_flags & SMTP_MISC_FLAG_USE_LMTP) ?
+                        VAR_LMTP_EHLO_DIS_MAPS : VAR_SMTP_EHLO_DIS_MAPS);
        }
     }
 
index 92317722c05b22e4337afd46690964032a438392..f3a1494b1428618627b434111aa4acd4b68654d0 100644 (file)
        VAR_SMTP_STARTTLS_TMOUT, DEF_SMTP_STARTTLS_TMOUT, &var_smtp_starttls_tmout, 1, 0,
 #endif
        VAR_SCACHE_PROTO_TMOUT, DEF_SCACHE_PROTO_TMOUT, &var_scache_proto_tmout, 1, 0,
-       VAR_MIN_BACKOFF_TIME, DEF_MIN_BACKOFF_TIME, &var_min_backoff_time, 1, 0,
-       VAR_MAX_BACKOFF_TIME, DEF_MAX_BACKOFF_TIME, &var_max_backoff_time, 1, 0,
-       VAR_MAX_QUEUE_TIME, DEF_MAX_QUEUE_TIME, &var_max_queue_time, 0, 0,
-       VAR_SMTP_DOTQ_THRESH, DEF_SMTP_DOTQ_THRESH, &var_smtp_dotq_thresh, 0, 0,
        0,
     };
     static CONFIG_INT_TABLE smtp_int_table[] = {
index 1a3041c4214e798ad9a1b9c5ded3044ee1282065..337fda0a0df881ca51346b874ed3be483a92bbc4 100644 (file)
@@ -927,10 +927,7 @@ static int smtp_loop(SMTP_STATE *state, NOCLOBBER int send_state,
        (recv_state < send_state || recv_rcpt != send_rcpt)
 
 #define SENDER_IN_WAIT_STATE \
-       (send_state == SMTP_STATE_DOT || send_state == SMTP_STATE_LAST \
-        || (recv_state == SMTP_STATE_DOT && send_state == SMTP_STATE_QUIT \
-            && request->msg_stats.incoming_arrival.tv_sec \
-               <= vstream_ftime(session->stream) - var_smtp_dotq_thresh))
+       (send_state == SMTP_STATE_DOT || send_state == SMTP_STATE_LAST)
 
 #define SENDING_MAIL \
        (recv_state <= SMTP_STATE_DOT)