]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-3.9-20230529
authorWietse Venema <wietse@porcupine.org>
Mon, 29 May 2023 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <ietf-dane@dukhovni.org>
Tue, 30 May 2023 01:16:38 +0000 (21:16 -0400)
22 files changed:
postfix/HISTORY
postfix/README_FILES/ADDRESS_CLASS_README
postfix/html/ADDRESS_CLASS_README.html
postfix/html/lmtp.8.html
postfix/html/postconf.5.html
postfix/html/smtp.8.html
postfix/html/smtpd.8.html
postfix/html/tlsproxy.8.html
postfix/man/man5/postconf.5
postfix/man/man8/smtp.8
postfix/man/man8/smtpd.8
postfix/man/man8/tlsproxy.8
postfix/proto/ADDRESS_CLASS_README.html
postfix/proto/postconf.proto
postfix/proto/stop.double-history
postfix/proto/stop.double-proto-html
postfix/proto/stop.spell-history
postfix/src/global/mail_version.h
postfix/src/smtp/smtp.c
postfix/src/smtpd/smtpd.c
postfix/src/tls/tls_misc.c
postfix/src/tlsproxy/tlsproxy.c

index f3ac16eaa083e377a2ac790a9f2e89cb50040d2c..d5e025621004ec0e850891c51762eede88ba4b6a 100644 (file)
@@ -27210,7 +27210,7 @@ Apologies for any names omitted.
 
 20230523
 
-       Cleanup: use TLS_CLIENT_PARAMS to pass the OpensSSL 'init'
+       Cleanup: use TLS_CLIENT_PARAMS to pass the OpenSSL 'init'
        configuration settings. These are global, i.e. apply to all
        client TLS contexts, and they do not belong in tls_client_init()
        or tls_client_start() calls. The tlsproxy(8) server uses
@@ -27229,3 +27229,20 @@ Apologies for any names omitted.
        and tls_config_name configuration parameters. Files:
        smtp/smtp.c, smtpd/smtpd.c, tls/tls_client.c, tls/tls.h,
        tls/tls_server.c, tlsproxy/tlsproxy.c,
+
+20230526
+
+       Documentation: clarified address class descriptions; added
+       the availability of back-ported OpenSSL INI file support
+       in stable releases. Files: proto/ADDRESS_CLASS_README.html,
+       proto/postconf.proto smtp/smtp.c, smtpd/smtpd.c,
+       tlsproxy/tlsproxy.c.
+
+       Security: in the Postfix SMTP daemon, improved pipelining
+       detection and reporting; and detect illegal command pipelining
+       before the server greeting. File: smtpd/smtpd.c.
+
+20230529
+
+       Cleanup: error handling for OpenSSL INI file support. Viktor
+       Dukhovni. Files: proto/postconf.proto, tls/tls_misc.c.
index 7605aa281809be11e2d98f15f81179440fc9aa3b..774976e73848e38b301b0c0fe16bf5c1ce9557de 100644 (file)
@@ -25,18 +25,23 @@ important for the operation of Postfix.
 
 An address class is defined by three items.
 
-  * The list of domains that are a member of that address class: for example,
-    all local domains, or all relay domains.
+  * The list of domains that are a member of that address class.
 
-  * The default delivery transport for that address class. For example, the
-    local, virtual or relay delivery transport (delivery transports are defined
-    in master.cf). This helps to keep Postfix configurations simple, by
-    avoiding the need for explicit routing information in transport maps.
+    Examples: all local domains, or all relay domains.
 
-  * The list of valid recipient addresses for that address class. The Postfix
-    SMTP server rejects invalid recipients with "User unknown in <name of
-    address class here> table". This helps to keep the Postfix queue free of
-    undeliverable MAILER-DAEMON messages.
+  * The default delivery transport for domains in that address class.
+
+    Examples: local_transport or relay_transport (these point to services
+    defined in master.cf).
+
+    Benefit: this avoids the need for explicit routing information in transport
+    maps.
+
+  * The list of valid recipient addresses for that address class.
+
+    Benefit: the Postfix SMTP server rejects an invalid recipient with "User
+    unknown in <name of address class> table", and avoids sending a MAILER-
+    DAEMON message with backscatter spam.
 
 W\bWh\bha\bat\bt a\bad\bdd\bdr\bre\bes\bss\bs c\bcl\bla\bas\bss\bse\bes\bs d\bdo\boe\bes\bs P\bPo\bos\bst\btf\bfi\bix\bx i\bim\bmp\bpl\ble\bem\bme\ben\bnt\bt?\b?
 
@@ -56,11 +61,11 @@ The local domain class.
     also includes mail for user@[ipaddress] when the IP address is listed with
     the inet_interfaces or proxy_interfaces parameters.
 
-  * Valid recipient addresses are listed with the local_recipient_maps
-    parameter, as described in LOCAL_RECIPIENT_README. The Postfix SMTP server
-    rejects invalid recipients with "User unknown in local recipient table". If
-    the local_recipient_maps parameter value is empty, then the Postfix SMTP
-    server accepts any address in the local domain class.
+  * Valid recipient addresses for those domains are listed with the
+    local_recipient_maps parameter, as described in LOCAL_RECIPIENT_README. The
+    Postfix SMTP server rejects invalid recipients with "User unknown in local
+    recipient table". If the local_recipient_maps parameter value is empty,
+    then the Postfix SMTP server accepts any address in the local domain class.
 
   * The mail delivery transport is specified with the local_transport
     parameter. The default value is l\blo\boc\bca\bal\bl:\b:$\b$m\bmy\byh\bho\bos\bst\btn\bna\bam\bme\be for delivery with the
@@ -69,20 +74,23 @@ The local domain class.
 The virtual alias domain class.
 
   * Purpose: hosted domains where each recipient address is aliased to an
-    address in a different domain, for example, a local UNIX system account or
-    a remote address. A virtual alias example is given in the VIRTUAL_README
-    file.
+    address in a different domain class, for example, a local UNIX system
+    account or a remote address. A virtual alias example is given in the
+    VIRTUAL_README file.
 
   * Domain names are listed in virtual_alias_domains. The default value is
     $virtual_alias_maps for Postfix 1.1 compatibility.
 
-  * Valid recipient addresses are listed with the virtual_alias_maps parameter.
-    The Postfix SMTP server rejects invalid recipients with "User unknown in
-    virtual alias table". The default value is $virtual_maps for Postfix 1.1
-    compatibility.
+  * Valid recipient addresses for those domains are listed with the
+    virtual_alias_maps parameter. The Postfix SMTP server rejects invalid
+    recipients with "User unknown in virtual alias table". The default value is
+    $virtual_maps for Postfix 1.1 compatibility.
+
+        Note: for historical reasons, virtual_alias_maps apply to recipients in
+        all domain classes, not only the virtual alias domain class.
 
-  * There is no mail delivery transport parameter. Every address must be
-    aliased to an address in some other domain.
+  * There is no configurable mail delivery transport. Every address must be
+    aliased to an address in some other domain class.
 
 The virtual mailbox domain class.
 
@@ -93,11 +101,11 @@ The virtual mailbox domain class.
   * Domain names are listed with the virtual_mailbox_domains parameter. The
     default value is $virtual_mailbox_maps for Postfix 1.1 compatibility.
 
-  * Valid recipient addresses are listed with the virtual_mailbox_maps
-    parameter. The Postfix SMTP server rejects invalid recipients with "User
-    unknown in virtual mailbox table". If this parameter value is empty, the
-    Postfix SMTP server accepts all recipients for domains listed in
-    $virtual_mailbox_domains.
+  * Valid recipient addresses for those domains are listed with the
+    virtual_mailbox_maps parameter. The Postfix SMTP server rejects invalid
+    recipients with "User unknown in virtual mailbox table". If this parameter
+    value is empty, the Postfix SMTP server accepts all recipients for domains
+    listed in $virtual_mailbox_domains.
 
   * The mail delivery transport is specified with the virtual_transport
     parameter. The default value is v\bvi\bir\brt\btu\bua\bal\bl for delivery with the virtual(8)
@@ -113,11 +121,11 @@ The relay domain class.
 
   * Domain names are listed with the relay_domains parameter.
 
-  * Valid recipient addresses are listed with the relay_recipient_maps
-    parameter. The Postfix SMTP server rejects invalid recipients with "User
-    unknown in relay recipient table". If this parameter value is empty, the
-    Postfix SMTP server accepts all recipients for domains listed with the
-    relay_domains parameter.
+  * Valid recipient addresses for those domains are listed with the
+    relay_recipient_maps parameter. The Postfix SMTP server rejects invalid
+    recipients with "User unknown in relay recipient table". If this parameter
+    value is empty, the Postfix SMTP server accepts all recipients for domains
+    listed with the relay_domains parameter.
 
   * The mail delivery transport is specified with the relay_transport
     parameter. The default value is r\bre\bel\bla\bay\by which is a clone of the smtp(8)
index ec46627cfb98d63aea3f704d3ee363b32fe28bcc..179d13dd8fc42983c08079a64667ff9fb5572eb7 100644 (file)
@@ -52,20 +52,25 @@ address classes are very important for the operation of Postfix. </p>
 <ul>
 
 <li> <p> The list of domains that are a member of that address
-class: for example, all <a href="ADDRESS_CLASS_README.html#local_domain_class">local domains</a>, or all <a href="ADDRESS_CLASS_README.html#relay_domain_class">relay domains</a>. </p>
+class. </p>
+
+<p> Examples: all <a href="ADDRESS_CLASS_README.html#local_domain_class">local domains</a>, or all <a href="ADDRESS_CLASS_README.html#relay_domain_class">relay domains</a>. </p>
+
+<li> <p> The default delivery transport for domains in that address
+class. </p>
+
+<p> Examples: <a href="postconf.5.html#local_transport">local_transport</a> or <a href="postconf.5.html#relay_transport">relay_transport</a> (these point
+to services defined in <a href="master.5.html">master.cf</a>). </p>
 
-<li> <p> The default delivery transport for that address class. For
-example, the local,
-virtual or relay delivery transport (delivery transports are defined
-in <a href="master.5.html">master.cf</a>). This helps to keep Postfix configurations simple,
-by avoiding the need for explicit routing information in transport
-maps. </p>
+<p> Benefit: this avoids the need for explicit routing information
+in transport maps. </p>
 
 <li> <p> The list of valid recipient addresses for that address
-class. The Postfix SMTP server rejects invalid recipients with
-"User unknown in &lt;name of address class here&gt; table".  This
-helps to keep the Postfix queue free of undeliverable MAILER-DAEMON
-messages. </p>
+class. </p>
+
+<p> Benefit: the Postfix SMTP server rejects an invalid recipient
+with "User unknown in &lt;name of address class&gt; table", and
+avoids sending a MAILER-DAEMON message with backscatter spam. </p>
 
 </ul>
 
@@ -92,12 +97,12 @@ This domain class also includes mail for <i>user@[ipaddress]</i>
 when the IP address is listed with the <a href="postconf.5.html#inet_interfaces">inet_interfaces</a> or
 <a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a> parameters. </p>
 
-<li> <p> Valid recipient addresses are listed with the <a href="postconf.5.html#local_recipient_maps">local_recipient_maps</a>
-parameter, as described in <a href="LOCAL_RECIPIENT_README.html">LOCAL_RECIPIENT_README</a>. The Postfix SMTP
-server rejects invalid recipients with "User unknown in local
-recipient table". If the <a href="postconf.5.html#local_recipient_maps">local_recipient_maps</a> parameter value is
-empty, then the Postfix SMTP server accepts any address in the
-<a href="ADDRESS_CLASS_README.html#local_domain_class">local domain</a> class. </p>
+<li> <p> Valid recipient addresses for those domains are
+listed with the <a href="postconf.5.html#local_recipient_maps">local_recipient_maps</a> parameter, as described in
+<a href="LOCAL_RECIPIENT_README.html">LOCAL_RECIPIENT_README</a>. The Postfix SMTP server rejects invalid recipients
+with "User unknown in local recipient table". If the <a href="postconf.5.html#local_recipient_maps">local_recipient_maps</a>
+parameter value is empty, then the Postfix SMTP server accepts any
+address in the <a href="ADDRESS_CLASS_README.html#local_domain_class">local domain</a> class. </p>
 
 <li> <p> The mail delivery transport is specified with the
 <a href="postconf.5.html#local_transport">local_transport</a> parameter. The default value is <b><a href="local.8.html">local</a>:$<a href="postconf.5.html#myhostname">myhostname</a></b>
@@ -111,21 +116,25 @@ class. </p>
 <ul>
 
 <li> <p> Purpose: <a href="VIRTUAL_README.html#canonical">hosted domains</a> where each recipient address is
-aliased to an address in a different domain, for example, a local
-UNIX system account or a remote address.  A
+aliased to an address in a different domain class, for example, a
+local UNIX system account or a remote address. A
 <a href="VIRTUAL_README.html#virtual_alias">virtual alias example</a> is given in the <a href="VIRTUAL_README.html">VIRTUAL_README</a> file. </p>
 
 <li> <p> Domain names are listed in <a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a>. The
 default value is $<a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a> for Postfix 1.1 compatibility.
 </p>
 
-<li> <p> Valid recipient addresses are listed with the <a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a>
-parameter. The Postfix SMTP server rejects invalid recipients with
-"User unknown in virtual alias table".  The default value is
-$<a href="postconf.5.html#virtual_maps">virtual_maps</a> for Postfix 1.1 compatibility. </p>
+<li> <p> Valid recipient addresses for those domains are listed with the
+<a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a> parameter. The Postfix SMTP server rejects invalid
+recipients with "User unknown in virtual alias table". The default
+value is $<a href="postconf.5.html#virtual_maps">virtual_maps</a> for Postfix 1.1 compatibility. </p>
 
-<li> <p> There is no mail delivery transport parameter. Every
-address must be aliased to an address in some other domain. </p>
+<blockquote ><p> Note: for historical reasons, <a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a>
+apply to recipients in all domain classes, not only the virtual
+alias domain class. </p> </blockquote>
+
+<li> <p> There is no configurable mail delivery transport. Every
+address must be aliased to an address in some other domain class. </p>
 
 </ul>
 
@@ -136,18 +145,19 @@ class. </p>
 
 <li> <p> Purpose: final delivery for <a href="VIRTUAL_README.html#canonical">hosted domains</a> where each
 recipient address can have its own mailbox, and where users do not
-need to have a UNIX system account.  A <a href="VIRTUAL_README.html#virtual_mailbox">virtual mailbox example</a> is
+need to have a UNIX system account. A <a href="VIRTUAL_README.html#virtual_mailbox">virtual mailbox example</a> is
 given in the <a href="VIRTUAL_README.html">VIRTUAL_README</a> file. </p>
 
 <li> <p> Domain names are listed with the <a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a>
 parameter. The default value is $<a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a> for Postfix
 1.1 compatibility. </p>
 
-<li> <p> Valid recipient addresses are listed with the <a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a>
-parameter. The Postfix SMTP server rejects invalid recipients with
-"User unknown in virtual mailbox table". If this parameter value
-is empty, the Postfix SMTP server accepts all recipients for domains
-listed in $<a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a>.  </p>
+<li> <p> Valid recipient addresses for those domains are listed
+with the <a href="postconf.5.html#virtual_mailbox_maps">virtual_mailbox_maps</a> parameter. The Postfix SMTP server
+rejects invalid recipients with "User unknown in virtual mailbox
+table". If this parameter value is empty, the Postfix SMTP server
+accepts all recipients for domains listed in $<a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a>.
+</p>
 
 <li> <p> The mail delivery transport is specified with the
 <a href="postconf.5.html#virtual_transport">virtual_transport</a> parameter. The default value is <b>virtual</b>
@@ -169,11 +179,12 @@ file. </p>
 <li> <p> Domain names are listed with the <a href="postconf.5.html#relay_domains">relay_domains</a> parameter.
 </p>
 
-<li> <p> Valid recipient addresses are listed with the <a href="postconf.5.html#relay_recipient_maps">relay_recipient_maps</a>
-parameter. The Postfix SMTP server rejects invalid recipients with
-"User unknown in relay recipient table". If this parameter value
-is empty, the Postfix SMTP server accepts all recipients for domains
-listed with the <a href="postconf.5.html#relay_domains">relay_domains</a> parameter. </p>
+<li> <p> Valid recipient addresses for those domains are listed
+with the <a href="postconf.5.html#relay_recipient_maps">relay_recipient_maps</a> parameter. The Postfix SMTP server
+rejects invalid recipients with "User unknown in relay recipient
+table". If this parameter value is empty, the Postfix SMTP server
+accepts all recipients for domains listed with the <a href="postconf.5.html#relay_domains">relay_domains</a>
+parameter. </p>
 
 <li> <p> The mail delivery transport is specified with the
 <a href="postconf.5.html#relay_transport">relay_transport</a> parameter. The default value is <b>relay</b> which
index c6e5cc0af00c3d1f4196b8618d016f64783d716c..c3f7074849fb69ce43bc5211746707fa700b8c02 100644 (file)
@@ -715,7 +715,7 @@ SMTP(8)                                                                SMTP(8)
               (FFDHE) key exchange groups supported by the Postfix SMTP client
               and server.
 
-       Available in Postfix version 3.9 and later:
+       Available in Postfix 3.9, 3.8.1, 3.7.6, 3.6.10, 3.5.20 and later:
 
        <b><a href="postconf.5.html#tls_config_file">tls_config_file</a> (default)</b>
               Optional configuration file with baseline OpenSSL settings.
index f4e8be08bd20039f85662669d38a52f7cf7a2446..f97971d3130c3671487417b8651bf4ed74e72dc8 100644 (file)
@@ -19297,11 +19297,10 @@ the default "openssl_conf" name. </dd>
 
 </dl>
 
-<p> Failures in processing of the built-in default configuration
-file, are silently ignored with OpenSSL prior to 1.1.1b.  With later
-OpenSSL releases, any errors in loading either the default or custom
-configuration file are detected by Postfix, and cause TLS support to
-be disabled.  </p>
+<p> Failures in processing of the built-in default configuration file,
+are silently ignored.  Any errors in loading a non-default configuration
+file are detected by Postfix, and cause TLS support to be disabled.
+</p>
 
 <p> The OpenSSL configuration file format is not documented here,
 beyond giving two examples. <p>
@@ -19349,7 +19348,8 @@ MinProtocol = TLSv1
 </pre>
 </blockquote>
 
-<p> This feature is available in Postfix &ge; 3.9. </p>
+<p> This feature is available in Postfix &ge; 3.9, 3.8.1, 3.7.6,
+3.6.10, and 3.5.20. </p>
 
 
 </DD>
index c6e5cc0af00c3d1f4196b8618d016f64783d716c..c3f7074849fb69ce43bc5211746707fa700b8c02 100644 (file)
@@ -715,7 +715,7 @@ SMTP(8)                                                                SMTP(8)
               (FFDHE) key exchange groups supported by the Postfix SMTP client
               and server.
 
-       Available in Postfix version 3.9 and later:
+       Available in Postfix 3.9, 3.8.1, 3.7.6, 3.6.10, 3.5.20 and later:
 
        <b><a href="postconf.5.html#tls_config_file">tls_config_file</a> (default)</b>
               Optional configuration file with baseline OpenSSL settings.
index 02df5a2b1e1586f0e413ddd2271d20d41e8c3849..c8255eba692f1ba315dd2b654443ead3747ddf30 100644 (file)
@@ -639,7 +639,7 @@ SMTPD(8)                                                              SMTPD(8)
               (FFDHE) key exchange groups supported by the Postfix SMTP client
               and server.
 
-       Available in Postfix version 3.9 and later:
+       Available in Postfix 3.9, 3.8.1, 3.7.6, 3.6.10, 3.5.20 and later:
 
        <b><a href="postconf.5.html#tls_config_file">tls_config_file</a> (default)</b>
               Optional configuration file with baseline OpenSSL settings.
index d8a949d7c746493a801c4b994896871f34cdfe68..c5e4a7b5ecd0dc434d37d0c951d3dcc2a5706cee 100644 (file)
@@ -160,7 +160,7 @@ TLSPROXY(8)                                                        TLSPROXY(8)
               (FFDHE) key exchange groups supported by the Postfix SMTP client
               and server.
 
-       Available in Postfix version 3.9 and later:
+       Available in Postfix 3.9, 3.8.1, 3.7.6, 3.6.10, 3.5.20 and later:
 
        <b><a href="postconf.5.html#tls_config_file">tls_config_file</a> (default)</b>
               Optional configuration file with baseline OpenSSL settings.
index 9ecb0a2f0abd87e99151a1dde494f14f656b22b2..4dd9d5fcaf5b0e5d869ea4c1d64f235d0f845ec2 100644 (file)
@@ -13668,11 +13668,9 @@ the default "openssl_conf" name.
 .br
 .br
 .PP
-Failures in processing of the built\-in default configuration
-file, are silently ignored with OpenSSL prior to 1.1.1b.  With later
-OpenSSL releases, any errors in loading either the default or custom
-configuration file are detected by Postfix, and cause TLS support to
-be disabled.
+Failures in processing of the built\-in default configuration file,
+are silently ignored.  Any errors in loading a non\-default configuration
+file are detected by Postfix, and cause TLS support to be disabled.
 .PP
 The OpenSSL configuration file format is not documented here,
 beyond giving two examples.
@@ -13728,7 +13726,8 @@ MinProtocol = TLSv1
 .ft R
 .in -4
 .PP
-This feature is available in Postfix >= 3.9.
+This feature is available in Postfix >= 3.9, 3.8.1, 3.7.6,
+3.6.10, and 3.5.20.
 .SH tls_config_name (default: empty)
 The application name passed by Postfix to OpenSSL library
 initialization functions.  This name is used to select the desired
index 9294dd30fe02f99db0d9a91f58c56cd3e2c79fb3..a4509d8e372e0434ac34b3dd3f8049392c88198b 100644 (file)
@@ -641,7 +641,7 @@ The prioritized list of finite\-field Diffie\-Hellman ephemeral
 (FFDHE) key exchange groups supported by the Postfix SMTP client and
 server.
 .PP
-Available in Postfix version 3.9 and later:
+Available in Postfix 3.9, 3.8.1, 3.7.6, 3.6.10, 3.5.20 and later:
 .IP "\fBtls_config_file (default)\fR"
 Optional configuration file with baseline OpenSSL settings.
 .IP "\fBtls_config_name (empty)\fR"
index 0e92c98ce0f0666e01f4cced9a897d5ed3291ba6..db472281da82210b806286f0309e29f46769e4a4 100644 (file)
@@ -565,7 +565,7 @@ The prioritized list of finite\-field Diffie\-Hellman ephemeral
 (FFDHE) key exchange groups supported by the Postfix SMTP client and
 server.
 .PP
-Available in Postfix version 3.9 and later:
+Available in Postfix 3.9, 3.8.1, 3.7.6, 3.6.10, 3.5.20 and later:
 .IP "\fBtls_config_file (default)\fR"
 Optional configuration file with baseline OpenSSL settings.
 .IP "\fBtls_config_name (empty)\fR"
index ce0117d48dc5bc772ee322bca2b30037657a3853..6913b7bbfdfbe9fce6d920d0f7286b4612d05e36 100644 (file)
@@ -159,7 +159,7 @@ The prioritized list of finite\-field Diffie\-Hellman ephemeral
 (FFDHE) key exchange groups supported by the Postfix SMTP client and
 server.
 .PP
-Available in Postfix version 3.9 and later:
+Available in Postfix 3.9, 3.8.1, 3.7.6, 3.6.10, 3.5.20 and later:
 .IP "\fBtls_config_file (default)\fR"
 Optional configuration file with baseline OpenSSL settings.
 .IP "\fBtls_config_name (empty)\fR"
index 7a30535d3d046c05300036bd85f714c2b7c656c0..5deac112798033ad1984e0e18d5d13647eee64c7 100644 (file)
@@ -52,20 +52,25 @@ address classes are very important for the operation of Postfix. </p>
 <ul>
 
 <li> <p> The list of domains that are a member of that address
-class: for example, all local domains, or all relay domains. </p>
+class. </p>
+
+<p> Examples: all local domains, or all relay domains. </p>
+
+<li> <p> The default delivery transport for domains in that address
+class. </p>
+
+<p> Examples: local_transport or relay_transport (these point
+to services defined in master.cf). </p>
 
-<li> <p> The default delivery transport for that address class. For
-example, the local,
-virtual or relay delivery transport (delivery transports are defined
-in master.cf). This helps to keep Postfix configurations simple,
-by avoiding the need for explicit routing information in transport
-maps. </p>
+<p> Benefit: this avoids the need for explicit routing information
+in transport maps. </p>
 
 <li> <p> The list of valid recipient addresses for that address
-class. The Postfix SMTP server rejects invalid recipients with
-"User unknown in &lt;name of address class here&gt; table".  This
-helps to keep the Postfix queue free of undeliverable MAILER-DAEMON
-messages. </p>
+class. </p>
+
+<p> Benefit: the Postfix SMTP server rejects an invalid recipient
+with "User unknown in &lt;name of address class&gt; table", and
+avoids sending a MAILER-DAEMON message with backscatter spam. </p>
 
 </ul>
 
@@ -92,12 +97,12 @@ This domain class also includes mail for <i>user@[ipaddress]</i>
 when the IP address is listed with the inet_interfaces or
 proxy_interfaces parameters. </p>
 
-<li> <p> Valid recipient addresses are listed with the local_recipient_maps
-parameter, as described in LOCAL_RECIPIENT_README. The Postfix SMTP
-server rejects invalid recipients with "User unknown in local
-recipient table". If the local_recipient_maps parameter value is
-empty, then the Postfix SMTP server accepts any address in the
-local domain class. </p>
+<li> <p> Valid recipient addresses for those domains are
+listed with the local_recipient_maps parameter, as described in
+LOCAL_RECIPIENT_README. The Postfix SMTP server rejects invalid recipients
+with "User unknown in local recipient table". If the local_recipient_maps
+parameter value is empty, then the Postfix SMTP server accepts any
+address in the local domain class. </p>
 
 <li> <p> The mail delivery transport is specified with the
 local_transport parameter. The default value is <b>local:$myhostname</b>
@@ -111,21 +116,25 @@ class. </p>
 <ul>
 
 <li> <p> Purpose: hosted domains where each recipient address is
-aliased to an address in a different domain, for example, a local
-UNIX system account or a remote address.  A
+aliased to an address in a different domain class, for example, a
+local UNIX system account or a remote address. A
 virtual alias example is given in the VIRTUAL_README file. </p>
 
 <li> <p> Domain names are listed in virtual_alias_domains. The
 default value is $virtual_alias_maps for Postfix 1.1 compatibility.
 </p>
 
-<li> <p> Valid recipient addresses are listed with the virtual_alias_maps
-parameter. The Postfix SMTP server rejects invalid recipients with
-"User unknown in virtual alias table".  The default value is
-$virtual_maps for Postfix 1.1 compatibility. </p>
+<li> <p> Valid recipient addresses for those domains are listed with the
+virtual_alias_maps parameter. The Postfix SMTP server rejects invalid
+recipients with "User unknown in virtual alias table". The default
+value is $virtual_maps for Postfix 1.1 compatibility. </p>
 
-<li> <p> There is no mail delivery transport parameter. Every
-address must be aliased to an address in some other domain. </p>
+<blockquote ><p> Note: for historical reasons, virtual_alias_maps
+apply to recipients in all domain classes, not only the virtual
+alias domain class. </p> </blockquote>
+
+<li> <p> There is no configurable mail delivery transport. Every
+address must be aliased to an address in some other domain class. </p>
 
 </ul>
 
@@ -136,18 +145,19 @@ class. </p>
 
 <li> <p> Purpose: final delivery for hosted domains where each
 recipient address can have its own mailbox, and where users do not
-need to have a UNIX system account.  A virtual mailbox example is
+need to have a UNIX system account. A virtual mailbox example is
 given in the VIRTUAL_README file. </p>
 
 <li> <p> Domain names are listed with the virtual_mailbox_domains
 parameter. The default value is $virtual_mailbox_maps for Postfix
 1.1 compatibility. </p>
 
-<li> <p> Valid recipient addresses are listed with the virtual_mailbox_maps
-parameter. The Postfix SMTP server rejects invalid recipients with
-"User unknown in virtual mailbox table". If this parameter value
-is empty, the Postfix SMTP server accepts all recipients for domains
-listed in $virtual_mailbox_domains.  </p>
+<li> <p> Valid recipient addresses for those domains are listed
+with the virtual_mailbox_maps parameter. The Postfix SMTP server
+rejects invalid recipients with "User unknown in virtual mailbox
+table". If this parameter value is empty, the Postfix SMTP server
+accepts all recipients for domains listed in $virtual_mailbox_domains.
+</p>
 
 <li> <p> The mail delivery transport is specified with the
 virtual_transport parameter. The default value is <b>virtual</b>
@@ -169,11 +179,12 @@ file. </p>
 <li> <p> Domain names are listed with the relay_domains parameter.
 </p>
 
-<li> <p> Valid recipient addresses are listed with the relay_recipient_maps
-parameter. The Postfix SMTP server rejects invalid recipients with
-"User unknown in relay recipient table". If this parameter value
-is empty, the Postfix SMTP server accepts all recipients for domains
-listed with the relay_domains parameter. </p>
+<li> <p> Valid recipient addresses for those domains are listed
+with the relay_recipient_maps parameter. The Postfix SMTP server
+rejects invalid recipients with "User unknown in relay recipient
+table". If this parameter value is empty, the Postfix SMTP server
+accepts all recipients for domains listed with the relay_domains
+parameter. </p>
 
 <li> <p> The mail delivery transport is specified with the
 relay_transport parameter. The default value is <b>relay</b> which
index f891649991db46f977c410ac22d3d997c9cfc0bd..8f552407538bc29c8461af8eb1e898c4e7d8f658 100644 (file)
@@ -18793,11 +18793,10 @@ the default "openssl_conf" name. </dd>
 
 </dl>
 
-<p> Failures in processing of the built-in default configuration
-file, are silently ignored with OpenSSL prior to 1.1.1b.  With later
-OpenSSL releases, any errors in loading either the default or custom
-configuration file are detected by Postfix, and cause TLS support to
-be disabled.  </p>
+<p> Failures in processing of the built-in default configuration file,
+are silently ignored.  Any errors in loading a non-default configuration
+file are detected by Postfix, and cause TLS support to be disabled.
+</p>
 
 <p> The OpenSSL configuration file format is not documented here,
 beyond giving two examples. <p>
@@ -18845,4 +18844,5 @@ MinProtocol = TLSv1
 </pre>
 </blockquote>
 
-<p> This feature is available in Postfix &ge; 3.9. </p>
+<p> This feature is available in Postfix &ge; 3.9, 3.8.1, 3.7.6,
+3.6.10, and 3.5.20. </p>
index 1826107aa831fdbc273b4061e1dfec015f078cf2..ad2827ab03c0367a6b3909a94633b66691acc834 100644 (file)
@@ -12,7 +12,6 @@
  Fix by Viktor Dukhovni Files tls tls h tls tls_dane c 
  Discovered by Benny Pedersen File postscreen postscreen c 
  proto postconf proto src tlsproxy tlsproxy c src smtpd smtpd c 
- proto postconf proto src tlsproxy tlsproxy c src smtpd smtpd c 
  src tls tls h src tls tls_proxy_client_misc c src tls tls_misc c 
  src global mail_params h src smtp smtp c 
  attacks Fix by Viktor Dukhovni Files tls tls h tls_client c 
  arguments Files src dns dns h src dns dns_rr_eq_sa c 
  only a subset of all arguments Files src dns dns h 
  global mail_params h smtp smtp c smtpd smtpd c tls tls_misc c 
- global mail_params h smtp smtp c smtpd smtpd c tls tls_misc c 
  tls tls_proxy_client_scan c tls tls_proxy h tlsproxy tlsproxy c 
  smtp smtp c smtpd smtpd c tls tls_misc c 
- smtp smtp c smtpd smtpd c tls tls_misc c 
 proto  proto SASL_README html proto SQLITE_README html 
  proto postconf proto global mail_params h smtp smtp c 
  smtpd smtpd c tls tls_misc c tls tls_proxy_client_misc c 
  tls tls_proxy h tlsproxy tlsproxy c 
  postfix postfix c postlog postlog c 
- postfix postfix c postlog postlog c 
  util net_mask_top hc smtpd smtpd c smtpd smtpd_peer c 
  util inet_prefix_top hc smtpd smtpd c smtpd smtpd_peer c 
  File smtp smtp h 
@@ -43,8 +39,6 @@ proto  proto SASL_README html proto SQLITE_README html
 proto  proto ADDRESS_REWRITING_README html 
  proto postconf proto proto ADDRESS_REWRITING_README html 
  cleanup cleanup c local local c smtpd smtpd c 
- cleanup cleanup c local local c smtpd smtpd c 
- cleanup cleanup c local local c smtpd smtpd c 
  postfix postfix c 
  aliasing Files proto aliases proto virtual postfix postfix c 
 proto  proto aliases proto virtual proto ADDRESS_REWRITING_README html 
@@ -53,3 +47,13 @@ proto  proto aliases proto virtual proto ADDRESS_REWRITING_README html
  posttls finger posttls finger c smtp smtp c smtp smtp_proto c 
  tls tls_client c tls tls h tls tls_misc c 
  tls tls_proxy h tls tls_server c tlsproxy tlsproxy c 
+ Cleanup removed some the the instances Files 
+ clients Files posttls finger posttls finger c smtp smtp c 
+ smtp smtp c smtp smtp_proto c tls tls_client c tls tls h 
+ smtp smtp c smtpd smtpd c tls tls_client c tls tls h 
+ smtp smtp_proto c tls tls h tls tls_proxy_client_misc c 
+ tls tls_server c tlsproxy tlsproxy c 
+ tlsproxy tlsproxy c 
+ proto postconf proto smtp smtp c smtpd smtpd c 
+ pipelining before the server greeting File smtpd smtpd c 
+ before the server greeting File smtpd smtpd c 
index 5f50df09675b5f2044ee778fa9a14ac8794221cd..3d69cd0a63da6bce59a139310503da913628c410 100644 (file)
@@ -250,3 +250,5 @@ initial_ssl_settings  initial_ssl_settings
 postfix_settings  postfix_settings 
 postfix_ssl_settings  postfix_ssl_settings 
 baseline_postfix_settings  baseline_postfix_settings 
+ The and match and literally Without the the
+ The matches literally Without the the would
index ccaef1f1fb5cf498f0bff527681642bbd67ab690..09192073fba6ab68814344c0217acb735e6d77fb 100644 (file)
@@ -58,3 +58,4 @@ Piekert
 refactored
 Fumiyasu
 SATOH
+INI
index aa76baa2d8b1c3da39120ccbaf789bd256472c56..e47b9da01d007c24ee44ffe6eee82d14410c1361 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      "20230524"
+#define MAIL_RELEASE_DATE      "20230529"
 #define MAIL_VERSION_NUMBER    "3.9"
 
 #ifdef SNAPSHOT
index 1581771dc73eb03e32adf34ddb33d979d1be8432..ba014919e56ee2dd0263096644b39b7cbf1ef6fd 100644 (file)
 /*     (FFDHE) key exchange groups supported by the Postfix SMTP client and
 /*     server.
 /* .PP
-/*     Available in Postfix version 3.9 and later:
+/*     Available in Postfix 3.9, 3.8.1, 3.7.6, 3.6.10, 3.5.20 and later:
 /* .IP "\fBtls_config_file (default)\fR"
 /*     Optional configuration file with baseline OpenSSL settings.
 /* .IP "\fBtls_config_name (empty)\fR"
index dbf3ce986d235e7c5fe6f5b62c22d60178211d68..f6f91c6d0838c09c2efc4ae47f707a554b70aabb 100644 (file)
 /*     (FFDHE) key exchange groups supported by the Postfix SMTP client and
 /*     server.
 /* .PP
-/*     Available in Postfix version 3.9 and later:
+/*     Available in Postfix 3.9, 3.8.1, 3.7.6, 3.6.10, 3.5.20 and later:
 /* .IP "\fBtls_config_file (default)\fR"
 /*     Optional configuration file with baseline OpenSSL settings.
 /* .IP "\fBtls_config_name (empty)\fR"
@@ -5448,6 +5448,32 @@ static SMTPD_CMD smtpd_cmd_table[] = {
 static STRING_LIST *smtpd_noop_cmds;
 static STRING_LIST *smtpd_forbid_cmds;
 
+/* smtpd_flag_ill_pipelining - flag pipelining protocol violation */
+
+static int smtpd_flag_ill_pipelining(SMTPD_STATE *state)
+{
+
+    /*
+     * This code will not return after I/O error, timeout, or EOF. VSTREAM
+     * exceptions must be enabled in advance with smtp_stream_setup().
+     */
+    if (vstream_peek(state->client) == 0
+       && peekfd(vstream_fileno(state->client)) > 0)
+       (void) vstream_ungetc(state->client, smtp_fgetc(state->client));
+    if (vstream_peek(state->client) > 0) {
+       if (state->expand_buf == 0)
+           state->expand_buf = vstring_alloc(100);
+       escape(state->expand_buf, vstream_peek_data(state->client),
+              vstream_peek(state->client) < 100 ?
+              vstream_peek(state->client) : 100);
+       msg_info("improper command pipelining after %s from %s: %s",
+                state->where, state->namaddr, STR(state->expand_buf));
+       state->flags |= SMTPD_FLAG_ILL_PIPELINING;
+       return (1);
+    }
+    return (0);
+}
+
 /* smtpd_proto - talk the SMTP protocol */
 
 static void smtpd_proto(SMTPD_STATE *state)
@@ -5589,6 +5615,16 @@ static void smtpd_proto(SMTPD_STATE *state)
        }
 #endif
 
+       /*
+        * If the client spoke before the server sends the initial greeting,
+        * raise a flag and log the content of the protocol violation. This
+        * check MUST NOT apply to TLS wrappermode connections.
+        */
+       if (SMTPD_STAND_ALONE(state) == 0
+           && vstream_context(state->client) == 0      /* not postscreen */
+           && (state->flags & SMTPD_FLAG_ILL_PIPELINING) == 0)
+           (void) smtpd_flag_ill_pipelining(state);
+
        /*
         * XXX The client connection count/rate control must be consistent in
         * its use of client address information in connect and disconnect
@@ -5824,18 +5860,8 @@ static void smtpd_proto(SMTPD_STATE *state)
            if (SMTPD_STAND_ALONE(state) == 0
                && (strcasecmp(state->protocol, MAIL_PROTO_ESMTP) != 0
                    || (cmdp->flags & SMTPD_CMD_FLAG_LAST))
-               && (state->flags & SMTPD_FLAG_ILL_PIPELINING) == 0
-               && (vstream_peek(state->client) > 0
-                   || peekfd(vstream_fileno(state->client)) > 0)) {
-               if (state->expand_buf == 0)
-                   state->expand_buf = vstring_alloc(100);
-               escape(state->expand_buf, vstream_peek_data(state->client),
-                      vstream_peek(state->client) < 100 ?
-                      vstream_peek(state->client) : 100);
-               msg_info("improper command pipelining after %s from %s: %s",
-                        cmdp->name, state->namaddr, STR(state->expand_buf));
-               state->flags |= SMTPD_FLAG_ILL_PIPELINING;
-           }
+               && (state->flags & SMTPD_FLAG_ILL_PIPELINING) == 0)
+               (void) smtpd_flag_ill_pipelining(state);
            if (cmdp->action(state, argc, argv) != 0)
                state->error_count++;
            else
index d91e43f2367cb83c51059b6368c8918c45011c07..8c087d5a56a2cfec41e16be8fa220db7af490301 100644 (file)
@@ -702,7 +702,7 @@ void    tls_param_init(void)
 
 int     tls_library_init(void)
 {
-    OPENSSL_INIT_SETTINGS *init_settings = 0;
+    OPENSSL_INIT_SETTINGS *init_settings;
     char   *conf_name = *var_tls_cnf_name ? var_tls_cnf_name : 0;
     char   *conf_file = 0;
     unsigned long init_opts = 0;
@@ -712,6 +712,10 @@ int     tls_library_init(void)
                 "disabling TLS support");
        return (0);
     }
+
+#define TLS_LIB_INIT_RETURN(x) \
+    do { OPENSSL_INIT_free(init_settings); return (x); } while(0)
+
 #if OPENSSL_VERSION_NUMBER < 0x1010102fL
 
     /*
@@ -722,41 +726,49 @@ int     tls_library_init(void)
     if (strcmp(var_tls_cnf_file, "default") != 0) {
        msg_warn("non-default %s = %s requires OpenSSL 1.1.1b or later, "
               "disabling TLS support", VAR_TLS_CNF_FILE, var_tls_cnf_file);
-       return (0);
+       TLS_LIB_INIT_RETURN(0);
     }
 #else
     {
-       unsigned long init_flags = 0;
+       unsigned long file_flags = 0;
 
        /*-
         * OpenSSL 1.1.1b or later:
-        * We can now choose a non-default or configuration file, or
+        * We can now use a non-default configuration file, or
         * use none at all.  We can also request strict error
         * reporting.
         */
-       if (strcmp(var_tls_cnf_file, "default") == 0) {
-           conf_file = 0;
-           /* The default global config file is optional */
-           init_flags |= CONF_MFLAGS_IGNORE_MISSING_FILE;
-       } else if (strcmp(var_tls_cnf_file, "none") == 0) {
+       if (strcmp(var_tls_cnf_file, "none") == 0) {
            init_opts |= OPENSSL_INIT_NO_LOAD_CONFIG;
+       } else if (strcmp(var_tls_cnf_file, "default") == 0) {
+
+           /*
+            * The default global config file is optional.  With "default"
+            * initialization we don't insist on a match for the requested
+            * application name, allowing fallback to the default application
+            * name, even when a non-default application name is specified.
+            * Errors in loading the default configuration are ignored.
+            */
+           conf_file = 0;
+           file_flags |= CONF_MFLAGS_IGNORE_MISSING_FILE;
+           file_flags |= CONF_MFLAGS_DEFAULT_SECTION;
+           file_flags |= CONF_MFLAGS_IGNORE_RETURN_CODES | CONF_MFLAGS_SILENT;
        } else if (*var_tls_cnf_file == '/') {
+
+           /*
+            * A custom config file must be present, error reporting is
+            * strict and the configuration section for the requested
+            * application name does not fall back to "openssl_conf" when
+            * missing.
+            */
            conf_file = var_tls_cnf_file;
        } else {
            msg_warn("non-default %s = %s is not an absolute pathname, "
               "disabling TLS support", VAR_TLS_CNF_FILE, var_tls_cnf_file);
-           return (0);
+           TLS_LIB_INIT_RETURN(0);
        }
 
-       /*
-        * By not including CONF_MFLAGS_IGNORE_RETURN_CODES, we get strict
-        * error reporting.  We don't insist on a match for the requested
-        * application name, allowing fallback to the default application
-        * name, even when a non-default application name is specified by
-        * always setting the CONF_MFLAGS_DEFAULT_SECTION bit.
-        */
-       init_flags |= CONF_MFLAGS_DEFAULT_SECTION;
-       OPENSSL_INIT_set_config_file_flags(init_settings, init_flags);
+       OPENSSL_INIT_set_config_file_flags(init_settings, file_flags);
     }
 #endif
 
@@ -775,9 +787,9 @@ int     tls_library_init(void)
            msg_warn("error initializing the OpenSSL library, "
                     "disabling TLS support");
        tls_print_errors();
-       return (0);
+       TLS_LIB_INIT_RETURN(0);
     }
-    return (1);
+    TLS_LIB_INIT_RETURN(1);
 }
 
 /* tls_pre_jail_init - Load TLS related pre-jail tables */
index 8ce666db5b256f52044568afeb3b531d5983e51b..7c0d8147b4411420d3b52177ad1354ad30b6cb54 100644 (file)
 /*     (FFDHE) key exchange groups supported by the Postfix SMTP client and
 /*     server.
 /* .PP
-/*     Available in Postfix version 3.9 and later:
+/*     Available in Postfix 3.9, 3.8.1, 3.7.6, 3.6.10, 3.5.20 and later:
 /* .IP "\fBtls_config_file (default)\fR"
 /*     Optional configuration file with baseline OpenSSL settings.
 /* .IP "\fBtls_config_name (empty)\fR"