2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-08-22 09:57:34 +00:00

postfix-3.7-20210529

This commit is contained in:
Wietse Venema 2021-05-29 00:00:00 -05:00 committed by Viktor Dukhovni
parent 2595917e49
commit c0e76bc1f1
12 changed files with 167 additions and 120 deletions

View File

@ -25553,3 +25553,22 @@ Apologies for any names omitted.
Cleanup: in the Postfix SMTP and LMTP client, prepend Return-Path Cleanup: in the Postfix SMTP and LMTP client, prepend Return-Path
and other headers in the same order as in other Postfix delivery and other headers in the same order as in other Postfix delivery
agents. Adi Prasaja. File: smtp/smtp_proto.c. agents. Adi Prasaja. File: smtp/smtp_proto.c.
20210428
Documentation: update by Paul Menzel. File: proto/SASL_README.html.
20210529
Cleanup: simplified master.cf stanzas for the submission
and submissions (formerly: smtps) services, to avoid
surprising warnings for undefined mua_smtpd_xxx_restrictions
parameters. File: conf/master.cf.
Bugfix (introduced: Postfix 2.11): "postmap lmdb:/file/name"
handled duplicate keys ungracefully, with a dangling pointer
resulting in a double free() call with lmdb versions 0.9.17
and later. Reported by Adi Prasaja, root cause analysis by
Howard Chu. In addition, "postmap lmdb:/file/name" forgot
entries stored up to and including the duplicate key. File:
util/slmdb.c.

View File

@ -1313,7 +1313,7 @@ BBuuiillddiinngg CCyyrruuss SSAASSLL ssuuppppoorrtt
BBuuiillddiinngg tthhee CCyyrruuss SSAASSLL lliibbrraarryy BBuuiillddiinngg tthhee CCyyrruuss SSAASSLL lliibbrraarryy
Postfix works with cyrus-sasl-1.5.x or cyrus-sasl-2.1.x, which are available Postfix works with cyrus-sasl-1.5.x or cyrus-sasl-2.1.x, which are available
from ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/. from https://github.com/cyrusimap/cyrus-sasl/releases.
IImmppoorrttaanntt IImmppoorrttaanntt

View File

@ -25,6 +25,54 @@ more recent Eclipse Public License 2.0. Recipients can choose to take
the software under the license of their choice. Those who are more the software under the license of their choice. Those who are more
comfortable with the IPL can continue with that license. comfortable with the IPL can continue with that license.
Major changes - internal protocol identification
------------------------------------------------
[Incompat 20200920] Internal protocols have changed. You need to
"postfix stop" before updating, or before backing out to an earlier
release, otherwise long-running daemons (pickup, qmgr, verify, tlsproxy,
postscreen) may fail to communicate with the rest of Postfix, causing
mail delivery delays until Postfix is restarted.
This change does not affect message files in Postfix queue directories,
only the communication between running Postfix programs.
With this change, every Postfix internal service, including the postdrop
command, announces the name of its protocol before doing any other I/O.
Every Postfix client program, including the Postfix sendmail command,
will verify that the protocol name matches what it is supposed to be.
The purpose of this change is to produce better error messages, for
example, when someone configures the discard daemon as a bounce
service in master.cf, or vice versa.
This change may break third-party programs that implement a
Postfix-internal protocol such as qpsmtpd. Such programs have never
been supported. Fortunately, this will be an easy fix: look at the
first data from the cleanup daemon: if it is a protocol announcement,
you're talking to Postfix 3.6 or later. That's the only real change.
Major changes - tls
-------------------
[Incompat 20200705] The minimum supported OpenSSL version is 1.1.1,
which will reach the end of life by 2023-09-11. Postfix 3.6 is
expected to reach the end of support in 2025. Until then, Postfix
will be updated as needed for compatibility with OpenSSL.
The default fingerprint digest has changed from md5 to sha256 (Postfix
3.6 with compatibility_level >= 3.6). With a lower compatibility_level
setting, Postfix defaults to using md5, and logs a warning when a Postfix
configuration specifies no explicit digest type.
Export-grade Diffie-Hellman key exchange is no longer supported,
and the tlsproxy_tls_dh512_param_file parameter is ignored,
[Feature 20200906] The tlstype.pl helper script by Viktor Dukhovni
reports TLS information per message delivery. This processes output
from the collate.pl script. See auxiliary/collate/README.tlstype and
auxiliary/collate/tlstype.pl.
Major changes - compatibility level Major changes - compatibility level
----------------------------------- -----------------------------------
@ -37,75 +85,17 @@ omitted and defaults to zero. Earlier compatibility levels are 0, 1 and 2.
This also introduces main.cf and master.cf support for the <=level, This also introduces main.cf and master.cf support for the <=level,
<level, and other operators to compare compatibility levels. With the <level, and other operators to compare compatibility levels. With the
standard <=, <, etc. operators, compatibility level 3.10 would be less standard <=, <, etc. operators, compatibility level 3.10 would be less
than 3.9. which is undesirable. than 3.9, which is undesirable.
Major changes - delivery logging Major changes - services(5) override
-------------------------------- ------------------------------------
[Incompat 20200531] Postfix delivery agents now log an explicit record [Feature 20210418] Postfix no longer uses the services(5) database
when delegating delivery to a different Postfix delivery agent. to look up the TCP ports for SMTP and LMTP services. Instead, this
information is configured with the new known_tcp_ports configuration
For example, with "best_mx_transport = local", an SMTP delivery parameter (default: lmtp=24, smtp=25, smtps=submissions=465,
agent will now log when a recipient will be delivered locally. This submission=587). When a service is not specified in known_tcp_ports,
makes the delegating delivery agent visible, where it would otherwise Postfix will still query the services(5) database.
have remained invisible, which would complicate troubleshooting.
postfix/smtp[pid]: queueid: passing <recipient> to transport=local
This will usually be followed by logging for an actual delivery:
postfix/local[pid]: queueid: to=<recipient>, relay=local, ...
Other examples: the local delivery agent defers mailbox delivery
through mailbox_transport or through fallback_transport.
Major changes - dns lookups
---------------------------
[Feature 20200509] The threadsafe resolver API (res_nxxx() calls) is now
the default, not because the API is threadsafe, but because new features
are being added there.
To build old style, build with:
make makefiles CCARGS="-DNO_RES_NCALLS..."
This is also the default for systems that are known not to support
the threadsafe resolver API.
Major changes - error logging
-----------------------------
[Incompat 20200531] Postfix programs will now log "Application error"
instead of "Success" or "Unknown error: 0" when an operation fails with
errno == 0.
Major changes - internal protocol identification
------------------------------------------------
[Incompat 20200920] Internal protocols have changed. You need to
"postfix stop" before updating, or before backing out to an earlier
release, otherwise long-running daemons (pickup, qmgr, verify, tlsproxy,
postscreen) may fail to communicate with the rest of Postfix, causing
warnings or timeouts.
The purpose of this change is to produce better error messages, for
example, when someone configures the discard daemon as a bounce
service in master.cf, or vice versa.
This change will break third-party programs that implement a
Postfix-internal protocol such as qpsmtpd. This is not a Postfix bug:
programs that depend on Postfix internal details have never been
supported.
Major changes - known tcp ports
-------------------------------
[Feature 20210418] The new "known_tcp_ports" configuration parameter
reduces Postfix dependency on the services(5) database. On some systems
the port 465 service is called "smtps", and on other systems it is called
"submissions". The default known_tcp_ports value is "lmtp=24, smtp=25,
smtps=submissions=465, submission=587".
Major changes - local_login_sender_maps Major changes - local_login_sender_maps
--------------------------------------- ---------------------------------------
@ -120,8 +110,8 @@ space or comma. The default is backwards-compatible: every user may
specify any sender envelope address. specify any sender envelope address.
This feature is enforced by the postdrop command. When no UNIX login This feature is enforced by the postdrop command. When no UNIX login
name is available, the Postfix postdrop command will prepend "uid:" name is available, the postdrop command will prepend "uid:" to the
to the numerical UID and use that instead. numerical UID and use that instead.
This feature ignores address extensions in the user-specified This feature ignores address extensions in the user-specified
envelope sender address. envelope sender address.
@ -223,19 +213,13 @@ no" permanent in main.cf, for example:
To stop the reminder, configure the respectful_logging parameter to To stop the reminder, configure the respectful_logging parameter to
"yes" or "no", or configure "compatibility_level = 3.6". "yes" or "no", or configure "compatibility_level = 3.6".
Major changes - smtpd_sasl_mechanism_list
-----------------------------------------
[Feature 20200906] The smtpd_sasl_mechanism_list parameter (default:
!external, static:rest) prevents confusing errors when a SASL backend
announces EXTERNAL support which Postfix does not support.
Major changes - threaded bounces Major changes - threaded bounces
-------------------------------- --------------------------------
[Feature 20201205] Support for threaded bounces. This allows mail readers [Feature 20201205] Support for threaded bounces. This allows mail
to present a bounce, delay, or success delivery notification in the same readers to present a non-delivery, delayed delivery, or successful
email thread as the original message. delivery notification in the same email thread as the original
message.
Unfortunately, this also makes it easy for users to mistakenly delete Unfortunately, this also makes it easy for users to mistakenly delete
the whole email thread (all related messages), instead of deleting the whole email thread (all related messages), instead of deleting
@ -243,22 +227,51 @@ only the delivery status notification.
To enable, specify "enable_threaded_bounces = yes". To enable, specify "enable_threaded_bounces = yes".
Major changes - tls Other changes - smtpd_sasl_mechanism_list
------------------- -----------------------------------------
[Incompat 20200705] The minimum OpenSSL version is 1.1.1, which will [Feature 20200906] The smtpd_sasl_mechanism_list parameter (default:
reach the end of life by 2023-09-11. !external, static:rest) prevents confusing errors when a SASL backend
announces EXTERNAL support which Postfix does not support.
The default digest has changed from md5 to sha256 (Postfix 3.6 with Other changes - delivery logging
compatibility_level >= 3). With a lower compatibility_level setting, --------------------------------
Postfix defaults to using md5, and logs a warning when a Postfix
configuration specifies no explicit digest type.
Export-grade Diffie-Hellman key exchange is no longer supported, [Incompat 20200531] Postfix delivery agents now log an explicit record
and the tlsproxy_tls_dh512_param_file parameter is ignored, when delegating delivery to a different Postfix delivery agent.
[Feature 20200906] The tlstype.pl helper script by Viktor Dukhovni For example, with "best_mx_transport = local", an SMTP delivery
reports TLS information per message delivery. This processes output agent will now log when a recipient will be delivered locally. This
from the collate.pl script. See auxiliary/collate/README.tlstype and makes the delegating delivery agent visible, where it would otherwise
auxiliary/collate/tlstype.pl. have remained invisible, which would complicate troubleshooting.
postfix/smtp[pid]: queueid: passing <recipient> to transport=local
This will usually be followed by logging for an actual delivery:
postfix/local[pid]: queueid: to=<recipient>, relay=local, ...
Other examples: the local delivery agent will log a record that it
defers mailbox delivery through mailbox_transport or through
fallback_transport.
Other changes - error logging
-----------------------------
[Incompat 20200531] Postfix programs will now log "Application error"
instead of "Success" or "Unknown error: 0" when an operation fails with
errno == 0, i.e., the error originates from non-kernel code.
Other changes - dns lookups
---------------------------
[Feature 20200509] The threadsafe resolver API (res_nxxx() calls)
is now the default, not because the API is threadsafe, but because
this is the API where new features are being added.
To build old style, build with:
make makefiles CCARGS="-DNO_RES_NCALLS..."
This is the default for systems that are known not to support the
threadsafe resolver API.

View File

@ -22,24 +22,32 @@ smtp inet n - n - - smtpd
# -o smtpd_sasl_auth_enable=yes # -o smtpd_sasl_auth_enable=yes
# -o smtpd_tls_auth_only=yes # -o smtpd_tls_auth_only=yes
# -o smtpd_reject_unlisted_recipient=no # -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions # Instead of specifying complex smtpd_<xxx>_restrictions here,
# -o smtpd_helo_restrictions=$mua_helo_restrictions # specify "smtpd_<xxx>_restrictions=$mua_<xxx>_restrictions"
# -o smtpd_sender_restrictions=$mua_sender_restrictions # here, and specify mua_<xxx>_restrictions in main.cf (where
# -o smtpd_recipient_restrictions= # "<xxx>" is "client", "helo", "sender", "relay", or "recipient").
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject # -o smtpd_client_restrictions=
# -o smtpd_helo_restrictions=
# -o smtpd_sender_restrictions=
# -o smtpd_relay_restrictions=
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING # -o milter_macro_daemon_name=ORIGINATING
# Choose one: enable smtps for loopback clients only, or for any client. # Choose one: enable submssions for loopback clients only, or for any client.
#127.0.0.1:smtps inet n - n - - smtpd #127.0.0.1:submssions inet n - n - - smtpd
#smtps inet n - n - - smtpd #submssions inet n - n - - smtpd
# -o syslog_name=postfix/smtps # -o syslog_name=postfix/submissions
# -o smtpd_tls_wrappermode=yes # -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes # -o smtpd_sasl_auth_enable=yes
# -o smtpd_reject_unlisted_recipient=no # -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions # Instead of specifying complex smtpd_<xxx>_restrictions here,
# -o smtpd_helo_restrictions=$mua_helo_restrictions # specify "smtpd_<xxx>_restrictions=$mua_<xxx>_restrictions"
# -o smtpd_sender_restrictions=$mua_sender_restrictions # here, and specify mua_<xxx>_restrictions in main.cf (where
# -o smtpd_recipient_restrictions= # "<xxx>" is "client", "helo", "sender", "relay", or "recipient").
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject # -o smtpd_client_restrictions=
# -o smtpd_helo_restrictions=
# -o smtpd_sender_restrictions=
# -o smtpd_relay_restrictions=
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING # -o milter_macro_daemon_name=ORIGINATING
#628 inet n - n - - qmqpd #628 inet n - n - - qmqpd
pickup unix n - n 60 1 pickup pickup unix n - n 60 1 pickup

View File

@ -2077,7 +2077,7 @@ options into the above command line; see the <a href="LDAP_README.html">LDAP_REA
<h4><a name="build_sasl">Building the Cyrus SASL library</a></h4> <h4><a name="build_sasl">Building the Cyrus SASL library</a></h4>
<p> Postfix works with cyrus-sasl-1.5.x or cyrus-sasl-2.1.x, which are <p> Postfix works with cyrus-sasl-1.5.x or cyrus-sasl-2.1.x, which are
available from <a href="ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/">ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/</a>. </p> available from <a href="https://github.com/cyrusimap/cyrus-sasl/releases">https://github.com/cyrusimap/cyrus-sasl/releases</a>. </p>
<blockquote> <blockquote>

View File

@ -7676,7 +7676,8 @@ separator. See the <a href="MILTER_README.html">MILTER_README</a> document for d
(default: resource, software)</b></DT><DD> (default: resource, software)</b></DT><DD>
<p> <p>
The list of error classes that are reported to the postmaster. The The list of error classes that are reported to the postmaster. These
postmaster notifications do not replace user notifications. The
default is to report only the most serious problems. The paranoid default is to report only the most serious problems. The paranoid
may wish to turn on the policy (UCE and mail relaying) and protocol may wish to turn on the policy (UCE and mail relaying) and protocol
error (broken mail software) reports. error (broken mail software) reports.
@ -11330,7 +11331,7 @@ href="https://tools.ietf.org/html/rfc7672">DANE</a> is not applicable
to hosts resolved via "native" lookups. </p> to hosts resolved via "native" lookups. </p>
<p> As mentioned above, Postfix is not a validating <a <p> As mentioned above, Postfix is not a validating <a
href="https://tools.ietf.org/html/rfc4035#section-4.9">stub href="<a href="https://tools.ietf.org/html/rfc4035#section-4.9">https://tools.ietf.org/html/rfc4035#section-4.9</a>">stub
resolver</a>; it relies on the system's configured DNSSEC-validating resolver</a>; it relies on the system's configured DNSSEC-validating
<a href="https://tools.ietf.org/html/rfc4035#section-3.2">recursive <a href="https://tools.ietf.org/html/rfc4035#section-3.2">recursive
nameserver</a> to perform all DNSSEC validation. Since this nameserver</a> to perform all DNSSEC validation. Since this
@ -18768,7 +18769,7 @@ whitespace. Each digest name may be followed by an optional
"=&lt;number&gt;" suffix. For example, "sha512" may instead be specified "=&lt;number&gt;" suffix. For example, "sha512" may instead be specified
as "sha512=2" and "sha256" may instead be specified as "sha256=1". as "sha512=2" and "sha256" may instead be specified as "sha256=1".
The optional number must match the <a The optional number must match the <a
href="https://www.iana.org/assignments/dane-parameters/dane-parameters.xhtml#matching-types" href="<a href="https://www.iana.org/assignments/dane-parameters/dane-parameters.xhtml#matching-types">https://www.iana.org/assignments/dane-parameters/dane-parameters.xhtml#matching-types</a>"
>IANA</a> assigned TLSA matching type number the algorithm in question. >IANA</a> assigned TLSA matching type number the algorithm in question.
Postfix will check this constraint for the algorithms it knows about. Postfix will check this constraint for the algorithms it knows about.
Additional matching type algorithms registered with IANA can be added Additional matching type algorithms registered with IANA can be added
@ -18935,7 +18936,7 @@ is unwise to choose an "bleeding-edge" curve supported by only a
small subset of clients. </p> small subset of clients. </p>
<p> The default "strong" curve is rated in NSA <a <p> The default "strong" curve is rated in NSA <a
href="https://web.archive.org/web/20160330034144/https://www.nsa.gov/ia/programs/suiteb_cryptography/">Suite href="<a href="https://web.archive.org/web/20160330034144/https://www.nsa.gov/ia/programs/suiteb_cryptography/">https://web.archive.org/web/20160330034144/https://www.nsa.gov/ia/programs/suiteb_cryptography/</a>">Suite
B</a> for information classified up to SECRET. </p> B</a> for information classified up to SECRET. </p>
<p> Note: elliptic curve names are poorly standardized; different <p> Note: elliptic curve names are poorly standardized; different
@ -18976,7 +18977,7 @@ curve must be implemented by OpenSSL (as reported by ecparam(1) with the
of <a href="http://tools.ietf.org/html/rfc4492">RFC 4492</a>. You should not generally change this setting. </p> of <a href="http://tools.ietf.org/html/rfc4492">RFC 4492</a>. You should not generally change this setting. </p>
<p> This default "ultra" curve is rated in NSA <a <p> This default "ultra" curve is rated in NSA <a
href="https://web.archive.org/web/20160330034144/https://www.nsa.gov/ia/programs/suiteb_cryptography/">Suite href="<a href="https://web.archive.org/web/20160330034144/https://www.nsa.gov/ia/programs/suiteb_cryptography/">https://web.archive.org/web/20160330034144/https://www.nsa.gov/ia/programs/suiteb_cryptography/</a>">Suite
B</a> for information classified up to TOP SECRET. </p> B</a> for information classified up to TOP SECRET. </p>
<p> If you want to take maximal advantage of ciphers that offer <a <p> If you want to take maximal advantage of ciphers that offer <a

View File

@ -4733,7 +4733,8 @@ separator. See the MILTER_README document for details.
.PP .PP
This feature is available in Postfix 2.3 and later. This feature is available in Postfix 2.3 and later.
.SH notify_classes (default: resource, software) .SH notify_classes (default: resource, software)
The list of error classes that are reported to the postmaster. The The list of error classes that are reported to the postmaster. These
postmaster notifications do not replace user notifications. The
default is to report only the most serious problems. The paranoid default is to report only the most serious problems. The paranoid
may wish to turn on the policy (UCE and mail relaying) and protocol may wish to turn on the policy (UCE and mail relaying) and protocol
error (broken mail software) reports. error (broken mail software) reports.

View File

@ -1148,7 +1148,7 @@ while (<>) {
# Hyperlink URLs and RFC documents # Hyperlink URLs and RFC documents
s/(http:\/\/[^ ,"\(\)]*[^ ,"\(\):;!?.])/<a href="$1">$1<\/a>/; s/(https?:\/\/[^ ,"\(\)]*[^ ,"\(\):;!?.])/<a href="$1">$1<\/a>/;
s/(ftp:\/\/[^ ,"\(\)]*[^ ,"\(\):;!?.])/<a href="$1">$1<\/a>/; s/(ftp:\/\/[^ ,"\(\)]*[^ ,"\(\):;!?.])/<a href="$1">$1<\/a>/;
s/\bRFC\s*([1-9]\d*)/<a href="http:\/\/tools.ietf.org\/html\/rfc$1">$&<\/a>/g; s/\bRFC\s*([1-9]\d*)/<a href="http:\/\/tools.ietf.org\/html\/rfc$1">$&<\/a>/g;

View File

@ -2077,7 +2077,7 @@ TLS_README for details. </p>
<h4><a name="build_sasl">Building the Cyrus SASL library</a></h4> <h4><a name="build_sasl">Building the Cyrus SASL library</a></h4>
<p> Postfix works with cyrus-sasl-1.5.x or cyrus-sasl-2.1.x, which are <p> Postfix works with cyrus-sasl-1.5.x or cyrus-sasl-2.1.x, which are
available from ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/. </p> available from https://github.com/cyrusimap/cyrus-sasl/releases. </p>
<blockquote> <blockquote>

View File

@ -3149,7 +3149,8 @@ myorigin = $mydomain
%PARAM notify_classes resource, software %PARAM notify_classes resource, software
<p> <p>
The list of error classes that are reported to the postmaster. The The list of error classes that are reported to the postmaster. These
postmaster notifications do not replace user notifications. The
default is to report only the most serious problems. The paranoid default is to report only the most serious problems. The paranoid
may wish to turn on the policy (UCE and mail relaying) and protocol may wish to turn on the policy (UCE and mail relaying) and protocol
error (broken mail software) reports. error (broken mail software) reports.

View File

@ -20,7 +20,7 @@
* Patches change both the patchlevel and the release date. Snapshots have no * Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only. * patchlevel; they change the release date only.
*/ */
#define MAIL_RELEASE_DATE "20210424" #define MAIL_RELEASE_DATE "20210529"
#define MAIL_VERSION_NUMBER "3.7" #define MAIL_VERSION_NUMBER "3.7"
#ifdef SNAPSHOT #ifdef SNAPSHOT

View File

@ -582,11 +582,15 @@ int slmdb_put(SLMDB *slmdb, MDB_val *mdb_key,
* Do the update. * Do the update.
*/ */
if ((status = mdb_put(txn, slmdb->dbi, mdb_key, mdb_value, flags)) != 0) { if ((status = mdb_put(txn, slmdb->dbi, mdb_key, mdb_value, flags)) != 0) {
mdb_txn_abort(txn);
if (status != MDB_KEYEXIST) { if (status != MDB_KEYEXIST) {
mdb_txn_abort(txn);
if ((status = slmdb_recover(slmdb, status)) == 0) if ((status = slmdb_recover(slmdb, status)) == 0)
status = slmdb_put(slmdb, mdb_key, mdb_value, flags); status = slmdb_put(slmdb, mdb_key, mdb_value, flags);
SLMDB_API_RETURN(slmdb, status); SLMDB_API_RETURN(slmdb, status);
} else {
/* Key exists, abort non-bulk transaction only. */
if (slmdb->txn == 0)
mdb_txn_abort(txn);
} }
} }