]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.5-20070824
authorWietse Venema <wietse@porcupine.org>
Fri, 24 Aug 2007 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <viktor@dukhovni.org>
Tue, 5 Feb 2013 06:33:20 +0000 (06:33 +0000)
29 files changed:
postfix/HISTORY
postfix/README_FILES/DATABASE_README
postfix/README_FILES/TUNING_README
postfix/WISHLIST
postfix/html/DATABASE_README.html
postfix/html/TUNING_README.html
postfix/html/mysql_table.5.html
postfix/html/pgsql_table.5.html
postfix/html/pipe.8.html
postfix/html/postconf.5.html
postfix/html/smtpd.8.html
postfix/makedefs
postfix/man/man5/mysql_table.5
postfix/man/man5/pgsql_table.5
postfix/man/man5/postconf.5
postfix/man/man8/pipe.8
postfix/man/man8/smtpd.8
postfix/proto/DATABASE_README.html
postfix/proto/TUNING_README.html
postfix/proto/mysql_table
postfix/proto/pgsql_table
postfix/proto/postconf.proto
postfix/src/global/mail_version.h
postfix/src/pipe/pipe.c
postfix/src/smtpd/smtpd.c
postfix/src/tlsmgr/tlsmgr.c
postfix/src/util/sys_defs.h
postfix/src/util/vstream.c
postfix/src/util/vstream_tweak.c

index 1302134b569c101a2a71ad31c5cab4a429e28f36..06f5b7cbf5841f3c1ce085537807db885290998a 100644 (file)
@@ -13674,3 +13674,22 @@ Apologies for any names omitted.
        cleanup server would get out of sync with the milter when
        a milter replied with ACCEPT at the DATA command. Files:
        cleanup/cleanup_envelope.c, smtpd/smtpd.c, milter/milters.c.
+
+20070811
+
+       Cleanup: unlike smtpd_mumble_restrictions, the Postfix SMTP
+       server Milter reject logging did not show the (helo argument,
+       sender address, or recipient address) that was being rejected.
+       File: smtpd/smtpd.c.
+
+20070824
+
+       Bugfix (introduced snapshot 20070429): the pipe(8) delivery
+       agent 'q' flag (quote address local-part) used the same bit
+       mask as the 'B' flag (append blank line). Setting one flag
+       also turned on the other. File: pipe/pipe.c.
+
+       Feature: specify the 'X' flag to indicate that the pipe(8)
+       delivery agent performs final delivery. This changes the
+       status in DSN "success" messages from "relayed" into
+       "delivered".  File: pipe/pipe.c.
index b1a9645a1eb7f6977fa91303727f91497c86c97e..31796e0a68ed37da8e5d4157714d94cd183ce492 100644 (file)
@@ -246,7 +246,7 @@ To find out what database types your Postfix system supports, use the "p\bpo\bos\bs
         in tcp_table(5). The lookup table name is "tcp:host:port" where "host"
         specifies a symbolic hostname or a numeric IP address, and "port"
         specifies a symbolic service name or a numeric port number. This
-        protocol is not available up to and including Postfix version 2.4.
+        protocol is not available in the stable Postfix release.
     u\bun\bni\bix\bx (read-only)
         A limited way to query the UNIX authentication database. The following
         tables are implemented:
index e7cf35217a8e690ce76444add93dbc4c7316a4a1..8ee42f1fb27da0c6ba0afa9560d42313c8e363f7 100644 (file)
@@ -155,7 +155,7 @@ will suffer grotesque delays if you do so. The limits are designed to protect
 the smtpd(8) server against abuse by out-of-control clients.
 
     smtpd_client_connection_count_limit (default: 50)
-        The maximum number of connections than an SMTP client may make
+        The maximum number of connections that an SMTP client may make
         simultaneously.
     smtpd_client_connection_rate_limit (default: no limit)
         The maximum number of connections that an SMTP client may make in the
index e81bb404e05958d6eae3f023dfb0d7b1d4bf3563..2d41e5cd63991fde222f5ac6670d8246f24a824c 100644 (file)
@@ -1,5 +1,8 @@
 Wish list:
 
+       Make TLS_BIO_BUFSIZE run-time adjustable, to future-proof
+       Postfix for remote connections with MSS > 8 kbytes.
+
        Absent a formal spec, model IPv6 RBL lookups after the IPv6
        PTR lookups (one zone per hex nibble, nibbles in reversed
        order). How to specify whether to query an RBL server for
index 3ab4fa44e817aef3279b4039490a504fbf66b4ba..d28def7207565d997b4b90e702879aa9a482dd9c 100644 (file)
@@ -365,8 +365,8 @@ example, the lookup table "static:foobar" always returns the string
 described in <a href="tcp_table.5.html">tcp_table(5)</a>. The lookup table name is "<a href="tcp_table.5.html">tcp</a>:host:port"
 where "host" specifies a symbolic hostname or a numeric IP address,
 and "port" specifies a symbolic service name or a numeric port
-number. This protocol is not available up to and including Postfix
-version 2.4.  </dd>
+number. This protocol is not available in the stable Postfix release.
+</dd>
 
 <dt> <b>unix</b> (read-only) </dt>
 
index 8b5f47a9dacd4b7c12ddc81cd0ee9080971d2a9f..50e85d3ab99c5b6dd46fd97ec1c26aa345c06cce 100644 (file)
@@ -243,7 +243,7 @@ out-of-control clients.  </p>
 <dl>
 
 <dt> <a href="postconf.5.html#smtpd_client_connection_count_limit">smtpd_client_connection_count_limit</a> (default: 50) </dt> <dd>
-The maximum number of connections than an SMTP client may make
+The maximum number of connections that an SMTP client may make
 simultaneously. </dd>
 
 <dt> <a href="postconf.5.html#smtpd_client_connection_rate_limit">smtpd_client_connection_rate_limit</a> (default: no limit) </dt>
index f1f78ac8963ef64ea7b823e1e24631e22bbc2876..a527881f93e5a163794664ebea581a864f136c17 100644 (file)
@@ -259,7 +259,15 @@ MYSQL_TABLE(5)                                                  MYSQL_TABLE(5)
               limit  is exceeded.  Setting the limit to 1 ensures
               that lookups do not return multiple values.
 
-       The following parameters can be used to fill in  a  SELECT
+<b>OBSOLETE QUERY INTERFACE</b>
+       This section describes an interface that is deprecated  as
+       of  Postfix  2.2. It is replaced by the more general <b>query</b>
+       interface described above.   If  the  <b>query</b>  parameter  is
+       defined,  the  legacy  parameters  described here ignored.
+       Please migrate to the new interface as the  legacy  inter-
+       face may be removed in a future release.
+
+       The  following  parameters can be used to fill in a SELECT
        template statement of the form:
 
            SELECT [<b>select_field</b>]
@@ -267,18 +275,11 @@ MYSQL_TABLE(5)                                                  MYSQL_TABLE(5)
            WHERE [<b>where_field</b>] = '%s'
                  [<b>additional_conditions</b>]
 
-       The  specifier %s is replaced by the search string, and is
+       The specifier %s is replaced by the search string, and  is
        escaped so if it contains single quotes or other odd char-
        acters, it will not cause a parse error, or worse, a secu-
        rity problem.
 
-       As of Postfix  2.2  this  interface  is  obsolete,  it  is
-       replaced  by  the  more  general <b>query</b> interface described
-       above.  If the <b>query</b>  parameter  is  defined,  the  legacy
-       parameters  are  ignored. Please migrate to the new inter-
-       face as the legacy interface may be removed  in  a  future
-       release.
-
        <b>select_field</b>
               The SQL "select" parameter. Example:
                   <b>select_field</b> = forw_addr
index 39904c4ab33170a30808d900aa6aea4996b1e7c5..dc07cc5865090e1da82510f607e6729b8caf7074 100644 (file)
@@ -61,7 +61,7 @@ PGSQL_TABLE(5)                                                  PGSQL_TABLE(5)
 
            <b>query</b> = SELECT <i>select</i><b>_</b><i>function</i>('%s')
 
-       or  in the absence of <b>selection_function</b>, the lower prece-
+       or  in  the  absence  of <b>select_function</b>, the lower prece-
        dence:
 
            <b>query</b> = SELECT <i>select</i><b>_</b><i>field</i>
@@ -264,23 +264,26 @@ PGSQL_TABLE(5)                                                  PGSQL_TABLE(5)
               limit is exceeded.  Setting the limit to 1  ensures
               that lookups do not return multiple values.
 
-       Pre-Postfix 2.2 legacy interfaces:
+<b>OBSOLETE QUERY INTERFACES</b>
+       This  section  describes  query interfaces that are depre-
+       cated as of Postfix 2.2.  Please migrate to the new  <b>query</b>
+       interface  as  the  old interfaces are slated to be phased
+       out.
 
        <b>select_function</b>
-              This  parameter specifies a database function name.
+              This parameter specifies a database function  name.
               Example:
                   select_function = my_lookup_user_alias
 
               This is equivalent to:
                   query = SELECT my_lookup_user_alias('%s')
 
-              This parameter overrides the  legacy  table-related
-              fields  (described  below).  With  Postfix versions
-              prior to 2.2, it also overrides the  <b>query</b>  parame-
+              This  parameter  overrides the legacy table-related
+              fields (described  below).  With  Postfix  versions
+              prior  to  2.2, it also overrides the <b>query</b> parame-
               ter. Starting with Postfix 2.2, the <b>query</b> parameter
-              has highest precedence, and this parameter is  dep-
-              recated.  Please migrate to the new <b>query</b> interface
-              as this interface is slated to be phased out.
+              has  highest  precedence,  and  the <b>select_function</b>
+              parameter is deprecated.
 
        The following parameters (with lower precedence  than  the
        <b>select_function</b>  interface described above) can be used to
@@ -299,9 +302,8 @@ PGSQL_TABLE(5)                                                  PGSQL_TABLE(5)
        Starting  with Postfix 2.2, this interface is obsoleted by
        the more  general  <b>query</b>  interface  described  above.  If
        higher  precedence the <b>query</b> or <b>select_function</b> parameters
-       described above are defined, these parameters are ignored.
-       Please  migrate  to the new <b>query</b> interface as this inter-
-       face is slated to be phased out.
+       described above are defined, the parameters described here
+       are ignored.
 
        <b>select_field</b>
               The SQL "select" parameter. Example:
@@ -329,7 +331,7 @@ PGSQL_TABLE(5)                                                  PGSQL_TABLE(5)
        <a href="PGSQL_README.html">PGSQL_README</a>, Postfix PostgreSQL client guide
 
 <b>LICENSE</b>
-       The  Secure  Mailer  license must be distributed with this
+       The Secure Mailer license must be  distributed  with  this
        software.
 
 <b>HISTORY</b>
index 6da46ca0818dbf1d6ab6d84bce7969596ec96014..61d865ca5d665d873fc46fab075f817397b58a50 100644 (file)
@@ -76,7 +76,7 @@ PIPE(8)                                                                PIPE(8)
               escape sequences are recognized: <b>\a \b \f \n \r  \t</b>
               <b>\v \</b><i>ddd</i> (up to three octal digits) and <b>\\</b>.
 
-       <b>flags=BDFORhqu.</b>&gt; (optional)
+       <b>flags=BDFORXhqu.</b>&gt; (optional)
               Optional  message  processing  flags. By default, a
               message is copied unchanged.
 
@@ -116,6 +116,12 @@ PIPE(8)                                                                PIPE(8)
               <b>R</b>      Prepend  a  <b>Return-Path:</b> message header with
                      the envelope sender address.
 
+              <b>X</b>      Indicate that the external command  performs
+                     final  delivery.  This flag affects the sta-
+                     tus reported in "success" DSN (delivery sta-
+                     tus  notification)  messages, and changes it
+                     from "relayed" into "delivered".
+
               <b>h</b>      Fold  the  command-line  <b>$recipient</b>  address
                      domain part (text to the right of the right-
                      most <b>@</b> character) to lower  case;  fold  the
@@ -184,8 +190,8 @@ PIPE(8)                                                                PIPE(8)
               This feature is available as of Postfix 2.3.
 
        <b>size</b>=<i>size</i><b>_</b><i>limit</i> (optional)
-              Messages greater in size than this limit (in bytes)
-              will be returned to the sender as undeliverable.
+              Don't  deliver messages that exceed this size limit
+              (in bytes); return them to the sender instead.
 
        <b>user</b>=<i>username</i> (required)
 
@@ -302,8 +308,8 @@ PIPE(8)                                                                PIPE(8)
 
               <b>${sasl_sender</b>}
                      This macro expands to the SASL  sender  name
-                     (i.e.  the  original  submitter  as  per <a href="http://tools.ietf.org/html/rfc2554">RFC</a>
-                     <a href="http://tools.ietf.org/html/rfc2554">2554</a>) used during the reception of the  mes-
+                     (i.e.  the  original  submitter  as  per <a href="http://tools.ietf.org/html/rfc4954">RFC</a>
+                     <a href="http://tools.ietf.org/html/rfc4954">4954</a>) used during the reception of the  mes-
                      sage.
 
                      This  is available in Postfix 2.2 and later.
index e461dac4b1fb850159f25d0db81c25f26e72a8d7..8886ee9e883ce1f611a1a021737e4ef4c63935f7 100644 (file)
@@ -1163,7 +1163,7 @@ is placed into the Postfix configuration directory.  </p>
 
 <p>
 Enable inter-operability with SMTP clients that implement an obsolete
-version of the AUTH command (<a href="http://tools.ietf.org/html/rfc2554">RFC 2554</a>). Examples of such clients
+version of the AUTH command (<a href="http://tools.ietf.org/html/rfc4954">RFC 4954</a>). Examples of such clients
 are MicroSoft Outlook Express version 4 and MicroSoft Exchange
 version 5.0.
 </p>
@@ -4188,7 +4188,7 @@ a neighboring system.  </dd>
 <dt><b> <a href="postconf.5.html#permit_sasl_authenticated">permit_sasl_authenticated</a> </b></dt>
 
 <dd> Append the domain name in $<a href="postconf.5.html#myorigin">myorigin</a> or $<a href="postconf.5.html#mydomain">mydomain</a> when the
-client is successfully authenticated via the <a href="http://tools.ietf.org/html/rfc2554">RFC 2554</a> (AUTH)
+client is successfully authenticated via the <a href="http://tools.ietf.org/html/rfc4954">RFC 4954</a> (AUTH)
 protocol. </dd>
 
 <dt><b> <a href="postconf.5.html#permit_tls_clientcerts">permit_tls_clientcerts</a> </b></dt>
@@ -9300,7 +9300,7 @@ network or network address listed in  $<a href="postconf.5.html#mynetworks">myne
 <dt><b><a name="permit_sasl_authenticated">permit_sasl_authenticated</a></b></dt>
 
 <dd> Permit the request when the client is successfully
-authenticated via the <a href="http://tools.ietf.org/html/rfc2554">RFC 2554</a> (AUTH) protocol. </dd>
+authenticated via the <a href="http://tools.ietf.org/html/rfc4954">RFC 4954</a> (AUTH) protocol. </dd>
 
 <dt><b><a name="permit_tls_all_clientcerts">permit_tls_all_clientcerts</a></b></dt>
 
@@ -10557,7 +10557,7 @@ the SASL plug-in implementation that is selected with
 configuration file or rendezvous point. </p>
 
 <p> This feature is available in Postfix 2.3 and later. In earlier
-releases it was called smtpd_sasl_application. </p>
+releases it was called <b>smtpd_sasl_application_name</b>. </p>
 
 
 </DD>
index 3a7d15e3ad0b7e851d1a37db9d8e0929d615021a..ca03ac772f28331d5d293d4a1a31cb76303ce911 100644 (file)
@@ -82,7 +82,7 @@ SMTPD(8)                                                              SMTPD(8)
        <b><a href="postconf.5.html#broken_sasl_auth_clients">broken_sasl_auth_clients</a> (no)</b>
               Enable inter-operability  with  SMTP  clients  that
               implement  an  obsolete version of the AUTH command
-              (<a href="http://tools.ietf.org/html/rfc2554">RFC 2554</a>).
+              (<a href="http://tools.ietf.org/html/rfc4954">RFC 4954</a>).
 
        <b><a href="postconf.5.html#disable_vrfy_command">disable_vrfy_command</a> (no)</b>
               Disable the SMTP VRFY command.
@@ -287,7 +287,7 @@ SMTPD(8)                                                              SMTPD(8)
               feature.
 
 <b>SASL AUTHENTICATION CONTROLS</b>
-       Postfix SASL support (<a href="http://tools.ietf.org/html/rfc2554">RFC 2554</a>) can be used  to  authenti-
+       Postfix SASL support (<a href="http://tools.ietf.org/html/rfc4954">RFC 4954</a>) can be used  to  authenti-
        cate  remote  SMTP clients to the Postfix SMTP server, and
        to authenticate the Postfix SMTP client to a  remote  SMTP
        server.  See the <a href="SASL_README.html">SASL_README</a> document for details.
@@ -295,7 +295,7 @@ SMTPD(8)                                                              SMTPD(8)
        <b><a href="postconf.5.html#broken_sasl_auth_clients">broken_sasl_auth_clients</a> (no)</b>
               Enable  inter-operability  with  SMTP  clients that
               implement an obsolete version of the  AUTH  command
-              (<a href="http://tools.ietf.org/html/rfc2554">RFC 2554</a>).
+              (<a href="http://tools.ietf.org/html/rfc4954">RFC 4954</a>).
 
        <b><a href="postconf.5.html#smtpd_sasl_auth_enable">smtpd_sasl_auth_enable</a> (no)</b>
               Enable  SASL  authentication  in  the  Postfix SMTP
@@ -321,79 +321,85 @@ SMTPD(8)                                                              SMTPD(8)
               What  remote  SMTP  clients the Postfix SMTP server
               will not offer AUTH support to.
 
+       Available in Postfix version 2.1 and 2.2:
+
+       <b>smtpd_sasl_application_name (smtpd)</b>
+              The application name that the Postfix  SMTP  server
+              uses for SASL server initialization.
+
        Available in Postfix version 2.3 and later:
 
        <b><a href="postconf.5.html#smtpd_sasl_authenticated_header">smtpd_sasl_authenticated_header</a> (no)</b>
-              Report the SASL  authenticated  user  name  in  the
+              Report  the  SASL  authenticated  user  name in the
               <a href="smtpd.8.html"><b>smtpd</b>(8)</a> Received message header.
 
        <b><a href="postconf.5.html#smtpd_sasl_path">smtpd_sasl_path</a> (smtpd)</b>
-              Implementation-specific  information that the Post-
-              fix SMTP server passes through to the SASL  plug-in
-              implementation     that     is     selected    with
+              Implementation-specific information that the  Post-
+              fix  SMTP server passes through to the SASL plug-in
+              implementation    that     is     selected     with
               <b><a href="postconf.5.html#smtpd_sasl_type">smtpd_sasl_type</a></b>.
 
        <b><a href="postconf.5.html#smtpd_sasl_type">smtpd_sasl_type</a> (cyrus)</b>
-              The SASL plug-in type that the Postfix SMTP  server
+              The  SASL plug-in type that the Postfix SMTP server
               should use for authentication.
 
        Available in Postfix version 2.5 and later:
 
        <b><a href="postconf.5.html#cyrus_sasl_config_path">cyrus_sasl_config_path</a> (empty)</b>
-              Search  path  for Cyrus SASL application configura-
-              tion files,  currently  used  only  to  locate  the
+              Search path for Cyrus SASL  application  configura-
+              tion  files,  currently  used  only  to  locate the
               $<a href="postconf.5.html#smtpd_sasl_path">smtpd_sasl_path</a>.conf file.
 
 <b>STARTTLS SUPPORT CONTROLS</b>
-       Detailed  information  about STARTTLS configuration may be
+       Detailed information about STARTTLS configuration  may  be
        found in the <a href="TLS_README.html">TLS_README</a> document.
 
        <b><a href="postconf.5.html#smtpd_tls_security_level">smtpd_tls_security_level</a> (empty)</b>
-              The SMTP TLS security level for  the  Postfix  SMTP
-              server;  when  a non-empty value is specified, this
+              The  SMTP  TLS  security level for the Postfix SMTP
+              server; when a non-empty value is  specified,  this
               overrides the obsolete parameters <a href="postconf.5.html#smtpd_use_tls">smtpd_use_tls</a> and
               <a href="postconf.5.html#smtpd_enforce_tls">smtpd_enforce_tls</a>.
 
        <b><a href="postconf.5.html#smtpd_sasl_tls_security_options">smtpd_sasl_tls_security_options</a>         ($<a href="postconf.5.html#smtpd_sasl_security_options">smtpd_sasl_secu</a>-</b>
        <b><a href="postconf.5.html#smtpd_sasl_security_options">rity_options</a>)</b>
-              The  SASL  authentication security options that the
-              Postfix SMTP server uses  for  TLS  encrypted  SMTP
+              The SASL authentication security options  that  the
+              Postfix  SMTP  server  uses  for TLS encrypted SMTP
               sessions.
 
        <b><a href="postconf.5.html#smtpd_starttls_timeout">smtpd_starttls_timeout</a> (300s)</b>
-              The  time  limit  for Postfix SMTP server write and
-              read operations during  TLS  startup  and  shutdown
+              The time limit for Postfix SMTP  server  write  and
+              read  operations  during  TLS  startup and shutdown
               handshake procedures.
 
        <b><a href="postconf.5.html#smtpd_tls_CAfile">smtpd_tls_CAfile</a> (empty)</b>
-              The  file with the certificate of the certification
-              authority (CA) that issued the Postfix SMTP  server
+              The file with the certificate of the  certification
+              authority  (CA) that issued the Postfix SMTP server
               certificate.
 
        <b><a href="postconf.5.html#smtpd_tls_CAfile">smtpd_tls_CAfile</a> (empty)</b>
-              The  file with the certificate of the certification
-              authority (CA) that issued the Postfix SMTP  server
+              The file with the certificate of the  certification
+              authority  (CA) that issued the Postfix SMTP server
               certificate.
 
        <b><a href="postconf.5.html#smtpd_tls_always_issue_session_ids">smtpd_tls_always_issue_session_ids</a> (yes)</b>
-              Force  the  Postfix SMTP server to issue a TLS ses-
-              sion id, even when TLS session  caching  is  turned
+              Force the Postfix SMTP server to issue a  TLS  ses-
+              sion  id,  even  when TLS session caching is turned
               off (<a href="postconf.5.html#smtpd_tls_session_cache_database">smtpd_tls_session_cache_database</a> is empty).
 
        <b><a href="postconf.5.html#smtpd_tls_ask_ccert">smtpd_tls_ask_ccert</a> (no)</b>
-              Ask  a remote SMTP client for a client certificate.
+              Ask a remote SMTP client for a client  certificate.
 
        <b><a href="postconf.5.html#smtpd_tls_auth_only">smtpd_tls_auth_only</a> (no)</b>
               When TLS encryption is optional in the Postfix SMTP
-              server,  do not announce or accept SASL authentica-
+              server, do not announce or accept SASL  authentica-
               tion over unencrypted connections.
 
        <b><a href="postconf.5.html#smtpd_tls_ccert_verifydepth">smtpd_tls_ccert_verifydepth</a> (5)</b>
-              The verification depth for remote SMTP client  cer-
+              The  verification depth for remote SMTP client cer-
               tificates.
 
        <b><a href="postconf.5.html#smtpd_tls_cert_file">smtpd_tls_cert_file</a> (empty)</b>
-              File  with  the Postfix SMTP server RSA certificate
+              File with the Postfix SMTP server  RSA  certificate
               in PEM format.
 
        <b><a href="postconf.5.html#smtpd_tls_exclude_ciphers">smtpd_tls_exclude_ciphers</a> (empty)</b>
@@ -401,56 +407,56 @@ SMTPD(8)                                                              SMTPD(8)
               SMTP server cipher list at all TLS security levels.
 
        <b><a href="postconf.5.html#smtpd_tls_dcert_file">smtpd_tls_dcert_file</a> (empty)</b>
-              File with the Postfix SMTP server  DSA  certificate
+              File  with  the Postfix SMTP server DSA certificate
               in PEM format.
 
        <b><a href="postconf.5.html#smtpd_tls_dh1024_param_file">smtpd_tls_dh1024_param_file</a> (empty)</b>
-              File  with  DH  parameters  that  the  Postfix SMTP
+              File with  DH  parameters  that  the  Postfix  SMTP
               server should use with EDH ciphers.
 
        <b><a href="postconf.5.html#smtpd_tls_dh512_param_file">smtpd_tls_dh512_param_file</a> (empty)</b>
-              File with  DH  parameters  that  the  Postfix  SMTP
+              File  with  DH  parameters  that  the  Postfix SMTP
               server should use with EDH ciphers.
 
        <b><a href="postconf.5.html#smtpd_tls_dkey_file">smtpd_tls_dkey_file</a> ($<a href="postconf.5.html#smtpd_tls_dcert_file">smtpd_tls_dcert_file</a>)</b>
-              File  with  the Postfix SMTP server DSA private key
+              File with the Postfix SMTP server DSA  private  key
               in PEM format.
 
        <b><a href="postconf.5.html#smtpd_tls_key_file">smtpd_tls_key_file</a> ($<a href="postconf.5.html#smtpd_tls_cert_file">smtpd_tls_cert_file</a>)</b>
-              File with the Postfix SMTP server RSA  private  key
+              File  with  the Postfix SMTP server RSA private key
               in PEM format.
 
        <b><a href="postconf.5.html#smtpd_tls_loglevel">smtpd_tls_loglevel</a> (0)</b>
-              Enable  additional  Postfix  SMTP server logging of
+              Enable additional Postfix SMTP  server  logging  of
               TLS activity.
 
        <b><a href="postconf.5.html#smtpd_tls_mandatory_ciphers">smtpd_tls_mandatory_ciphers</a> (medium)</b>
-              The minimum TLS cipher grade that the Postfix  SMTP
+              The  minimum TLS cipher grade that the Postfix SMTP
               server will use with mandatory TLS encryption.
 
        <b><a href="postconf.5.html#smtpd_tls_mandatory_exclude_ciphers">smtpd_tls_mandatory_exclude_ciphers</a> (empty)</b>
-              Additional  list  of  ciphers  or  cipher  types to
-              exclude from the SMTP server cipher list at  manda-
+              Additional list  of  ciphers  or  cipher  types  to
+              exclude  from the SMTP server cipher list at manda-
               tory TLS security levels.
 
        <b><a href="postconf.5.html#smtpd_tls_mandatory_protocols">smtpd_tls_mandatory_protocols</a> (SSLv3, TLSv1)</b>
-              The  TLS  protocols  accepted  by  the Postfix SMTP
+              The TLS protocols  accepted  by  the  Postfix  SMTP
               server with mandatory TLS encryption.
 
        <b><a href="postconf.5.html#smtpd_tls_received_header">smtpd_tls_received_header</a> (no)</b>
               Request  that  the  Postfix  SMTP  server  produces
               Received:  message headers that include information
-              about the protocol and cipher used, as well as  the
-              client  CommonName  and  client  certificate issuer
+              about  the protocol and cipher used, as well as the
+              client CommonName  and  client  certificate  issuer
               CommonName.
 
        <b><a href="postconf.5.html#smtpd_tls_req_ccert">smtpd_tls_req_ccert</a> (no)</b>
-              With mandatory TLS  encryption,  require  a  remote
-              SMTP  client certificate in order to allow TLS con-
+              With  mandatory  TLS  encryption,  require a remote
+              SMTP client certificate in order to allow TLS  con-
               nections to proceed.
 
        <b><a href="postconf.5.html#smtpd_tls_session_cache_database">smtpd_tls_session_cache_database</a> (empty)</b>
-              Name of the file containing  the  optional  Postfix
+              Name  of  the  file containing the optional Postfix
               SMTP server TLS session cache.
 
        <b><a href="postconf.5.html#smtpd_tls_session_cache_timeout">smtpd_tls_session_cache_timeout</a> (3600s)</b>
@@ -458,14 +464,14 @@ SMTPD(8)                                                              SMTPD(8)
               sion cache information.
 
        <b><a href="postconf.5.html#smtpd_tls_wrappermode">smtpd_tls_wrappermode</a> (no)</b>
-              Run the Postfix SMTP  server  in  the  non-standard
-              "wrapper"  mode, instead of using the STARTTLS com-
+              Run  the  Postfix  SMTP  server in the non-standard
+              "wrapper" mode, instead of using the STARTTLS  com-
               mand.
 
        <b><a href="postconf.5.html#tls_daemon_random_bytes">tls_daemon_random_bytes</a> (32)</b>
-              The number of pseudo-random bytes that  an  <a href="smtp.8.html"><b>smtp</b>(8)</a>
-              or  <a href="smtpd.8.html"><b>smtpd</b>(8)</a>  process  requests  from the <a href="tlsmgr.8.html"><b>tlsmgr</b>(8)</a>
-              server in order to seed its internal pseudo  random
+              The  number  of pseudo-random bytes that an <a href="smtp.8.html"><b>smtp</b>(8)</a>
+              or <a href="smtpd.8.html"><b>smtpd</b>(8)</a> process  requests  from  the  <a href="tlsmgr.8.html"><b>tlsmgr</b>(8)</a>
+              server  in order to seed its internal pseudo random
               number generator (PRNG).
 
        <b><a href="postconf.5.html#tls_high_cipherlist">tls_high_cipherlist</a></b>
@@ -477,7 +483,7 @@ SMTPD(8)                                                              SMTPD(8)
               ciphers.
 
        <b><a href="postconf.5.html#tls_low_cipherlist">tls_low_cipherlist</a> (ALL:!EXPORT:+RC4:@STRENGTH)</b>
-              The OpenSSL cipherlist for "LOW"  or  higher  grade
+              The  OpenSSL  cipherlist  for "LOW" or higher grade
               ciphers.
 
        <b><a href="postconf.5.html#tls_export_cipherlist">tls_export_cipherlist</a> (ALL:+RC4:@STRENGTH)</b>
@@ -485,22 +491,22 @@ SMTPD(8)                                                              SMTPD(8)
               ciphers.
 
        <b><a href="postconf.5.html#tls_null_cipherlist">tls_null_cipherlist</a> (eNULL:!aNULL)</b>
-              The OpenSSL cipherlist  for  "NULL"  grade  ciphers
+              The  OpenSSL  cipherlist  for  "NULL" grade ciphers
               that provide authentication without encryption.
 
 <b>OBSOLETE STARTTLS CONTROLS</b>
-       The  following configuration parameters exist for compati-
+       The following configuration parameters exist for  compati-
        bility with Postfix versions before 2.3. Support for these
        will be removed in a future release.
 
        <b><a href="postconf.5.html#smtpd_use_tls">smtpd_use_tls</a> (no)</b>
-              Opportunistic  TLS:  announce  STARTTLS  support to
-              SMTP clients, but do not require that  clients  use
+              Opportunistic TLS:  announce  STARTTLS  support  to
+              SMTP  clients,  but do not require that clients use
               TLS encryption.
 
        <b><a href="postconf.5.html#smtpd_enforce_tls">smtpd_enforce_tls</a> (no)</b>
-              Mandatory  TLS:  announce  STARTTLS support to SMTP
-              clients, and require that clients use  TLS  encryp-
+              Mandatory TLS: announce STARTTLS  support  to  SMTP
+              clients,  and  require that clients use TLS encryp-
               tion.
 
        <b><a href="postconf.5.html#smtpd_tls_cipherlist">smtpd_tls_cipherlist</a> (empty)</b>
@@ -508,64 +514,64 @@ SMTPD(8)                                                              SMTPD(8)
               server TLS cipher list.
 
 <b>VERP SUPPORT CONTROLS</b>
-       With VERP style delivery,  each  recipient  of  a  message
+       With  VERP  style  delivery,  each  recipient of a message
        receives a customized copy of the message with his/her own
-       recipient address encoded in the envelope sender  address.
+       recipient  address encoded in the envelope sender address.
        The <a href="VERP_README.html">VERP_README</a> file describes configuration and operation
-       details of Postfix support for  variable  envelope  return
+       details  of  Postfix  support for variable envelope return
        path addresses.  VERP style delivery is requested with the
-       SMTP XVERP command or with the "sendmail -V"  command-line
-       option  and is available in Postfix version 1.1 and later.
+       SMTP  XVERP command or with the "sendmail -V" command-line
+       option and is available in Postfix version 1.1 and  later.
 
        <b><a href="postconf.5.html#default_verp_delimiters">default_verp_delimiters</a> (+=)</b>
               The two default VERP delimiter characters.
 
        <b><a href="postconf.5.html#verp_delimiter_filter">verp_delimiter_filter</a> (-=+)</b>
-              The characters Postfix accepts  as  VERP  delimiter
-              characters  on the Postfix <a href="sendmail.1.html"><b>sendmail</b>(1)</a> command line
+              The  characters  Postfix  accepts as VERP delimiter
+              characters on the Postfix <a href="sendmail.1.html"><b>sendmail</b>(1)</a> command  line
               and in SMTP commands.
 
        Available in Postfix version 1.1 and 2.0:
 
        <b><a href="postconf.5.html#authorized_verp_clients">authorized_verp_clients</a> ($<a href="postconf.5.html#mynetworks">mynetworks</a>)</b>
-              What SMTP clients are allowed to specify the  XVERP
+              What  SMTP clients are allowed to specify the XVERP
               command.
 
        Available in Postfix version 2.1 and later:
 
        <b><a href="postconf.5.html#smtpd_authorized_verp_clients">smtpd_authorized_verp_clients</a> ($<a href="postconf.5.html#authorized_verp_clients">authorized_verp_clients</a>)</b>
-              What  SMTP clients are allowed to specify the XVERP
+              What SMTP clients are allowed to specify the  XVERP
               command.
 
 <b>TROUBLE SHOOTING CONTROLS</b>
-       The <a href="DEBUG_README.html">DEBUG_README</a> document describes how to debug parts  of
-       the  Postfix mail system. The methods vary from making the
-       software log a lot of detail, to running some daemon  pro-
+       The  <a href="DEBUG_README.html">DEBUG_README</a> document describes how to debug parts of
+       the Postfix mail system. The methods vary from making  the
+       software  log a lot of detail, to running some daemon pro-
        cesses under control of a call tracer or debugger.
 
        <b><a href="postconf.5.html#debug_peer_level">debug_peer_level</a> (2)</b>
-              The  increment  in  verbose  logging  level  when a
-              remote client or server matches a  pattern  in  the
+              The increment  in  verbose  logging  level  when  a
+              remote  client  or  server matches a pattern in the
               <a href="postconf.5.html#debug_peer_list">debug_peer_list</a> parameter.
 
        <b><a href="postconf.5.html#debug_peer_list">debug_peer_list</a> (empty)</b>
-              Optional  list  of remote client or server hostname
-              or network address patterns that cause the  verbose
-              logging  level  to increase by the amount specified
+              Optional list of remote client or  server  hostname
+              or  network address patterns that cause the verbose
+              logging level to increase by the  amount  specified
               in $<a href="postconf.5.html#debug_peer_level">debug_peer_level</a>.
 
        <b><a href="postconf.5.html#error_notice_recipient">error_notice_recipient</a> (postmaster)</b>
-              The recipient  of  postmaster  notifications  about
-              mail  delivery  problems that are caused by policy,
+              The  recipient  of  postmaster  notifications about
+              mail delivery problems that are caused  by  policy,
               resource, software or protocol errors.
 
        <b><a href="postconf.5.html#internal_mail_filter_classes">internal_mail_filter_classes</a> (empty)</b>
-              What categories of Postfix-generated mail are  sub-
-              ject   to   before-queue   content   inspection  by
+              What  categories of Postfix-generated mail are sub-
+              ject  to   before-queue   content   inspection   by
               <a href="postconf.5.html#non_smtpd_milters">non_smtpd_milters</a>, <a href="postconf.5.html#header_checks">header_checks</a> and <a href="postconf.5.html#body_checks">body_checks</a>.
 
        <b><a href="postconf.5.html#notify_classes">notify_classes</a> (resource, software)</b>
-              The list of error classes that are reported to  the
+              The  list of error classes that are reported to the
               postmaster.
 
        <b><a href="postconf.5.html#soft_bounce">soft_bounce</a> (no)</b>
@@ -575,22 +581,22 @@ SMTPD(8)                                                              SMTPD(8)
        Available in Postfix version 2.1 and later:
 
        <b><a href="postconf.5.html#smtpd_authorized_xclient_hosts">smtpd_authorized_xclient_hosts</a> (empty)</b>
-              What SMTP clients are allowed to  use  the  XCLIENT
+              What  SMTP  clients  are allowed to use the XCLIENT
               feature.
 
 <b>KNOWN VERSUS UNKNOWN RECIPIENT CONTROLS</b>
-       As  of  Postfix  version 2.0, the SMTP server rejects mail
-       for unknown recipients. This prevents the mail queue  from
-       clogging  up  with  undeliverable  MAILER-DAEMON messages.
-       Additional  information  on   this   topic   is   in   the
+       As of Postfix version 2.0, the SMTP  server  rejects  mail
+       for  unknown recipients. This prevents the mail queue from
+       clogging up  with  undeliverable  MAILER-DAEMON  messages.
+       Additional   information   on   this   topic   is  in  the
        <a href="LOCAL_RECIPIENT_README.html">LOCAL_RECIPIENT_README</a> and <a href="ADDRESS_CLASS_README.html">ADDRESS_CLASS_README</a> documents.
 
        <b><a href="postconf.5.html#show_user_unknown_table_name">show_user_unknown_table_name</a> (yes)</b>
-              Display the name of  the  recipient  table  in  the
+              Display  the  name  of  the  recipient table in the
               "User unknown" responses.
 
        <b><a href="postconf.5.html#canonical_maps">canonical_maps</a> (empty)</b>
-              Optional  address mapping lookup tables for message
+              Optional address mapping lookup tables for  message
               headers and envelopes.
 
        <b><a href="postconf.5.html#recipient_canonical_maps">recipient_canonical_maps</a> (empty)</b>
@@ -601,7 +607,7 @@ SMTPD(8)                                                              SMTPD(8)
 
        <b><a href="postconf.5.html#mydestination">mydestination</a>  ($<a href="postconf.5.html#myhostname">myhostname</a>,  localhost.$<a href="postconf.5.html#mydomain">mydomain</a>,  local-</b>
        <b>host)</b>
-              The  list  of  domains  that  are delivered via the
+              The list of domains  that  are  delivered  via  the
               $<a href="postconf.5.html#local_transport">local_transport</a> mail delivery transport.
 
        <b><a href="postconf.5.html#inet_interfaces">inet_interfaces</a> (all)</b>
@@ -610,146 +616,146 @@ SMTPD(8)                                                              SMTPD(8)
 
        <b><a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> (empty)</b>
               The network interface addresses that this mail sys-
-              tem receives mail on by way of a proxy  or  network
+              tem  receives  mail on by way of a proxy or network
               address translation unit.
 
        <b><a href="postconf.5.html#inet_protocols">inet_protocols</a> (ipv4)</b>
-              The  Internet protocols Postfix will attempt to use
+              The Internet protocols Postfix will attempt to  use
               when making or accepting connections.
 
        <b><a href="postconf.5.html#local_recipient_maps">local_recipient_maps</a>             (<a href="proxymap.8.html">proxy</a>:unix:passwd.byname</b>
        <b>$<a href="postconf.5.html#alias_maps">alias_maps</a>)</b>
-              Lookup tables with all names or addresses of  local
-              recipients:  a  recipient address is local when its
-              domain matches $<a href="postconf.5.html#mydestination">mydestination</a>, $<a href="postconf.5.html#inet_interfaces">inet_interfaces</a>  or
+              Lookup  tables with all names or addresses of local
+              recipients: a recipient address is local  when  its
+              domain  matches $<a href="postconf.5.html#mydestination">mydestination</a>, $<a href="postconf.5.html#inet_interfaces">inet_interfaces</a> or
               $<a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a>.
 
        <b><a href="postconf.5.html#unknown_local_recipient_reject_code">unknown_local_recipient_reject_code</a> (550)</b>
-              The  numerical  Postfix  SMTP  server response code
-              when   a   recipient   address   is   local,    and
-              $<a href="postconf.5.html#local_recipient_maps">local_recipient_maps</a>  specifies  a  list of lookup
+              The numerical Postfix  SMTP  server  response  code
+              when    a   recipient   address   is   local,   and
+              $<a href="postconf.5.html#local_recipient_maps">local_recipient_maps</a> specifies a  list  of  lookup
               tables that does not match the recipient.
 
-       Parameters concerning known/unknown  recipients  of  relay
+       Parameters  concerning  known/unknown  recipients of relay
        destinations:
 
        <b><a href="postconf.5.html#relay_domains">relay_domains</a> ($<a href="postconf.5.html#mydestination">mydestination</a>)</b>
-              What  destination  domains (and subdomains thereof)
+              What destination domains (and  subdomains  thereof)
               this system will relay mail to.
 
        <b><a href="postconf.5.html#relay_recipient_maps">relay_recipient_maps</a> (empty)</b>
-              Optional lookup tables with all valid addresses  in
+              Optional  lookup tables with all valid addresses in
               the domains that match $<a href="postconf.5.html#relay_domains">relay_domains</a>.
 
        <b><a href="postconf.5.html#unknown_relay_recipient_reject_code">unknown_relay_recipient_reject_code</a> (550)</b>
               The numerical Postfix SMTP server reply code when a
-              recipient  address  matches   $<a href="postconf.5.html#relay_domains">relay_domains</a>,   and
-              <a href="postconf.5.html#relay_recipient_maps">relay_recipient_maps</a>  specifies  a  list  of lookup
+              recipient   address   matches  $<a href="postconf.5.html#relay_domains">relay_domains</a>,  and
+              <a href="postconf.5.html#relay_recipient_maps">relay_recipient_maps</a> specifies  a  list  of  lookup
               tables that does not match the recipient address.
 
-       Parameters concerning known/unknown recipients in  virtual
+       Parameters  concerning known/unknown recipients in virtual
        alias domains:
 
        <b><a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a> ($<a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a>)</b>
               Postfix is final destination for the specified list
-              of virtual alias  domains,  that  is,  domains  for
-              which  all  addresses  are  aliased to addresses in
+              of  virtual  alias  domains,  that  is, domains for
+              which all addresses are  aliased  to  addresses  in
               other local or remote domains.
 
        <b><a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a> ($<a href="postconf.5.html#virtual_maps">virtual_maps</a>)</b>
-              Optional lookup tables  that  alias  specific  mail
-              addresses  or  domains  to  other  local  or remote
+              Optional  lookup  tables  that  alias specific mail
+              addresses or  domains  to  other  local  or  remote
               address.
 
        <b><a href="postconf.5.html#unknown_virtual_alias_reject_code">unknown_virtual_alias_reject_code</a> (550)</b>
               The SMTP server reply code when a recipient address
-              matches     $<a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a>,    and    $<a href="postconf.5.html#virtual_alias_maps">vir</a>-
-              <a href="postconf.5.html#virtual_alias_maps">tual_alias_maps</a> specifies a list of  lookup  tables
+              matches    $<a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a>,    and     $<a href="postconf.5.html#virtual_alias_maps">vir</a>-
+              <a href="postconf.5.html#virtual_alias_maps">tual_alias_maps</a>  specifies  a list of lookup tables
               that does not match the recipient address.
 
-       Parameters  concerning known/unknown recipients in virtual
+       Parameters concerning known/unknown recipients in  virtual
        mailbox domains:
 
        <b><a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a> ($<a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a>)</b>
               Postfix is final destination for the specified list
-              of   domains;  mail  is  delivered  via  the  $<a href="postconf.5.html#virtual_transport">vir</a>-
+              of  domains;  mail  is  delivered  via  the   $<a href="postconf.5.html#virtual_transport">vir</a>-
               <a href="postconf.5.html#virtual_transport">tual_transport</a> mail delivery transport.
 
        <b><a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a> (empty)</b>
-              Optional lookup tables with all valid addresses  in
+              Optional  lookup tables with all valid addresses in
               the domains that match $<a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a>.
 
        <b><a href="postconf.5.html#unknown_virtual_mailbox_reject_code">unknown_virtual_mailbox_reject_code</a> (550)</b>
               The SMTP server reply code when a recipient address
-              matches   $<a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a>,    and    $<a href="postconf.5.html#virtual_mailbox_maps">vir</a>-
+              matches    $<a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a>,    and   $<a href="postconf.5.html#virtual_mailbox_maps">vir</a>-
               <a href="postconf.5.html#virtual_mailbox_maps">tual_mailbox_maps</a> specifies a list of lookup tables
               that does not match the recipient address.
 
 <b>RESOURCE AND RATE CONTROLS</b>
-       The following parameters limit resource usage by the  SMTP
+       The  following parameters limit resource usage by the SMTP
        server and/or control client request rates.
 
        <b><a href="postconf.5.html#line_length_limit">line_length_limit</a> (2048)</b>
-              Upon  input,  long lines are chopped up into pieces
-              of at most this length; upon delivery,  long  lines
+              Upon input, long lines are chopped up  into  pieces
+              of  at  most this length; upon delivery, long lines
               are reconstructed.
 
        <b><a href="postconf.5.html#queue_minfree">queue_minfree</a> (0)</b>
-              The  minimal  amount  of free space in bytes in the
+              The minimal amount of free space in  bytes  in  the
               queue file system that is needed to receive mail.
 
        <b><a href="postconf.5.html#message_size_limit">message_size_limit</a> (10240000)</b>
-              The maximal size in bytes of a  message,  including
+              The  maximal  size in bytes of a message, including
               envelope information.
 
        <b><a href="postconf.5.html#smtpd_recipient_limit">smtpd_recipient_limit</a> (1000)</b>
-              The  maximal  number of recipients that the Postfix
+              The maximal number of recipients that  the  Postfix
               SMTP server accepts per message delivery request.
 
        <b><a href="postconf.5.html#smtpd_timeout">smtpd_timeout</a> (300s)</b>
-              The time limit for sending a  Postfix  SMTP  server
-              response  and  for  receiving  a remote SMTP client
+              The  time  limit  for sending a Postfix SMTP server
+              response and for receiving  a  remote  SMTP  client
               request.
 
        <b><a href="postconf.5.html#smtpd_history_flush_threshold">smtpd_history_flush_threshold</a> (100)</b>
-              The maximal number of lines  in  the  Postfix  SMTP
-              server  command  history  before it is flushed upon
+              The  maximal  number  of  lines in the Postfix SMTP
+              server command history before it  is  flushed  upon
               receipt of EHLO, RSET, or end of DATA.
 
        Available in Postfix version 2.3 and later:
 
        <b><a href="postconf.5.html#smtpd_peername_lookup">smtpd_peername_lookup</a> (yes)</b>
               Attempt to look up the remote SMTP client hostname,
-              and  verify  that  the  name  matches the client IP
+              and verify that the  name  matches  the  client  IP
               address.
 
        The per SMTP client connection count and request rate lim-
        its are implemented in co-operation with the <a href="anvil.8.html"><b>anvil</b>(8)</a> ser-
-       vice, and are available in Postfix version 2.2 and  later.
+       vice,  and are available in Postfix version 2.2 and later.
 
        <b><a href="postconf.5.html#smtpd_client_connection_count_limit">smtpd_client_connection_count_limit</a> (50)</b>
-              How  many  simultaneous  connections  any client is
+              How many simultaneous  connections  any  client  is
               allowed to make to this service.
 
        <b><a href="postconf.5.html#smtpd_client_connection_rate_limit">smtpd_client_connection_rate_limit</a> (0)</b>
               The  maximal  number  of  connection  attempts  any
-              client  is allowed to make to this service per time
+              client is allowed to make to this service per  time
               unit.
 
        <b><a href="postconf.5.html#smtpd_client_message_rate_limit">smtpd_client_message_rate_limit</a> (0)</b>
-              The maximal number  of  message  delivery  requests
-              that  any client is allowed to make to this service
+              The  maximal  number  of  message delivery requests
+              that any client is allowed to make to this  service
               per time unit, regardless of whether or not Postfix
               actually accepts those messages.
 
        <b><a href="postconf.5.html#smtpd_client_recipient_rate_limit">smtpd_client_recipient_rate_limit</a> (0)</b>
-              The  maximal number of recipient addresses that any
-              client is allowed to send to this service per  time
+              The maximal number of recipient addresses that  any
+              client  is allowed to send to this service per time
               unit, regardless of whether or not Postfix actually
               accepts those recipients.
 
        <b><a href="postconf.5.html#smtpd_client_event_limit_exceptions">smtpd_client_event_limit_exceptions</a> ($<a href="postconf.5.html#mynetworks">mynetworks</a>)</b>
-              Clients that are excluded  from  connection  count,
+              Clients  that  are  excluded from connection count,
               connection rate, or SMTP request rate restrictions.
 
        Available in Postfix version 2.3 and later:
@@ -760,52 +766,52 @@ SMTPD(8)                                                              SMTPD(8)
               tiate with this service per time unit.
 
 <b>TARPIT CONTROLS</b>
-       When a remote SMTP client makes errors, the  Postfix  SMTP
-       server  can insert delays before responding. This can help
-       to slow down run-away  software.   The  behavior  is  con-
-       trolled  by  an  error  counter  that counts the number of
-       errors within an SMTP session that a client makes  without
+       When  a  remote SMTP client makes errors, the Postfix SMTP
+       server can insert delays before responding. This can  help
+       to  slow  down  run-away  software.   The behavior is con-
+       trolled by an error counter  that  counts  the  number  of
+       errors  within an SMTP session that a client makes without
        delivering mail.
 
        <b><a href="postconf.5.html#smtpd_error_sleep_time">smtpd_error_sleep_time</a> (1s)</b>
               With Postfix version 2.1 and later: the SMTP server
-              response delay after a client has  made  more  than
-              $<a href="postconf.5.html#smtpd_soft_error_limit">smtpd_soft_error_limit</a>   errors,  and  fewer  than
-              $<a href="postconf.5.html#smtpd_hard_error_limit">smtpd_hard_error_limit</a> errors, without  delivering
+              response  delay  after  a client has made more than
+              $<a href="postconf.5.html#smtpd_soft_error_limit">smtpd_soft_error_limit</a>  errors,  and  fewer   than
+              $<a href="postconf.5.html#smtpd_hard_error_limit">smtpd_hard_error_limit</a>  errors, without delivering
               mail.
 
        <b><a href="postconf.5.html#smtpd_soft_error_limit">smtpd_soft_error_limit</a> (10)</b>
-              The  number  of  errors  a  remote  SMTP  client is
-              allowed to make without delivering mail before  the
+              The number  of  errors  a  remote  SMTP  client  is
+              allowed  to make without delivering mail before the
               Postfix SMTP server slows down all its responses.
 
        <b><a href="postconf.5.html#smtpd_hard_error_limit">smtpd_hard_error_limit</a> (20)</b>
-              The  maximal  number of errors a remote SMTP client
+              The maximal number of errors a remote  SMTP  client
               is allowed to make without delivering mail.
 
        <b><a href="postconf.5.html#smtpd_junk_command_limit">smtpd_junk_command_limit</a> (100)</b>
-              The number of junk commands (NOOP,  VRFY,  ETRN  or
+              The  number  of  junk commands (NOOP, VRFY, ETRN or
               RSET) that a remote SMTP client can send before the
-              Postfix SMTP server starts to increment  the  error
+              Postfix  SMTP  server starts to increment the error
               counter with each junk command.
 
        Available in Postfix version 2.1 and later:
 
        <b><a href="postconf.5.html#smtpd_recipient_overshoot_limit">smtpd_recipient_overshoot_limit</a> (1000)</b>
-              The  number of recipients that a remote SMTP client
-              can send in excess  of  the  limit  specified  with
+              The number of recipients that a remote SMTP  client
+              can  send  in  excess  of  the limit specified with
               $<a href="postconf.5.html#smtpd_recipient_limit">smtpd_recipient_limit</a>,  before  the  Postfix  SMTP
-              server increments the per-session error  count  for
+              server  increments  the per-session error count for
               each excess recipient.
 
 <b>ACCESS POLICY DELEGATION CONTROLS</b>
-       As  of  version 2.1, Postfix can be configured to delegate
-       access policy decisions to an external  server  that  runs
-       outside  Postfix.   See  the  file <a href="SMTPD_POLICY_README.html">SMTPD_POLICY_README</a> for
+       As of version 2.1, Postfix can be configured  to  delegate
+       access  policy  decisions  to an external server that runs
+       outside Postfix.  See  the  file  <a href="SMTPD_POLICY_README.html">SMTPD_POLICY_README</a>  for
        more information.
 
        <b><a href="postconf.5.html#smtpd_policy_service_max_idle">smtpd_policy_service_max_idle</a> (300s)</b>
-              The time after which an idle SMTPD  policy  service
+              The  time  after which an idle SMTPD policy service
               connection is closed.
 
        <b><a href="postconf.5.html#smtpd_policy_service_max_ttl">smtpd_policy_service_max_ttl</a> (1000s)</b>
@@ -813,162 +819,162 @@ SMTPD(8)                                                              SMTPD(8)
               connection is closed.
 
        <b><a href="postconf.5.html#smtpd_policy_service_timeout">smtpd_policy_service_timeout</a> (100s)</b>
-              The time limit for connecting  to,  writing  to  or
+              The  time  limit  for  connecting to, writing to or
               receiving from a delegated SMTPD policy server.
 
 <b>ACCESS CONTROLS</b>
-       The  <a href="SMTPD_ACCESS_README.html">SMTPD_ACCESS_README</a> document gives an introduction to
+       The <a href="SMTPD_ACCESS_README.html">SMTPD_ACCESS_README</a> document gives an introduction  to
        all the SMTP server access control features.
 
        <b><a href="postconf.5.html#smtpd_delay_reject">smtpd_delay_reject</a> (yes)</b>
-              Wait until the RCPT TO  command  before  evaluating
+              Wait  until  the  RCPT TO command before evaluating
               $<a href="postconf.5.html#smtpd_client_restrictions">smtpd_client_restrictions</a>,    $smtpd_helo_restric-
               tions and $<a href="postconf.5.html#smtpd_sender_restrictions">smtpd_sender_restrictions</a>, or wait until
-              the      ETRN     command     before     evaluating
+              the     ETRN     command     before      evaluating
               $<a href="postconf.5.html#smtpd_client_restrictions">smtpd_client_restrictions</a> and $smtpd_helo_restric-
               tions.
 
-       <b><a href="postconf.5.html#parent_domain_matches_subdomains">parent_domain_matches_subdomains</a>  (see  'postconf -d' out-</b>
+       <b><a href="postconf.5.html#parent_domain_matches_subdomains">parent_domain_matches_subdomains</a> (see 'postconf  -d'  out-</b>
        <b>put)</b>
               What   Postfix   features   match   subdomains   of
               "domain.tld" automatically, instead of requiring an
               explicit ".domain.tld" pattern.
 
        <b><a href="postconf.5.html#smtpd_client_restrictions">smtpd_client_restrictions</a> (empty)</b>
-              Optional  SMTP  server  access  restrictions in the
+              Optional SMTP server  access  restrictions  in  the
               context of a client SMTP connection request.
 
        <b><a href="postconf.5.html#smtpd_helo_required">smtpd_helo_required</a> (no)</b>
               Require that a remote SMTP client introduces itself
-              at  the  beginning of an SMTP session with the HELO
+              at the beginning of an SMTP session with  the  HELO
               or EHLO command.
 
        <b><a href="postconf.5.html#smtpd_helo_restrictions">smtpd_helo_restrictions</a> (empty)</b>
-              Optional restrictions that the Postfix SMTP  server
+              Optional  restrictions that the Postfix SMTP server
               applies in the context of the SMTP HELO command.
 
        <b><a href="postconf.5.html#smtpd_sender_restrictions">smtpd_sender_restrictions</a> (empty)</b>
-              Optional  restrictions that the Postfix SMTP server
+              Optional restrictions that the Postfix SMTP  server
               applies in the context of the MAIL FROM command.
 
        <b><a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a>           (<a href="postconf.5.html#permit_mynetworks">permit_mynetworks</a>,</b>
        <b><a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a>)</b>
               The  access  restrictions  that  the  Postfix  SMTP
-              server  applies  in the context of the RCPT TO com-
+              server applies in the context of the RCPT  TO  com-
               mand.
 
        <b><a href="postconf.5.html#smtpd_etrn_restrictions">smtpd_etrn_restrictions</a> (empty)</b>
-              Optional SMTP server  access  restrictions  in  the
+              Optional  SMTP  server  access  restrictions in the
               context of a client ETRN request.
 
        <b><a href="postconf.5.html#allow_untrusted_routing">allow_untrusted_routing</a> (no)</b>
-              Forward    mail   with   sender-specified   routing
-              (user[@%!]remote[@%!]site) from  untrusted  clients
+              Forward   mail   with   sender-specified    routing
+              (user[@%!]remote[@%!]site)  from  untrusted clients
               to destinations matching $<a href="postconf.5.html#relay_domains">relay_domains</a>.
 
        <b><a href="postconf.5.html#smtpd_restriction_classes">smtpd_restriction_classes</a> (empty)</b>
-              User-defined  aliases for groups of access restric-
+              User-defined aliases for groups of access  restric-
               tions.
 
        <b><a href="postconf.5.html#smtpd_null_access_lookup_key">smtpd_null_access_lookup_key</a> (</b>&lt;&gt;<b>)</b>
-              The lookup key to be used in SMTP <a href="access.5.html"><b>access</b>(5)</a>  tables
+              The  lookup key to be used in SMTP <a href="access.5.html"><b>access</b>(5)</a> tables
               instead of the null sender address.
 
        <b><a href="postconf.5.html#permit_mx_backup_networks">permit_mx_backup_networks</a> (empty)</b>
               Restrict  the  use  of  the  <a href="postconf.5.html#permit_mx_backup">permit_mx_backup</a>  SMTP
-              access feature to only  domains  whose  primary  MX
+              access  feature  to  only  domains whose primary MX
               hosts match the listed networks.
 
        Available in Postfix version 2.0 and later:
 
        <b><a href="postconf.5.html#smtpd_data_restrictions">smtpd_data_restrictions</a> (empty)</b>
-              Optional  access restrictions that the Postfix SMTP
+              Optional access restrictions that the Postfix  SMTP
               server applies in the context of the SMTP DATA com-
               mand.
 
        <b><a href="postconf.5.html#smtpd_expansion_filter">smtpd_expansion_filter</a> (see 'postconf -d' output)</b>
-              What  characters are allowed in $name expansions of
+              What characters are allowed in $name expansions  of
               RBL reply templates.
 
        Available in Postfix version 2.1 and later:
 
        <b><a href="postconf.5.html#smtpd_reject_unlisted_sender">smtpd_reject_unlisted_sender</a> (no)</b>
-              Request that the Postfix SMTP server  rejects  mail
-              from   unknown   sender  addresses,  even  when  no
-              explicit <a href="postconf.5.html#reject_unlisted_sender">reject_unlisted_sender</a> access  restriction
+              Request  that  the Postfix SMTP server rejects mail
+              from  unknown  sender  addresses,  even   when   no
+              explicit  <a href="postconf.5.html#reject_unlisted_sender">reject_unlisted_sender</a> access restriction
               is specified.
 
        <b><a href="postconf.5.html#smtpd_reject_unlisted_recipient">smtpd_reject_unlisted_recipient</a> (yes)</b>
-              Request  that  the Postfix SMTP server rejects mail
+              Request that the Postfix SMTP server  rejects  mail
               for  unknown  recipient  addresses,  even  when  no
-              explicit  <a href="postconf.5.html#reject_unlisted_recipient">reject_unlisted_recipient</a> access restric-
+              explicit <a href="postconf.5.html#reject_unlisted_recipient">reject_unlisted_recipient</a> access  restric-
               tion is specified.
 
        Available in Postfix version 2.2 and later:
 
        <b><a href="postconf.5.html#smtpd_end_of_data_restrictions">smtpd_end_of_data_restrictions</a> (empty)</b>
-              Optional access restrictions that the Postfix  SMTP
-              server  applies  in the context of the SMTP END-OF-
+              Optional  access restrictions that the Postfix SMTP
+              server applies in the context of the  SMTP  END-OF-
               DATA command.
 
 <b>SENDER AND RECIPIENT ADDRESS VERIFICATION CONTROLS</b>
-       Postfix  version  2.1  introduces  sender  and   recipient
-       address  verification.   This  feature  is  implemented by
-       sending probe email messages that are not actually  deliv-
-       ered.   This  feature  is requested via the <a href="postconf.5.html#reject_unverified_sender">reject_unveri</a>-
-       <a href="postconf.5.html#reject_unverified_sender">fied_sender</a>   and    <a href="postconf.5.html#reject_unverified_recipient">reject_unverified_recipient</a>    access
-       restrictions.   The status of verification probes is main-
+       Postfix   version  2.1  introduces  sender  and  recipient
+       address verification.   This  feature  is  implemented  by
+       sending  probe email messages that are not actually deliv-
+       ered.  This feature is requested  via  the  <a href="postconf.5.html#reject_unverified_sender">reject_unveri</a>-
+       <a href="postconf.5.html#reject_unverified_sender">fied_sender</a>    and    <a href="postconf.5.html#reject_unverified_recipient">reject_unverified_recipient</a>   access
+       restrictions.  The status of verification probes is  main-
        tained by the <a href="verify.8.html"><b>verify</b>(8)</a> server.  See the file <a href="ADDRESS_VERIFICATION_README.html">ADDRESS_VER</a>-
-       <a href="ADDRESS_VERIFICATION_README.html">IFICATION_README</a>  for  information  about how to configure
+       <a href="ADDRESS_VERIFICATION_README.html">IFICATION_README</a> for information about  how  to  configure
        and operate the Postfix sender/recipient address verifica-
        tion service.
 
        <b><a href="postconf.5.html#address_verify_poll_count">address_verify_poll_count</a> (3)</b>
-              How  many  times to query the <a href="verify.8.html"><b>verify</b>(8)</a> service for
-              the completion of an address  verification  request
+              How many times to query the <a href="verify.8.html"><b>verify</b>(8)</a>  service  for
+              the  completion  of an address verification request
               in progress.
 
        <b><a href="postconf.5.html#address_verify_poll_delay">address_verify_poll_delay</a> (3s)</b>
-              The  delay between queries for the completion of an
+              The delay between queries for the completion of  an
               address verification request in progress.
 
        <b><a href="postconf.5.html#address_verify_sender">address_verify_sender</a> ($<a href="postconf.5.html#double_bounce_sender">double_bounce_sender</a>)</b>
-              The sender address to use in  address  verification
+              The  sender  address to use in address verification
               probes; prior to Postfix 2.5 the default was "post-
               master".
 
        <b><a href="postconf.5.html#unverified_sender_reject_code">unverified_sender_reject_code</a> (450)</b>
-              The numerical Postfix  SMTP  server  response  code
-              when   a  recipient  address  is  rejected  by  the
+              The  numerical  Postfix  SMTP  server response code
+              when  a  recipient  address  is  rejected  by   the
               <a href="postconf.5.html#reject_unverified_sender">reject_unverified_sender</a> restriction.
 
        <b><a href="postconf.5.html#unverified_recipient_reject_code">unverified_recipient_reject_code</a> (450)</b>
-              The numerical Postfix SMTP server response  when  a
+              The  numerical  Postfix SMTP server response when a
               recipient address is rejected by the <a href="postconf.5.html#reject_unverified_recipient">reject_unveri</a>-
               <a href="postconf.5.html#reject_unverified_recipient">fied_recipient</a> restriction.
 
 <b>ACCESS CONTROL RESPONSES</b>
-       The following  parameters  control  numerical  SMTP  reply
+       The  following  parameters  control  numerical  SMTP reply
        codes and/or text responses.
 
        <b><a href="postconf.5.html#access_map_reject_code">access_map_reject_code</a> (554)</b>
-              The  numerical  Postfix  SMTP  server response code
-              when a client  is  rejected  by  an  <a href="access.5.html"><b>access</b>(5)</a>  map
+              The numerical Postfix  SMTP  server  response  code
+              when  a  client  is  rejected  by  an <a href="access.5.html"><b>access</b>(5)</a> map
               restriction.
 
        <b><a href="postconf.5.html#defer_code">defer_code</a> (450)</b>
-              The  numerical  Postfix  SMTP  server response code
-              when a remote SMTP client request  is  rejected  by
+              The numerical Postfix  SMTP  server  response  code
+              when  a  remote  SMTP client request is rejected by
               the "defer" restriction.
 
        <b><a href="postconf.5.html#invalid_hostname_reject_code">invalid_hostname_reject_code</a> (501)</b>
-              The  numerical  Postfix  SMTP  server response code
-              when the client HELO or EHLO command  parameter  is
-              rejected    by   the   <a href="postconf.5.html#reject_invalid_helo_hostname">reject_invalid_helo_hostname</a>
+              The numerical Postfix  SMTP  server  response  code
+              when  the  client HELO or EHLO command parameter is
+              rejected   by   the    <a href="postconf.5.html#reject_invalid_helo_hostname">reject_invalid_helo_hostname</a>
               restriction.
 
        <b><a href="postconf.5.html#maps_rbl_reject_code">maps_rbl_reject_code</a> (554)</b>
-              The numerical Postfix  SMTP  server  response  code
+              The  numerical  Postfix  SMTP  server response code
               when a remote SMTP client request is blocked by the
               <a href="postconf.5.html#reject_rbl_client">reject_rbl_client</a>,             <a href="postconf.5.html#reject_rhsbl_client">reject_rhsbl_client</a>,
               <a href="postconf.5.html#reject_rhsbl_sender">reject_rhsbl_sender</a>    or    <a href="postconf.5.html#reject_rhsbl_recipient">reject_rhsbl_recipient</a>
@@ -976,53 +982,53 @@ SMTPD(8)                                                              SMTPD(8)
 
        <b><a href="postconf.5.html#non_fqdn_reject_code">non_fqdn_reject_code</a> (504)</b>
               The numerical Postfix SMTP server reply code when a
-              client     request     is     rejected    by    the
+              client    request    is     rejected     by     the
               <a href="postconf.5.html#reject_non_fqdn_helo_hostname">reject_non_fqdn_helo_hostname</a>,
               <a href="postconf.5.html#reject_non_fqdn_sender">reject_non_fqdn_sender</a> or <a href="postconf.5.html#reject_non_fqdn_recipient">reject_non_fqdn_recipient</a>
               restriction.
 
        <b><a href="postconf.5.html#plaintext_reject_code">plaintext_reject_code</a> (450)</b>
-              The numerical Postfix  SMTP  server  response  code
-              when  a  request  is  rejected by the <b>reject_plain-</b>
+              The  numerical  Postfix  SMTP  server response code
+              when a request is  rejected  by  the  <b>reject_plain-</b>
               <b>text_session</b> restriction.
 
        <b><a href="postconf.5.html#reject_code">reject_code</a> (554)</b>
-              The numerical Postfix  SMTP  server  response  code
-              when  a  remote  SMTP client request is rejected by
+              The  numerical  Postfix  SMTP  server response code
+              when a remote SMTP client request  is  rejected  by
               the "reject" restriction.
 
        <b><a href="postconf.5.html#relay_domains_reject_code">relay_domains_reject_code</a> (554)</b>
-              The numerical Postfix  SMTP  server  response  code
-              when   a   client   request   is  rejected  by  the
+              The  numerical  Postfix  SMTP  server response code
+              when  a  client  request   is   rejected   by   the
               <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a> recipient restriction.
 
        <b><a href="postconf.5.html#unknown_address_reject_code">unknown_address_reject_code</a> (450)</b>
-              The numerical Postfix  SMTP  server  response  code
-              when  a  sender or recipient address is rejected by
+              The  numerical  Postfix  SMTP  server response code
+              when a sender or recipient address is  rejected  by
               the         <a href="postconf.5.html#reject_unknown_sender_domain">reject_unknown_sender_domain</a>         or
               <a href="postconf.5.html#reject_unknown_recipient_domain">reject_unknown_recipient_domain</a> restriction.
 
        <b><a href="postconf.5.html#unknown_client_reject_code">unknown_client_reject_code</a> (450)</b>
-              The  numerical  Postfix  SMTP  server response code
-              when a client without valid address &lt;=&gt;  name  map-
+              The numerical Postfix  SMTP  server  response  code
+              when  a  client without valid address &lt;=&gt; name map-
               ping is rejected by the reject_unknown_client_host-
               name restriction.
 
        <b><a href="postconf.5.html#unknown_hostname_reject_code">unknown_hostname_reject_code</a> (450)</b>
-              The numerical Postfix  SMTP  server  response  code
-              when  the  hostname specified with the HELO or EHLO
-              command       is       rejected       by        the
+              The  numerical  Postfix  SMTP  server response code
+              when the hostname specified with the HELO  or  EHLO
+              command        is       rejected       by       the
               <a href="postconf.5.html#reject_unknown_helo_hostname">reject_unknown_helo_hostname</a> restriction.
 
        Available in Postfix version 2.0 and later:
 
        <b><a href="postconf.5.html#default_rbl_reply">default_rbl_reply</a> (see 'postconf -d' output)</b>
-              The  default  SMTP  server  response template for a
-              request that is rejected by an  RBL-based  restric-
+              The default SMTP server  response  template  for  a
+              request  that  is rejected by an RBL-based restric-
               tion.
 
        <b><a href="postconf.5.html#multi_recipient_bounce_reject_code">multi_recipient_bounce_reject_code</a> (550)</b>
-              The  numerical  Postfix  SMTP  server response code
+              The numerical Postfix  SMTP  server  response  code
               when a remote SMTP client request is blocked by the
               <a href="postconf.5.html#reject_multi_recipient_bounce">reject_multi_recipient_bounce</a> restriction.
 
@@ -1031,16 +1037,16 @@ SMTPD(8)                                                              SMTPD(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  <a href="postconf.5.html">main.cf</a>  and
+              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
-              handle a request  before  it  is  terminated  by  a
+              How much time a Postfix daemon process may take  to
+              handle  a  request  before  it  is  terminated by a
               built-in watchdog timer.
 
        <b><a href="postconf.5.html#command_directory">command_directory</a> (see 'postconf -d' output)</b>
-              The  location  of  all  postfix administrative com-
+              The location of  all  postfix  administrative  com-
               mands.
 
        <b><a href="postconf.5.html#double_bounce_sender">double_bounce_sender</a> (double-bounce)</b>
@@ -1061,37 +1067,37 @@ SMTPD(8)                                                              SMTPD(8)
               and most Postfix daemon processes.
 
        <b><a href="postconf.5.html#max_idle">max_idle</a> (100s)</b>
-              The  maximum  amount  of  time that an idle Postfix
-              daemon process waits  for  an  incoming  connection
+              The maximum amount of time  that  an  idle  Postfix
+              daemon  process  waits  for  an incoming connection
               before terminating voluntarily.
 
        <b><a href="postconf.5.html#max_use">max_use</a> (100)</b>
-              The  maximal  number of incoming connections that a
-              Postfix daemon process will service  before  termi-
+              The maximal number of incoming connections  that  a
+              Postfix  daemon  process will service before termi-
               nating voluntarily.
 
        <b><a href="postconf.5.html#myhostname">myhostname</a> (see 'postconf -d' output)</b>
               The internet hostname of this mail system.
 
        <b><a href="postconf.5.html#mynetworks">mynetworks</a> (see 'postconf -d' output)</b>
-              The  list  of "trusted" SMTP clients that have more
+              The list of "trusted" SMTP clients that  have  more
               privileges than "strangers".
 
        <b><a href="postconf.5.html#myorigin">myorigin</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b>
               The domain name that locally-posted mail appears to
-              come  from,  and that locally posted mail is deliv-
+              come from, and that locally posted mail  is  deliv-
               ered to.
 
        <b><a href="postconf.5.html#process_id">process_id</a> (read-only)</b>
-              The process ID  of  a  Postfix  command  or  daemon
+              The  process  ID  of  a  Postfix  command or daemon
               process.
 
        <b><a href="postconf.5.html#process_name">process_name</a> (read-only)</b>
-              The  process  name  of  a Postfix command or daemon
+              The process name of a  Postfix  command  or  daemon
               process.
 
        <b><a href="postconf.5.html#queue_directory">queue_directory</a> (see 'postconf -d' output)</b>
-              The location of the Postfix top-level queue  direc-
+              The  location of the Postfix top-level queue direc-
               tory.
 
        <b><a href="postconf.5.html#recipient_delimiter">recipient_delimiter</a> (empty)</b>
@@ -1099,22 +1105,22 @@ SMTPD(8)                                                              SMTPD(8)
               sions (user+foo).
 
        <b><a href="postconf.5.html#smtpd_banner">smtpd_banner</a> ($<a href="postconf.5.html#myhostname">myhostname</a> ESMTP $<a href="postconf.5.html#mail_name">mail_name</a>)</b>
-              The text that follows the 220 status  code  in  the
+              The  text  that  follows the 220 status code in the
               SMTP greeting banner.
 
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
        <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
-              The  mail  system  name  that  is  prepended to the
-              process name in syslog  records,  so  that  "smtpd"
+              The mail system  name  that  is  prepended  to  the
+              process  name  in  syslog  records, so that "smtpd"
               becomes, for example, "postfix/smtpd".
 
        Available in Postfix version 2.2 and later:
 
        <b><a href="postconf.5.html#smtpd_forbidden_commands">smtpd_forbidden_commands</a> (CONNECT, GET, POST)</b>
-              List  of  commands  that  causes  the  Postfix SMTP
-              server to immediately terminate the session with  a
+              List of  commands  that  causes  the  Postfix  SMTP
+              server  to immediately terminate the session with a
               221 code.
 
 <b>SEE ALSO</b>
@@ -1144,7 +1150,7 @@ SMTPD(8)                                                              SMTPD(8)
        <a href="XFORWARD_README.html">XFORWARD_README</a>, Postfix XFORWARD extension
 
 <b>LICENSE</b>
-       The Secure Mailer license must be  distributed  with  this
+       The  Secure  Mailer  license must be distributed with this
        software.
 
 <b>AUTHOR(S)</b>
index 7018bc0e87b07f0ac3c0c6a7dfd8ed8490f926f0..df3e7717c4711324bdd71b19af4432d3107e75e7 100644 (file)
@@ -130,6 +130,8 @@ case "$SYSTEM.$RELEASE" in
                ;;
   FreeBSD.6*)  SYSTYPE=FREEBSD6
                ;;
+  FreeBSD.7*)  SYSTYPE=FREEBSD7
+               ;;
   OpenBSD.2*)  SYSTYPE=OPENBSD2
                ;;
   OpenBSD.3*)  SYSTYPE=OPENBSD3
@@ -309,7 +311,7 @@ EOF
                rm -f makedefs.test makedefs.test.o makedefs.test.c;;
                esac
                ;;
-     GNU.0*|GNU/kFreeBSD.[56]*)
+     GNU.0*|GNU/kFreeBSD.[567]*)
                SYSTYPE=GNU0
                # Postfix no longer needs DB 1.85 compatibility
                if [ -f /usr/include/db.h ]
index 3a98b2d47538f7273e904a3c2cd4fab1194a1bd2..bde924affba8405c32b9e3654c75910dd74caa1d 100644 (file)
@@ -258,7 +258,18 @@ A setting of zero disables the limit. Lookups fail with a
 temporary error if the limit is exceeded.  Setting the
 limit to 1 ensures that lookups do not return multiple
 values.
-.PP
+.SH "OBSOLETE QUERY INTERFACE"
+.na
+.nf
+.ad
+.fi
+This section describes an interface that is deprecated as
+of Postfix 2.2. It is replaced by the more general \fBquery\fR
+interface described above.  If the \fBquery\fR parameter
+is defined, the legacy parameters described here ignored.
+Please migrate to the new interface as the legacy interface
+may be removed in a future release.
+
 The following parameters can be used to fill in a
 SELECT template statement of the form:
 
@@ -272,12 +283,6 @@ SELECT template statement of the form:
 The specifier %s is replaced by the search string, and is
 escaped so if it contains single quotes or other odd characters,
 it will not cause a parse error, or worse, a security problem.
-
-As of Postfix 2.2 this interface is obsolete, it is replaced
-by the more general \fBquery\fR interface described above.
-If the \fBquery\fR parameter is defined, the legacy parameters
-are ignored. Please migrate to the new interface as the legacy
-interface may be removed in a future release.
 .IP "\fBselect_field\fR"
 The SQL "select" parameter. Example:
 .nf
index cfe6ce41b12427d891aed64f24484a7d2e40dbf8..3ee3b7d80edcba745b9456883413a01e363b6774 100644 (file)
@@ -65,7 +65,7 @@ migrate to the new interface set:
     \fBquery\fR = SELECT \fIselect_function\fR('%s')
 .fi
 
-or in the absence of \fBselection_function\fR, the lower precedence:
+or in the absence of \fBselect_function\fR, the lower precedence:
 
 .nf
     \fBquery\fR = SELECT \fIselect_field\fR
@@ -261,8 +261,15 @@ A setting of zero disables the limit. Lookups fail with a
 temporary error if the limit is exceeded.  Setting the
 limit to 1 ensures that lookups do not return multiple
 values.
-.PP
-Pre-Postfix 2.2 legacy interfaces:
+.SH "OBSOLETE QUERY INTERFACES"
+.na
+.nf
+.ad
+.fi
+This section describes query interfaces that are deprecated
+as of Postfix 2.2.  Please migrate to the new \fBquery\fR
+interface as the old interfaces are slated to be phased
+out.
 .IP "\fBselect_function\fR"
 This parameter specifies a database function name. Example:
 .nf
@@ -277,9 +284,8 @@ This is equivalent to:
 This parameter overrides the legacy table-related fields (described
 below). With Postfix versions prior to 2.2, it also overrides the
 \fBquery\fR parameter. Starting with Postfix 2.2, the \fBquery\fR
-parameter has highest precedence, and this parameter is deprecated.
-Please migrate to the new \fBquery\fR interface as this interface
-is slated to be phased out.
+parameter has highest precedence, and the \fBselect_function\fR
+parameter is deprecated.
 .PP
 The following parameters (with lower precedence than the
 \fBselect_function\fR interface described above) can be used to
@@ -300,8 +306,7 @@ problem.
 Starting with Postfix 2.2, this interface is obsoleted by the more
 general \fBquery\fR interface described above. If higher precedence
 the \fBquery\fR or \fBselect_function\fR parameters described above
-are defined, these parameters are ignored. Please migrate to the new
-\fBquery\fR interface as this interface is slated to be phased out.
+are defined, the parameters described here are ignored.
 .IP "\fBselect_field\fR"
 The SQL "select" parameter. Example:
 .nf
index 6b5a4c9d47930961ccbc562d228ddebe29ae18bd..d4275b69571181ae99f2667bfb3e3a13be1a3987 100644 (file)
@@ -641,7 +641,7 @@ is placed into the Postfix configuration directory.
 This feature is available in Postfix 2.3 and later.
 .SH broken_sasl_auth_clients (default: no)
 Enable inter-operability with SMTP clients that implement an obsolete
-version of the AUTH command (RFC 2554). Examples of such clients
+version of the AUTH command (RFC 4954). Examples of such clients
 are MicroSoft Outlook Express version 4 and MicroSoft Exchange
 version 5.0.
 .PP
@@ -2225,7 +2225,7 @@ address rewriting when mail from a remote client is forwarded by
 a neighboring system.
 .IP "\fB permit_sasl_authenticated \fR"
 Append the domain name in $myorigin or $mydomain when the
-client is successfully authenticated via the RFC 2554 (AUTH)
+client is successfully authenticated via the RFC 4954 (AUTH)
 protocol.
 .IP "\fB permit_tls_clientcerts \fR"
 Append the domain name in $myorigin or $mydomain when the
@@ -5488,7 +5488,7 @@ Permit the request when the client IP address matches any
 network or network address listed in  $mynetworks.
 .IP "\fBpermit_sasl_authenticated\fR"
 Permit the request when the client is successfully
-authenticated via the RFC 2554 (AUTH) protocol.
+authenticated via the RFC 4954 (AUTH) protocol.
 .IP "\fBpermit_tls_all_clientcerts\fR"
 Permit the request when the remote SMTP client certificate is
 verified successfully.  This option must be used only if a special
@@ -6311,7 +6311,7 @@ the SASL plug-in implementation that is selected with
 configuration file or rendezvous point.
 .PP
 This feature is available in Postfix 2.3 and later. In earlier
-releases it was called smtpd_sasl_application.
+releases it was called \fBsmtpd_sasl_application_name\fR.
 .SH smtpd_sasl_security_options (default: noanonymous)
 Postfix SMTP server SASL security options; as of Postfix 2.3
 the list of available
index 5f521c3d3db49c7d54cbc998ec6ef0428bf3bed4..370491807d79162255767a33bc80b8363dac35cf 100644 (file)
@@ -75,7 +75,7 @@ The output record delimiter. Typically one would use either
 \fB\er\en\fR or \fB\en\fR. The usual C-style backslash escape
 sequences are recognized: \fB\ea \eb \ef \en \er \et \ev
 \e\fIddd\fR (up to three octal digits) and \fB\e\e\fR.
-.IP "\fBflags=BDFORhqu.>\fR (optional)"
+.IP "\fBflags=BDFORXhqu.>\fR (optional)"
 Optional message processing flags. By default, a message is
 copied unchanged.
 .RS
@@ -110,6 +110,11 @@ This feature is available as of Postfix 2.0.
 .IP \fBR\fR
 Prepend a \fBReturn-Path:\fR message header with the envelope sender
 address.
+.IP \fBX\fR
+Indicate that the external command performs final delivery.
+This flag affects the status reported in "success" DSN
+(delivery status notification) messages, and changes it
+from "relayed" into "delivered".
 .IP \fBh\fR
 Fold the command-line \fB$recipient\fR address domain part
 (text to the right of the right-most \fB@\fR character) to
@@ -173,8 +178,8 @@ specify \fB$sender\fR as an argument by itself:
 .IP
 This feature is available as of Postfix 2.3.
 .IP "\fBsize\fR=\fIsize_limit\fR (optional)"
-Messages greater in size than this limit (in bytes) will
-be returned to the sender as undeliverable.
+Don't deliver messages that exceed this size limit (in
+bytes); return them to the sender instead.
 .IP "\fBuser\fR=\fIusername\fR (required)"
 .IP "\fBuser\fR=\fIusername\fR:\fIgroupname\fR"
 Execute the external command with the rights of the
@@ -259,7 +264,7 @@ if the message has been received without SASL authentication.
 This is available in Postfix 2.2 and later.
 .IP \fB${\fBsasl_sender\fR}\fR
 This macro expands to the SASL sender name (i.e. the original
-submitter as per RFC 2554) used during the reception of the message.
+submitter as per RFC 4954) used during the reception of the message.
 .sp
 This is available in Postfix 2.2 and later.
 .IP \fB${\fBsasl_username\fR}\fR
index 93e343f8aae0451c2d12a995d8f769e47b8428cb..fb7e606f1a07241082f1159df5045680cf7b0c60 100644 (file)
@@ -92,7 +92,7 @@ undesirable use.
 .fi
 .IP "\fBbroken_sasl_auth_clients (no)\fR"
 Enable inter-operability with SMTP clients that implement an obsolete
-version of the AUTH command (RFC 2554).
+version of the AUTH command (RFC 4954).
 .IP "\fBdisable_vrfy_command (no)\fR"
 Disable the SMTP VRFY command.
 .IP "\fBsmtpd_noop_commands (empty)\fR"
@@ -264,13 +264,13 @@ What SMTP clients are allowed to use the XFORWARD feature.
 .nf
 .ad
 .fi
-Postfix SASL support (RFC 2554) can be used to authenticate remote
+Postfix SASL support (RFC 4954) can be used to authenticate remote
 SMTP clients to the Postfix SMTP server, and to authenticate the
 Postfix SMTP client to a remote SMTP server.
 See the SASL_README document for details.
 .IP "\fBbroken_sasl_auth_clients (no)\fR"
 Enable inter-operability with SMTP clients that implement an obsolete
-version of the AUTH command (RFC 2554).
+version of the AUTH command (RFC 4954).
 .IP "\fBsmtpd_sasl_auth_enable (no)\fR"
 Enable SASL authentication in the Postfix SMTP server.
 .IP "\fBsmtpd_sasl_local_domain (empty)\fR"
@@ -290,6 +290,11 @@ Available in Postfix version 2.1 and later:
 What remote SMTP clients the Postfix SMTP server will not offer
 AUTH support to.
 .PP
+Available in Postfix version 2.1 and 2.2:
+.IP "\fBsmtpd_sasl_application_name (smtpd)\fR"
+The application name that the Postfix SMTP server uses for SASL
+server initialization.
+.PP
 Available in Postfix version 2.3 and later:
 .IP "\fBsmtpd_sasl_authenticated_header (no)\fR"
 Report the SASL authenticated user name in the \fBsmtpd\fR(8) Received
index e5fde9d1e32005316641d3e234923a80eada5941..36fbcb66a0b2935107d6c7d368f6480348139aef 100644 (file)
@@ -365,8 +365,8 @@ example, the lookup table "static:foobar" always returns the string
 described in tcp_table(5). The lookup table name is "tcp:host:port"
 where "host" specifies a symbolic hostname or a numeric IP address,
 and "port" specifies a symbolic service name or a numeric port
-number. This protocol is not available up to and including Postfix
-version 2.4.  </dd>
+number. This protocol is not available in the stable Postfix release.
+</dd>
 
 <dt> <b>unix</b> (read-only) </dt>
 
index 1a7f756b68727eb94b5eaa0df3720b71f31d76c3..7d129077e5ba55ac89d4934c40a7c0ddb826d623 100644 (file)
@@ -243,7 +243,7 @@ out-of-control clients.  </p>
 <dl>
 
 <dt> smtpd_client_connection_count_limit (default: 50) </dt> <dd>
-The maximum number of connections than an SMTP client may make
+The maximum number of connections that an SMTP client may make
 simultaneously. </dd>
 
 <dt> smtpd_client_connection_rate_limit (default: no limit) </dt>
index a8f8bf2a749940b7434793ec9451d2ae88716177..ed03c9324cf42d91b209f3ec9525683e7ee1297c 100644 (file)
 #      temporary error if the limit is exceeded.  Setting the
 #      limit to 1 ensures that lookups do not return multiple
 #      values.
-# .PP
+# OBSOLETE QUERY INTERFACE
+# .ad
+# .fi
+#      This section describes an interface that is deprecated as
+#      of Postfix 2.2. It is replaced by the more general \fBquery\fR
+#      interface described above.  If the \fBquery\fR parameter
+#      is defined, the legacy parameters described here ignored.
+#      Please migrate to the new interface as the legacy interface
+#      may be removed in a future release.
+#
 #      The following parameters can be used to fill in a
 #      SELECT template statement of the form:
 #
 #      The specifier %s is replaced by the search string, and is
 #      escaped so if it contains single quotes or other odd characters,
 #      it will not cause a parse error, or worse, a security problem.
-#
-#      As of Postfix 2.2 this interface is obsolete, it is replaced
-#      by the more general \fBquery\fR interface described above.
-#      If the \fBquery\fR parameter is defined, the legacy parameters
-#      are ignored. Please migrate to the new interface as the legacy
-#      interface may be removed in a future release.
 # .IP "\fBselect_field\fR"
 #      The SQL "select" parameter. Example:
 # .nf
index 6338416c59fe4409c0412f5dec351ced037d4789..383060093472716875a6fb2db286ef0843be61eb 100644 (file)
@@ -57,7 +57,7 @@
 #          \fBquery\fR = SELECT \fIselect_function\fR('%s')
 # .fi
 #
-#      or in the absence of \fBselection_function\fR, the lower precedence:
+#      or in the absence of \fBselect_function\fR, the lower precedence:
 #
 # .nf
 #          \fBquery\fR = SELECT \fIselect_field\fR
 #     temporary error if the limit is exceeded.  Setting the
 #     limit to 1 ensures that lookups do not return multiple
 #     values.
-# .PP
-#      Pre-Postfix 2.2 legacy interfaces:
+# OBSOLETE QUERY INTERFACES
+# .ad
+# .fi
+#      This section describes query interfaces that are deprecated
+#      as of Postfix 2.2.  Please migrate to the new \fBquery\fR
+#      interface as the old interfaces are slated to be phased
+#      out.
 # .IP "\fBselect_function\fR"
 #      This parameter specifies a database function name. Example:
 # .nf
 #      This parameter overrides the legacy table-related fields (described
 #      below). With Postfix versions prior to 2.2, it also overrides the
 #      \fBquery\fR parameter. Starting with Postfix 2.2, the \fBquery\fR
-#      parameter has highest precedence, and this parameter is deprecated.
-#      Please migrate to the new \fBquery\fR interface as this interface
-#      is slated to be phased out.
+#      parameter has highest precedence, and the \fBselect_function\fR
+#      parameter is deprecated.
 # .PP
 #      The following parameters (with lower precedence than the
 #      \fBselect_function\fR interface described above) can be used to
 #      Starting with Postfix 2.2, this interface is obsoleted by the more
 #      general \fBquery\fR interface described above. If higher precedence
 #      the \fBquery\fR or \fBselect_function\fR parameters described above
-#      are defined, these parameters are ignored. Please migrate to the new
-#      \fBquery\fR interface as this interface is slated to be phased out.
+#      are defined, the parameters described here are ignored.
 # .IP "\fBselect_field\fR"
 #      The SQL "select" parameter. Example:
 # .nf
index cd412cf9eac09564f9c05a7119c8e4b7e0cf2610..7f4b36f7e35f08247d526c2dd88fadf19cc4dda0 100644 (file)
@@ -4631,7 +4631,7 @@ network or network address listed in  $mynetworks. </dd>
 <dt><b><a name="permit_sasl_authenticated">permit_sasl_authenticated</a></b></dt>
 
 <dd> Permit the request when the client is successfully
-authenticated via the RFC 2554 (AUTH) protocol. </dd>
+authenticated via the RFC 4954 (AUTH) protocol. </dd>
 
 
 <dt><b><a name="permit_tls_all_clientcerts">permit_tls_all_clientcerts</a></b></dt>
@@ -5418,7 +5418,7 @@ smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
 %CLASS sasl-auth SASL Authentication
 
 <p>
-Postfix SASL support (RFC 2554) can be used to authenticate remote
+Postfix SASL support (RFC 4954) can be used to authenticate remote
 SMTP clients to the Postfix SMTP server, and to authenticate the
 Postfix SMTP client to a remote SMTP server.
 See the SASL_README document for details.
@@ -6434,7 +6434,7 @@ This feature is available in Postfix 2.0 and later.
 
 <p>
 Enable inter-operability with SMTP clients that implement an obsolete
-version of the AUTH command (RFC 2554). Examples of such clients
+version of the AUTH command (RFC 4954). Examples of such clients
 are MicroSoft Outlook Express version 4 and MicroSoft Exchange
 version 5.0.
 </p>
@@ -8078,7 +8078,7 @@ a neighboring system.  </dd>
 <dt><b> permit_sasl_authenticated </b></dt>
 
 <dd> Append the domain name in $myorigin or $mydomain when the
-client is successfully authenticated via the RFC 2554 (AUTH)
+client is successfully authenticated via the RFC 4954 (AUTH)
 protocol. </dd>
 
 <dt><b> permit_tls_clientcerts </b></dt>
@@ -9397,7 +9397,7 @@ the SASL plug-in implementation that is selected with
 configuration file or rendezvous point. </p>
 
 <p> This feature is available in Postfix 2.3 and later. In earlier
-releases it was called smtpd_sasl_application. </p>
+releases it was called <b>smtpd_sasl_application_name</b>. </p>
 
 %PARAM cyrus_sasl_config_path
 
index 2638bce0a08d19d977cdaec77e4020ea621726f4..193f17bd4d7320d21522ba5b7ad77f53cb6bd840 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      "20070731"
+#define MAIL_RELEASE_DATE      "20070824"
 #define MAIL_VERSION_NUMBER    "2.5"
 
 #ifdef SNAPSHOT
index 0ab9230d01346ed2336f9ccfd7977e14db64c22d..1e87b7948a9c019d783fb9ece7b6571f0b1ca8ee 100644 (file)
@@ -65,7 +65,7 @@
 /*     \fB\er\en\fR or \fB\en\fR. The usual C-style backslash escape
 /*     sequences are recognized: \fB\ea \eb \ef \en \er \et \ev
 /*     \e\fIddd\fR (up to three octal digits) and \fB\e\e\fR.
-/* .IP "\fBflags=BDFORhqu.>\fR (optional)"
+/* .IP "\fBflags=BDFORXhqu.>\fR (optional)"
 /*     Optional message processing flags. By default, a message is
 /*     copied unchanged.
 /* .RS
 /* .IP \fBR\fR
 /*     Prepend a \fBReturn-Path:\fR message header with the envelope sender
 /*     address.
+/* .IP \fBX\fR
+/*     Indicate that the external command performs final delivery.
+/*     This flag affects the status reported in "success" DSN
+/*     (delivery status notification) messages, and changes it
+/*     from "relayed" into "delivered".
 /* .IP \fBh\fR
 /*     Fold the command-line \fB$recipient\fR address domain part
 /*     (text to the right of the right-most \fB@\fR character) to
 /* .IP
 /*     This feature is available as of Postfix 2.3.
 /* .IP "\fBsize\fR=\fIsize_limit\fR (optional)"
-/*     Messages greater in size than this limit (in bytes) will
-/*     be returned to the sender as undeliverable.
+/*     Don't deliver messages that exceed this size limit (in
+/*     bytes); return them to the sender instead.
 /* .IP "\fBuser\fR=\fIusername\fR (required)"
 /* .IP "\fBuser\fR=\fIusername\fR:\fIgroupname\fR"
 /*     Execute the external command with the rights of the
 /*     This is available in Postfix 2.2 and later.
 /* .IP \fB${\fBsasl_sender\fR}\fR
 /*     This macro expands to the SASL sender name (i.e. the original
-/*     submitter as per RFC 2554) used during the reception of the message.
+/*     submitter as per RFC 4954) used during the reception of the message.
 /* .sp
 /*     This is available in Postfix 2.2 and later.
 /* .IP \fB${\fBsasl_username\fR}\fR
 #define PIPE_OPT_FOLD_BASE     (16)
 #define PIPE_OPT_FOLD_USER     (FOLD_ADDR_USER << PIPE_OPT_FOLD_BASE)
 #define PIPE_OPT_FOLD_HOST     (FOLD_ADDR_HOST << PIPE_OPT_FOLD_BASE)
-#define PIPE_OPT_QUOTE_LOCAL   (PIPE_OPT_FOLD_BASE << 2)
+#define PIPE_OPT_QUOTE_LOCAL   (1 << (PIPE_OPT_FOLD_BASE + 2))
+#define PIPE_OPT_FINAL_DELIVERY        (1 << (PIPE_OPT_FOLD_BASE + 3))
 
 #define PIPE_OPT_FOLD_ALL      (FOLD_ADDR_ALL << PIPE_OPT_FOLD_BASE)
 #define PIPE_OPT_FOLD_FLAGS(f) \
@@ -811,6 +817,9 @@ static void get_service_attr(PIPE_ATTR *attr, char **argv)
                case 'R':
                    attr->flags |= MAIL_COPY_RETURN_PATH;
                    break;
+               case 'X':
+                   attr->flags |= PIPE_OPT_FINAL_DELIVERY;
+                   break;
                case '.':
                    attr->flags |= MAIL_COPY_DOT;
                    break;
@@ -939,7 +948,7 @@ static void get_service_attr(PIPE_ATTR *attr, char **argv)
 /* eval_command_status - do something with command completion status */
 
 static int eval_command_status(int command_status, char *service,
-                                    DELIVER_REQUEST *request, VSTREAM *src,
+                                 DELIVER_REQUEST *request, PIPE_ATTR *attr,
                                       DSN_BUF *why)
 {
     RECIPIENT *rcpt;
@@ -953,7 +962,8 @@ static int eval_command_status(int command_status, char *service,
      */
     switch (command_status) {
     case PIPE_STAT_OK:
-       dsb_update(why, "2.0.0", "relayed", DSB_SKIP_RMTA, DSB_SKIP_REPLY,
+       dsb_update(why, "2.0.0", (attr->flags & PIPE_OPT_FINAL_DELIVERY) ?
+                  "delivered" : "relayed", DSB_SKIP_RMTA, DSB_SKIP_REPLY,
                   "delivered via %s service", service);
        (void) DSN_FROM_DSN_BUF(why);
        for (n = 0; n < request->rcpt_list.len; n++) {
@@ -962,7 +972,7 @@ static int eval_command_status(int command_status, char *service,
                          request->queue_id, &request->msg_stats, rcpt,
                          service, &why->dsn);
            if (status == 0 && (request->flags & DEL_REQ_FLAG_SUCCESS))
-               deliver_completed(src, rcpt->offset);
+               deliver_completed(request->fp, rcpt->offset);
            result |= status;
        }
        break;
@@ -977,7 +987,7 @@ static int eval_command_status(int command_status, char *service,
                                       &request->msg_stats, rcpt,
                                       service, &why->dsn);
                if (status == 0)
-                   deliver_completed(src, rcpt->offset);
+                   deliver_completed(request->fp, rcpt->offset);
                result |= status;
            }
        } else {
@@ -1047,7 +1057,7 @@ static int deliver_message(DELIVER_REQUEST *request, char *service, char **argv)
     if ((attr.flags & MAIL_COPY_DELIVERED) && (rcpt_list->len > 1)) {
        dsb_simple(why, "4.3.5", "mail system configuration error");
        deliver_status = eval_command_status(PIPE_STAT_DEFER, service,
-                                            request, request->fp, why);
+                                            request, &attr, why);
        msg_warn("pipe flag `D' requires %s_destination_recipient_limit = 1",
                 service);
        DELIVER_MSG_CLEANUP();
@@ -1060,7 +1070,7 @@ static int deliver_message(DELIVER_REQUEST *request, char *service, char **argv)
     if ((attr.flags & MAIL_COPY_ORIG_RCPT) && (rcpt_list->len > 1)) {
        dsb_simple(why, "4.3.5", "mail system configuration error");
        deliver_status = eval_command_status(PIPE_STAT_DEFER, service,
-                                            request, request->fp, why);
+                                            request, &attr, why);
        msg_warn("pipe flag `O' requires %s_destination_recipient_limit = 1",
                 service);
        DELIVER_MSG_CLEANUP();
@@ -1076,7 +1086,7 @@ static int deliver_message(DELIVER_REQUEST *request, char *service, char **argv)
                     myname, (long) attr.size_limit, request->data_size);
        dsb_simple(why, "5.2.3", "message too large");
        deliver_status = eval_command_status(PIPE_STAT_BOUNCE, service,
-                                            request, request->fp, why);
+                                            request, &attr, why);
        DELIVER_MSG_CLEANUP();
        return (deliver_status);
     }
@@ -1126,7 +1136,7 @@ static int deliver_message(DELIVER_REQUEST *request, char *service, char **argv)
            dsb_simple(why, "5.4.6", "mail forwarding loop for %s",
                       rcpt->address);
            deliver_status = eval_command_status(PIPE_STAT_BOUNCE, service,
-                                                request, request->fp, why);
+                                                request, &attr, why);
            DELIVER_MSG_CLEANUP();
            return (deliver_status);
        }
@@ -1179,7 +1189,7 @@ static int deliver_message(DELIVER_REQUEST *request, char *service, char **argv)
                                     rcpt_list, attr.flags)) == 0) {
        dsb_simple(why, "4.3.5", "mail system configuration error");
        deliver_status = eval_command_status(PIPE_STAT_DEFER, service,
-                                            request, request->fp, why);
+                                            request, &attr, why);
        DELIVER_MSG_CLEANUP();
        return (deliver_status);
     }
@@ -1202,7 +1212,7 @@ static int deliver_message(DELIVER_REQUEST *request, char *service, char **argv)
     argv_free(export_env);
 
     deliver_status = eval_command_status(command_status, service, request,
-                                        request->fp, why);
+                                        &attr, why);
 
     /*
      * Clean up.
index 53223c18fdb5b7041190da4223594b501c38ccc2..b45d170f1adc292102f14174aef339e575afdff7 100644 (file)
@@ -76,7 +76,7 @@
 /* .fi
 /* .IP "\fBbroken_sasl_auth_clients (no)\fR"
 /*     Enable inter-operability with SMTP clients that implement an obsolete
-/*     version of the AUTH command (RFC 2554).
+/*     version of the AUTH command (RFC 4954).
 /* .IP "\fBdisable_vrfy_command (no)\fR"
 /*     Disable the SMTP VRFY command.
 /* .IP "\fBsmtpd_noop_commands (empty)\fR"
 /* SASL AUTHENTICATION CONTROLS
 /* .ad
 /* .fi
-/*     Postfix SASL support (RFC 2554) can be used to authenticate remote
+/*     Postfix SASL support (RFC 4954) can be used to authenticate remote
 /*     SMTP clients to the Postfix SMTP server, and to authenticate the
 /*     Postfix SMTP client to a remote SMTP server.
 /*     See the SASL_README document for details.
 /* .IP "\fBbroken_sasl_auth_clients (no)\fR"
 /*     Enable inter-operability with SMTP clients that implement an obsolete
-/*     version of the AUTH command (RFC 2554).
+/*     version of the AUTH command (RFC 4954).
 /* .IP "\fBsmtpd_sasl_auth_enable (no)\fR"
 /*     Enable SASL authentication in the Postfix SMTP server.
 /* .IP "\fBsmtpd_sasl_local_domain (empty)\fR"
 /*     What remote SMTP clients the Postfix SMTP server will not offer
 /*     AUTH support to.
 /* .PP
+/*     Available in Postfix version 2.1 and 2.2:
+/* .IP "\fBsmtpd_sasl_application_name (smtpd)\fR"
+/*     The application name that the Postfix SMTP server uses for SASL
+/*     server initialization.
+/* .PP
 /*     Available in Postfix version 2.3 and later:
 /* .IP "\fBsmtpd_sasl_authenticated_header (no)\fR"
 /*     Report the SASL authenticated user name in the \fBsmtpd\fR(8) Received
@@ -1344,14 +1349,21 @@ static int helo_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *argv)
      * persists so it will apply to MAIL FROM and to other commands such as
      * AUTH, STARTTLS, and VRFY.
      */
+#define PUSH_STRING(old, curr, new)    { char *old = (curr); (curr) = (new);
+#define POP_STRING(old, curr)          (curr) = old; }
+
     if (smtpd_milters != 0
        && SMTPD_STAND_ALONE(state) == 0
        && (state->saved_flags & MILTER_SKIP_FLAGS) == 0
-       && (err = milter_helo_event(smtpd_milters, argv[1].strval, 0)) != 0
-       && (err = check_milter_reply(state, err)) != 0
-       && strncmp(err, "421", 3) == 0) {
-       smtpd_chat_reply(state, "%s", err);
-       return (-1);
+      && (err = milter_helo_event(smtpd_milters, argv[1].strval, 0)) != 0) {
+       /* Log reject etc. with correct HELO information. */
+       PUSH_STRING(saved_helo, state->helo_name, argv[1].strval);
+       err = check_milter_reply(state, err);
+       POP_STRING(saved_helo, state->helo_name);
+       if (err != 0 && strncmp(err, "421", 3) == 0) {
+           smtpd_chat_reply(state, "%s", err);
+           return (-1);
+       }
     }
     if (state->helo_name != 0)
        helo_reset(state);
@@ -1411,11 +1423,15 @@ static int ehlo_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *argv)
     if (smtpd_milters != 0
        && SMTPD_STAND_ALONE(state) == 0
        && (state->saved_flags & MILTER_SKIP_FLAGS) == 0
-       && (err = milter_helo_event(smtpd_milters, argv[1].strval, 1)) != 0
-       && (err = check_milter_reply(state, err)) != 0
-       && strncmp(err, "421", 3) == 0) {
-       smtpd_chat_reply(state, "%s", err);
-       return (-1);
+      && (err = milter_helo_event(smtpd_milters, argv[1].strval, 1)) != 0) {
+       /* Log reject etc. with correct HELO information. */
+       PUSH_STRING(saved_helo, state->helo_name, argv[1].strval);
+       err = check_milter_reply(state, err);
+       POP_STRING(saved_helo, state->helo_name);
+       if (err != 0 && strncmp(err, "421", 3) == 0) {
+           smtpd_chat_reply(state, "%s", err);
+           return (-1);
+       }
     }
     if (state->helo_name != 0)
        helo_reset(state);
@@ -2057,11 +2073,15 @@ static int mail_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *argv)
     if (smtpd_milters != 0
        && SMTPD_STAND_ALONE(state) == 0
        && (state->saved_flags & MILTER_SKIP_FLAGS) == 0) {
-       state->sender = STR(state->addr_buf);
        err = milter_mail_event(smtpd_milters,
                                milter_argv(state, argc - 2, argv + 2));
-       state->sender = 0;
-       if (err != 0 && (err = check_milter_reply(state, err)) != 0) {
+       if (err != 0) {
+           /* Log reject etc. with correct sender information. */
+           PUSH_STRING(saved_sender, state->sender, STR(state->addr_buf));
+           err = check_milter_reply(state, err);
+           POP_STRING(saved_sender, state->sender);
+       }
+       if (err != 0) {
            /* XXX Reset access map side effects. */
            mail_reset(state);
            smtpd_chat_reply(state, "%s", err);
@@ -2307,11 +2327,15 @@ static int rcpt_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *argv)
        }
        if (smtpd_milters != 0
            && (state->saved_flags & MILTER_SKIP_FLAGS) == 0) {
-           state->recipient = STR(state->addr_buf);
            err = milter_rcpt_event(smtpd_milters,
                                    milter_argv(state, argc - 2, argv + 2));
-           state->recipient = 0;
-           if (err != 0 && (err = check_milter_reply(state, err)) != 0) {
+           if (err != 0) {
+               /* Log reject etc. with correct recipient information. */
+               PUSH_STRING(saved_rcpt, state->recipient, STR(state->addr_buf));
+               err = check_milter_reply(state, err);
+               POP_STRING(saved_rcpt, state->recipient);
+           }
+           if (err != 0) {
                smtpd_chat_reply(state, "%s", err);
                return (-1);
            }
index e4630193d453dbb2f3947279123fc0c0fe70122f..242c10d963811d2302149a082f9c39da87374f0e 100644 (file)
@@ -810,6 +810,8 @@ static void tlsmgr_pre_init(char *unused_name, char **unused_argv)
      * Open the session cache files and discard old information while
      * privileged. Start the cache maintenance pseudo threads after dropping
      * privileges.
+     * 
+     * XXX Need sanity check that the databases have different names.
      */
     for (ent = cache_table; ent->cache_label; ++ent)
        if (**ent->cache_db)
index 49445bd1fc94de2a338e0ada0f2ec67cadde1e0b..3576d690089a8f10f12c80bbc903df5f89637466 100644 (file)
@@ -24,7 +24,7 @@
   * 4.4BSD and close derivatives.
   */
 #if defined(FREEBSD2) || defined(FREEBSD3) || defined(FREEBSD4) \
-    || defined(FREEBSD5) || defined(FREEBSD6) \
+    || defined(FREEBSD5) || defined(FREEBSD6) || defined(FREEBSD7) \
     || defined(BSDI2) || defined(BSDI3) || defined(BSDI4) \
     || defined(OPENBSD2) || defined(OPENBSD3) || defined(OPENBSD4) \
     || defined(NETBSD1) || defined(NETBSD2) || defined(NETBSD3) \
index b2ebf1785dc9fc9405d9976356e97e8720e3ad4d..361421fbc9795f3365819d6e28ae0bef5f9609c4 100644 (file)
@@ -846,7 +846,8 @@ static int vstream_buf_space(VBUF *bp, ssize_t want)
            if (vstream_fflush_some(stream, VSTREAM_TRUNCATE(used, stream->req_bufsize)))
                return (VSTREAM_EOF);
        if ((shortage = (want - bp->cnt)) > 0) {
-           if (shortage > __MAXINT__(ssize_t) -bp->len - stream->req_bufsize) {
+           if ((bp->flags & VSTREAM_FLAG_FIXED)
+               || shortage > __MAXINT__(ssize_t) -bp->len - stream->req_bufsize) {
                bp->flags |= VSTREAM_FLAG_ERR;
            } else {
                incr = VSTREAM_ROUNDUP(shortage, stream->req_bufsize);
index 145651106246cc6f380ba30159fc88ed450b9a66..d1afac8fda9f772b90bd73d11621bf69bac299d7 100644 (file)
@@ -128,7 +128,7 @@ int     vstream_tweak_tcp(VSTREAM *fp)
      */
 #else
     if (mss > VSTREAM_BUFSIZE) {
-       int     nodelay = 0;
+       int     nodelay = 1;
 
        if ((err = setsockopt(vstream_fileno(fp), IPPROTO_TCP, TCP_NODELAY,
                              (char *) &nodelay, sizeof(nodelay))) < 0)