-This is the Postfix 3.2 (experimental) release.
+This is the Postfix 3.2 (stable) release.
-The stable Postfix release is called postfix-3.1.x where 3=major
-release number, 1=minor release number, x=patchlevel. The stable
+The stable Postfix release is called postfix-3.2.x where 3=major
+release number, 2=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.2-yyyymmdd where yyyymmdd is the release date (yyyy=year,
+postfix-3.3-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.
If you upgrade from Postfix 3.0 or earlier, read RELEASE_NOTES-3.1
before proceeding.
-Incompatible changes with snapshot 20161227
-===========================================
+Invisible changes
+-----------------
+
+In addition to the visible changes described below, there is an
+ongoing overhaul of low-level code. With each change come updated
+tests to ensure that future changes will not 'break' compatibility
+with past behavior.
+
+Major changes - address mapping
+-------------------------------
+
+[Feature 20170128] Postfix 3.2 fixes the handling of address
+extensions with email addresses that contain spaces. For example,
+the virtual_alias_maps, canonical_maps, and smtp_generic_maps
+features now correctly propagate an address extension from "aa
+bb+ext"@example.com to "cc dd+ext"@other.example, instead of
+producing broken output.
+
+Major changes - header/body_checks
+----------------------------------
+
+[Feature 20161008] "PASS" and "STRIP" actions in header/body_checks.
+"STRIP" is similar to "IGNORE" but also logs the action, and "PASS"
+disables header, body, and Milter inspection for the remainder of
+the message content. Contributed by Hobbit.
+
+Major changes - log analysis
+----------------------------
+
+[Feature 20160330] The collate.pl script by Viktor Dukhovni for
+grouping Postfix logfile records into "sessions" based on queue ID
+and process ID information. It's in the auxiliary/collate directory
+of the Postfix source tree.
+
+Major changes - maps support
+----------------------------
+
+[Feature 20160527] Postfix 3.2 cidr tables support if/endif and
+negation (by prepending ! to a pattern), just like regexp and pcre
+tables. The primarily purpose is to improve readability of complex
+tables. See the cidr_table(5) manpage for syntax details.
+
+[Incompat 20160925] In the Postfix MySQL database client, the default
+option_group value has changed to "client", to enable reading of
+"client" option group settings in the MySQL options file. This fixes
+a "not found" problem with Postfix queries that contain UTF8-encoded
+non-ASCII text. Specify an empty option_group value (option_group
+=) to get backwards-compatible behavior.
+
+[Feature 20161217] Stored-procedure support for MySQL databases.
+Contributed by John Fawcett. See mysql_table(5) for instructions.
+
+[Feature 20170128] The postmap command, and the inline: and texthash:
+maps now support spaces in left-hand field of the lookup table
+"source text". Use double quotes (") around a left-hand field that
+contains spaces, and use backslash (\) to protect embedded quotes
+in a left-hand field. There is no change in the processing of the
+right-hand field.
+
+Major changes - milter support
+------------------------------
+
+[Feature 20160611] The Postfix SMTP server local IP address and
+port are available in the policy delegation protocol (attribute
+names: server_address, server_port), in the Milter protocol (macro
+names: {daemon_addr}, {daemon_port}), and in the XCLIENT protocol
+(attribute names: DESTADDR, DESTPORT).
+
+[Feature 20161024] smtpd_milter_maps support for per-client Milter
+configuration that overrides smtpd_milters, and that has the same
+syntax. A lookup result of "DISABLE" turns off Milter support. See
+MILTER_README.html for details.
+
+Major changes - policy delegation
+---------------------------------
+
+[Feature 20160611] The Postfix SMTP server local IP address and
+port are available in the policy delegation protocol (attribute
+names: server_address, server_port), in the Milter protocol (macro
+names: {daemon_addr}, {daemon_port}), and in the XCLIENT protocol
+(attribute names: DESTADDR, DESTPORT).
+
+Major changes - postqueue
+-------------------------
+
+[Incompat 20170129] The postqueue command no longer forces all
+message arrival times to be reported in UTC. To get the old behavior,
+set TZ=UTC in main.cf:import_environment (this override is not
+recommended, as it affects all Postfix utities and daemons).
+
+Major changes - safety
+----------------------
+
+[Incompat 20161227] For safety reasons, the sendmail -C option must
+specify an authorized directory: the default configuration directory,
+a directory that is listed in the default main.cf file with
+alternate_config_directories or multi_instance_directories, or the
+command must be invoked with root privileges (UID 0 and EUID 0).
+This mitigates a recurring problem with the PHP mail() function.
+
+Major changes - sasl
+--------------------
+
+[Feature 20160625] The Postfix SMTP server now passes remote client
+and local server network address and port information to the Cyrus
+SASL library. Build with ``make makefiles "CCARGS=$CCARGS
+-DNO_IP_CYRUS_SASL_AUTH"'' for backwards compatibility.
+
+Major changes - smtputf8
+------------------------
+
+[Feature 20161103] Postfix 3.2 disables the 'transitional' compatibility
+between the IDNA2003 and IDNA2008 standards for internationalized
+domain names (domain names beyond the limits of US-ASCII).
+
+This change makes Postfix behavior consistent with contemporary web
+browsers. It affects the handling of some corner cases such as
+German sz and Greek zeta. See http://unicode.org/cldr/utility/idna.jsp
+for more examples.
+
+Specify "enable_idna2003_compatibility = yes" to restore historical
+behavior (but keep in mind that the rest of the world may not make
+that same choice).
+
+Major changes - tls
+-------------------
+
+[Feature 20160828] Fixes for deprecated OpenSSL 1.1.0 API features,
+so that Postfix will build without depending on backwards-compatibility
+support.
+
+[Incompat 20161204] Postfix 3.2 removes tentative features that
+were implemented before the DANE spec was finalized:
-For safety reasons, the sendmail -C option must specify an authorized
-directory: the default configuration directory, a directory that
-is listed in the default main.cf file with alternate_config_directories
-or multi_instance_directories, or the command must be invoked with
-root privileges. This mitigates a problem with the PHP mail()
-function.
+- Support for certificate usage PKIX-EE(1),
+
+- The ability to disable digest agility (Postfix now behaves as if
+ "tls_dane_digest_agility = on"), and
-Major changes with snapshot 20161227
-====================================
-
-Support to negotiate Elliptic curves with OpenSSL 1.0.2 or later
-(on platforms where EC algorithms have not been disabled by the
-vendor). See TLS_README for details. In summary, this changes the
-default smtpd_tls_eecdh_grade setting to "auto", and introduces a
-new parameter tls_eecdh_auto_curves with the names of curves that
-may be negotiated. The default tls_eecdh_auto_curves setting is
-determined at compile time, and depends on the Postfix and OpenSSL
-versions. At runtime, Postfix will skip curve names that aren't
-supported by the OpenSSL library.
-
-The MySQL client now has support for stored procedures. See the
-mysql_table(5) manpage for details.
+- The ability to disable support for "TLSA 2 [01] [12]" records
+ that specify the digest of a trust anchor (Postfix now behaves
+ as if "tls_dane_trust_anchor_digest_enable = yes).
-Incompatible changes with snapshot 20161204
-===========================================
+[Feature 20161217] Postfix 3.2 enables elliptic curve negotiation
+with OpenSSL >= 1.0.2. This changes the default smtpd_tls_eecdh_grade
+setting to "auto", and introduces a new parameter tls_eecdh_auto_curves
+with the names of curves that may be negotiated.
-Postfix 3.2 removes tentative features that were implemented
-before the DANE spec was finalized:
+The default tls_eecdh_auto_curves setting is determined at compile
+time, and depends on the Postfix and OpenSSL versions. At runtime,
+Postfix will skip curve names that aren't supported by the OpenSSL
+library.
-- Support for certificate usage PKIX-EE(1),
+Major changes - xclient
+-----------------------
-- The ability to disable digest agility. Postfix 3.2 always behaves
- as if "tls_dane_digest_agility = on.
+[Feature 20160611] The Postfix SMTP server local IP address and
+port are available in the policy delegation protocol (attribute
+names: server_address, server_port), in the Milter protocol (macro
+names: {daemon_addr}, {daemon_port}), and in the XCLIENT protocol
+(attribute names: DESTADDR, DESTPORT).
-- The ability to disable support for "TLSA 2 [01] [12]" records
- that specify the digest of a trust anchor. Postfix 3.2 always
- behaves as if "tls_dane_trust_anchor_digest_enable = yes".
-
-Incompatible changes with snapshot 20161103
-===========================================
-
-Postfix 3.2 by default disables the 'transitional' compatibility
-between IDNA2003 and IDNA2008, when converting UTF-8 domain names
-to/from the ASCII form that is used in DNS lookups. This makes
-Postfix behavior consistent with current versions of the Firefox
-and Chrome web browsers. Specify "enable_idna2003_compatibility =
-yes" for historical behavior.
-
-This affects the conversion of, for example, the German sz and the
-Greek zeta. See http://unicode.org/cldr/utility/idna.jsp for more
-examples.
-
-Major changes with snapshot 20161031
-====================================
-
-The smtpd_milter_maps feature supports per-client Milter configuration.
-This overrides the global smtpd_milters setting and has the same syntax. A
-lookup result of "DISABLE" turns off Milter support.
-
-Incompatible changes with snapshot 20160925
-===========================================
-
-In the Postfix MySQL database client, the default option_group value
-has changed to "client", to enable reading of "client" option group
-settings in the MySQL options file. This fixes a "not found" problem
-with Postfix queries that contain UTF8-encoded non-ASCII text.
-Specify an empty option_group value (option_group =) to get
-backwards-compatible behavior.
-
-Major changes with snapshot 20160625
-====================================
-
-Support in the Postfix SMTP server for propagating the local SMTP
-server IP address and port. This affects the following Postfix
-interfaces:
-
-- Policy delegation. The server address and port are available as
-"server_address" and "server_port". See SMTPD_POLICY_README for an
-overview of available attributes.
-
-- Milter applications. The server address and port are available
-as "{daemon_addr}" and "{daemon_port}". See MILTER_README for a
-table of available attributes.
-
-- Cyrus SASL. The server address and port are now passed to the
-sasl_server_new() function as "ipaddress;port".
-
-- XCLIENT protocol. The server address and port can be specified
-as "DESTADDR" and "DESTPORT". See XCLIENT_README for a description
-of the attribute syntax. The new attributes may be of interest for
-nxginx.
-
-Major changes with snapshot 20160527
-====================================
-
-Postfix cidr tables now support if..endif, and pattern negation
-with "!", just like regexp and pcre tables. The if..endif can speed
-up lookups by skipping over irrelevant patterns, and can make rule
-maintenance easier because rules for a network can now be placed
-inside if..endif. See the cidr_table(5) manpage for syntax details.