]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-3.10-20250103
authorWietse Z Venema <wietse@porcupine.org>
Fri, 3 Jan 2025 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <ietf-dane@dukhovni.org>
Sun, 5 Jan 2025 13:03:35 +0000 (00:03 +1100)
26 files changed:
postfix/HISTORY
postfix/Makefile.in
postfix/README_FILES/MILTER_README
postfix/WISHLIST
postfix/html/MILTER_README.html
postfix/html/makedefs.1.html
postfix/html/postconf.5.html
postfix/html/postlog.1.html
postfix/makedefs
postfix/man/man1/makedefs.1
postfix/man/man1/postlog.1
postfix/man/man5/postconf.5
postfix/mantools/check-postconf-undocumented [new file with mode: 0644]
postfix/mantools/check-postconf-unimplemented [new file with mode: 0644]
postfix/proto/MILTER_README.html
postfix/proto/postconf.proto
postfix/proto/stop
postfix/proto/stop.double-history
postfix/proto/stop.spell-history
postfix/src/cleanup/cleanup_message.c
postfix/src/global/mail_version.h
postfix/src/postlog/postlog.c
postfix/src/tls/tls_misc.c
postfix/src/util/peekfd.c
postfix/src/util/sys_compat.c
postfix/src/util/sys_defs.h

index 91f24ead4ba00f8370f03330dfef9436e9ccc3dd..ec424051e4020d94a0a642baec77bf27420f8dc1 100644 (file)
@@ -28637,3 +28637,66 @@ Apologies for any names omitted.
        datagram-based spawn(8) service. It was too difficult to
        enforce that processes terminate as expected after "postfix
        reload" etc. File: spawn/spawn.c.
+
+20241205
+
+       Portability: include <sys_socket.h> for a SUNOS5 workaround.
+       Gary R. Schmidt. File: util/peekfd.c.
+
+20241210
+
+       Documentation: ESMTP parameters that are supported in Milter
+       requests to change the envelope sender address, or to add
+       an envelope recipient address. File: proto/MILTER_README.html.
+
+20241213
+
+       Bugfix (defect introduced Postfix 3.1 date 20150523): makedefs did
+       not handle Major release version of zero. Michael Tokarev. File:
+       makedefs.
+
+       Portability: changed the closefrom() result type from 'int'
+       to 'void', for compatibility with systems that have a
+       closefrom() implementation that we don't want to use.
+       Michael Tokarev. Files: util/sys_defs.h, util/sys_compat.c.
+
+20241214
+
+       Documentation: updated the postlog(1) manpage text for
+       logging to the standard error stream. File postlog/postlog.c.
+
+20241226
+
+       Bit rot: The Postfix code for logging the TLS group wasn't
+       quite right. Instead of the TLS group name, it logged the
+       underlying public key algorithm name. These names may differ
+       when some of the newer constructs are used. Viktor Dukhovni.
+       File: tls/tls_misc.c.
+
+20241230
+
+       Bugfix (defect introduced: Postfix 3.3, date 20180107) small
+       memory leak in the cleanup daemon when generating a "From:
+       full-name <addr-spec>" message header. The impact is limited
+       because the number of requests is bounded by the "max_use"
+       configuration parameter. Found during code maintenance.
+       File: cleanup/cleanup_message.c.
+
+20250101
+
+       Wietse added -DNO_CLOSEFROM support to make the change
+       20241213 easily testable, and documented it in the makedefs(1)
+       manpage.
+
+20250102
+
+       Added pre-release checks for configuration parameters that
+       are implemented but not documented, and for configuration
+       parameters that are documented but not implemented. Files:
+       mantools/check-postconf-unimplemented,
+       mantools/check-postconf-undocumented.
+
+       Documentation: eliminated an "unused" postconf(5) entry for
+       the lmtp_lhlo_timeout parameter, and added end-of-life info
+       for the obsolete proxy_tls_session_cache_timeout parameter.
+       File: proto/postconf.proto.
index d7152b57e0f522301123189b3f5cbe9494ed6fc6..a37f89f3b502225329bd64b8a7fd58e548f58ec2 100644 (file)
@@ -117,6 +117,7 @@ manpages:
 # Some checks require a bin/postconf executable.
 pre-release-checks: typo-check double-check missing-proxy-read-maps-check \
        postlink-check postfix-files-check \
+       postconf-unimplemented-check postconf-undocumented-check \
        check-table-proto check-see-postconf-d-output \
        check-snapshot-nonprod
 
@@ -126,6 +127,12 @@ postfix-files-check:
 postlink-check:
        $(SHLIB_ENV) mantools/check-postlink | diff /dev/null -
 
+postconf-undocumented-check:
+       $(SHLIB_ENV) mantools/check-postconf-undocumented | diff /dev/null -
+
+postconf-unimplemented-check:
+       $(SHLIB_ENV) mantools/check-postconf-unimplemented | diff /dev/null -
+
 missing-proxy-read-maps-check:
        $(SHLIB_ENV) mantools/missing-proxy-read-maps | diff /dev/null -
 
index 7d9e93893e9e0e43fd22fa01b9d1b772b3c3ddcf..aafc693964d4905c5651fc669ffe9ab02f68e6bf 100644 (file)
@@ -663,10 +663,24 @@ the CONTENT_INSPECTION_README document for a discussion.
     command information; they have no access to the message header or body, and
     cannot make modifications to the message or to the envelope.
 
-  * Postfix 2.6 ignores the optional ESMTP parameters in requests to replace
-    the sender (SMFIR_CHGFROM) or to append a recipient (SMFIR_ADDRCPT_PAR).
-    Postfix logs a warning message when a Milter application supplies such
-    ESMTP parameters:
+  * Postfix 3.3 and later support the ESMTP parameters RET and ENVID in
+    requests to replace the envelope sender (SMFIR_CHGFROM). Postfix logs a
+    warning message when a Milter application supplies other ESMTP parameters:
+
+    warning: queue-id: cleanup_chg_from: ignoring bad ESMTP
+        parameter "whatever" in SMFI_CHGFROM request
+
+  * Postfix 3.0 and later support the ESMTP parameters NOTIFY and ORCPT in
+    requests to add an envelope recipient. Postfix logs a warning message when
+    a Milter application supplies other ESMTP parameters:
+
+    warning: queue-id: cleanup_add_rcpt: ignoring ESMTP argument
+        from Milter or header/body_checks: "whatever"
+
+  * Postfix 2.6 and later ignore optional ESMTP parameters in requests to
+    replace the sender (SMFIR_CHGFROM) or to append a recipient
+    (SMFIR_ADDRCPT_PAR). Postfix logs a warning message when a Milter
+    application supplies such ESMTP parameters:
 
     warning: queue-id: cleanup_chg_from: ignoring ESMTP arguments "whatever"
     warning: queue-id: cleanup_add_rcpt: ignoring ESMTP arguments "whatever"
index 0954a425437842d6e8ef41874225b066bc022991..ec31c7bea69276081091f7518d3e97965adfcf2b 100644 (file)
@@ -10,11 +10,20 @@ Wish list:
 
        Add a mail_version chek to each pluggable database client.
 
+       Unify conf/postfix-wrapper and proto/postfix-wrapper (make
+       one a dependency of the other). They have diverged.
+
+       Should the SMTP client log the queue ID with the TLS status?
+
        relay_recipient_maps empty should default to 'no valid
        recipients'. Subject to compatibility level.
 
        Make a reason available for messages placed on 'hold'.
 
+       In pipe_command() and spawn_command(), the child process
+       should call initgroups() to corrrectly the access rights
+       of interactive shell users.
+
        relay_recipient_maps empty should default to 'no valid
        recipients'. Subject to compatibility level.
 
index 02767bd763174219307d122162ad85ead264d97d..8415840261d028f93a94c234fca5ae74c0be68d9 100644 (file)
@@ -973,7 +973,27 @@ only to the SMTP command information; they have no access to the
 message header or body, and cannot make modifications to the message
 or to the envelope. </p>
 
-<li> <p> Postfix 2.6 ignores the optional ESMTP parameters in
+<li> <p> Postfix 3.3 and later support the ESMTP parameters RET and
+ENVID in requests to replace the envelope sender (SMFIR_CHGFROM).
+Postfix logs a warning message when a Milter application supplies
+other ESMTP parameters: </p>
+
+<pre>
+warning: <i>queue-id</i>: cleanup_chg_from: ignoring bad ESMTP
+    parameter "<i>whatever</i>" in SMFI_CHGFROM request
+</pre>
+
+<li> <p> Postfix 3.0 and later support the ESMTP parameters NOTIFY
+and ORCPT in requests to add an envelope recipient. Postfix logs a
+warning message when a Milter application supplies other ESMTP
+parameters: </p>
+
+<pre>
+warning: <i>queue-id</i>: cleanup_add_rcpt: ignoring ESMTP argument
+    from Milter or header/body_checks: "<i>whatever</i>"
+</pre>
+
+<li> <p> Postfix 2.6 and later ignore optional ESMTP parameters in
 requests to replace the sender (SMFIR_CHGFROM) or to append a
 recipient (SMFIR_ADDRCPT_PAR). Postfix logs a warning message when
 a Milter application supplies such ESMTP parameters: </p>
index b2bc7193fbf0287a3474d67dc9ea05aea82ac1a4..e312a6ba5d2d2f3b6bf457b430ebecb31e76cbaa 100644 (file)
@@ -47,6 +47,9 @@ MAKEDEFS(1)                                                        MAKEDEFS(1)
               non-default  <i>include</i>  directory.   The  following directives are
               special:
 
+              <b>-DNO_CLOSEFROM</b>
+                     Do not use the system closefom() implementation.
+
               <b>-DNO_DB</b>
                      Do not build with Berkeley DB support.
 
index 6672ade3c0702c1b110ee033913883229f3777cc..4720204bd962c347429ca2edabb93c3466efb15b 100644 (file)
@@ -21430,7 +21430,7 @@ cache information. Since the cache is shared with <a href="smtpd.8.html">smtpd(8
 by <a href="tlsmgr.8.html">tlsmgr(8)</a>, there is only one expiration time for the SMTP server cache
 shared by all three services, namely <a href="postconf.5.html#smtpd_tls_session_cache_timeout">smtpd_tls_session_cache_timeout</a>. </p>
 
-<p> This feature is available in Postfix 2.8 and later. </p>
+<p> This feature is available in Postfix 2.8-2.10. </p>
 
 
 </DD>
index 23f9d69aeced3bcf845925733161351e7fe660ce..a2f25860c3442dc042487af1ea27f527636ba2f8 100644 (file)
@@ -21,9 +21,9 @@ POSTLOG(1)                                                          POSTLOG(1)
        record.  If  no <i>text</i> is specified on the command line, <a href="postlog.1.html"><b>postlog</b>(1)</a> reads
        from standard input and logs each input line as one record.
 
-       By default, logging is sent to  <b>syslogd</b>(8)  or  <a href="postlogd.8.html"><b>postlogd</b>(8)</a>;  when  the
-       standard error stream is connected to a terminal, logging is sent there
-       as well.
+       Logging is sent to <b>syslogd</b>(8) or <a href="postlogd.8.html"><b>postlogd</b>(8)</a>, and to the standard error
+       stream  (with  Postfix  &lt;  3.8, <a href="postlog.1.html"><b>postlog</b>(1)</a> writes to the standard error
+       stream only if that stream is connected to a terminal).
 
        The following options are implemented:
 
index a048d09ce690b90d507ea2252dbd27d9781c87ce..9bd730281776e0ed633f46078a2c6d57e76e7a0d 100644 (file)
@@ -46,6 +46,8 @@
 #      \fIinclude\fR directory.
 #      The following directives are special:
 # .RS
+# .IP \fB-DNO_CLOSEFROM\fR
+#      Do not use the system closefom() implementation.
 # .IP \fB-DNO_DB\fR
 #      Do not build with Berkeley DB support.
 # .IP \fB-DNO_DEVPOLL\fR
@@ -240,8 +242,6 @@ case $# in
  # Officially supported usage.
  0) SYSTEM=`(uname -s) 2>/dev/null`
     RELEASE=`(uname -r) 2>/dev/null`
-    # No ${x%%y} support in Solaris 11 /bin/sh
-    RELEASE_MAJOR=`expr "$RELEASE" : '\([0-9]*\)'` || exit 1
     VERSION=`(uname -v) 2>/dev/null`
     case "$VERSION" in
      dcosx*) SYSTEM=$VERSION;;
@@ -251,6 +251,9 @@ case $# in
  *) echo usage: $0 [system release] 1>&2; exit 1;;
 esac
 
+# No ${x%%y} support in Solaris 11 /bin/sh
+RELEASE_MAJOR=`echo "$RELEASE" | sed 's/[^0-9].*//'` || exit 1
+
 case "$SYSTEM.$RELEASE" in
    SCO_SV.3.2) SYSTYPE=SCO5
                # Use the native compiler by default
index 1f3f452d33ba7a99f54b6b5e97fa2a03d07d4b89..52b5daea95b2d847987808ef09861a609773ebe9 100644 (file)
@@ -49,6 +49,8 @@ Specifies non\-default compiler arguments, for example, a non\-default
 \fIinclude\fR directory.
 The following directives are special:
 .RS
+.IP \fB\-DNO_CLOSEFROM\fR
+Do not use the system closefom() implementation.
 .IP \fB\-DNO_DB\fR
 Do not build with Berkeley DB support.
 .IP \fB\-DNO_DEVPOLL\fR
index d9723e7c4e31985d45bc8f67c532082c6ef1b6d6..a8c70b8ef31aa08a178f06d81cd512451adb33e5 100644 (file)
@@ -23,10 +23,10 @@ line as one record. If no \fItext\fR is specified on the command
 line, \fBpostlog\fR(1) reads from standard input and logs each input
 line as one record.
 
-By default, logging is sent to \fBsyslogd\fR(8) or
-\fBpostlogd\fR(8); when the
-standard error stream is connected to a terminal, logging
-is sent there as well.
+Logging is sent to \fBsyslogd\fR(8) or \fBpostlogd\fR(8), and
+to the standard error stream (with Postfix < 3.8, \fBpostlog\fR(1)
+writes to the standard error stream only if that stream is
+connected to a terminal).
 
 The following options are implemented:
 .IP "\fB\-c \fIconfig_dir\fR"
index a4463da00ebcc08fb63f7ad04f2e33536f442e3e..2ad4c4d39d19c291a190eb9d1a6ef34296e6e0d5 100644 (file)
@@ -14855,7 +14855,7 @@ cache information. Since the cache is shared with \fBsmtpd\fR(8) and managed
 by \fBtlsmgr\fR(8), there is only one expiration time for the SMTP server cache
 shared by all three services, namely smtpd_tls_session_cache_timeout.
 .PP
-This feature is available in Postfix 2.8 and later.
+This feature is available in Postfix 2.8\-2.10.
 .SH tlsproxy_use_tls (default: $smtpd_use_tls)
 Opportunistic TLS: announce STARTTLS support to remote SMTP clients,
 but do not require that clients use TLS encryption. See smtpd_use_tls
diff --git a/postfix/mantools/check-postconf-undocumented b/postfix/mantools/check-postconf-undocumented
new file mode 100644 (file)
index 0000000..7f45e2b
--- /dev/null
@@ -0,0 +1,99 @@
+#!/bin/sh
+
+# Reports parameters that exist in postconf(1) output, but that are not
+# documented in the postconf(5) manpage.
+
+LANG=C; export LANG
+LC_ALL=C; export LC_ALL
+
+bin/postconf mail_version >/dev/null || exit 1
+
+trap 'rm -f want.tmp have.tmp stoplist.tmp 2>/dev/null' 0 1 2 3 15
+
+# Extract parameters from the postconf(5) manpage.
+
+awk '/^%PARAM/ { print $2 }' proto/postconf.proto | sort > have.tmp || exit 1
+
+# Build a stoplist for postconf(1) output.
+
+# Eliminate unwanted dynamic parameter names for delivery agents. These
+# names are prefixed by their master.cf service name (they must instead
+# be documented with fake names that have the "transport_" prefix; that
+# is implemented later in this script).
+
+for xport in error lmtp local relay retry smtp virtual
+do
+   cat <<EOF
+${xport}_delivery_slot_cost
+${xport}_delivery_slot_discount
+${xport}_delivery_slot_loan
+${xport}_destination_concurrency_failed_cohort_limit
+${xport}_destination_concurrency_limit
+${xport}_destination_concurrency_negative_feedback
+${xport}_destination_concurrency_positive_feedback
+${xport}_destination_rate_delay
+${xport}_destination_recipient_limit
+${xport}_extra_recipient_limit
+${xport}_initial_destination_concurrency
+${xport}_minimum_delivery_slots
+${xport}_recipient_limit
+${xport}_recipient_refill_delay
+${xport}_recipient_refill_limit
+${xport}_transport_rate_delay
+EOF
+done >stoplist.tmp
+
+# Eliminate other unwanted per-service parameters.
+
+#cat >>stoplist.tmp <<EOF
+#EOF
+
+# Eliminate unwanted auto-generated parameters that make no sense.
+
+cat >>stoplist.tmp <<'EOF'
+lmtp_tlsrpt_enable
+lmtp_tlsrpt_skip_reused_handshakes
+lmtp_tlsrpt_socket_name
+EOF
+
+# Build the list of parameter names that must have an entry in the
+# postconf(5) manpage.
+
+(
+# First, extract parameters from postconf(1) output, using the stock
+# configurations.
+
+bin/postconf -dHc conf | grep -F -vx -f stoplist.tmp
+
+# Next, require that all dynamically-generated parameter names for delivery
+# agents are documented as transport_mumble.
+
+cat <<EOF
+transport_delivery_slot_cost
+transport_delivery_slot_discount
+transport_delivery_slot_loan
+transport_destination_concurrency_failed_cohort_limit
+transport_destination_concurrency_limit
+transport_destination_concurrency_negative_feedback
+transport_destination_concurrency_positive_feedback
+transport_destination_rate_delay
+transport_destination_recipient_limit
+transport_extra_recipient_limit
+transport_initial_destination_concurrency
+transport_minimum_delivery_slots
+transport_recipient_limit
+transport_recipient_refill_delay
+transport_recipient_refill_limit
+transport_transport_rate_delay
+EOF
+
+# Require that other per-service parameters are documented.
+
+cat <<EOF
+transport_time_limit
+EOF
+) | sort >want.tmp || exit 1
+
+# Report parameter names that have an implementation but no documentation.
+
+comm -23 want.tmp have.tmp
diff --git a/postfix/mantools/check-postconf-unimplemented b/postfix/mantools/check-postconf-unimplemented
new file mode 100644 (file)
index 0000000..9f5479f
--- /dev/null
@@ -0,0 +1,84 @@
+#!/bin/sh
+
+# Reports parameters that are documented in the postconf(5 mapage),
+# but not implemented according to postconf(1) output.
+
+LANG=C; export LANG
+LC_ALL=C; export LC_ALL
+
+bin/postconf mail_version >/dev/null || exit 1
+
+trap 'rm -f have.tmp want.tmp stoplist.tmp 2>/dev/null' 0 1 2 3 15
+
+# Extract the implemented parameter names from postconf(1) output, using
+# the stock configurations.
+
+bin/postconf -dHc conf | sort >have.tmp || exit 1
+
+# Build a stoplist for postconf(5) output.
+
+# Eliminate dynamic parameter names for delivery agents. These are
+# documented as transport_mumble.
+
+cat <<EOF >stoplist.tmp
+transport_delivery_slot_cost
+transport_delivery_slot_discount
+transport_delivery_slot_loan
+transport_destination_concurrency_failed_cohort_limit
+transport_destination_concurrency_limit
+transport_destination_concurrency_negative_feedback
+transport_destination_concurrency_positive_feedback
+transport_destination_rate_delay
+transport_destination_recipient_limit
+transport_extra_recipient_limit
+transport_initial_destination_concurrency
+transport_minimum_delivery_slots
+transport_recipient_limit
+transport_recipient_refill_delay
+transport_recipient_refill_limit
+transport_transport_rate_delay
+EOF
+
+# Eliminate other per-service transport_mumble parameters.
+
+cat <<EOF >>stoplist.tmp
+transport_time_limit
+EOF
+
+# Eliminate obsolete parameters. These are no longer implemented, but
+# still documented.
+
+cat >>stoplist.tmp <<'EOF'
+authorized_verp_clients
+enable_errors_to
+extract_recipient_limit
+fallback_relay
+lmtp_cache_connection
+lmtp_per_record_deadline
+postscreen_blacklist_action
+postscreen_dnsbl_ttl
+postscreen_dnsbl_whitelist_threshold
+postscreen_whitelist_interfaces
+sender_based_routing
+smtp_per_record_deadline
+smtp_skip_4xx_greeting
+smtp_tls_cipherlist
+smtpd_per_record_deadline
+smtpd_sasl_application_name
+smtpd_tls_cipherlist
+tls_dane_digest_agility
+tls_dane_trust_anchor_digest_enable
+tlsproxy_client_level
+tlsproxy_client_policy
+tlsproxy_tls_session_cache_timeout
+virtual_maps
+EOF
+
+# Extract parameters from the postconf(5) manpage.
+
+awk '/^%PARAM/ { print $2 }' proto/postconf.proto | 
+       grep -F -vx -f stoplist.tmp | sort > want.tmp || exit 1
+
+# Report names from the postconf(5) manpage that have no implementation.
+
+comm -23 want.tmp have.tmp
index a331c37da7640c3ec62f673a0b89a19cb084e411..c8a557767390e20c1f3d844db5396d203f43dcf9 100644 (file)
@@ -973,7 +973,27 @@ only to the SMTP command information; they have no access to the
 message header or body, and cannot make modifications to the message
 or to the envelope. </p>
 
-<li> <p> Postfix 2.6 ignores the optional ESMTP parameters in
+<li> <p> Postfix 3.3 and later support the ESMTP parameters RET and
+ENVID in requests to replace the envelope sender (SMFIR_CHGFROM).
+Postfix logs a warning message when a Milter application supplies
+other ESMTP parameters: </p>
+
+<pre>
+warning: <i>queue-id</i>: cleanup_chg_from: ignoring bad ESMTP
+    parameter "<i>whatever</i>" in SMFI_CHGFROM request
+</pre>
+
+<li> <p> Postfix 3.0 and later support the ESMTP parameters NOTIFY
+and ORCPT in requests to add an envelope recipient. Postfix logs a
+warning message when a Milter application supplies other ESMTP
+parameters: </p>
+
+<pre>
+warning: <i>queue-id</i>: cleanup_add_rcpt: ignoring ESMTP argument
+    from Milter or header/body_checks: "<i>whatever</i>"
+</pre>
+
+<li> <p> Postfix 2.6 and later ignore optional ESMTP parameters in
 requests to replace the sender (SMFIR_CHGFROM) or to append a
 recipient (SMFIR_ADDRCPT_PAR). Postfix logs a warning message when
 a Milter application supplies such ESMTP parameters: </p>
index 7b26017b0e72a5388fafe7ed1db82f3741b180c4..c0b57e705d7afc2358f7c4a80ab8d53aacba71f1 100644 (file)
@@ -2302,20 +2302,6 @@ one-letter suffix that specifies the time unit).  Time units: s
 (seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).  </p>
 
-%PARAM lmtp_lhlo_timeout 300s
-
-<p> The Postfix LMTP client time limit for receiving the LMTP
-greeting banner.  When the remote LMTP server drops the connection
-without sending a
-greeting banner, or when it sends no greeting banner within the
-deadline, the LMTP client tries the next address on the mail
-exchanger list.  </p>
-
-<p> Specify a non-zero time value (an integral value plus an optional
-one-letter suffix that specifies the time unit).  Time units: s
-(seconds), m (minutes), h (hours), d (days), w (weeks).
-The default time unit is s (seconds).  </p>
-
 %PARAM lmtp_mail_timeout 300s
 
 <p>
@@ -16090,7 +16076,7 @@ cache information. Since the cache is shared with smtpd(8) and managed
 by tlsmgr(8), there is only one expiration time for the SMTP server cache
 shared by all three services, namely smtpd_tls_session_cache_timeout. </p>
 
-<p> This feature is available in Postfix 2.8 and later. </p>
+<p> This feature is available in Postfix 2.8-2.10. </p>
 
 %PARAM tlsproxy_use_tls $smtpd_use_tls
 
index 8eea8ade5536b1d9f92e9de30ad43ff25afb01c3..8447195ea89f2c28cba37c36d485231f6d5708fc 100644 (file)
@@ -1655,3 +1655,5 @@ hs
 ccformat
 xxsql
 MEMCACHE
+ORCPT
+RET
index f0ef0c55b5595cd2f07e07909aa5416f71732f47..2276687a827b222b78c173463814000d5bef94c7 100644 (file)
@@ -146,3 +146,4 @@ proto  proto socketmap_table qmqpd qmqpd c tls tls_misc c
  a dependency for html html File html Makefile in 
  master dgram_server c master mail_server h postlogd postlogd c 
  reload etc File spawn spawn c 
+ logging to the standard error stream File postlog postlog c 
index e7fa73e8f44c5a3321b4505fa3f86c3391e59503..9a892a1d589ca3d310b299046bbd6e1f77d534f5 100644 (file)
@@ -95,3 +95,4 @@ mandoc
 v'expr
 roff
 diffs
+CLOSEFROM
index 1530eeb252c536bf9ead7d5655e780e45447385c..1c8881d84aac610caac8eabb75cfe1f5d6afcd41 100644 (file)
@@ -789,7 +789,7 @@ static void cleanup_header_done_callback(void *context)
                }
                if (token) {
                    tok822_externalize(state->temp2, token, TOK822_STR_NONE);
-                   tok822_free(token);
+                   tok822_free_tree(token);
                    vstring_strcat(state->temp2, " ");
                }
                vstring_sprintf_append(state->temp2, "<%s>",
index dcb9c71921b60aacedbd2526dd5eeac472226c91..ca3b424e950ebf56fb122e348c46f8bbe4fb74b7 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      "20241202"
+#define MAIL_RELEASE_DATE      "20250103"
 #define MAIL_VERSION_NUMBER    "3.10"
 
 #ifdef SNAPSHOT
index 195ebd91896ada2d144aa6e2033d32f09baff136..ce6b3c0f9c99e158c8419a0774cf83512d60dfc4 100644 (file)
 /*     line, \fBpostlog\fR(1) reads from standard input and logs each input
 /*     line as one record.
 /*
-/*     By default, logging is sent to \fBsyslogd\fR(8) or
-/*     \fBpostlogd\fR(8); when the
-/*     standard error stream is connected to a terminal, logging
-/*     is sent there as well.
+/*     Logging is sent to \fBsyslogd\fR(8) or \fBpostlogd\fR(8), and
+/*     to the standard error stream (with Postfix < 3.8, \fBpostlog\fR(1)
+/*     writes to the standard error stream only if that stream is
+/*     connected to a terminal).
 /*
 /*     The following options are implemented:
 /* .IP "\fB-c \fIconfig_dir\fR"
index 2f4b5e3ba91bf13d8ae8b0f8729592412ecafec0..937999f08f9cf6de93a75172a7d7f58481a26042 100644 (file)
@@ -1051,7 +1051,15 @@ void    tls_get_signature_params(TLS_SESS_STATE *TLScontext)
     if (SSL_version(ssl) < TLS1_3_VERSION)
        return;
 
-    if (tls_get_peer_dh_pubkey(ssl, &dh_pkey)) {
+    /*
+     * On the client side, a TLS 1.3 KEM has no server key, just ciphertext
+     * to decapsulate, but, as of OpenSSL 3.0, the client can still obtain
+     * the negotiated group name directly.
+     */
+    if (!kex_name)
+       kex_name = TLS_GROUP_NAME(ssl);
+
+    if (kex_name == NULL && tls_get_peer_dh_pubkey(ssl, &dh_pkey)) {
        switch (nid = EVP_PKEY_id(dh_pkey)) {
        default:
            kex_name = OBJ_nid2sn(EVP_PKEY_type(nid));
@@ -1079,16 +1087,6 @@ void    tls_get_signature_params(TLS_SESS_STATE *TLScontext)
        EVP_PKEY_free(dh_pkey);
     }
 
-    /*
-     * On the client side, a TLS 1.3 KEM has no server key, just ciphertext
-     * to decapsulate, but, as of OpenSSL 3.0, the client can still obtain
-     * the negotiated group name directly.  We nevertheless still try to get
-     * the group details from the peer key first, which works with OpenSSL
-     * 1.1.1 and retains the original output format for the (EC)DH groups.
-     */
-    if (!kex_name)
-       kex_name = TLS_GROUP_NAME(ssl);
-
     /*
      * On the client end, the certificate may be present, but not used, so we
      * check via SSL_get_signature_nid().  This means that local signature
index e9480a2d6532b4e5784189d189bd434af869230c..420a92b0505b3d134ab470c9b83227ee91e1ad3e 100644 (file)
@@ -39,6 +39,9 @@
 
 #include <sys_defs.h>
 #include <sys/ioctl.h>
+#ifdef SUNOS5
+#include <sys/socket.h>                        /* shutdown(2) */
+#endif
 #ifdef FIONREAD_IN_SYS_FILIO_H
 #include <sys/filio.h>
 #endif
index 8bf8e581dd8029a5633650ecebc17cf8b454b94a..a28deacdf8db3ddb55c4866ec4dbdb95b9ee57b6 100644 (file)
@@ -286,7 +286,7 @@ int     dup2_pass_on_exec(int oldd, int newd)
 
 /* closefrom() - closes all file descriptors from the given one up */
 
-int     closefrom(int lowfd)
+void    closefrom(int lowfd)
 {
     int     fd_limit = open_limit(0);
     int     fd;
@@ -298,14 +298,12 @@ int     closefrom(int lowfd)
      */
     if (lowfd < 0) {
        errno = EBADF;
-       return (-1);
+       return;
     }
     if (fd_limit > 500)
        fd_limit = 500;
     for (fd = lowfd; fd < fd_limit; fd++)
        (void) close(fd);
-
-    return (0);
 }
 
 #endif
index 62749ab574261cc01361528c6d9f41034b679412..70aab2366975ce90d80083ac02ff9188165d84a3 100644 (file)
@@ -1466,6 +1466,10 @@ typedef int WAIT_STATUS_T;
 #undef HAVE_POSIX_GETPW_R
 #endif
 
+#ifdef NO_CLOSEFROM
+#undef HAS_CLOSEFROM
+#endif
+
 #ifdef NO_DB
 #undef HAS_DB
 #endif
@@ -1526,7 +1530,7 @@ extern int setsid(void);
 #endif
 
 #ifndef HAS_CLOSEFROM
-extern int closefrom(int);
+extern void closefrom(int);
 
 #endif