1This is the Postfix 3.4 (stable) release. 2 3The stable Postfix release is called postfix-3.4.x where 3=major 4release number, 4=minor release number, x=patchlevel. The stable 5release never changes except for patches that address bugs or 6emergencies. Patches change the patchlevel and the release date. 7 8New features are developed in snapshot releases. These are called 9postfix-3.5-yyyymmdd where yyyymmdd is the release date (yyyy=year, 10mm=month, dd=day). Patches are never issued for snapshot releases; 11instead, a new snapshot is released. 12 13The mail_release_date configuration parameter (format: yyyymmdd) 14specifies the release date of a stable release or snapshot release. 15 16If you upgrade from Postfix 3.2 or earlier, read RELEASE_NOTES-3.3 17before proceeding. 18 19License change 20--------------- 21 22This software is distributed with a dual license: in addition to the 23historical IBM Public License 1.0, it is now also distributed with the 24more recent Eclipse Public License 2.0. Recipients can choose to take 25the software under the license of their choice. Those who are more 26comfortable with the IPL can continue with that license. 27 28Summary of changes 29------------------ 30 31Incompatible changes, bdat support, containers, database support, 32logging, safety, tls connection pooling, tls support, usability, 33 34Incompatible changes 35-------------------- 36 37[Incompat 20180826] The Postfix SMTP server announces CHUNKING (BDAT 38command) by default. In the unlikely case that this breaks some 39important remote SMTP client, disable the feature as follows: 40 41/etc/postfix/main.cf: 42 # The logging alternative: 43 smtpd_discard_ehlo_keywords = chunking 44 # The non-logging alternative: 45 smtpd_discard_ehlo_keywords = chunking, silent_discard 46 47See BDAT_README for more. 48 49[Incompat 20190126] This introduces a new master.cf service 'postlog' 50with type 'unix-dgram' that is used by the new postlogd(8) daemon. 51Before backing out to an older Postfix version, edit the master.cf 52file and remove the postlog entry. 53 54[Incompat 20190106] Postfix 3.4 drops support for OpenSSL 1.0.1 55(end-of-life was December 31, 2016) and all earlier releases. 56 57[Incompat 20180701] To avoid performance loss under load, the 58tlsproxy(8) daemon now requires a zero process limit in master.cf 59(this setting is provided with the default master.cf file). By 60default, a tlsproxy(8) process will retire after several hours. 61 62To set the tlsproxy process limit to zero: 63 64# postconf -F tlsproxy/unix/process_limit=0 65# postfix reload 66 67Major changes - bdat support 68-------------------- 69 70[Feature 20180826] Postfix SMTP server support for RFC 3030 CHUNKING 71(the BDAT command) without BINARYMIME, in both smtpd(8) and 72postscreen(8). This has no effect on Milters, smtpd_mumble_restrictions, 73and smtpd_proxy_filter. See BDAT_README for more. 74 75Major changes - containers 76-------------------------- 77 78[Feature 20190126] Support for logging to file or stdout, instead 79of using syslog. 80 81- Logging to file solves a usability problem for MacOS, and 82 eliminates multiple problems with systemd-based systems. 83 84- Logging to stdout is useful when Postfix runs in a container, as 85 it eliminates a syslogd dependency. 86 87See MAILLOG_README for configuration examples and logfile rotation. 88 89[Feature 20180422] Better handling of undocumented(!) Linux behavior 90whether or not signals are delivered to a PID=1 process. 91 92Major changes - database support 93-------------------------------- 94 95[Feature 20181105] Support for (key, list of filenames) in map 96source text. 97 98- Currently, this feature is used only by tls_server_sni_maps. 99 100- When a map is created from source with "postmap -F maptype:mapname", 101 the command processes each key as usual and processes each value 102 as a list of filenames, concatenates the content of those files 103 (with one newline character in-between files), and stores an entry 104 with (key, base64-encoded result). 105 106- When a map is queried with "postmap -F -q ...", the command 107 base64-decodes each value. It reports an error when a value is 108 not in base64 form. 109 110 This "postmap -F -q ..." behavior also works when querying the 111 memory-resident map types cidr:, inline:, pcre:, randmap:, regexp:, 112 and static:. Postfix reads the files specified as table values, 113 stores base64-encoded content, and base64-decodes content upon 114 table lookup. 115 116 Internally, Postfix will turn on this behavior for lookups (not 117 updates) when a map is opened with the DICT_FLAG_RHS_IS_FILE flag. 118 119Major changes - logging 120----------------------- 121 122[Feature 20190126] Support for logging to file or stdout, instead 123of using syslog. 124 125- Logging to file solves a usability problem for MacOS, and 126 eliminates multiple problems with systemd-based systems. 127 128- Logging to stdout is useful when Postfix runs in a container, as 129 it eliminates a syslogd dependency. 130 131See MAILLOG_README for configuration examples and logfile rotation. 132 133Major changes - safety 134---------------------- 135 136[Feature 20180623] Automatic retirement: dnsblog(8) and tlsproxy(8) process 137will now voluntarily retire after after max_idle*max_use, or some 138sane limit if either limit is disabled. Without this, a process 139could stay busy for days or more. 140 141Major changes - tls connection pooling 142-------------------------------------- 143 144[Feature 20180617] Postfix SMTP client support for multiple deliveries 145per TLS-encrypted connection. This is primarily to improve mail 146delivery performance for destinations that throttle clients when 147they don't combine deliveries. 148 149This feature is enabled with "smtp_tls_connection_reuse=yes" in 150main.cf, or with "tls_connection_reuse=yes" in smtp_tls_policy_maps. 151It supports all Postfix TLS security levels including dane and 152dane-only. 153 154The implementation of TLS connection reuse relies on the same 155scache(8) service as used for delivering plaintext SMTP mail, the 156same tlsproxy(8) daemon as used by the postscreen(8) service for 157inbound connections, and relies on the same hints from the qmgr(8) 158daemon. It reuses the configuration parameters described in 159CONNECTION_CACHE_README. 160 161The Postfix SMTP client now logs whether an SMTP-over-TLS connection 162is newly established ("TLS connection established") or whether the 163connection is reused ("TLS connection reused"). 164 165The following illustrates how TLS connections are reused: 166 167 Initial plaintext SMTP handshake: 168 smtp(8) -> remote SMTP server 169 170 Reused SMTP/TLS connection, or new SMTP/TLS connection: 171 smtp(8) -> tlsproxy(8) -> remote SMTP server 172 173 Cached SMTP/TLS connection: 174 scache(8) -> tlsproxy(8) -> remote SMTP server 175 176Major changes - tls support 177--------------------------- 178 179[Feature 20190106] SNI support in the Postfix SMTP server, the 180Postfix SMTP client, and in the tlsproxy(8) daemon (both server and 181client roles). See the postconf(5) documentation for the new 182tls_server_sni_maps and smtp_tls_servername parameters. 183 184[Feature 20190106] Support for files that contain multiple (key, 185certificate, trust chain) instances. This was required to implement 186server-side SNI table lookups, but it also eliminates the need for 187separate cert/key files for RSA, DSA, Elliptic Curve, and so on. 188The file format is documented in the TLS_README sections "Server-side 189certificate and private key configuration" and "Client-side certificate 190and private key configuration", and in the postconf(5) documentation 191for the parameters smtp_tls_chain_files, smtpd_tls_chain_files, 192tlsproxy_client_chain_files, and tlsproxy_tls_chain_files. 193 194Note: the command "postfix tls" does not yet support the new 195consolidated certificate chain format. If you switch to the new 196format, you'll need to manage your keys and certificates directly, 197rather than via postfix-tls(1). 198 199Major changes - usability 200------------------------- 201 202[Feature 20180812] Support for smtpd_reject_footer_maps (as well 203as the postscreen variant postscreen_reject_footer_maps) for more 204informative reject messages. This is indexed with the Postfix SMTP 205server response text, and overrides the footer specified with 206smtpd_reject_footer. One will want to use a pcre: or regexp: map 207with this. 208 209