xref: /netbsd-src/external/ibm-public/postfix/dist/RELEASE_NOTES-2.9 (revision cef8759bd76c1b621f8eab8faa6f208faabc2e15)
1The stable Postfix release is called postfix-2.9.x where 2=major
2release number, 9=minor release number, x=patchlevel.  The stable
3release never changes except for patches that address bugs or
4emergencies. Patches change the patchlevel and the release date.
5
6New features are developed in snapshot releases. These are called
7postfix-2.10-yyyymmdd where yyyymmdd is the release date (yyyy=year,
8mm=month, dd=day).  Patches are never issued for snapshot releases;
9instead, a new snapshot is released.
10
11The mail_release_date configuration parameter (format: yyyymmdd)
12specifies the release date of a stable release or snapshot release.
13
14If you upgrade from Postfix 2.7 or earlier, read RELEASE_NOTES-2.8
15before proceeding.
16
17Major changes - critical
18------------------------
19
20[Incompat 20110321] You need to "postfix reload" after upgrade from
21snapshot 20110320 or earlier.  The hash_queue_names algorithm was
22changed to provide better performance with long queue IDs.
23
24[Incompat 20110313] Use "postfix reload" after "make upgrade" on a
25running Postfix system. This is needed because the protocol between
26postscreen(8) and dnsblog(8) has changed.
27
28Major changes - library API
29---------------------------
30
31[Incompat 20110130] The VSTREAM error flags are now split into
32separate read and write error flags. As a result of this change,
33all programs that use Postfix VSTREAMs MUST be recompiled.
34
35Major changes - compatibility
36-----------------------------
37
38[Incompat 20111012] For consistency with the SMTP standard, the
39(client-side) smtp_line_length_limit default value was increased
40from 990 characters to 999 (i.e. 1000 characters including <CR><LF>).
41Specify "smtp_line_length_limit = 990" to restore historical Postfix
42behavior.
43
44[Incompat 20111012] To simplify integration with third-party
45applications, the Postfix sendmail command now always transforms
46all input lines ending in <CR><LF> into UNIX format (lines ending
47in <LF>). Specify "sendmail_fix_line_endings = strict" to restore
48historical Postfix behavior (i.e. convert all input lines ending
49in <CR><LF> only if the first line ends in <CR><LF>).
50
51[Incompat 20111106] To work around broken remote SMTP servers, the
52Postfix SMTP client by default no longer appends the "AUTH=<>"
53option to the MAIL FROM command.  Specify "smtp_send_dummy_mail_auth
54= yes" to restore the old behavior.
55
56Major changes - gradual degradation
57-----------------------------------
58
59[Incompat 20120114] Logfile-based alerting systems may need to be
60updated to look for "error" messages in addition to "fatal" messages.
61Specify "daemon_table_open_error_is_fatal = yes" to get the historical
62behavior (immediate termination with "fatal" message).
63
64[Feature 20120114] Instead of terminating immediately with a "fatal"
65message when a database file can't be opened, a Postfix daemon
66program now logs an "error" message, and continues execution with
67reduced functionality.  For the sake of sanity, the number of
68"errors" over the life of a process is limited to 13.
69
70Features that don't depend on the unavailable table will continue
71to work; attempts to use features that depend on the table will
72fail, and will be logged with a "warning" message.
73
74[Feature 20120108] Instead of terminating with a fatal error, the
75LDAP, *SQL and memcache clients now handle table lookup errors in
76the "domain" feature, instead of terminating with a fatal error.
77
78[Feature 20120102] Degrade gradually when some or all network
79protocols specified with inet_protocols are unavailable, instead
80of terminating with a fatal error. This eliminates build errors on
81non-standard systems where opening an IPv4 socket results in an
82error, and on non-standard systems where opening an IPv6 socket
83results in an error. In the worst case, the master daemon will log
84a message that it disables all type "inet" services. This will still
85allow local submission and local delivery.
86
87[Feature 20111222] Instead of terminating with a fatal error, the
88Postfix SMTP server now handles errors with database lookups in
89mynetworks, TLS client certificate tables, debug_peer_list,
90smtpd_client_event_limit_exceptions, permit_mx_backup_networks and
91local_header_rewrite_clients, and reports "server local data error"
92or "temporary lookup error".
93
94[Feature 20111229] Instead of terminating with a fatal error, the
95trivial-rewrite server now handles errors with database lookups in
96virtual_alias_domains, relay_domains, virtual_mailbox_domains.  This
97means fewer occasions where trivial-rewrite clients (such as the
98SMTP server) will appear to hang.
99
100Major changes - long queue IDs
101------------------------------
102
103Postfix 2.9 introduces support for non-repeating queue IDs (also
104used as queue file names). These names are encoded in a mix of upper
105case, lower case and decimal digit characters.  Long queue IDs are
106disabled by default to avoid breaking tools that parse logfiles and
107that expect queue IDs with the smaller [A-F0-9] character set.
108
109[Incompat 20110320] If you enable support for long queue file names,
110you need to be aware that these file names are not compatible with
111Postfix <= 2.8.  If you must migrate back to Postfix <= 2.8, you
112must first convert all long queue file names into short names,
113otherwise the old Postfix version will complain.
114
115The conversion procedure before migration to Postfix <= 2.8 is:
116
117    # postfix stop
118    # postconf enable_long_queue_ids=no
119    # postsuper
120
121Run the postsuper command repeatedly until it no longer reports
122queue file name changes.
123
124[Feature 20110320] Support for long, non-repeating, queue IDs (queue
125file names).  The benefit of non-repeating names is simpler logfile
126analysis, and easier queue migration (if you don't merge different
127queues, there is no need to run "postsuper" to change queue file
128names that don't match their message file inode number).
129
130Specify "enable_long_queue_ids = yes" to enable the feature. This
131does not change the names of existing queue files. See postconf(5)
132or postconf.5.html#enable_long_queue_ids for a detailed description
133of the differences with the old short queue IDs.
134
135This changes new Postfix queue IDs from the short form 0FCEE9247A9
136into the longer form 3Ps0FS1Zhtz1PFjb, and changes new Message-ID
137header values from YYMMDDHHMMSS.queueid@myhostname into the shorter
138form queueid@myhostname.
139
140Major changes - memcache
141------------------------
142
143[Feature 20111209] memcache lookup and update support. This provides
144a way to share postscreen(8) or verify(8) caches between Postfix
145instances.  See MEMCACHE_README and memcache_table(5) for details
146and limitations.
147
148[Feature 20111213] Support for a persistent backup database in the
149memcache client.  The memcache client updates the memcache whenever
150it looks up or modifies information in the persistent database.
151
152Major changes - postconf
153------------------------
154
155The postconf command was restructured - it now warns about unused
156parameter name=value settings in main.cf or master.cf (likely to
157be mistakes), it now understands "dynamic" parameter names such as
158parameters whose name depends on the name of a master.cf entry, and
159it can display main.cf and master.cf in a more user-friendly format.
160
161[Feature 20120117] support for legacy database parameter names
162(main.cf parameter names that are generated by prepending a suffix
163to the database name).
164
165[Feature 20111118] The "postconf -M" (display master.cf) command
166now supports filtering.  For example, specify "postconf -M inet"
167to display only services that listen on the network.
168
169[Feature 20111113] postconf support to warn about unused "name=value"
170entries in main.cf, and about unused "-o name=value" entries in
171master.cf.  This should help to eliminate common errors with mis-typed
172names.
173
174[Feature 20111108] postconf support for parameter names that are
175generated automatically from master.cf entries (delivery agents,
176spawn services), and for parameter names that are defined with
177main.cf smtpd_restriction_classes.
178
179[Feature 20111106] "postconf -M" support to print master.cf entries,
180and "postconf -f" support to fold long main.cf or master.cf lines
181for human readability.
182
183Major changes - trickle defense
184-------------------------------
185
186[Feature 20110212] Support for per-record deadlines.  These change
187the behavior of Postfix timeout parameters, from a time limit per
188read or write system call, to a time limit to send or receive a
189complete record (an SMTP command line, SMTP response line, SMTP
190message content line, or TLS protocol message).  This limits the
191impact from hostile peers that trickle data one byte at a time.
192
193The new configuration parameters and their default settings are:
194smtpd_per_record_deadline (normal: no, overload: yes),
195smtp_per_record_deadline (no), and lmtp_per_record_deadline (no).
196
197Note: when per-record deadlines are enabled, a short time limit may
198cause problems with TLS over very slow network connections.  The
199reason is that a TLS protocol message can be up to 16 kbytes long
200(with TLSv1), and that an entire TLS protocol message must be sent
201or received within the per-record deadline.
202
203Per-record deadlines were introduced with postscreen(8) in Postfix
2042.8. This program does not receive mail, and therefore it has no
205problems with TLS over slow connections.
206
207Major changes - postscreen
208--------------------------
209
210[Feature 20111211] The proxymap(8) server can now be used to share
211postscreen(8) or verify(8) caches between Postfix instances.  Support
212for proxymap-over-TCP, to share a Postfix database between hosts,
213is expected to be completed in the Postfix 2.10 development cycle.
214
215[Feature 20111209] memcache lookup and update support. This provides
216a way to share postscreen(8) or verify(8) caches between Postfix
217instances.
218
219[Feature 20110228] postscreen(8) support to force remote SMTP clients
220to implement proper MX lookup policy.  By listening on both primary
221and backup MX addresses, postscreen(8) can deny the temporary
222whitelist status to clients that connect only to backup MX hosts,
223and prevent them from talking to a Postfix SMTP server process.
224
225Example: when 1.2.3.4 is a local backup IP address, specify
226"postscreen_whitelist_interfaces = !1.2.3.4 static:all".
227
228Major changes - tls
229-------------------
230
231[Incompat 20111205] Postfix now logs the result of successful TLS
232negotiation with TLS logging levels of 0. See the smtp_tls_loglevel
233and smtpd_tls_loglevel descriptions in the postconf(5) manpage for
234other minor differences.
235
236[Feature 20111205] Support for TLS public key fingerprint matching
237in the Postfix SMTP client (in smtp_tls_policy_maps) and server (in
238check_ccert access maps).  Public key fingerprints are inherently
239more specific than fingerprints over the entire certificate.
240
241[Feature 20111205] Revision of Postfix TLS logging. The main
242difference is that Postfix now logs the result of successful TLS
243negotiation with TLS logging levels of 0.  See the smtp_tls_loglevel
244and smtpd_tls_loglevel descriptions in the postconf(5) manpage for
245other minor differences.
246
247Major changes - sasl authentication
248-----------------------------------
249
250[Incompat 20111218] To support external SASL authentication, e.g.,
251in an NGINX proxy daemon, the Postfix SMTP server now always checks
252the smtpd_sender_login_maps table, even without having
253"smtpd_sasl_auth_enable = yes" in main.cf.
254
255[Feature 20111218] Support for external SASL authentication via the
256XCLIENT command.  This is used to accept SASL authentication from
257an SMTP proxy such as NGINX. This support works even without having
258to specify "smtpd_sasl_auth_enable = yes" in main.cf.
259
260[Incompat 20111106] To work around broken remote SMTP servers, the
261Postfix SMTP client by default no longer appends the "AUTH=<>"
262option to the MAIL FROM command.  Specify "smtp_send_dummy_mail_auth
263= yes" to restore the old behavior.
264
265Major changes - large file support
266----------------------------------
267
268[Feature 20110219] Postfix now uses long integers for message_size_limit,
269mailbox_size_limit and virtual_mailbox_limit. On LP64 systems (64-bit
270long and pointer, but 32-bit integer), these limits can now exceed
2712GB.
272
273Major changes - ipv6
274--------------------
275
276[Incompat 20110918] The following changes were made in default
277settings, in preparation for general availability of IPv6:
278
279- The default inet_protocols value is now "all" instead of "ipv4",
280  meaning use both IPv4 and IPv6.
281
282  To avoid an unexpected loss of performance for sites without
283  global IPv6 connectivity, the commands "make upgrade" and "postfix
284  upgrade-configuration" now append "inet_protocols = ipv4" to
285  main.cf when no explicit inet_protocols setting is already present.
286  This workaround will be removed in a future release.
287
288- The default smtp_address_preference value is now "any" instead
289  of "ipv6", meaning choose randomly between IPv6 and IPv4. With
290  this the Postfix SMTP client will have more success delivering
291  mail to sites that have problematic IPv6 configurations.
292
293Major changes - address verification
294------------------------------------
295
296[Feature 20111211] The proxymap(8) server can now be used to share
297postscreen(8) or verify(8) caches between Postfix instances.  Support
298for proxymap-over-TCP, to share a Postfix database between hosts,
299is expected to be completed in the Postfix 2.10 development cycle.
300
301[Feature 20111209] memcache lookup and update support. This provides
302a way to share postscreen(8) or verify(8) caches between Postfix
303instances.
304
305[Feature 20111203] Support for time-dependent sender addresses
306of address verification probes. The default address, double-bounce,
307may end up on spammer blacklists. Although Postfix discards mail
308for this address, such mail still uses up network bandwidth and
309server resources. Specify an address_verify_sender_ttl value of
310several hours or more to frustrate address harvesting.
311
312Major changes - session transcript notification
313-----------------------------------------------
314
315[Incompat 20120114] By default the Postfix SMTP server no longer
316reports transcripts of sessions where a client command is rejected
317because a lookup table is unavailable. Postfix now implements gradual
318degradation, for example, the SMTP server keeps running instead of
319terminating with a fatal error. This change in error handling would
320result in a very large number of "transcript of session" email
321notifications when an LDAP or *SQL server goes down).
322
323To receive such reports, add the new "data" class to the notify_classes
324parameter value. The reports will be sent to the error_notice_recipient
325address as before.  This class is also used by the Postfix SMTP
326client to report about sessions that fail because a table is
327unavailable.
328
329Major changes - logging
330----------------------------------------
331
332[Incompat 20120114] Logfile-based alerting systems may need to be
333updated to look for "error" messages in addition to "fatal" messages.
334Specify "daemon_table_open_error_is_fatal = yes" to get the historical
335behavior (immediate termination with "fatal" message).
336
337[Incompat 20111214] Logfile-based analysis tools may need to be
338updated. The submission and smtps examples in the sample master.cf
339file were updated to make their logging easier to distinguish.
340
341See the source file pflogsumm_quickfix.txt for a "quick fix".
342
343[Incompat 20111205] Postfix now logs the result of successful TLS
344negotiation with TLS logging levels of 0. See the smtp_tls_loglevel
345and smtpd_tls_loglevel descriptions in the postconf(5) manpage for
346other minor differences.
347
348[Incompat 20110219] The Postfix SMTP and QMQP servers now log
349"hostname X does not resolve to address Y", when a "reverse hostname"
350lookup result does not resolve to the client IP address. Until now
351these servers logged "Y: hostname X verification failed" or "Y:
352address not listed for hostname X" which people found confusing.
353