]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-3.7.0-RC1 v3.7.0-RC1
authorWietse Venema <wietse@porcupine.org>
Sun, 23 Jan 2022 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <postfix-users@dukhovni.org>
Tue, 25 Jan 2022 16:47:34 +0000 (11:47 -0500)
postfix/HISTORY
postfix/README_FILES/LINUX_README
postfix/RELEASE_NOTES
postfix/html/LINUX_README.html
postfix/makedefs
postfix/proto/LINUX_README.html
postfix/proto/stop
postfix/proto/stop.spell-proto-html
postfix/src/global/mail_version.h

index a2d9c97e475154f86c49127abce607e01796cd12..d53113bbaf9b659ac0ad331cc30167ef1bd49070 100644 (file)
@@ -26240,3 +26240,9 @@ Apologies for any names omitted.
        defaults and updated documentation. Problem reported by
        Raf. Files: global/mail_params.h, mantools/postlink,
        postconf/postconf_builtin.c.
+
+20220123
+
+       Documentation: added LINUX_README sections for logging in
+       a container, and for systemd logging workarounds. File:
+       proto/LINUX_README.hmtl.
index 6330278a161466abce2c1fcc832243d612be3dfd..b8288798fb844fd063dc9b0cdf9076106027d79f 100644 (file)
@@ -47,6 +47,12 @@ mail spool directory. Workaround:
 
     # chmod 1777 /var/spool/mail
 
+L\bLo\bog\bgg\bgi\bin\bng\bg i\bin\bn a\ba c\bco\bon\bnt\bta\bai\bin\bne\ber\br
+
+When running Postfix inside a container, you can use stdout logging as
+described in MAILLOG_README. Alternatives: run syslogd inside the container, or
+mount the host's syslog socket inside the container.
+
 S\bSy\bys\bsl\blo\bog\bgd\bd p\bpe\ber\brf\bfo\bor\brm\bma\ban\bnc\bce\be
 
 LINUX s\bsy\bys\bsl\blo\bog\bgd\bd uses synchronous writes by default. Because of this, s\bsy\bys\bsl\blo\bog\bgd\bd can
@@ -59,3 +65,10 @@ synchronous mail logfile writes by editing /etc/syslog.conf and by prepending a
 
 Send a "k\bki\bil\bll\bl -\b-H\bHU\bUP\bP" to the s\bsy\bys\bsl\blo\bog\bgd\bd to make the change effective.
 
+O\bOt\bth\bhe\ber\br l\blo\bog\bgg\bgi\bin\bng\bg p\bpe\ber\brf\bfo\bor\brm\bma\ban\bnc\bce\be i\bis\bss\bsu\bue\bes\bs
+
+LINUX s\bsy\bys\bst\bte\bem\bmd\bd intercepts all logging and enforces its own rate limits before
+handing off requests to a backend such as r\brs\bsy\bys\bsl\blo\bog\bgd\bd or s\bsy\bys\bsl\blo\bog\bg-\b-n\bng\bg. On a busy mail
+server this can result in information loss. As a workaround, you can use
+Postfix's built-in logging as described in MAILLOG_README.
+
index e87e35ec0e193d13edfbeff1e113fc496a9785b8..fd6b9fce681d5495a605cac22f89ae0fa3a138da 100644 (file)
@@ -1,12 +1,12 @@
-This is the Postfix 3.7 (experimental) release.
+This is the Postfix 3.7 (stable) release.
 
-The stable Postfix release is called postfix-3.6.x where 3=major
-release number, 6=minor release number, x=patchlevel.  The stable
+The stable Postfix release is called postfix-3.7.x where 3=major
+release number, 7=minor release number, x=patchlevel.  The stable
 release never changes except for patches that address bugs or
 emergencies. Patches change the patchlevel and the release date.
 
 New features are developed in snapshot releases. These are called
-postfix-3.7-yyyymmdd where yyyymmdd is the release date (yyyy=year,
+postfix-3.8-yyyymmdd where yyyymmdd is the release date (yyyy=year,
 mm=month, dd=day).  Patches are never issued for snapshot releases;
 instead, a new snapshot is released.
 
@@ -25,26 +25,105 @@ more recent Eclipse Public License 2.0. Recipients can choose to take
 the software under the license of their choice. Those who are more
 comfortable with the IPL can continue with that license.
 
-Major changes with snapshot 20211127
-====================================
+Major changes - configuration
+-----------------------------
 
-Support for the pcre2 library (the legacy pcre library is no longer
-maintained). The Postfix build procedure automatically detects if
-the pcre2 library is installed, and if it is unavailable, the Postfix
-build procedure will detect if the legacy pcre library is installed.
-See PCRE_README if you need to build Postfix with a specific library.
+[Feature 20210605] Support to inline the content of small cidr,
+pcre, and regexp tables.
+
+Example:
+
+    smtpd_forbidden_commands =
+       CONNECT GET POST regexp:{{/^[^A-Z]/ Thrash}}
+
+The basic syntax is:
+
+/etc/postfix/main.cf:
+    parameter = .. map-type:{ { rule-1 }, { rule-2 } .. } ..
+
+/etc/postfix/master.cf:
+    .. -o { parameter = .. map-type:{ { rule-1 }, { rule-2 } .. } .. } ..
+
+where map-type is one of cidr, pcre, or regexp.
+
+Postfix ignores whitespace after '{' and before '}', and writes each
+rule as one text line to a nameless in-memory file: 
+
+in-memory file:
+    rule-1
+    rule-2
+    ..
+
+Postfix parses the result as if it is a file in /etc/postfix.
+
+Note: if a rule contains $, specify $$, to keep Postfix from trying
+to do $name expansion as it evaluates the parameter value.
+
+Major changes - lmdb support
+----------------------------
+
+[Feature 20210605] Overhauled the LMDB client implementation, added
+integration tests for future-proofing.
+
+Major changes - logging
+-----------------------
+
+[Feature 20210815] To make the maillog_file feature more useful,
+the postlog(1) command is now set-gid postdrop, so that unprivileged
+programs can write logging through the postlogd(8) daemon.  This
+required hardening the postlog(1) command against privilege escalation
+attacks.
+
+Major changes - pcre2 support
+-----------------------------
+
+[Feature 20211127] Support for the pcre2 library (the legacy pcre
+library is no longer maintained). The Postfix build procedure
+automatically detects if the pcre2 library is installed, and if it
+is unavailable, the Postfix build procedure will detect if the
+legacy pcre library is installed.  See PCRE_README if you need to
+build Postfix with a specific library.
 
 Visible differences: some error messages may have a different text,
 and the 'X' pattern flag is no longer supported with pcre2.
 
-Major changes with snapshot 20210815
-====================================
-
-Updated defense against remote clients or servers that 'trickle'
-SMTP or LMTP traffic. The new {smtpd,smtp,lmtp}_per_request_deadline
-parameters replace {smtpd,smtp,lmtp}_per_record_deadline, with
-backwards compatible default settings. This defense is enabled by
-default in the Postfix SMTP server in case of overload.
+Major changes - safety
+----------------------
+
+[Feature 20210926] Prevent sharing of xxx_tls_session_cache_database
+instances between different Postfix instances when a database is
+not multi-writer safe. These databases are now opened with a permanent
+lock. The tlsmgr(8) daemon will raise a fatal error when it attempts
+to open an xxx_tls_session_cache_database that is already opened
+by a different tlsmgr(8) process.
+
+Major changes - security
+------------------------
+
+[Feature 20220102] Postfix programs now randomize the initial state
+of in-memory hash tables, to defend against hash collision attacks
+involving a large number of attacker-chosen lookup keys.  Presently,
+the only known opportunity for such attacks involves remote SMTP
+client IPv6 addresses in the anvil(8) service. That would require
+making hundreds of short-lived connections per second, because the
+service ages out idle connections after 100s. Other tables with
+attacker-chosen lookup keys are by design limited in size. The fix
+is cheap, and therefore implemented for all Postfix in-memory hash
+tables. Problem reported by Pascal Junod.
+
+[Feature 20211030] The postqueue command now sanitizes non-printable
+characters in strings before they are formatted as json output or
+legacy output. These outputs are piped into other programs that are
+run by administrative users. This closes a hypothetical opportunity
+for privilege escalation.
+
+[Feature 20210815] Updated defense against remote clients or servers
+that 'trickle' SMTP or LMTP traffic. 
+
+The new {smtpd,smtp,lmtp}_per_request_deadline parameters replace
+{smtpd,smtp,lmtp}_per_record_deadline, with backwards compatible
+default settings. This defense is enabled by default in the Postfix
+SMTP server in case of overload.
 
 The new smtpd_per_record_deadline parameter limits the combined
 time for the Postfix SMTP server to receive a request and to send
@@ -66,33 +145,34 @@ to change.
 The new {smtp,lmtp}_min_data_rate parameters enforce the corresponding
 minimum DATA transfer rates for the Postfix SMTP and LMTP client.
 
-Major changes with snapshot 20210605
-====================================
+Major changes - tls support
+---------------------------
 
-Support to inline the content of small cidr, pcre, and regexp tables.
+[Incompat 20220121] Renamed tlsproxy_client_level to
+tlsproxy_client_security_level, and tlsproxy_client_policy to
+tlsproxy_client_policy_maps, for consistent parameter naming
+(tlsproxy_client_xxx corresponds to smtp_tls_xxx).
 
-Example:
+This change was made with backwards-compatible default settings,
+and with updated documentation.
 
-    smtpd_forbidden_commands =
-       CONNECT GET POST regexp:{{/^[^A-Z]/ Thrash}}
+[Feature 20210926] Postfix was updated to support OpenSSL 3.0.0
+features, and to work around OpenSSL 3.0.0 bit-rot (avoid using
+deprecated features).
 
-The basic syntax is:
+Other code health
+-----------------
 
-/etc/postfix/main.cf:
-    parameter = .. map-type:{ { rule-1 }, { rule-2 } .. } ..
-
-/etc/postfix/master.cf:
-    .. -o { parameter = .. map-type:{ { rule-1 }, { rule-2 } .. } .. } ..
+[typos] Typo fixes by raf.
 
-Postfix ignores whitespace after '{' and before '}', and writes each
-rule as one text line to an in-memory file: 
+[pre-release checks] Added pre-release checks to detect new typos,
+and missing entries in postfix-files (some documentation would not
+be installed), missing postlink rules (would result in missing
+hyperlinks in documentation), missing proxy_read_maps entries (the
+proxymap daemon would not automatically authorize some proxied maps).
 
-in-memory file:
-    rule-1
-    rule-2
-    ..
-
-Postfix parses the result as if it is a file in /etc/postfix.
+[memory stream] Improved support for memory-based streams made it
+possible to eliminate ad-hoc code that converted tlsproxy(8) protocol
+data to and from serialized form, and to inline small cidr:, pcre:,
+and regexp: maps in main.cf.
 
-Note: if a rule contains $, specify $$, to keep Postfix from trying to
-do $name expansion as it evaluates the parameter value.
index 84d16e20657e40310cfbde6a7bae0614d5905598..0d5b0eef50a751719dd7ed0df57bea1f678412ea 100644 (file)
@@ -81,6 +81,13 @@ to write to the mail spool directory. Workaround: </p>
 </pre>
 </blockquote>
 
+<h2>Logging in a container</h2>
+
+<p> When running Postfix inside a container, you can use stdout
+logging as described in <a href="MAILLOG_README.html">MAILLOG_README</a>. Alternatives: run syslogd
+inside the container, or mount the host's syslog socket inside the
+container. </p>
+
 <h2>Syslogd performance</h2>
 
 <p> LINUX <b>syslogd</b> uses synchronous writes by default. Because
@@ -99,6 +106,14 @@ logfile name:  </p>
 <p> Send a "<b>kill -HUP</b>" to the <b>syslogd</b> to make the
 change effective.  </p>
 
+<h2>Other logging performance issues</h2>
+
+<p> LINUX <b>systemd</b> intercepts all logging and enforces its
+own rate limits before handing off requests to a backend such as
+<b>rsyslogd</b> or <b>syslog-ng</b>. On a busy mail server this can
+result in information loss. As a workaround, you can use Postfix's
+built-in logging as described in <a href="MAILLOG_README.html">MAILLOG_README</a>. </p>
+
 </body>
 
 </html>
index 2839f3a8a89b35a227d1135ffd34a75c26329876..3937a49f2c63fed81dfb20e1b8120308ea067978 100644 (file)
@@ -954,7 +954,7 @@ case "$CC" in
 esac
 
 # Snapshot only.
-CCARGS="$CCARGS -DSNAPSHOT"
+#CCARGS="$CCARGS -DSNAPSHOT"
 
 # Non-production: needs thorough testing, or major changes are still
 # needed before the code stabilizes.
index f04375e319eecb5ac15e3d5c40bacae96d684b13..76c605f3a7df546d47ad94fe14cb1d163583a60a 100644 (file)
@@ -81,6 +81,13 @@ to write to the mail spool directory. Workaround: </p>
 </pre>
 </blockquote>
 
+<h2>Logging in a container</h2>
+
+<p> When running Postfix inside a container, you can use stdout
+logging as described in MAILLOG_README. Alternatives: run syslogd
+inside the container, or mount the host's syslog socket inside the
+container. </p>
+
 <h2>Syslogd performance</h2>
 
 <p> LINUX <b>syslogd</b> uses synchronous writes by default. Because
@@ -99,6 +106,14 @@ logfile name:  </p>
 <p> Send a "<b>kill -HUP</b>" to the <b>syslogd</b> to make the
 change effective.  </p>
 
+<h2>Other logging performance issues</h2>
+
+<p> LINUX <b>systemd</b> intercepts all logging and enforces its
+own rate limits before handing off requests to a backend such as
+<b>rsyslogd</b> or <b>syslog-ng</b>. On a busy mail server this can
+result in information loss. As a workaround, you can use Postfix's
+built-in logging as described in MAILLOG_README. </p>
+
 </body>
 
 </html>
index 930c11e351c329bf359b628f1f065a59e86103fd..8682f8e532942d075366adb340bbee14b41bd044 100644 (file)
@@ -1555,3 +1555,10 @@ BDAT
 IPL
 yyyy
 yyyymmdd
+Incompat
+Junod
+gid
+json
+postlogd
+proxied
+raf
index 937c984f5e1a93d43ad0c71301cace5151455784..a4ad7c594dd605674c3f652294e08ddf43a0ab78 100644 (file)
@@ -346,3 +346,5 @@ rs
 subj
 wiki
 JÃ
+ng
+rsyslogd
index 4d5bd1f7227391e325fc87595f57dc1097031130..3c5bf06da8f552fbe148ad19e59b34f1190f52ed 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      "20220121"
-#define MAIL_VERSION_NUMBER    "3.7"
+#define MAIL_RELEASE_DATE      "20220123"
+#define MAIL_VERSION_NUMBER    "3.7.0-RC1"
 
 #ifdef SNAPSHOT
 #define MAIL_VERSION_DATE      "-" MAIL_RELEASE_DATE