]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-3.9-20230901
authorWietse Venema <wietse@porcupine.org>
Fri, 1 Sep 2023 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <ietf-dane@dukhovni.org>
Sat, 2 Sep 2023 19:33:34 +0000 (15:33 -0400)
19 files changed:
postfix/HISTORY
postfix/README_FILES/LOCAL_RECIPIENT_README
postfix/RELEASE_NOTES
postfix/WISHLIST
postfix/html/LOCAL_RECIPIENT_README.html
postfix/html/cleanup.8.html
postfix/html/postconf.5.html
postfix/man/man5/postconf.5
postfix/man/man8/cleanup.8
postfix/mantools/postlink
postfix/proto/LOCAL_RECIPIENT_README.html
postfix/proto/postconf.proto
postfix/proto/stop.double-history
postfix/src/cleanup/cleanup.c
postfix/src/cleanup/cleanup_init.c
postfix/src/cleanup/cleanup_message.c
postfix/src/dns/dns_lookup.c
postfix/src/global/mail_params.h
postfix/src/global/mail_version.h

index 8038271b2e65a26310e832cef09c34a22fe63bed..d80549b426c799231983a231050cd30c07400d8e 100644 (file)
@@ -27300,10 +27300,11 @@ Apologies for any names omitted.
 
 20230815
 
-       Bugfix (bug introduced: 20140218): when opportunistic TLS fails
-       during or after the handshake, don't require that a probe
-       message has a minimum time-in-queue before falling back to
-       plaintext. Problem reported by Serg. File: smtp/smtp.h.
+       Bugfix (defect introduced: 20140218): when an address
+       verification probe fails during or after an opportunistic
+       TLS handshake, immediately fall back to plaintext, without
+       enforcing a minimum time-in-queue. Problem reported by Serg.
+       File: smtp/smtp.h.
 
 20230820
 
@@ -27320,9 +27321,34 @@ Apologies for any names omitted.
        but legitimate wildcard names (*.name) in some DNS lookup
        results and lookup requests. Examples:
 
+            name          class/type value
             *.one.example   IN CNAME *.other.example
             *.other.example IN A     10.0.0.1
             *.other.example IN TLSA  ..certificate info...
 
-       Reported first in the context of TLSA record lookups.
-       Files: util/valid_hostname.[hc], dns/dns_lookup.c.
+       Such syntax is blesed in RFC 1034 section 4.3.3.
+
+       This problem was reported first in the context of TLSA
+       record lookups. Files: util/valid_hostname.[hc],
+       dns/dns_lookup.c.
+
+20230831
+
+       Documentation: clarify the scope of local_recipient_maps.
+       Files: proto/LOCAL_RECIPIENT_README.html, proto/postconf.proto.
+
+       Documentation loose ends. Files: HISTORY, dns/dns_lookup.c.
+
+20230901
+
+       Feature: enforce_mime_input_conversion (default: no) to
+       convert content that claims to be 8-bit into quoted-printable,
+       before header_checks, body_checks, Milters, and before
+       after-queue content filters. The typical use case is an MTA
+       that applies this conversion before signing outbound messages,
+       so that the signatures will remain valid when a message is
+       later delivered to an MTA that does not announce 8BITMIME
+       support, or when a message line exceeds the SMTP length
+       limit. Files: global/mail_params.c, cleanup/cleanup_message.c,
+       cleanup/cleanup.c, cleanup/cleanup_init.c, proto/postconf.proto,
+       mantools/postlink.
index ea4ce2546e2420146323e91134c9582681169924..c8b97bdd4659ea67019f7a1d398075bd969f9019 100644 (file)
@@ -30,7 +30,7 @@ addresses of local recipients. A recipient address is local when its domain
 matches $mydestination, $inet_interfaces or $proxy_interfaces. If a local
 username or address is not listed in $local_recipient_maps, then the Postfix
 SMTP server will reject the address with "User unknown in local recipient
-table".
+table". Other Postfix interfaces may still accept an "unknown" recipient.
 
 The default setting, shown below, assumes that you use the default Postfix
 local(8) delivery agent for local delivery, where recipients are either UNIX
index 7f24aa4b1ee54f504d9f7b96a5b4033dcff69178..ddd29daff9888ee70518e85766bde2f0dd57aa6d 100644 (file)
@@ -26,6 +26,21 @@ now also distributed with the more recent Eclipse Public License
 license of their choice. Those who are more comfortable with the
 IPL can continue with that license.
 
+Major changes with snapshot 20230901
+====================================
+
+New parameter enforce_mime_input_conversion (default: no) to convert
+content that claims to be 8-bit into quoted-printable, before
+header_checks, body_checks, Milters, and before after-queue content
+filters. This feature does not affect messages that are sent into
+smtpd_proxy_filter.
+
+The typical use case is an MTA that applies this conversion before
+signing outbound messages, so that the signatures will remain valid
+when a message is later handled by an MTA that does not announce
+8BITMIME support, or when a message line exceeds the SMTP length
+limit.
+
 Major changes with snapshot 20230807
 ====================================
 
index 9f409b18b40a54bb2b57920cbbe68f7c3d959262..5a860c18d8e242884918bd23b1eac697621d7e9e 100644 (file)
@@ -8,6 +8,9 @@ Wish list:
 
        postfix-install should mention makedefs.out.
 
+       Update DKIM examples for signing with the benefits of forced
+       MIME converison with "enforce_mime_input_conversion = yes"
        Deprecate permit_mx_backup. It is fundamentally incompatible
        with recipient address validation. There is no way to fix that:
        reject_unverified_recipient requires that the domain is reachable,
index a3a3636005c23d2f62d4353276a1e8db463a5297..5a614e0cc888b65f4588ee021093f2e55bd4b2c7 100644 (file)
@@ -57,7 +57,8 @@ 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>. If a local username or address is not listed in
 $<a href="postconf.5.html#local_recipient_maps">local_recipient_maps</a>, then the Postfix SMTP server will reject
-the address with "User unknown in local recipient table".  </p>
+the address with "User unknown in local recipient table". Other
+Postfix interfaces may still accept an "unknown" recipient.  </p>
 
 <p> The default setting, shown below, assumes that you use the
 default Postfix <a href="local.8.html">local(8)</a> delivery agent for local delivery, where
index 6ee8804e463c855753972d44441ec9b6a083b6c1..442ce03dbf74d85477c569b9d66fa0737a6040e1 100644 (file)
@@ -513,6 +513,13 @@ CLEANUP(8)                                                          CLEANUP(8)
               The  email  address  form that will be used in non-debug logging
               (info, warning, etc.).
 
+       Available in Postfix 3.9 and later:
+
+       <b><a href="postconf.5.html#enforce_mime_input_conversion">enforce_mime_input_conversion</a> (no)</b>
+              Convert content that claims to be 8-bit  into  quoted-printable,
+              before   <a href="postconf.5.html#header_checks">header_checks</a>,   <a href="postconf.5.html#body_checks">body_checks</a>,   Milters,   and   before
+              after-queue content filters.
+
 <b>FILES</b>
        /etc/postfix/canonical*, canonical mapping table
        /etc/postfix/virtual*, virtual mapping table
index 0f895dcf131555e8d9e113a88a61849380834f5d..d9bc50bc6475c2bde13778bde7274290000ac746 100644 (file)
@@ -3423,6 +3423,25 @@ instead of deleting only the non-delivery notification. </dd>
 <p> This feature is available in Postfix 3.6 and later. </p>
 
 
+</DD>
+
+<DT><b><a name="enforce_mime_input_conversion">enforce_mime_input_conversion</a>
+(default: no)</b></DT><DD>
+
+<p> Convert content that claims to be 8-bit into quoted-printable,
+before <a href="postconf.5.html#header_checks">header_checks</a>, <a href="postconf.5.html#body_checks">body_checks</a>, Milters, and before after-queue
+content filters. This feature does not affect messages that are
+sent into <a href="postconf.5.html#smtpd_proxy_filter">smtpd_proxy_filter</a>. </p>
+
+<p> The typical use case is an MTA that applies this conversion
+before signing outbound messages, so that the signatures will remain
+valid when a message is later delivered to an MTA that does not
+announce 8BITMIME support, or when a message line exceeds the SMTP
+length limit. </p>
+
+<p> This feature is available in Postfix &ge; 3.9. </p>
+
+
 </DD>
 
 <DT><b><a name="error_notice_recipient">error_notice_recipient</a>
@@ -6176,8 +6195,8 @@ until a match is found.
 
 <p>
 If this parameter is non-empty (the default), then the Postfix SMTP
-server will reject mail for unknown local users.
-</p>
+server will reject mail for unknown local users. Other Postfix
+interfaces may still accept an "unknown" recipient.  </p>
 
 <p>
 To turn off local recipient checking in the Postfix SMTP server,
index 553d07411e8ad6b025649bcd7fd42b8e6753dc7a..8ddb007c2b01843e6d5cc9ee8e3be7caeb59f6a0 100644 (file)
@@ -2206,6 +2206,19 @@ instead of deleting only the non\-delivery notification.
 .br
 .PP
 This feature is available in Postfix 3.6 and later.
+.SH enforce_mime_input_conversion (default: no)
+Convert content that claims to be 8\-bit into quoted\-printable,
+before header_checks, body_checks, Milters, and before after\-queue
+content filters. This feature does not affect messages that are
+sent into smtpd_proxy_filter.
+.PP
+The typical use case is an MTA that applies this conversion
+before signing outbound messages, so that the signatures will remain
+valid when a message is later delivered to an MTA that does not
+announce 8BITMIME support, or when a message line exceeds the SMTP
+length limit.
+.PP
+This feature is available in Postfix >= 3.9.
 .SH error_notice_recipient (default: postmaster)
 The recipient of postmaster notifications about mail delivery
 problems that are caused by policy, resource, software or protocol
@@ -3820,7 +3833,8 @@ whitespace or comma. Tables will be searched in the specified order
 until a match is found.
 .PP
 If this parameter is non\-empty (the default), then the Postfix SMTP
-server will reject mail for unknown local users.
+server will reject mail for unknown local users. Other Postfix
+interfaces may still accept an "unknown" recipient.
 .PP
 To turn off local recipient checking in the Postfix SMTP server,
 specify "local_recipient_maps =" (i.e. empty).
index a6bec00c03eb54ad0f8c165b9cbf8a61c01f206c..d9170647ebfdcd82dbee14d259426ee67a456a8a 100644 (file)
@@ -459,6 +459,12 @@ Available in Postfix 3.5 and later:
 .IP "\fBinfo_log_address_format (external)\fR"
 The email address form that will be used in non\-debug logging
 (info, warning, etc.).
+.PP
+Available in Postfix 3.9 and later:
+.IP "\fBenforce_mime_input_conversion (no)\fR"
+Convert content that claims to be 8\-bit into quoted\-printable,
+before header_checks, body_checks, Milters, and before after\-queue
+content filters.
 .SH "FILES"
 .na
 .nf
index 59b2716ea104102026b7f933a14a602e005c3b8a..54d29adb3e4ac731aafce358eba2b686387afce4 100755 (executable)
@@ -169,6 +169,7 @@ while (<>) {
     s;\bdisable_dns_lookups\b;<a href="postconf.5.html#disable_dns_lookups">$&</a>;g;
     s;\bdisable_mime_input_processing\b;<a href="postconf.5.html#disable_mime_input_processing">$&</a>;g;
     s;\bdisable_mime_output_conversion\b;<a href="postconf.5.html#disable_mime_output_conversion">$&</a>;g;
+    s;\benforce_mime_input_conversion\b;<a href="postconf.5.html#enforce_mime_input_conversion">$&</a>;g;
     s;\bdisable_verp_bounces\b;<a href="postconf.5.html#disable_verp_bounces">$&</a>;g;
     s;\bdisable_vrfy_command\b;<a href="postconf.5.html#disable_vrfy_command">$&</a>;g;
     s;\bdont_remove\b;<a href="postconf.5.html#dont_remove">$&</a>;g;
index a06b81f2eb7cad8204a6c7efd72128613534d7fc..2cb3fb29695f4acef029b99c25baaeb36417fe9b 100644 (file)
@@ -57,7 +57,8 @@ all names or addresses of local recipients. A recipient address is
 local when its domain matches $mydestination, $inet_interfaces or
 $proxy_interfaces. If a local username or address is not listed in
 $local_recipient_maps, then the Postfix SMTP server will reject
-the address with "User unknown in local recipient table".  </p>
+the address with "User unknown in local recipient table". Other
+Postfix interfaces may still accept an "unknown" recipient.  </p>
 
 <p> The default setting, shown below, assumes that you use the
 default Postfix local(8) delivery agent for local delivery, where
index c47af13c3aaeb984a8ddd41a0597a3401a0bc5c9..6de5a6c3ba219000e98d2025f79afa0ccd477ba9 100644 (file)
@@ -2468,8 +2468,8 @@ until a match is found.
 
 <p>
 If this parameter is non-empty (the default), then the Postfix SMTP
-server will reject mail for unknown local users.
-</p>
+server will reject mail for unknown local users. Other Postfix
+interfaces may still accept an "unknown" recipient.  </p>
 
 <p>
 To turn off local recipient checking in the Postfix SMTP server,
@@ -19026,3 +19026,18 @@ SMTP client input. This feature is enabled by default with Postfix
 
 <p> This feature is available in Postfix &ge; 3.9, 3.8.1, 3.7.6,
 3.6.10, and 3.5.20. </p>
+
+%PARAM enforce_mime_input_conversion no
+
+<p> Convert content that claims to be 8-bit into quoted-printable,
+before header_checks, body_checks, Milters, and before after-queue
+content filters. This feature does not affect messages that are
+sent into smtpd_proxy_filter. </p>
+
+<p> The typical use case is an MTA that applies this conversion
+before signing outbound messages, so that the signatures will remain
+valid when a message is later delivered to an MTA that does not
+announce 8BITMIME support, or when a message line exceeds the SMTP
+length limit. </p>
+
+<p> This feature is available in Postfix &ge; 3.9. </p>
index d0e837eb9f144792f189ad0f9470a12a6dedfbc3..2fb2cee889e75523a5f561c14e8508585f359216 100644 (file)
@@ -65,3 +65,4 @@ proto  proto aliases proto virtual proto ADDRESS_REWRITING_README html
  reported by Serg File smtp smtp h 
  smtp lmtp_params c smtp smtp c smtp smtp_params c 
  plaintext Problem reported by Serg File smtp smtp h 
+ cleanup cleanup c cleanup cleanup_init c proto postconf proto 
index b1f475dccc8d62121d3b662ac4d51f3d135c40a4..ab9ae249e55c0f9fd9b00a477a7a18af7f4b2efb 100644 (file)
 /* .IP "\fBinfo_log_address_format (external)\fR"
 /*     The email address form that will be used in non-debug logging
 /*     (info, warning, etc.).
+/* .PP
+/*     Available in Postfix 3.9 and later:
+/* .IP "\fBenforce_mime_input_conversion (no)\fR"
+/*     Convert content that claims to be 8-bit into quoted-printable,
+/*     before header_checks, body_checks, Milters, and before after-queue
+/*     content filters.
 /* FILES
 /*     /etc/postfix/canonical*, canonical mapping table
 /*     /etc/postfix/virtual*, virtual mapping table
index 8c43a021205f09bc8b37713a70daaa1376fefe59..a25068dd94120f82512166a7e2a50d8e4d59992e 100644 (file)
@@ -174,6 +174,7 @@ int     var_auto_8bit_enc_hdr;              /* auto-detect 8bit encoding header */
 int     var_always_add_hdrs;           /* always add missing headers */
 int     var_virt_addrlen_limit;                /* stop exponential growth */
 char   *var_hfrom_format;              /* header_from_format */
+int     var_enforce_mime_iconv;                /* enforce mime downgrade on input */
 
 const CONFIG_INT_TABLE cleanup_int_table[] = {
     VAR_HOPCOUNT_LIMIT, DEF_HOPCOUNT_LIMIT, &var_hopcount_limit, 1, 0,
@@ -190,6 +191,7 @@ const CONFIG_BOOL_TABLE cleanup_bool_table[] = {
     VAR_VERP_BOUNCE_OFF, DEF_VERP_BOUNCE_OFF, &var_verp_bounce_off,
     VAR_AUTO_8BIT_ENC_HDR, DEF_AUTO_8BIT_ENC_HDR, &var_auto_8bit_enc_hdr,
     VAR_ALWAYS_ADD_HDRS, DEF_ALWAYS_ADD_HDRS, &var_always_add_hdrs,
+    VAR_ENFORCE_MIME_ICONV, DEF_ENFORCE_MIME_ICONV, &var_enforce_mime_iconv,
     0,
 };
 
index f2b86d05b0303dc15956f961adfa0ffb93e77654..3eb89386334053930ac6f03da70dfa4b14a29c73 100644 (file)
@@ -1052,6 +1052,9 @@ void    cleanup_message(CLEANUP_STATE *state, int type, const char *buf, ssize_t
      */
     mime_options = 0;
     if (var_disable_mime_input) {
+       if (var_enforce_mime_iconv)
+           msg_fatal("do not specify both %s=yes and %s=yes",
+                     VAR_DISABLE_MIME_INPUT, VAR_ENFORCE_MIME_ICONV);
        mime_options |= MIME_OPT_DISABLE_MIME;
     } else {
        /* Turn off content checks if bouncing or forwarding mail. */
@@ -1068,6 +1071,8 @@ void    cleanup_message(CLEANUP_STATE *state, int type, const char *buf, ssize_t
                || *var_nesthdr_checks)
                mime_options |= MIME_OPT_REPORT_NESTING;
        }
+       if (var_enforce_mime_iconv)
+           mime_options |= MIME_OPT_DOWNGRADE;
     }
     state->mime_state = mime_state_alloc(mime_options,
                                         cleanup_header_callback,
index 06028c804f78befed2f3fb27037b217bd49a3020..bccdd83f501f534dc32c658e4005161a7c2c8a22 100644 (file)
 /*     an invalid name is reported as a DNS_INVAL result, while
 /*     malformed replies are reported as transient errors.
 /*
+/*     Note: in dns_lookup*() results and queries, a name may start
+/*     with a "*" label, which is valid according to RFC 1034
+/*     section 4.3.3. Such a name will not pass valid_hostname()
+/*     checks in the rest of Postfix, because it is not a valid
+/*     host or domain name.
+/*
 /*     dns_get_h_errno() returns the last error. This deprecates
 /*     usage of the global h_errno variable. We should not rely
 /*     on that being updated.
index 1d964b496eaa6fe757715f52a3b1bd83be9d97c9..649b8290a1d3ee3d68357233f76236498ab5b117 100644 (file)
@@ -3088,6 +3088,10 @@ extern bool var_disable_mime_input;
 #define DEF_DISABLE_MIME_OCONV         0
 extern bool var_disable_mime_oconv;
 
+#define VAR_ENFORCE_MIME_ICONV         "enforce_mime_input_conversion"
+#define DEF_ENFORCE_MIME_ICONV         0
+extern bool var_enforce_mime_iconv;
+
 #define VAR_STRICT_8BITMIME            "strict_8bitmime"
 #define DEF_STRICT_8BITMIME            0
 extern bool var_strict_8bitmime;
index 7d6a25f33c7aa2bed66294610cf98222c7cd15b5..e85db1d769b99f67c0dc2f073aed82d5c5c6ddb1 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      "20230821"
+#define MAIL_RELEASE_DATE      "20230901"
 #define MAIL_VERSION_NUMBER    "3.9"
 
 #ifdef SNAPSHOT