]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-3.10.6 v3.10.6
authorWietse Z Venema <wietse@porcupine.org>
Tue, 25 Nov 2025 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <ietf-dane@dukhovni.org>
Wed, 26 Nov 2025 01:50:15 +0000 (12:50 +1100)
postfix/HISTORY
postfix/html/postconf.5.html
postfix/man/man5/postconf.5
postfix/proto/postconf.proto
postfix/src/global/mail_version.h
postfix/src/postconf/postconf_edit.c
postfix/src/smtp/smtp_tls_policy.c
postfix/src/smtp/smtp_tlsrpt.c

index cf1c78f505afc76fb6cf1840aa9563beca3e839d..901ddb50c6d53dd5028b07c14ef87709b97dfcf7 100644 (file)
@@ -29208,3 +29208,43 @@ Apologies for any names omitted.
        with "database X is older than source file Y". Files:
        util/dict.c, util/dict_db.c, util/dict_dbm.c, util/dict_lmdb.c,
        util/dict_sdbm.c.
+
+20251024
+
+       Logging: with "smtp_tls_enforce_sts_mx_patterns=yes" and
+       TLSRPT support enabled in a TLS policy plugin, the Postfix
+       SMTP client logs a warning when an MX hostname does not
+       match STS policy MX patterns; it logs a successful match
+       when verbose logging is enabled. File: smtp/smtp_tls_policy.c.
+
+20251027
+
+       Bugfix (defect introduced: Postfix 3.10, date: 20240902):
+       SMTP client null pointer crash when an STS policy plugin
+       sends no policy_string or no mx_pattern attributes. This
+       can happen only during tests with a fake STS plugin. File:
+       smtp/smtp_tlsrpt.c.
+
+20251028
+
+       Documentation: removed incorrect text from the parameter
+       description for smtp_cname_overrides_servername. File:
+       proto/postconf.proto.
+
+20251031
+
+       Bugfix (defect introduced: Postfix 3.10, date 20250117):
+       support for "TLS-Required: no" broke client-side TLS wrappermode
+       support, by downgrading a connection to TLS security level 'may'.
+       The solution is to change the downgrade level for wrappermode
+       connections to 'encrypt'. Rationale: by design, TLS can be
+       optional only for connections that use STARTTLS. The downgrade
+       to unauthenticated 'encrypt' allows a sender to avoid an email
+       delivery problem. Problem reported by Joshua Tyler Cochran.
+       File: smtp/smtp_tls_policy.c.
+
+20251120
+
+       Bugfix (defect introduced: Postfix 2.9, date: 20120307):
+       segfault with duplicate parameter name in "postconf -X" or
+       "postconf -#'. File: postconf/postconf_edit.c.
index 0f9034a378067c335a8066ed83cb14d30f7b937f..7e1350ada3aa15a8b6c02af1144c3a2f3b591763 100644 (file)
@@ -11373,10 +11373,6 @@ false hostname information in DNS CNAME records, and makes SASL
 password file lookups more predictable. This is the default setting
 as of Postfix 2.3. </p>
 
-<p> When DNS CNAME records are validated with secure DNS lookups
-(<a href="postconf.5.html#smtp_dns_support_level">smtp_dns_support_level</a> = dnssec), they are always allowed to
-override the above servername (Postfix 2.11 and later). </p>
-
 <p> This feature is available in Postfix 2.2.9 and later. </p>
 
 
index 2bc52fc7a299a40537b3b3d79e80c2b2d70c2e82..64ebaaa79c81677b3a86faea467447068f0764a8 100644 (file)
@@ -7136,10 +7136,6 @@ false hostname information in DNS CNAME records, and makes SASL
 password file lookups more predictable. This is the default setting
 as of Postfix 2.3.
 .PP
-When DNS CNAME records are validated with secure DNS lookups
-(smtp_dns_support_level = dnssec), they are always allowed to
-override the above servername (Postfix 2.11 and later).
-.PP
 This feature is available in Postfix 2.2.9 and later.
 .SH smtp_connect_timeout (default: 30s)
 The Postfix SMTP client time limit for completing a TCP connection, or
index fd90e34de976881e6c23016100fea24ce2cbbe70..fc343c122dea1001dfd261908e5d6af0547902a1 100644 (file)
@@ -11398,10 +11398,6 @@ false hostname information in DNS CNAME records, and makes SASL
 password file lookups more predictable. This is the default setting
 as of Postfix 2.3. </p>
 
-<p> When DNS CNAME records are validated with secure DNS lookups
-(smtp_dns_support_level = dnssec), they are always allowed to
-override the above servername (Postfix 2.11 and later). </p>
-
 <p> This feature is available in Postfix 2.2.9 and later. </p>
 
 %PARAM lmtp_cname_overrides_servername yes
index 3c53b13259831293e44c601d8003d7296c3393d7..5aff5abd65b6ec68fa2f764f2ad57b7fa15353dc 100644 (file)
@@ -20,8 +20,8 @@
   * Patches change both the patchlevel and the release date. Snapshots have no
   * patchlevel; they change the release date only.
   */
-#define MAIL_RELEASE_DATE      "20251026"
-#define MAIL_VERSION_NUMBER    "3.10.5"
+#define MAIL_RELEASE_DATE      "20251125"
+#define MAIL_VERSION_NUMBER    "3.10.6"
 
 #ifdef SNAPSHOT
 #define MAIL_VERSION_DATE      "-" MAIL_RELEASE_DATE
index 64296581715a4b9752d479e5c0d25303e307c7a2..2808290bf444685a416947d19d16cc14a88076f7 100644 (file)
@@ -209,8 +209,10 @@ void    pcf_edit_main(int mode, int argc, char **argv)
            msg_panic("pcf_edit_main: unknown mode %d", mode);
        }
        if ((cvalue = htable_find(table, pattern)) != 0) {
-           msg_warn("ignoring earlier request: '%s = %s'",
-                    pattern, cvalue->value);
+           if (edit_value && cvalue->value 
+               && strcmp(edit_value, cvalue->value) != 0)
+               msg_warn("ignoring earlier request: '%s = %s'",
+                        pattern, cvalue->value);
            htable_delete(table, pattern, myfree);
        }
        cvalue = (struct cvalue *) mymalloc(sizeof(*cvalue));
index 3619843d7e15ed90bb6da81486309119daebf199..8b393eede854a3b8039afcb855bcd9c84c8a563e 100644 (file)
@@ -187,9 +187,16 @@ int     smtp_tls_authorize_mx_hostname(SMTP_TLS_POLICY *tls, const char *name)
        } else
 #endif
            aname = name;
-       for (pattp = tls->ext_mx_host_patterns->argv; *pattp; pattp++)
-           if (match_sts_mx_host_pattern(*pattp, aname))
+       for (pattp = tls->ext_mx_host_patterns->argv; *pattp; pattp++) {
+           if (match_sts_mx_host_pattern(*pattp, aname)) {
+               if (msg_verbose)
+                   msg_info("MX name '%s' matches STS MX pattern for '%s'",
+                   aname, tls->ext_policy_domain ? tls->ext_policy_domain : "");
                return (1);
+           }
+       }
+       msg_warn("MX name '%s' does not match STS MX pattern for '%s'",
+                aname, tls->ext_policy_domain ? tls->ext_policy_domain : "");
        return (0);
     }
     /* No applicable policy name patterns. */
@@ -725,8 +732,13 @@ static void *policy_create(const char *unused_key, void *context)
     if (STATE_TLS_NOT_REQUIRED(iter->parent)) {
        if (msg_verbose)
            msg_info("%s: no tls policy lookup", __func__);
-       if (tls->level > TLS_LEV_MAY)
-           tls->level = TLS_LEV_MAY;
+       if (var_smtp_tls_wrappermode) {
+           if (tls->level > TLS_LEV_ENCRYPT)
+               tls->level = TLS_LEV_ENCRYPT;
+       } else {
+           if (tls->level > TLS_LEV_MAY)
+               tls->level = TLS_LEV_MAY;
+       }
     } else if (tls_policy) {
        tls_policy_lookup(tls, &site_level, dest, "next-hop destination");
     } else if (tls_per_site) {
index a371f4c19d7e8150ac02c8da27060ceb0186e1b6..3bd8cbf96e5daa648ccc3ce7bb12365f5b3e7909 100644 (file)
@@ -306,13 +306,15 @@ static void smtp_tlsrpt_set_ext_policy(SMTP_STATE *state)
     if (tls->ext_policy_type == 0)
        msg_panic("smtp_tlsrpt_set_ext_policy: no policy type");
 
+#define ARGV_OR_NULL(ap) ((ap) ? (ap)->argv : 0)
+
     switch (policy_type_val =
            convert_tlsrpt_policy_type(tls->ext_policy_type)) {
     case TLSRPT_POLICY_STS:
        trw_set_tls_policy(state->tlsrpt, policy_type_val,
-                       (const char *const *) tls->ext_policy_strings->argv,
+               (const char *const *) ARGV_OR_NULL(tls->ext_policy_strings),
                           tls->ext_policy_domain,
-                    (const char *const *) tls->ext_mx_host_patterns->argv);
+            (const char *const *) ARGV_OR_NULL(tls->ext_mx_host_patterns));
        break;
     case TLSRPT_NO_POLICY_FOUND:
        smtp_tlsrpt_set_no_policy(state);