From 45b1555c81ee7e9345040ccdea115103a492fe05 Mon Sep 17 00:00:00 2001
From: Wietse Z Venema
Date: Mon, 2 Dec 2024 00:00:00 -0500
Subject: [PATCH] postfix-3.10-20241202
---
postfix/HISTORY | 55 +++++++++++++
postfix/README_FILES/LOCAL_RECIPIENT_README | 71 ++++++++++------
postfix/WISHLIST | 4 +
postfix/html/LOCAL_RECIPIENT_README.html | 82 ++++++++++++-------
postfix/html/Makefile.in | 3 +-
postfix/html/lmtp.8.html | 6 +-
postfix/html/postconf.5.html | 89 +++++++++-----------
postfix/html/smtp.8.html | 6 +-
postfix/html/spawn.8.html | 45 ++++++-----
postfix/man/man5/postconf.5 | 68 ++++++++--------
postfix/man/man8/smtp.8 | 4 +-
postfix/man/man8/spawn.8 | 53 ++++++------
postfix/mantools/dehtml | 6 +-
postfix/mantools/fixman | 2 +
postfix/mantools/postconf2man | 2 +
postfix/mantools/srctoman | 2 +
postfix/proto/LOCAL_RECIPIENT_README.html | 82 ++++++++++++-------
postfix/proto/postconf.proto | 90 ++++++++++-----------
postfix/proto/stop.double-history | 1 +
postfix/proto/stop.spell-history | 5 ++
postfix/src/cleanup/cleanup_message.c | 10 ++-
postfix/src/global/mail_version.h | 2 +-
postfix/src/smtp/smtp.c | 2 +-
postfix/src/spawn/spawn.c | 53 +++++++-----
postfix/src/util/Makefile.in | 1 +
postfix/src/util/spawn_command.c | 12 ++-
26 files changed, 461 insertions(+), 295 deletions(-)
diff --git a/postfix/HISTORY b/postfix/HISTORY
index afa2e42f1..91f24ead4 100644
--- a/postfix/HISTORY
+++ b/postfix/HISTORY
@@ -28582,3 +28582,58 @@ Apologies for any names omitted.
instead of a message buffer and length. This is in preparation
for unix-dgram support in a spawn(8)-like service. Files:
master/dgram_server.c, master/mail_server.h, postlogd/postlogd.c.
+
+20241122
+
+ Documentation: updated the LOCAL_RECIPIENT_README text, and
+ pointed there from the local_recipient_maps description in
+ postconf(5). Files: proto/LOCAL_RECIPIENT_README.html,
+ proto/postconf.proto.
+
+20241127
+
+ Documentation: default_delivery_status_filter text. File:
+ proto/postconf.proto.
+
+ Documentation: support to convert superscripts in postconf.proto
+ manpage text from HTML to *roff. The result is a compromise:
+ vertical motion (\v'expr') works with groff, but not with
+ the newer mandoc and with the older UNIX nroff. So we use
+ ^ instead. Files: mantools/fixman, mantools/postconf2man,
+ proto/postconf.proto.
+
+20241129
+
+ Bugfix (introduced: on or before 19891104): the manpage
+ extractor mis-formatted titles with multiple names. File:
+ mantools/srctoman.
+
+20241130
+
+ Bugfix (defect introduced: 19991230): the spawn daemon
+ failed to enforce the command time limit. It was sending
+ the SIGKILL signal using the wrong effective UID and GID.
+ The pipe daemon has always done this right. File:
+ util/spawn_command.c.
+
+20241201
+
+ Bugfix (defect introduced Postfix 3.0). Missing UTF8
+ autodetection for headers that are automatically generated
+ by Postfix (for example, a From: header with UTF8 full name
+ information from the password file). Reported by Michael
+ Tokarev. File: src/cleanup/cleanup_message.c.
+
+20241202
+
+ Cleanup: don't leak parent directory information into
+ documentation checks. File: mantools/dehtml.
+
+ Documentation: reverted a breaking change made 20241122.
+ File: html/Makefile.in.
+
+ Documentation: revised spawn(8) manpage text. This is all
+ that remains of a failed experiment to implement a
+ datagram-based spawn(8) service. It was too difficult to
+ enforce that processes terminate as expected after "postfix
+ reload" etc. File: spawn/spawn.c.
diff --git a/postfix/README_FILES/LOCAL_RECIPIENT_README b/postfix/README_FILES/LOCAL_RECIPIENT_README
index c8b97bdd4..f777c8602 100644
--- a/postfix/README_FILES/LOCAL_RECIPIENT_README
+++ b/postfix/README_FILES/LOCAL_RECIPIENT_README
@@ -21,7 +21,7 @@ recipients correctly.
* Configuring local_recipient_maps in main.cf
* When you need to change the local_recipient_maps setting in main.cf
- * Local recipient table format
+ * Local recipient table query format
CCoonnffiigguurriinngg llooccaall__rreecciippiieenntt__mmaappss iinn mmaaiinn..ccff
@@ -30,11 +30,13 @@ 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". Other Postfix interfaces may still accept an "unknown" recipient.
+table". Other interfaces such as the Postfix sendmail(1) command 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
-accounts or local aliases:
+accounts (typically, in /etc/passwd) or local aliases (typically, in /etc/
+aliases):
/etc/postfix/main.cf:
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
@@ -67,19 +69,19 @@ WWhheenn yyoouu nneeeedd ttoo cchhaannggee tthhee llooc
local_transport = virtual
local_recipient_maps = $virtual_mailbox_maps
- If you use a different delivery agent for $mydestination etc. domains, see
- the section "Local recipient table format" below for a description of how
- the table should be populated.
+ If you don't use the local(8) or virtual(8) delivery agent for
+ $mydestination etc. domains, see the section "Local recipient table format"
+ below for a description of how the table should be populated.
* Problem: you use the mailbox_transport or fallback_transport feature of the
Postfix local(8) delivery agent in order to deliver mail to non-UNIX
- accounts.
+ recipients.
- Solution: you need to add the database that lists the non-UNIX users:
+ Solution: you need to add the database that lists the non-UNIX recipients:
/etc/postfix/main.cf
local_recipient_maps = proxy:unix:passwd.byname, $alias_maps,
-
+
See the section "Local recipient table format" below for a description of
how the table should be populated.
@@ -88,30 +90,49 @@ WWhheenn yyoouu nneeeedd ttoo cchhaannggee tthhee llooc
agent.
Solution: you must disable the local_recipient_maps feature completely, so
- that Postfix accepts mail for all local addresses:
+ that the Postfix SMTP server accepts mail for all local addresses:
/etc/postfix/main.cf
local_recipient_maps =
-LLooccaall rreecciippiieenntt ttaabbllee ffoorrmmaatt
+LLooccaall rreecciippiieenntt ttaabbllee qquueerryy ffoorrmmaatt
-If you use local files in postmap(1) format, then local_recipient_maps expects
-the following table format:
+If local_recipient_maps specifies local files, such as files in postmap(1) or
+postalias(1) format, then the Postfix SMTP server generates the following
+queries:
- * In the left-hand side, specify a bare username, an "@domain.tld" wild-card,
- or specify a complete "user@domain.tld" address.
+ * The full recipient address. This query supports a non-default
+ local_transport setting with a delivery agent such as lmtp(8) or virtual
+ (8). See "Configuring local_recipient_maps in main.cf: for additional
+ guidance for what lookup tables to specify.
- * You have to specify something on the right-hand side of the table, but the
- value is ignored by local_recipient_maps.
+ * The recipient address local-part. This query supports the default
+ local_transport setting with the UNIX-compatible local(8) delivery agent;
+ the Postfix SMTP server makes this query only when the recipient domain
+ matches $mydestination, $inet_interfaces or $proxy_interfaces.
-If you use lookup tables based on NIS, LDAP, MYSQL, or PGSQL, then
-local_recipient_maps does the same queries as for local files in postmap(1)
-format, and expects the same results.
+ * The recipient @domain. This query supports a non-default local_transport
+ setting with a delivery agent such as virtual(8); it is a wildcard for
+ domains that do not have a valid recipient list.
-With regular expression tables, Postfix only queries with the full recipient
-address, and not with the bare username or the "@domain.tld" wild-card.
+NOTES:
-NOTE: a lookup table should always return a result when the address exists, and
-should always return "not found" when the address does not exist. In
-particular, a zero-length result does not count as a "not found" result.
+ * A lookup table should return a non-empty result when the address exists,
+ and should return "not found" when the address does not exist. In
+ particular, a zero-length (empty) result does not count as a "not found"
+ result.
+
+ * When local_recipient_maps specifies a lookup table based on ldap:,
+ memcache:, mongodb:, mysql:, pgsql:, sqlite:, or other external database,
+ then the Postfix SMTP server queries that lookup table with the same
+ queries as described at the start of this section, and expects the same
+ results.
+
+ * To suppress lookups for the local-part and the @domain wild-card, specify
+ the ddoommaaiinn setting in a Postfix ldap:, memcache:, mongodb:, mysql:, pgsql:,
+ sqlite:, etc., database client configuration file.
+
+ * When local_recipient_maps specifies a lookup table based on pcre:, regexp:,
+ socketmap: or tcp:, Postfix queries that table only with the full recipient
+ address, and not with the local-part or the @domain wild-card.
diff --git a/postfix/WISHLIST b/postfix/WISHLIST
index cbac5860d..0954a4254 100644
--- a/postfix/WISHLIST
+++ b/postfix/WISHLIST
@@ -2,6 +2,8 @@ Wish list:
Things to do before the stable release:
+ Make the spawn_command fix conditional on compatibility_level.
+
make pre-release-check, HTML validator check.
Disable -DSNAPSHOT and -DNONPROD in makedefs.
@@ -16,6 +18,8 @@ Wish list:
relay_recipient_maps empty should default to 'no valid
recipients'. Subject to compatibility level.
+ In mantools/postlink, allow newline etc. in "
When you need to change the local_recipient_maps
setting in main.cf
-Local recipient table format
+Local recipient table query format
@@ -58,11 +58,13 @@ local when its domain matches $mydestina
$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". Other
-Postfix interfaces may still accept an "unknown" recipient.
+interfaces such as the Postfix sendmail(1) command 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 accounts or local aliases:
+recipients are either UNIX accounts (typically, in /etc/passwd) or
+local aliases (typically, in /etc/aliases):
@@ -112,22 +114,23 @@ setting in main.cf
local_recipient_maps = $virtual_mailbox_maps
- If you use a different delivery agent for $mydestination
+
If you don't use the local(8) or virtual(8) delivery agent
+ for $mydestination
etc. domains, see the section "Local recipient
table format" below for a description of how the table
should be populated.
Problem: you use the mailbox_transport or fallback_transport
feature of the Postfix local(8) delivery agent in order to
- deliver mail to non-UNIX accounts.
+ deliver mail to non-UNIX recipients.
Solution: you need to add the database that lists the
- non-UNIX users:
+ non-UNIX recipients:
/etc/postfix/main.cf
local_recipient_maps = proxy:unix:passwd.byname, $alias_maps,
- <the database with non-UNIX accounts>
+ <the database with non-UNIX recipients>
See the section "Local recipient table
@@ -138,8 +141,8 @@ setting in main.cf
local delivery agent.
Solution: you must disable the local_recipient_maps feature
- completely, so that Postfix accepts mail for all local addresses:
-
+ completely, so that the Postfix SMTP server accepts mail for
+ all local addresses:
/etc/postfix/main.cf
@@ -148,34 +151,59 @@ setting in main.cf
-
+
- If you use local files in postmap(1) format, then
-local_recipient_maps expects the following table format:
+ If local_recipient_maps specifies local files, such as files in
+postmap(1) or postalias(1) format, then the Postfix SMTP server
+generates the following queries:
--
In the left-hand side, specify a bare username, an
-"@domain.tld" wild-card, or specify a complete "user@domain.tld"
-address.
+ -
The full recipient address. This query supports a non-default
+local_transport setting with a delivery agent such as lmtp(8) or
+virtual(8). See "Configuring local_recipient_maps
+in main.cf: for additional guidance for what lookup tables to
+specify.
- -
You have to specify something on the right-hand side of
-the table, but the value is ignored by local_recipient_maps.
+
-
The recipient address local-part. This query supports the
+default local_transport setting with the UNIX-compatible local(8)
+delivery agent; the Postfix SMTP server makes this query only when
+the recipient domain matches $mydestination, $inet_interfaces or
+$proxy_interfaces.
+
+ -
The recipient @domain. This query supports a non-default
+local_transport setting with a delivery agent such as virtual(8);
+it is a wildcard for domains that do not have a valid recipient
+list.
- If you use lookup tables based on NIS, LDAP, MYSQL, or PGSQL,
-then local_recipient_maps does the same queries as for local files
-in postmap(1) format, and expects the same results.
+ NOTES:
- With regular expression tables, Postfix only queries with the
-full recipient address, and not with the bare username or the
-"@domain.tld" wild-card.
+
- NOTE: a lookup table should always return a result when the address
-exists, and should always return "not found" when the address does
-not exist. In particular, a zero-length result does not count as
-a "not found" result.
+-
A lookup table should return a non-empty result when the
+address exists, and should return "not found" when the address does
+not exist. In particular, a zero-length (empty) result does not
+count as a "not found" result.
+
+ -
When local_recipient_maps specifies a lookup table based
+on ldap:, memcache:, mongodb:, mysql:, pgsql:, sqlite:, or other
+external database, then the Postfix SMTP server queries that lookup
+table with the same queries as described at the start of this
+section, and expects the same results.
+
+ -
To suppress lookups for the local-part and the
+@domain wild-card, specify the domain setting in a
+Postfix ldap:, memcache:, mongodb:, mysql:, pgsql:, sqlite:, etc.,
+database client configuration file.
+
+ -
When local_recipient_maps specifies a lookup table based
+on pcre:, regexp:, socketmap: or tcp:, Postfix queries that table
+only with the full recipient address, and not with the local-part
+or the @domain wild-card.
+
+
-SMTP,(LMTP) SMTP,(LMTP)
+SMTP(8) SMTP(8)
NAME
smtp, lmtp - Postfix SMTP+LMTP client
@@ -979,7 +979,7 @@ SMTP,(LMTP) SMTP,(LMTP)
delay_logging_resolution_limit (2)
The maximal number of digits after the decimal point when log-
- ging sub-second delay values.
+ ging delay values.
disable_dns_lookups (no)
Disable DNS lookups in the Postfix SMTP and LMTP clients.
@@ -1153,5 +1153,5 @@ SMTP,(LMTP) SMTP,(LMTP)
Victor Duchovni
Morgan Stanley
- 8 SMTP,(LMTP)
+ SMTP(8)