xref: /netbsd-src/external/ibm-public/postfix/dist/RELEASE_NOTES-2.3 (revision 7d3af8c6a2070d16ec6d1aef203d052d6683100d)
1The stable Postfix release is called postfix-2.3.x where 2=major
2release number, 3=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.4-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
14Critical notes
15--------------
16
17See RELEASE_NOTES_2.2 if you upgrade from Postfix 2.1 or earlier.
18
19Some Postfix internal protocols have changed.  You need to "postfix
20reload" or restart Postfix, otherwise many servers will log warning
21messages like "unexpected attribute xxx" or "problem talking to
22service yyy", and mail will not be delivered.
23
24The Sendmail-compatible Milter support introduces three new queue
25file record types. As long as you leave this feature turned off,
26you can still go back to Postfix version 2.2 without losing mail
27that was received by Postfix 2.3.
28
29Major changes - DNS lookups
30---------------------------
31
32[Incompat 20050726] Name server replies that contain a malformed
33hostname are now flagged as permanent errors instead of transient
34errors. This change works around a questionable proposal to use
35syntactically invalid hostnames in MX records.
36
37Major changes - DSN
38-------------------
39
40[Feature 20050615] DSN support as described in RFC 3461 .. RFC 3464.
41This gives senders control over successful and failed delivery
42notifications.  DSN involves extra parameters to the SMTP "MAIL
43FROM" and "RCPT TO" commands, as well as extra Postfix sendmail
44command line options for mail submission.
45
46See DSN_README for details. Some implementation notes can be found
47in implementation-notes/DSN.
48
49[Incompat 20050615] The new DSN support conflicts with VERP support.
50For Sendmail compatibility, Postfix now uses the sendmail -V command
51line option for DSN.  To request VERP style delivery, you must now
52specify -XV instead of -V.  The Postfix sendmail command will
53recognize if you try to use -V for VERP-style delivery.  It will
54usually do the right thing, and remind you of the new syntax.
55
56[Incompat 20050828] Postfix no longer sends DSN SUCCESS notification
57after virtual alias expansions when the cleanup server rejects the
58content or size of mail that was submitted with the Postfix sendmail
59command, mail that was forwarded with the local(8) delivery agent,
60or mail that was re-queued with "postsuper -r". Since all the
61recipients are reported as failed, the SUCCESS notification seems
62redundant.
63
64Major changes - LMTP client
65---------------------------
66
67See the "SASL authentication" and "TLS" sections for changes related
68to SASL authentication and TLS support, respectively.
69
70[Feature 20051208] The SMTP client now implements the LMTP protocol.
71Most but not all smtp_xxx parameters now have an lmtp_xxx equivalent.
72This means there are lot of new LMTP features, including support
73for TLS and for the shared connection cache. See the "SMTP client"
74section for details.
75
76[Incompat 20051208] The LMTP client now reports the server as
77"myhostname[/path/name]".  With the real server hostname in delivery
78status reports, the information will be more useful.
79
80Major changes - Milter support
81------------------------------
82
83[Feature 20060515] Milter (mail filter) application support,
84compatible with Sendmail version 8.13.6 and earlier. This allows
85you to run a large number of plug-ins to reject unwanted mail, and
86to sign mail with for example domain keys. All Milter functions are
87implemented except replacing the message body, which will be added
88later. Milters are before-queue filters, so they don't change the
89queue ID.
90
91See the MILTER_README document for a discussion of how to use Milter
92support with Postfix, and limitations of the current implementation.
93
94The Sendmail-compatible Milter support introduces three new queue
95file record types. As long as you leave this feature turned off,
96you can still go back to Postfix version 2.2 without losing mail
97that was received by Postfix 2.3.
98
99[Incompat 20060515] Milter support introduces new logfile event
100types: milter-reject, milter-discard and milter-hold, that identify
101actions from Milter applications. This may affect logfile processing
102software.
103
104Major changes - SASL authentication
105-----------------------------------
106
107[Feature 20051220] Plug-in support for SASL authentication in the
108SMTP server and in the SMTP/LMTP client. With this, Postfix can
109support multiple SASL implementations without source code patches.
110Some distributors may even make SASL support a run-time linking
111option, just like they already do with Postfix lookup tables.
112
113Hints and tips for plug-in developers are in the xsasl/README file.
114
115For backwards compatibility the default plug-in type is Cyrus SASL,
116so everything should behave like it did before. Some error messages
117are slightly different, but these are generally improvements.
118
119The "postconf -a" command shows what plug-in implementations are
120available for the SMTP server, and "postconf -A" does the same for
121the SMTP/LMTP client.  Plug-in implementations are selected with
122the smtpd_sasl_type, smtp_sasl_type and lmtp_sasl_type configuration
123parameters.
124
125Other new configuration parameters are smtpd_sasl_path, smtp_sasl_path
126and lmtp_sasl_path. These are better left alone; they are introduced
127for the convenience of other SASL implementations.
128
129[Feature 20051222] Dovecot SASL support (SMTP server only). Details
130can be found in the SASL_README document.
131
132[Incompat 20051220] The Postfix-with-Cyrus-SASL build procedure has
133changed. You now need to specify -DUSE_CYRUS_SASL in addition to
134-DUSE_SASL_AUTH or else you end up without any Cyrus SASL support.
135The error messages are:
136
137    unsupported SASL server implementation: cyrus
138    unsupported SASL client implementation: cyrus
139
140[Feature 20051125] This snapshot adds support for sender-dependent
141ISP accounts.
142
143- Sender-dependent smarthost lookup tables.  The maps are searched
144  with the sender address and with the sender @domain.  The result
145  overrides the global relayhost setting, but otherwise has identical
146  behavior. See the postconf(5) manual page for more details.
147
148  Example:
149    /etc/postfix/main.cf:
150	sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
151
152- Sender-dependent SASL authentication support. This disables SMTP
153  connection caching to ensure that mail from different senders
154  will use the correct authentication credentials. The SMTP SASL
155  password file is first searched by sender address, and then by
156  the remote domain and hostname as usual.
157
158  Example:
159    /etc/postfix/main.cf:
160	smtp_sasl_auth_enable = yes
161	smtp_sender_dependent_authentication = yes
162	smtp_sasl_password_maps = hash:/etc/postfix/sasl_pass
163
164[Incompat 20060707] The SMTP/LMTP client now defers delivery when
165a SASL password exists but the server does not announce support for
166SASL authentication.  This can happen with servers that announce
167SASL support only when TLS is turned on.  When an opportunistic TLS
168handshake fails, Postfix >= 2.3 retries delivery in plaintext, and
169the remote server rejects mail from the unauthenticated client.
170Specify "smtp_sasl_auth_enforce = no" to deliver mail anyway.
171
172Major changes - SMTP client
173---------------------------
174
175See the "SASL authentication" and "TLS" sections for changes related
176to SASL authentication and TLS support, respectively.
177
178[Feature 20051208] The SMTP client now implements the LMTP protocol.
179Most but not all smtp_xxx parameters now have an lmtp_xxx equivalent.
180This means there are lot of new LMTP features, including support
181for TLS and for the shared connection cache.
182
183[Incompat 20060112] The Postfix SMTP/LMTP client by default no
184longer allows DNS CNAME records to override the server hostname
185that is used for logging, SASL password lookup, TLS policy selection
186and TLS server certificate verification. Specify
187"smtp_cname_overrides_servername = yes" to get the old behavior.
188
189[Incompat 20060103] The Postfix SMTP/LMTP client no longer defers
190mail delivery when it receives a malformed SMTP server reply in a
191session with command pipelining.  When helpful warnings are enabled,
192it will suggest that command pipelining be disabled for the affected
193destination.
194
195[Incompat 20051208] The fallback_relay feature is renamed to
196smtp_fallback_relay, to make clear that the combined SMTP/LMTP
197client uses this setting only for SMTP deliveries. The old name
198still works.
199
200[Incompat 20051106] The relay=... logging has changed and now
201includes the remote SMTP server port number as hostname[hostaddr]:port.
202
203[Incompat 20051026] The smtp_connection_cache_reuse_limit parameter
204(which limits the number of deliveries per SMTP connection) is
205replaced by the new smtp_connection_reuse_time_limit parameter (the
206time after which a connection is no longer stored into the connection
207cache).
208
209[Feature 20051026] This snapshot addresses a performance stability
210problem with remote SMTP servers. The problem is not specific to
211Postfix: it can happen when any MTA sends large amounts of SMTP
212email to a site that has multiple MX hosts. The insight that led
213to the solution, as well as an initial implementation, are due to
214Victor Duchovni.
215
216The problem starts when one of a set of MX hosts becomes slower
217than the rest.  Even though SMTP clients connect to fast and slow
218MX hosts with equal probability, the slow MX host ends up with more
219simultaneous inbound connections than the faster MX hosts, because
220the slow MX host needs more time to serve each client request.
221
222The slow MX host becomes a connection attractor.  If one MX host
223becomes N times slower than the rest, it dominates mail delivery
224latency unless there are more than N fast MX hosts to counter the
225effect. And if the number of MX hosts is smaller than N, the mail
226delivery latency becomes effectively that of the slowest MX host
227divided by the total number of MX hosts.
228
229The solution uses connection caching in a way that differs from
230Postfix 2.2.  By limiting the amount of time during which a connection
231can be used repeatedly (instead of limiting the number of deliveries
232over that connection), Postfix not only restores fairness in the
233distribution of simultaneous connections across a set of MX hosts,
234it also favors deliveries over connections that perform well, which
235is exactly what we want.
236
237The smtp_connection_reuse_time_limit feature implements the connection
238reuse time limit as discussed above.  It limits the amount of time
239after which an SMTP connection is no longer stored into the connection
240cache. The default limit, 300s, can result in a huge number of
241deliveries over a single connection.
242
243This solution will be complete when Postfix logging is updated to
244include information about the number of times that a connection was
245used. This information is needed to diagnose inter-operability
246problems with servers that exhibit bugs when they receive multiple
247messages over the same connection.
248
249[Incompat 20050627] The Postfix SMTP client no longer applies the
250smtp_mx_session_limit to non-permanent errors during the TCP, SMTP,
251HELO or TLS handshake.  Previous versions did that only with TCP
252and SMTP handshake errors.
253
254[Incompat 20050622] The Postfix SMTP client by default limits the
255number of MX server addresses to smtp_mx_address_limit=5. Previously
256this limit was disabled by default. The new limit prevents Postfix
257from spending lots of time trying to connect to lots of bogus MX
258servers.
259
260Major changes - SMTP server
261---------------------------
262
263See the "SASL authentication" and "TLS" sections for changes related
264to SASL authentication and TLS support, respectively.
265
266[Feature 20051222] To accept the non-compliant user@ipaddress form,
267specify "resolve_numeric_domain = yes".  Postfix will deliver the
268mail to user@[ipaddress] instead.
269
270[Incompat 20051202] The Postfix SMTP server now refuses to receive
271mail from the network if it isn't running with postfix mail_owner
272privileges.  This prevents surprises when, for example, "sendmail
273-bs" is configured to run as root from xinetd.
274
275[Incompat 20051121] Although the permit_mx_backup feature still
276accepts mail for authorized destinations (see permit_mx_backup for
277definition), with all other destinations it now requires that the
278local MTA is listed as non-primary MX server. This prevents mail
279loop problems when someone points their primary MX record at a
280Postfix system.
281
282[Feature 20051011] Optional suppression of remote SMTP client
283hostname lookup and hostname verification. Specify "smtpd_peername_lookup
284= no" to eliminate DNS lookup latencies, but do so only under extreme
285conditions, as it makes Postfix logging less informative.
286
287[Feature 20050724] SMTPD Access control based on the existence of
288an address->name mapping, with reject_unknown_reverse_client_hostname.
289There is no corresponding access table lookup feature, because the
290name is not validated in any way (except that it has proper syntax).
291
292Several confusing SMTPD access restrictions were renamed:
293
294    reject_unknown_client -> reject_unknown_client_hostname,
295    reject_unknown_hostname -> reject_unknown_helo_hostname,
296    reject_invalid_hostname -> reject_invalid_helo_hostname,
297    reject_non_fqdn_hostname -> reject_non_fqdn_helo_hostname.
298
299The old names are still recognized and documented.
300
301Major changes - TLS
302-------------------
303
304Major revisions were made to Postfix TLS support; see TLS_README
305for the details. For backwards compatibility, the old TLS policy
306user interface will be kept intact for a few releases so that sites
307can upgrade Postfix without being forced to use a different TLS
308policy mechanism.
309
310[Feature 20060614] New concept: TLS security levels ("none", "may",
311"encrypt", "verify" or "secure") in the Postfix SMTP client.  You
312can specify the TLS security level via the smtp_tls_security_level
313parameter.  This is more convenient than controlling TLS with the
314multiple smtp_use_tls, smtp_enforce_tls, and smtp_tls_enforce_peername,
315parameters.
316
317[Feature 20060709] TLS security levels ("none", "may", "encrypt")
318in the Postfix SMTP server. You specify the security level with the
319smtpd_tls_security_level parameter. This overrides the multiple
320smtpd_use_tls and smtpd_enforce_tls parameters.  When one of the
321unimplemented "verify" or "secure" levels is specified, the Postfix
322SMTP server logs a warning and uses "encrypt" instead.
323
324[Feature 20060123] A new per-site TLS policy mechanism for the
325Postfix SMTP client that supports the new TLS security levels,
326and that eliminates DNS spoofing attacks more effectively.
327
328[Feature 20060626] Both the Postfix SMTP client and server can be
329configured without a client or server certificate. An SMTP server
330without certificate can use only anonymous ciphers, and will not
331inter-operate with most clients.
332
333The Postfix SMTP server supports anonymous ciphers when 1) no client
334certificates are requested or required, and 2) the administrator
335has not excluded the "aNULL" OpenSSL cipher type with the
336smtpd_tls_exclude_ciphers parameter.
337
338The Postfix SMTP client supports anonymous ciphers when 1) no server
339certificate is required and 2) the administrator has not excluded
340the "aNULL" OpenSSL cipher type with the smtp_tls_exclude_ciphers
341parameter.
342
343[Incompat 20060707] The SMTPD policy client now encodes the
344ccert_subject and ccert_issuer attributes as xtext. Some characters
345are represented by +XX, where XX is the two-digit hexadecimal
346representation of the character value.
347
348[Feature 20060614] The smtpd_tls_protocols parameter restricts the
349list of TLS protocols supported by the SMTP server.  This is
350recommended for use with MSA configurations only.  It should not
351be used with MX hosts that receive mail from the Internet, as it
352reduces inter-operability.
353
354[Incompat 20060614] The smtp_tls_cipherlist parameter only applies
355when TLS is mandatory.  It is ignored with opportunistic TLS sessions.
356
357[Incompat 20060614] At (lmtp|smtp|smtpd)_tls_loglevel >= 2, Postfix
358now also logs TLS session cache activity. Use level 2 and higher
359for debugging only; use levels 0 or 1 as production settings.
360
361[Incompat 20060207] The Postfix SMTP server no longer complains
362when TLS support is not compiled in while permit_tls_clientcerts,
363permit_tls_all_clientcerts, or check_ccert_access are specified in
364main.cf. These features now are effectively ignored.  However, the
365reject_plaintext_session feature is not ignored and will reject
366plain-text mail.
367
368[Feature 20060123] Some obscure behavior was eliminated from the
369smtp_tls_per_site feature, without changes to the user interface.
370Some Postfix internals had to be re-structured for the new TLS
371policy mechanism; for this, smtp_tls_per_site had to be re-implemented.
372The obscure behavior was found during compatibility testing.
373
374[Feature 20051011] Optional protection against SMTP clients that
375hammer the server with too many new (i.e. uncached) SMTP-over-TLS
376sessions. Cached sessions are much less expensive in terms of CPU
377cycles. Use the smtpd_client_new_tls_session_rate_limit parameter
378to specify a limit that is at least the inbound client concurrency
379limit, or else you may deny legitimate service requests.
380
381Major changes - VERP
382--------------------
383
384[Incompat 20050615] The new DSN support conflicts with VERP support.
385For Sendmail compatibility, Postfix now uses the sendmail -V command
386line option for DSN.  In order to request VERP style delivery, you
387must now specify -XV instead of -V.  The Postfix sendmail command
388will recognize if you try to use -V for VERP-style delivery.  It
389will do the right thing and will remind you of the new syntax.
390
391Major changes - XCLIENT and XFORWARD
392------------------------------------
393
394[Incompat 20060611] The SMTP server XCLIENT implementation has
395changed. The SMTP server now resets state to the initial server
396greeting stage, immediately before the EHLO/HELO greeting.  This
397was needed to correctly simulate the effect of connection-level
398access restrictions.  Without this change, XCLIENT would not work
399at all with Milter applications.
400
401[Incompat 20060611] The SMTP server XCLIENT and XFORWARD commands
402now expect that attributes are xtext encoded (RFC 1891). For backwards
403compatibility they will also accept unencoded attribute values. The
404XFORWARD client code in the SMTP client and in the SMTPD_PROXY
405client now always encode attribute values. This change will have a
406visible effect only for malformed hostname and helo parameter values.
407
408For more details, see the XCLIENT_README and XFORWARD_README
409documents.
410
411Major changes - address manipulation
412------------------------------------
413
414[Incompat 20060123] Postfix now preserves uppercase information
415while mapping addresses with canonical, virtual, relocated or generic
416maps; this happens even with $number substitutions in regular
417expression maps. However, the local(8) and virtual(8) delivery
418agents still fold addresses to lower case.
419
420As a side effect, Postfix now also does a better job at being case
421insensitive where it should be, for example while searching per-host
422TLS policies or SASL passwords.
423
424By default, Postfix now folds the search string to lowercase only
425with tables that have fixed-case lookup fields such as btree:,
426hash:, dbm:, ldap:, or *sql:. The search string is no longer case
427folded with tables whose lookup fields can match both upper or lower
428case, such as regexp:, pcre:, or cidr:.
429
430For safety reasons, Postfix no longer allows $number substitution
431in regexp: or pcre: transport tables or per-sender relayhost tables.
432
433Major changes - bounce message templates
434----------------------------------------
435
436[Feature 20051113] Configurable bounce messages, based on a format
437that was developed by Nicolas Riendeau. The file with templates is
438specified with the bounce_template_file parameter. Details are in
439the bounce(5) manual page, and examples of the built-in templates
440can be found in $config_directory/bounce.cf.default. The template
441for the default bounce message looks like this:
442
443    failure_template = <<EOF
444    Charset: us-ascii
445    From: MAILER-DAEMON (Mail Delivery System)
446    Subject: Undelivered Mail Returned to Sender
447    Postmaster-Subject: Postmaster Copy: Undelivered Mail
448
449    This is the $mail_name program at host $myhostname.
450
451    I'm sorry to have to inform you that your message could not
452    be delivered to one or more recipients. It's attached below.
453
454    For further assistance, please send mail to <postmaster>
455
456    If you do so, please include this problem report. You can
457    delete your own text from the attached returned message.
458
459                            The $mail_name program
460    EOF
461
462Major changes - built-in filters
463--------------------------------
464
465[Feature 20050828] Configurable filters to reject or remove unwanted
466characters in email content. The message_reject_characters and
467message_strip_characters parameters understand the usual C-like
468escape sequences: \a \b \f \n \r \t \v \ddd (up to three octal
469digits) and \\.
470
471[Incompat 20050828] When a header/body_checks rule or when
472message_reject_characters rejects mail that was submitted with the
473Postfix sendmail command (or re-queued with "postsuper -r"), the
474returned message is now limited to just the message headers, to
475avoid the risk of exposure to harmful content in the message body
476or attachments.
477
478Major changes - database support
479--------------------------------
480
481[Incompat 20060611] The PostgreSQL client was updated after the
482PostgreSQL developers made major database API changes in response
483to SQL injection problems.  This breaks support for PGSQL versions
484prior to 8.1.4, 8.0.8, 7.4.13, and 7.3.15. Support for these requires
485major code changes which are not possible in the time that is left
486for completing the Postfix 2.3 stable release.
487
488Major changes - enhanced status codes
489-------------------------------------
490
491[Feature 20050328] This release introduces support for RFC 3463
492enhanced status codes.  For example, status code 5.1.1 means
493"recipient unknown". Postfix recognizes enhanced status codes in
494remote server replies, generates enhanced status codes while handling
495email, and reports enhanced status codes in non-delivery notifications.
496This improves the user experience with mail clients that translate
497enhanced status codes into text in the user's own language.
498
499You can, but don't have to, specify RFC 3463 enhanced status codes
500in the output from commands that receive mail from a pipe. If a
501command terminates with non-zero exit status, and an enhanced status
502code is present at the beginning of the command output, then that
503status code takes precedence over the non-zero exit status.
504
505You can, but don't have to, specify RFC 3463 enhanced status codes
506in Postfix access maps, header/body_checks REJECT actions, or in
507RBL replies.  For example:
508
509    REJECT 5.7.1 You can't go here from there
510
511The status 5.7.1 means "no authorization, message refused", and is
512the default for access maps, header/body_checks REJECT actions, and
513for RBL replies.
514
515[Feature 20050328] If you specify your own enhanced status code,
516the Postfix SMTP server will automatically change a leading '5'
517digit (hard error) into '4' where appropriate.  This is needed, for
518example, with soft_bounce=yes.
519
520[Feature 20050510] This release improves usability of enhanced
521status codes in Postfix access tables, RBL reply templates and in
522transport maps that use the error(8) delivery agent.
523
524- When the SMTP server rejects a sender address, it transforms a
525  recipient DSN status (e.g., 4.1.1-4.1.6) into the corresponding
526  sender DSN status, and vice versa.
527
528- When the SMTP server rejects non-address information (such as the
529  HELO command parameter or the client hostname/address), it
530  transforms a sender or recipient DSN status into a generic
531  non-address DSN status (e.g., 4.0.0).
532
533These transformations are needed when the same access table or RBL
534reply template are used for client, helo, sender, or recipient
535restrictions; or when the same error(8) mailer information is used
536for both senders and recipients.
537
538Major changes - local alias expansion
539-------------------------------------
540
541[Incompat 20051011] The Postfix local(8) delivery agent no longer
542updates its idea of the Delivered-To: address while it expands
543aliases or .forward files. With deeply nested aliases or .forward
544files, this can greatly reduce the number of queue files and cleanup
545process instances. To get the earlier behavior, specify
546"frozen_delivered_to = no".
547
548The frozen_delivered_to feature can help to alleviate a long-standing
549problem with multiple deliveries to recipients that are listed
550multiple times in a hierarchy of nested aliases. For this to work,
551only the top-level alias should have an owner- alias, and none of
552the subordinate aliases.
553
554Major changes - logging
555-----------------------
556
557[Incompat 20060515] Milter support introduces new logfile event
558types: milter-reject, milter-discard and milter-hold, that identify
559actions from Milter applications. This may affect logfile processing
560software.
561
562[Incompat 20051106] The relay=... logging has changed and now
563includes the remote SMTP server port number as hostname[hostaddr]:port.
564
565[Incompat 20060112] The Postfix SMTP/LMTP client by default no
566longer allows DNS CNAME records to override the server hostname
567that is used for logging, SASL password lookup, TLS policy selection
568and TLS server certificate verification. Specify
569"smtp_cname_overrides_servername = yes" to get the old behavior.
570
571[Incompat 20051105] All delay logging now has sub-second resolution,
572including the over-all "delay=nnn" logging.  A patch is available
573for pflogsumm (pflogsumm-conn-delays-dsn-patch). The qshape script
574has been updated (auxiliary/qshape/qshape.pl).
575
576[Feature 20051103] This release makes a beginning with a series of
577new attributes in Postfix logfile records.
578
579- Better insight into the nature of performance bottle necks, with
580  detailed logging of delays in various stages of message delivery.
581  Postfix logs additional delay information as "delays=a/b/c/d"
582  where a=time before queue manager, including message transmission;
583  b=time in queue manager; c=connection setup time including DNS,
584  HELO and TLS; d=message transmission time.
585
586- Logging of the connection reuse count when SMTP connections are
587  used for more than one message delivery.  This information is
588  needed because Postfix can now reuse connections hundreds of times
589  or more. Logging of the connection reuse count can help to diagnose
590  inter-operability problems with servers that suffer from memory
591  leaks or other resource leaks.
592
593At this point the Postfix logging for a recipient looks like this:
594
595    Nov  3 16:04:31 myname postfix/smtp[30840]: 19B6B2900FE:
596    to=<wietse@test.example.com>, orig_to=<wietse@test>,
597    relay=mail.example.com[1.2.3.4], conn_use=2, delay=0,
598    delays=0/0.01/0.05/0.1, dsn=2.0.0, status=sent (250 2.0.0 Ok)
599
600The following two logfile fields may or may not be present:
601
602    orig_to     This is omitted when the address did not change.
603    conn_use    This is omitted when a connection is used once.
604
605[Incompat 20050503] The format of some "warning:" messages in the
606maillog has changed so that they are easier to sort:
607
608- The logging now talks about "access table", instead of using three
609  different expressions "access table", "access map" and "SMTPD
610  access map" for the same thing.
611
612- "non-SMTP command" is now logged BEFORE the client name/address
613  and the offending client input, instead of at the end.
614
615[Incompat 20050328] The logging format has changed. Postfix delivery
616agents now log the RFC 3463 enhanced status code as "dsn=x.y.z"
617where y and z can be up to three digits each.
618
619[Incompat 20051208] The LMTP client now reports the server as
620"myhostname[/path/name]".  With the real server hostname in delivery
621status reports, the information will be more useful.
622
623Major changes - performance
624---------------------------
625
626[Incompat 20051105] All delay logging now has sub-second resolution,
627including the over-all "delay=nnn" logging.  A patch is available
628for pflogsumm (pflogsumm-conn-delays-dsn-patch). The qshape script
629has been updated (auxiliary/qshape/qshape.pl).
630
631[Incompat 20050622] The Postfix SMTP client by default limits the
632number of MX server addresses to smtp_mx_address_limit=5. Previously
633this limit was disabled by default. The new limit prevents Postfix
634from spending lots of time trying to connect to lots of bogus MX
635servers.
636
637[Feature 20051026] This snapshot addresses a performance stability
638problem with remote SMTP servers. The problem is not specific to
639Postfix: it can happen when any MTA sends large amounts of SMTP
640email to a site that has multiple MX hosts. The insight that led
641to the solution, as well as an initial implementation, are due to
642Victor Duchovni.
643
644The problem starts when one of a set of MX hosts becomes slower
645than the rest.  Even though SMTP clients connect to fast and slow
646MX hosts with equal probability, the slow MX host ends up with more
647simultaneous inbound connections than the faster MX hosts, because
648the slow MX host needs more time to serve each client request.
649
650The slow MX host becomes a connection attractor.  If one MX host
651becomes N times slower than the rest, it dominates mail delivery
652latency unless there are more than N fast MX hosts to counter the
653effect. And if the number of MX hosts is smaller than N, the mail
654delivery latency becomes effectively that of the slowest MX host
655divided by the total number of MX hosts.
656
657The solution uses connection caching in a way that differs from
658Postfix 2.2.  By limiting the amount of time during which a connection
659can be used repeatedly (instead of limiting the number of deliveries
660over that connection), Postfix not only restores fairness in the
661distribution of simultaneous connections across a set of MX hosts,
662it also favors deliveries over connections that perform well, which
663is exactly what we want.
664
665The smtp_connection_reuse_time_limit feature implements the connection
666reuse time limit as discussed above.  It limits the amount of time
667after which an SMTP connection is no longer stored into the connection
668cache. The default limit, 300s, can result in a huge number of
669deliveries over a single connection.
670
671This solution will be complete when Postfix logging is updated to
672include information about the number of times that a connection was
673used. This information is needed to diagnose inter-operability
674problems with servers that exhibit bugs when they receive multiple
675messages over the same connection.
676
677[Feature 20051011] Optional protection against SMTP clients that
678hammer the server with too many new (i.e. uncached) SMTP-over-TLS
679sessions. Cached sessions are much less expensive in terms of CPU
680cycles. Use the smtpd_client_new_tls_session_rate_limit parameter
681to specify a limit that is at least the inbound client concurrency
682limit, or else you may deny legitimate service requests.
683
684[Feature 20051011] Optional suppression of remote SMTP client
685hostname lookup and hostname verification. Specify "smtpd_peername_lookup
686= no" to eliminate DNS lookup latencies, but do so only under extreme
687conditions, as it makes Postfix logging less informative.
688
689Major changes - portability
690---------------------------
691
692[Incompat 20050716] Internal interfaces have changed; this may break
693third-party patches because the types of function arguments and of
694result values have changed.  The types of buffer lengths and offsets
695were changed from "int" or "unsigned int" (32 bit on 32-bit and
696LP64 systems) to "ssize_t" or "size_t" (64 bit on LP64 systems, 32
697bit on 32-bit systems).
698
699This change makes no difference in Postfix behavior on 32-bit
700systems. On LP64 systems, however, this change not only eliminates
701some obscure portability bugs, it also eliminates unnecessary
702conversions between 32/64 bit integer types, because many system
703library routines take "(s)size_t" arguments or return "(s)size_t"
704values.
705
706This change may break software on LP64 systems 1) when Postfix is
707linked with pre-compiled code that was compiled with old Postfix
708interface definitions and 2) when compiling Postfix source that was
709modified by a third-party patch: incorrect code will be generated
710when the patch passes the wrong integer argument type in contexts
711that disable automatic argument type conversions.  Examples of such
712contexts are formatting with printf-like arguments, and invoking
713functions that write Postfix request or reply attributes across
714inter-process communication channels.  Unfortunately, gcc reports
715"(unsigned) int" versus "(s)size_t" format string argument mis-matches
716only on LP64 systems.
717
718Major changes - safety
719----------------------
720
721[Incompat 20051121] Although the permit_mx_backup feature still
722accepts mail for authorized destinations (see permit_mx_backup for
723definition), with all other destinations it now requires that the
724local MTA is listed as non-primary MX. This prevents mail loop
725problems when someone points the primary MX record at a Postfix
726system.
727
728[Incompat 20051011] The Postfix local(8) delivery agent no longer
729updates its idea of the Delivered-To: address while it expands
730aliases or .forward files. With deeply nested aliases or .forward
731files, this can greatly reduce the number of queue files and cleanup
732process instances. To get the earlier behavior, specify
733"frozen_delivered_to = no".
734
735The frozen_delivered_to feature can help to alleviate a long-standing
736problem with multiple deliveries to recipients that are listed
737multiple times in a hierarchy of nested aliases. For this to work,
738only the top-level alias should have an owner- alias, and none of
739the subordinate aliases.
740
741[Incompat 20050828] When a header/body_checks rule or when
742message_reject_characters rejects mail that was submitted with the
743Postfix sendmail command (or re-queued with "postsuper -r"), the
744returned message is now limited to just the message headers, to
745avoid the risk of exposure to harmful content in the message body
746or attachments.
747
748[Incompat 20051202] The Postfix SMTP server now refuses to receive
749mail from the network if it isn't running with postfix mail_owner
750privileges.  This prevents surprises when, for example, "sendmail
751-bs" is configured to run as root from xinetd.
752
753[Incompat 20060123] For safety reasons, Postfix no longer allows
754$number substitution in regexp: or pcre: transport tables or
755per-sender relayhost tables.
756
757[Incompat 20060112] The Postfix SMTP/LMTP client by default no
758longer allows DNS CNAME records to override the server hostname
759that is used for logging, SASL password lookup, TLS policy selection
760and TLS server certificate verification. Specify
761"smtp_cname_overrides_servername = yes" to get the old behavior.
762