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