1In the text below, incompatible changes are labeled with the Postfix 2snapshot that introduced the change. If you upgrade from a later 3Postfix version, then you do not have to worry about that particular 4incompatibility. 5 6Official Postfix releases are called a.b.c where a=major release 7number, b=minor release number, c=patchlevel. Snapshot releases 8are now called a.b.c-yyyymmdd where yyyymmdd is the release date 9(yyyy=year, mm=month, dd=day). The mail_release_date configuration 10parameter contains the release date (both for official release and 11snapshot release). Patches change the patchlevel and the release 12date. Snapshots change only the release date, unless they include 13the same bugfixes as a patch release. 14 15Incompatible changes with Postfix version 1.1.0 (released 20020117) 16=================================================================== 17 18Changes are listed in order of decreasing importance, not release 19date. 20 21[snapshot-20010709] This release introduces a new queue file record 22type that is used only for messages that actually use VERP (variable 23envelope return path) support. With this sole exception, the queue 24file format is entirely backwards compatible with the previous 25official Postfix release (20010228, a.k.a. Postfix 1.0.0). 26 27[snapshot-20020106] This release modifies the existing master.cf 28file. The local pickup service is now unprivileged, and the cleanup 29and flush service are now "public". Should you have to back out to 30a previous release, then you must 1) edit the master.cf file, make 31the pickup service "privileged", and make the cleanup and flush 32services "private"; 2) "chmod 755 /var/spool/postfix/public". To 33revert to a world-writable mail submission directory, "chmod 1733 34/var/spool/postfix/maildrop". 35 36[snapshot-20020106, snapshot-20010808, snapshot-20011103, 37snapshot-20011121] You must stop and restart Postfix because of 38incompatible changes in the local Postfix security model and in 39the Postfix internal protocols. Old and new components will not 40work together. 41 42[snapshot-20020106] Simpler local Postfix security model. 43 44- No world-writable maildrop directory. Postfix now always uses 45 the set-gid postdrop command for local mail submissions. The 46 local mail pickup daemon is now an unprivileged process. 47 48- No world-accessible pickup and queue manager server FIFOs. 49 50- New set-gid postqueue command for the queue list/flush operations 51 that used to implemented by the Postfix sendmail command. 52 53[snapshot-20020106..15] Simpler Postfix installation and upgrading. 54 55- All installation settings are now kept in the main.cf file, and 56 better default settings are now generated for system dependent 57 pathnames such as sendmail_path etc. The install.cf file is no 58 longer used, except when upgrading from an older Postfix version. 59 60- Non-default installation parameter settings can (but do not have 61 to) be specified on the "make install" or "make upgrade" command 62 line as name=value arguments. 63 64- New postfix-files database (in /etc/postfix) with (pathname, 65 owner, permission) information about all Postfix-related files. 66 67- New postfix-install script replaces the awkward INSTALL.sh script. 68 This is driven by the postfix-files database. It has better 69 support for building packages for distribution to other systems. 70 See PACKAGE_README for details. 71 72- New post-install script (in /etc/postfix) for post-installation 73 maintenance of directory/file permissions and ownership (this is 74 used by "postfix check"). Example: 75 76 # postfix stop 77 # post-install set-permissions mail_owner=username setgid_group=groupname 78 # postfix start 79 80[snapshot-20020106] Postfix will not run if it detects that the 81postfix user or group ID are shared with other accounts on the 82system. The checks aren't exhaustive (that would be too resource 83consuming) but should be sufficient to encourage packagers and 84developers to do the right thing. To fix the problem, use the above 85post-install command, after you have created the appropriate new 86mail_owner or setgid_group user or group IDs. 87 88[snapshot-20020106] If you run multiple Postfix instances on the 89same machine you now have to specify their configuration directories 90in the default main.cf file as "alternate_config_directories = 91/dir1 /dir2 ...". Otherwise, some Postfix commands will no longer 92work: the set-group ID postdrop command for mail submission and 93the set-group ID postqueue command for queue listing/flushing. 94 95[snapshot-20010808] The default setting for the maps_rbl_domains 96parameter is now "empty", because mail-abuse.org has become a 97subscription-based service. The names of the RBL parameters haven't 98changed. 99 100[snapshot-20020106] Postfix SMTP access maps will no longer return 101OK for non-local multi-domain recipient mail addresses (user@dom1@dom2, 102user%dom1@dom2, etcetera); the lookup now returns DUNNO (undetermined). 103Non-local multi-domain recipient addresses were already prohibited 104from matching the permit_mx_backup and the relay_domains-based 105restrictions. 106 107[snapshot-20011210] Stricter checking of Postfix chroot configurations. 108The Postfix startup procedure now warns if "system" directories 109(etc, bin, lib, usr) under the Postfix top-level queue directory 110are not owned by the super-user (usually the result of well-intended, 111but misguided, applications of "chown -R postfix /var/spool/postfix). 112 113[snapshot-20011008] The Postfix SMTP server now rejects requests 114with a generic "try again later" status (451 Server configuration 115error) when it detects an error in smtp_{client, helo, sender, 116recipient, etrn}_restrictions settings. More details about the 117problem are logged to the syslogd; sending such information to 118random clients would be inappropriate. 119 120[snapshot-20011008] Postfix no longer flushes the entire mail queue 121after receiving an ETRN request for a random domain name. Requests 122for domains that do not match $fast_flush_domains are now rejected 123instead. 124 125[snapshot-20011226] Postfix configuration file comments no longer 126continue on the next line when that next line starts with whitespace. 127This change avoids surprises, but it may cause unexpected behavior 128with existing, improperly formatted, configuration files. Caveat 129user. Comment lines are allowed to begin with whitespace. Multi-line 130input is no longer terminated by a comment line, by an all whitespace 131line, or by an empty line. 132 133[snapshot-20010714] Postfix delivery agents now refuse to create 134a missing maildir or mail spool subdirectory when its parent 135directory is world writable. This is necessary to prevent security 136problems with maildirs or with hashed mailboxes under a world 137writable mail spool directory. 138 139[snapshot-20010525] As per RFC 2821, the Postfix SMTP client now 140always sends EHLO at the beginning of an SMTP session. Specify 141"smtp_always_send_ehlo = no" for the old behavior, which is to send 142EHLO only when the server greeting banner contains the word ESMTP. 143 144[snapshot-20010525] As per RFC 2821, an EHLO command in the middle 145of an SMTP session resets the Postfix SMTP server state just like 146RSET. This behavior cannot be disabled. 147 148[snapshot-20010709] The SMTP client now by default breaks lines > 1492048 characters, to avoid mail delivery problems with fragile SMTP 150server software. To get the old behavior back, specify "smtp_break_lines 151= no" in the Postfix main.cf file. 152 153[snapshot-20010709] With recipient_delimiter=+ (or any character 154other than -) Postfix will now recognize address extensions even 155with owner-foo+extension addresses. This change was necessary to 156make VERP useful for mailing list bounce processing. 157 158[snapshot-20010610] The Postfix pipe delivery agent no longer 159automatically case-folds the expansion of $user, $extension or 160$mailbox command-line macros. Specify the 'u' flag to get the old 161behavior. 162 163[snapshot-20011210] The Postfix sendmail command no longer exits 164with status 1 when mail submission fails, but instead returns a 165sendmail-compatible status code as defined in /usr/include/sysexits.h. 166 167Major changes with Postfix version 1.1.0 (Released 20020117) 168============================================================ 169 170Changes are listed in order of decreasing importance, not release 171date. 172 173The nqmgr queue manager is now bundled with Postfix. It implements 174a smarter scheduling strategy that allows ordinary mail to slip 175past mailing list mail, resulting in better response. This queue 176manager is expected to become the default queue manager shortly. 177 178[snapshot-20010709, snapshot-20010808] VERP (variable envelope 179return path) support. This is enabled by default, including in 180the SMTP server. See the VERP_README file for instructions. Specify 181"disable_verp_bounces = yes" to have Postfix send one RFC-standard, 182non-VERP, bounce report for multi-recipient mail, even when VERP 183style delivery was requested. This reduces the explosive behavior 184of bounces when sending mail to a list. 185 186[snapshot-20010709] QMQP server support, so that Postfix can be 187used as a backend mailer for the ezmlm-idx mailing list manager. 188You still need qmail to drive ezmlm and to process mailing list 189bounces. The QMQP service is disabled by default. To enable, follow 190the instructions in the QMQP_README file. 191 192[snapshot-20010709] You can now reject unknown virtual(8) recipients 193at the SMTP port by specifying a "domain.name whatever" entry in 194the tables specified with virtual_mailbox_maps, similar to Postfix 195virtual(5) domains. [virtual(8) is the Postfix virtual delivery 196agent, virtual(5) is the Postfix virtual map. The two implement 197virtual domains in a very different manner.] 198 199[snapshot-20011121] Configurable host/domain name wildcard matching 200behavior: choice between "pattern `domain.name' matches string 201`host.domain.name'" (this is to be deprecated in the future) and 202"pattern `.domain.name' matches string `host.domain.name'" (this 203is to be preferred in the future). The configuration parameter 204"parent_domain_matches_subdomains" specifies which Postfix features 205use the behavior that will become deprecated. 206 207[snapshot-20010808] Variable coupling between message receiving 208rates and message delivery rates. When the message receiving rate 209exceeds the message delivery rate, an SMTP server will pause for 210$in_flow_delay seconds before accepting a message. This delay 211gives Postfix a chance catch up and access the disk, while still 212allowing new mail to arrive. This feature currently has effect 213only when mail arrives via a small number of SMTP clients. 214 215[snapshot-20010610, snapshot-20011121, snapshot-20011210] Workarounds 216for a bug in old versions of the CISCO PIX firewall software that 217caused mail to be resent repeatedly. The workaround has no effect 218for other mail deliveries. The workaround is turned off when mail 219is queued for less than $smtp_pix_workaround_threshold_time seconds 220(default: 500 seconds) so that the workaround is normally enabled 221only for deferred mail. The delay before sending .<CR><LF> is now 222controlled by the $smtp_pix_workaround_delay_time setting (default: 22310 seconds). 224 225[snapshot-20011226] Postfix will now do null address lookups in 226SMTPD access maps. If your access maps cannot store or look up 227null string key values, specify "smtpd_null_access_lookup_key = 228<>" and the null sender address will be looked up as <> instead. 229 230[snapshot-20011210] More usable virtual delivery agent, thanks to 231a new "static" map type by Jeff Miller that always returns its map 232name as the lookup result. This eliminates the need for per-recipient 233user ID and group ID tables. See the VIRTUAL_README file for more 234details. 235 236[snapshot-20011125] Anti-sender spoofing. New main.cf parameter 237smtpd_sender_login_maps that specifies the (SASL) login name that 238owns a MAIL FROM sender address. Specify a regexp table in order 239to require a simple one-to-one mapping. New SMTPD restriction 240reject_sender_login_mismatch that refuses a MAIL FROM address when 241$smtpd_sender_login_maps specifies an owner but the client is not 242(SASL) logged in as the MAIL FROM address owner, or when a client 243is (SASL) logged in but does not own the address according to 244$smtpd_sender_login_maps. 245 246[snapshot-20011121] The mailbox_command_maps parameter allows you 247to configure the external delivery command per user (local delivery 248agent only). This feature has precedence over the mailbox_command 249and home_mailbox settings. 250 251[snapshot-20011121] New "warn_if_reject" smtpd UCE restriction that 252only warns if the restriction that follows would reject mail. Look 253for file records that contain the string "reject_warning". 254 255[snapshot-20011127] New header/body_check result "WARN" to make 256Postfix log a warning about a header/body line without rejecting 257the content. 258 259[snapshot-20011103] In header/body_check files, REJECT can now be 260followed by text that is sent to the originator. That feature was 261stuck waiting for years, pending the internal protocol revision. 262 263[snapshot-20011008] The permit_mx_backup feature allows you to 264specify network address blocks via the permit_mx_backup_networks 265parameter. This requires that the primary MX hosts for the given 266destination match the specified network blocks. When no value is 267given for permit_mx_backup_networks, Postfix will accept mail 268whenever the local MTA is listed in the DNS as an MX relay host 269for a destination, even when you never gave permission to do so. 270 271[snapshot-20010709] Specify "mail_spool_directory = /var/mail/" 272(note the trailing "/" character) to enable maildir format for 273/var/mail/username. 274 275[snapshot-20010808] Finer control over address masquerading. The 276masquerade_classes parameter now controls header and envelope sender 277and recipient addresses. With earlier Postfix versions, address 278masquerading rewrote all addresses except for the envelope recipient. 279 280[snapshot-20010610] The pipe mail delivery agent now supports proper 281quoting of white space and other special characters in the expansions 282of the $sender and $recipient command-line macros. This was necessary 283for correct operation of the "simple" content filter, and is also 284recommended for delivery via UUCP or BSMTP. 285 286[snapshot-20010610] The pipe mail delivery agent now supports case 287folding the localpart and/or domain part of expansions of the 288$nexthop, $recipient, $user, $extension or $mailbox command-line 289macros. This is recommended for mail delivery via UUCP. Bug: $nexthop 290is always case folded because of problems in the queue manager 291code. 292 293[snapshot-20010525] This release contains many little revisions of 294little details in the light of the new RFC 2821 and RFC 2822 295standards. Changes that may affect interoperability are listed 296above under "incompatible changes". Other little details are 297discussed in comments in the source code. 298 299[snapshot-20010502] The Postfix SMTP client now by default randomly 300shuffles destination IP addresses of equal preference (whether 301obtained via MX lookup or otherwise). Reportedly, this is needed 302for sites that use Bernstein's dnscache program. Specify 303"smtp_randomize_addresses = no" to disable this behavior. Based on 304shuffling code by Aleph1. 305 306[snapshot-20011127] New parameter smtpd_noop_commands to specify 307a list of commands that the Postfix SMTP server treats as NOOP 308commands (no syntax check, no state change). This is a workaround 309for misbehaving clients that send unsupported commands such as 310ONEX. 311 312[snapshot-20010502] "postmap -q -" and "postmap -d -" read key 313values from standard input, which makes it easier to drive them 314from another program. The same feature was added to the postalias 315command. 316 317[snapshot-20010502] The postsuper command now has a command-line 318option to delete queue files. In principle this command can be 319used while Postfix is running, but there is a possibility of deleting 320the wrong queue file when Postfix deletes a queue file and reuses 321the queue ID for a new message. In that case, postsuper will delete 322the new message. 323 324[snapshot-20010525] The postsuper queue maintenance tool now renames 325files whose name (queue ID) does not match the message file inode 326number. This is necessary after a Postfix mail queue is restored 327from another machine or from backups. The feature is selected with 328the -s option, which is the default, and runs whenever Postfix is 329started. 330 331[snapshot-20010525] The postsuper queue maintenance tool has a new 332-r (requeue) option for subjecting some or all queue files to 333another iteration of address rewriting. This is useful after the 334virtual or canonical maps have changed. 335 336[snapshot-20010525] The postsuper queue maintenance tool was extended 337with options to read queue IDs from standard input. This makes the 338tool easier to drive from scripts. 339 340[snapshot-20010329] Better support for running multiple Postfix 341instances on one machine. Each instance can be recognized by its 342logging (defaults: "syslog_name = postfix", "syslog_facility = 343mail"). 344 345Major incompatible changes with release-20010228 Patch 01 (a.k.a. Postfix 1.0.1) 346================================================================================ 347 348This release changes the names of the "fast ETRN" logfiles with 349delayed mail per destination. These files are maintained by the 350Postfix "fast flush" daemon. The old scheme failed with addresses 351of the form user@[ip.address] and user@a.domain.name. In order to 352populate the new "fast ETRN" logfiles, execute the command "sendmail 353-q". The old "fast ETRN" logfiles go away by themselves (default: 354after 7 days). 355 356Major incompatible changes with release-20010228 (a.k.a. Postfix 1.0.0) 357======================================================================= 358 359[snapshot-20010225] POSTFIX NO LONGER RELAYS MAIL FOR CLIENTS IN 360THE ENTIRE CLASS A/B/C NETWORK. To get the old behavior, specify 361"mynetworks_style = class" in the main.cf file. The default 362(mynetworks_style = subnet) is to relay for clients in the local 363IP subnet. See conf/main.cf. 364 365[snapshot-20001005, snapshot-20010225] You must execute "postfix 366stop" before installing this release. Some recommended parameter 367settings have changed, and a new entry must be added to the master.cf 368file before you can start Postfix again. 369 3701 - The recommended Postfix configuration no longer uses flat 371 directories for the "incoming" "active", "bounce", and "defer" 372 queue directories. The "flush" directory for the new "flush" 373 service directory should not be flat either. 374 375 Upon start-up, Postfix checks if the hash_queue_names configuration 376 parameter is properly set up, and will add any queue directory 377 names that are missing. 378 3792 - In order to improve performance of one-to-one mail deliveries 380 the queue manager will now look at up to 10000 queue files 381 (was: 1000). The default qmgr_message_active_limit setting 382 was changed accordingly. 383 384 If you have a non-default qmgr_message_active_limit in main.cf, 385 you may want adjust it. 386 3873 - The new "flush" service needs to be configured in master.cf. 388 389 Upon start-up, Postfix checks if the new "flush" service is 390 configured in the master.cf file, and will add an entry if it 391 is missing. 392 393Should you wish to back out to a previous Postfix release there is 394no need to undo the above queue configuration changes. 395 396[snapshot-20000921] The protocol between queue manager and delivery 397agents has changed. This means that you cannot mix the Postfix 398queue manager or delivery agents with those of Postfix versions 399prior to 20000921. This change does not affect Postfix queue file 400formats. 401 402[snapshot-20000529] This release introduces an incompatible queue 403file format change ONLY when content filtering is enabled (see text 404in FILTER_README). Old Postfix queue files will work fine, but 405queue files with the new content filtering info will not work with 406Postfix versions before 20000529. Postfix logs a warning and moves 407incompatible queue files to the "corrupt" mail queue subdirectory. 408 409Minor incompatible changes with release-20010228 410================================================ 411 412[snapshot-20010225] The incoming and deferred queue directories 413are now hashed by default. This improves the performance considerably 414under heavy load, at the cost of a small but noticeable slowdown 415when one runs "mailq" on an unloaded system. 416 417[snapshot-20010222] Postfix no longer automatically delivers 418recipients one at a time when their domain is listed in $mydestination. 419This change solves delivery performance problems with delivery via 420LMTP, with virus scanning, and with firewall relays that forward 421all mail for $mydestination to an inside host. 422 423The "one recipient at a time" delivery behavior is now controlled 424by the per-transport recipient limit (xxx_destination_recipient_limit, 425where xxx is the name of the delivery mechanism). This parameter 426controls the number of recipients that can be sent in one delivery 427(surprise). 428 429The setting of the per-transport recipient limit also controls the 430meaning of the per-transport destination concurrency limit (named 431xxx_destination_concurrency_limit, where xxx is again the name of 432the delivery mechanism): 433 434 1) When the per-transport recipient limit is 1 (i.e., send one 435 recipient per delivery), the per-transport destination concurrency 436 limit controls the number of simultaneous deliveries to the 437 same recipient. This is the default behavior for delivery via 438 the Postfix local delivery agent. 439 440 2) When the per-transport recipient limit is > 1 (i.e., send 441 multiple recipients per delivery), the per-transport destination 442 concurrency limit controls the number of simultaneous deliveries 443 to the same domain. This is the default behavior for all other 444 Postfix delivery agents. 445 446[snapshot-20010128] The Postfix local delivery agent now enforces 447mailbox file size limits (default: mailbox_size_limit = 51200000). 448This limit affects all file write access by the local delivery 449agent or by a process run by the local delivery agent. The purpose 450of this parameter is to act as a safety for run-away software. It 451cannot be a substitute for a file quota management system. Specify 452a limit of 0 to disable. 453 454[snapshot-20010128] REJECT in header/body_checks is now flagged as 455policy violation rather than bounce, for consistency in postmaster 456notifications. 457 458[snapshot-20010128] The default RBL (real-time blackhole lists) 459domain examples have been changed from *.vix.com to *.mail-abuse.org. 460 461[snapshot-20001210] Several interfaces of libutil and libglobal 462routines have changed. This may break third-party code written 463for Postfix. In particular, the safe_open() routine has changed, 464the way the preferred locking method is specified in the sys_defs.h 465file, as well as all routines that perform file locking. When 466compiling third-party code written for Postfix, the incompatibilities 467will be detected by the compiler provided that #include file 468dependencies are properly maintained. 469 470[snapshot-20001210] When delivering to /file/name (as directed in 471an alias or .forward file), the local delivery agent now logs a 472warning when it is unable to create a /file/name.lock file. Mail 473is still delivered as before. 474 475[snapshot-20001210] The "sun_mailtool_compatibility" feature is 476going away (a compatibility mode that turns off kernel locks on 477mailbox files). It still works, but a warning is logged. Instead 478of using "sun_mailtool_compatibility", specify the mailbox locking 479strategy as "mailbox_delivery_lock = dotlock". 480 481[snapshot-20001210] The Postfix SMTP client now skips SMTP server 482replies that do not start with "CODE SPACE" or with "CODE HYPHEN" 483and flags them as protocol errors. Older Postfix SMTP clients 484silently treated "CODE TEXT" as "CODE SPACE TEXT", i.e. as a valid 485SMTP reply. 486 487[snapshot-20001121] On RedHat Linux 7.0, you must install the 488db3-devel RPM before you can compile the Postfix source code. 489 490[snapshot-20000924] The postmaster address in the "sorry" text at 491the top of bounced mail is now just postmaster, not postmaster@machine. 492The idea is to refer users to their own postmaster. 493 494[snapshot-20000921] The notation of [host:port] in transport tables 495etc. is going away but it is still supported. The preferred form 496is now [host]:port. This change is necessary to support IPV6 497address forms which use ":" as part of a numeric IP address. In a 498future release, Postfix will log a warning when it encounters the 499[host:port] form. 500 501[snapshot-20000921] In mail headers, Errors-To:, Reply-To: and 502Return-Receipt: addresses are now rewritten as a sender address 503(was: recipient). 504 505[snapshot-20000921] Postfix no longer inserts Sender: message 506headers. 507 508[snapshot-20000921] The queue manager now logs the original number 509of recipients when opening a queue file (example: from=<>, size=3502, 510nrcpt=1). 511 512[snapshot-20000921] The local delivery agent no longer appends a 513blank line to mail that is delivered to external command. 514 515[snapshot-20000921] The pipe delivery agent no longer appends a 516blank line when the F flag is specified (in the master.cf file). 517Specify the B flag if you need that blank line. 518 519[snapshot-20000507] As required by RFC 822, Postfix now inserts a 520generic destination message header when no destination header is 521present. The text is specified via the undisclosed_recipients_header 522configuration parameter (default: "To: undisclosed-recipients:;"). 523 524[snapshot-20000507] The Postfix sendmail command treats a line with 525only `.' as the end of input, for the sake of sendmail compatibility. 526To disable this feature, specify the sendmail-compatible `-i' or 527`-oi' flags on the sendmail command line. 528 529[snapshot-20000507] For the sake of Sendmail compatibility, the 530Postfix SMTP client skips over SMTP servers that greet with a 4XX 531or 5XX reply code, treating them as unreachable servers. To obtain 532prior behavior (4XX=retry, 5XX=bounce), specify "smtp_skip_4xx_greeting 533= no" and "smtp_skip_5xx_greeting = no". 534 535Major changes with release-20010228 536=================================== 537 538Postfix produces DSN formatted bounced/delayed mail notifications. 539The human-readable text still exists, so that users will not have 540to be unnecessarily confused by all the ugliness of RFC 1894. Full 541DSN support will be later. 542 543This release introduces full content filtering through an external 544process. This involves an incompatible change in queue file format. 545Mail is delivered to content filtering software via an existing 546mail delivery agent, and is re-injected into Postfix via an existing 547mail submission agent. See examples in the FILTER_README file. 548Depending on how the filter is implemented, you can expect to lose 549a factor of 2 to 4 in delivery performance of SMTP transit mail, 550more if the content filtering software needs lots of CPU or memory. 551 552Specify "body_checks = regexp:/etc/postfix/body_checks" for a quick 553and dirty emergency content filter that looks at non-header lines 554one line at a time (including MIME headers inside the message body). 555Details in conf/sample-filter.cf. 556 557The header_checks and body_checks features can be used to strip 558out unwanted data. Specify IGNORE on the right-hand side and the 559data will disappear from the mail. 560 561Support for SASL (RFC 2554) authentication in the SMTP server and 562in the SMTP and LMTP clients. See the SASL_README file for more 563details. This file still needs better examples. 564 565Postfix now ships with an LMTP delivery agent that can deliver over 566local/remote TCP sockets and over local UNIX-domain sockets. The 567LMTP_README file gives example, but still needs to be revised. 568 569Fast "ETRN" and "sendmail -qR". Postfix maintains per-destination 570logfiles with information about what mail is queued for selected 571destinations. See the file ETRN_README for details. 572 573The mailbox locking style is now fully configurable at runtime. 574The new configuration parameter is called "mailbox_delivery_lock". 575Depending on the operating system type, mailboxes can be locked 576with one or more of "flock", "fcntl" or "dotlock". The command 577"postconf -l" shows the available locking styles. The default 578mailbox locking style is system dependent. This change affects 579all mailbox and all "/file/name" deliveries by the Postfix local 580delivery agent. 581 582Minor changes with release-20010228 583=================================== 584 585You can now specify multiple SMTP destinations in the relayhost 586and fallback_relay configuration parameters. The destinations are 587tried in the specified order. Specify host or host:port (perform 588MX record lookups), [host] or [host]:port (no MX record lookups), 589[address] or [address]:port (numerical IP address). 590 591The "mailbox_transport" and "fallback_transport" parameters now 592understand the form "transport:nexthop", with suitable defaults 593when either transport or nexthop are omitted, just like in the 594Postfix transport map. This allows you to specify for example, 595"mailbox_transport = lmtp:unix:/file/name". 596 597The local_transport and default_transport configuration parameters 598can now be specified in transport:destination notation, just like 599the mailbox_transport and fallback_transport parameters. The 600:destination part is optional. However, these parameters take only 601one destination, unlike relayhost and fallback-relay which take 602any number of destinations. 603 604More general virtual domain support. Postfix now supports both 605Sendmail-style virtual domains and Postfix-style virtual domains. 606Details and examples are given in the revised virtual manual page. 607 608- With Sendmail-style virtual domains, local users/aliases/mailing 609 lists are visible as localname@virtual.domain. This is convenient 610 if you want to host mailing lists under virtual domains. 611 612- With Postfix-style virtual domains, local users/aliases/mailing 613 lists are not visible as localname@virtual.domain. Each virtual 614 domain has its own separate name space. 615 616More general "soft bounce" feature. Specify "soft_bounce = yes" 617in main.cf to prevent the SMTP server from bouncing mail while you 618are testing configurations. Until this release the SMTP server was 619not aware of soft bounces. 620 621Workarounds for non-standard RFC 2554 (AUTH command) implementations. 622Specify "broken_sasl_auth_clients = yes" to enable SMTP server 623support for old Microsoft client applications. The Postfix SMTP 624client supports non-standard RFC 2554 servers by default. 625 626All time-related configuration parameters now accept a one-letter 627suffix to indicate the time unit (s: second, m: minute, h: hour, 628d: day, w: week). The exceptions are the LDAP and MYSQL modules 629which are maintained separately. 630 631New "import_environment" and "export_environment" configuration 632parameters provide explicit control over what environment variables 633Postfix will import, and what environment variables Postfix will 634pass on to a non-Postfix process. 635 636In order to improve performance of one-to-one deliveries, Postfix 637by default now looks at up to 10000 messages at a time (was: 1000). 638 639Specify "syslog_facility = log_local1" etc. to separate the logging 640from multiple Postfix instances. However, a non-default logging 641facility takes effect only after process initialization. Errors 642during command-line parsing are still logged with the default syslog 643facility, as are errors while processing the main.cf file. 644 645Postfix now strips out Content-Length: headers in incoming mail to 646avoid confusion in mail user agents. 647 648Specify "require_home_directory = yes" to prevent mail from being 649delivered to a user whose home directory is not mounted. This 650feature is implemented by the Postfix local delivery agent. 651 652The pipe mailer has a size limit (size=nnn) command-line argument. 653 654The pipe delivery agent has a configurable end-of-line attribute. 655Specify "pipe ... eol=\r\n" for delivery mechanisms that require 656CRLF record delimiters. The eol attribute understands the following 657C-style escape sequences: \a \b \f \n \r \t \v \nnn \\. 658 659In master.cf you can selectively override main.cf configuration 660parameters, for example: "smtpd -o myhostname=foo.com". 661 662In main.cf, specify "smtp_bind_address=x.x.x.x" to bind SMTP 663connections to a specific local interface. Or override the default 664setting in master.cf with "smtp -o smtp_bind_address=x.x.x.x". 665For now, you must specify a numeric IP address. 666 667Questionable feature: with "smtp_always_send_ehlo = yes", the SMTP 668client sends EHLO regardless of the content of the SMTP server's 669greeting. 670 671Specify "-d key" to postalias or postmap in order to remove one 672key. This still needs to be generalized to multi-key removal (e.g., 673read keys from stdin). 674 675Comments in Postfix configuration files no longer contain troff 676formatting codes. The text is now generated from prototype files 677in a new "proto" subdirectory. 678 679Major changes with postfix-19991231: 680==================================== 681 682- It is now much more difficult to configure Postfix as an open 683relay. The SMTP server requires that "smtpd_recipient_restrictions" 684contains at least one restriction that by default refuses mail (as 685is the default). There were too many accidents with changes to 686the UCE restrictions. 687 688- The relay_domains parameter no longer needs to contain $virtual_maps. 689 690- Overhauled FAQ (html/faq.html) with many more examples. 691 692- Updated UCE documentation (html/uce.html) with more examples. 693More UCE configuration examples in sample configuration files. 694 695- Several little improvements to the installation procedure: 696relative symlinks, configurable directory for scratch files so the 697installation can be done without write access to the build tree. 698 699- Updated LDAP client code (John Hensley). 700 701- Updated mysql client code (Scott Cotton). 702 703- The SMTP server now rejects mail for unknown users in virtual 704domains that are defined by Postfix virtual maps. 705 706- The SMTP server can reject mail for unknown local users. Specify 707"local_recipient_maps = $alias_maps, unix:passwd.byname" if your 708local mail is delivered by a UNIX-style local delivery agent. See 709example in conf/main.cf. 710 711- Use "disable_vrfy_command = yes" to disable the SMTP VRFY command. 712This prevents some forms of address harvesting. 713 714- The sendmail "-f" option now understands <user> and even understands 715forms with RFC 822-style comments. 716 717- New "qmgr_fudge_factor" parameter allows you to balance mailing 718list performance against response time for one-to-one mail. The 719fudge factor controls what percentage of delivery resources Postfix 720will devote to one message. With 100%, delivery of one message 721does not begin before delivery of the previous message is completed. 722This is good for list performance, bad for one-to-one mail. With 72310%, response time for one-to-one mail improves much, but list 724performance suffers: in the worst case, people near the start of a 725mailing list get a burst of postings today, while people near the 726end of the list get that same burst of postings a whole day later. 727 728- It is now relatively safe to configure 550 status codes for the 729main.cf unknown_address_reject_code or unknown_client_reject_code 730parameters. The SMTP server now always sends a 450 (try again) 731reply code when an UCE restriction fails due to a soft DNS error, 732regardless of what main.cf specifies. 733 734- The RBL checks now show the content of TXT records (Simon J Mudd). 735 736- The Postfix SMTP server now understands a wider range of illegal 737address forms in MAIL FROM and RCPT TO commands. In order to disable 738illegal forms, specify "strict_rfc821_envelopes = yes". This also 739disables support for MAIL FROM and RCPT TO addresses without <>. 740 741- Per-client/helo/sender/recipient UCE restrictions (fully-recursive 742UCE restriction parser). See the RESTRICTION_CLASS file for details. 743 744- Use "postmap -q key" or "postalias -q key" for testing Postfix 745lookup tables or alias files. 746 747- Use "postconf -e name=value..." to edit the main.cf file. This 748is easier and safer than editing the main.cf file by hand. The 749edits are done on a temporary copy that is renamed into place. 750 751- Use "postconf -m" to display all supported lookup table types 752(Scott Cotton). 753 754- New "permit_auth_destination" UCE restriction for finer-grained 755access control (Jesper Skriver). 756 757Incompatible changes with postfix-19990906 758========================================== 759 760- On systems that use user.lock files to protect system mailboxes 761against simultaneous updates, Postfix now uses /file/name.lock 762files while delivering to files specified in aliases/forward/include 763files. This is a no-op when the recipient lacks directory write 764permission. 765 766- The LDAP client code no longer looks up a name containing "*" 767because it could be abused. See the LDAP_README file for how to 768restore previous behavior. 769 770- The Postfix to PCRE interface now expects PCRE version 2.08. 771Postfix is no longer compatible with PCRE versions prior to 2.06. 772 773Major changes with postfix-19990906 774=================================== 775 776Several bugfixes, none related to security. See the HISTORY file 777for a complete list of changes. 778 779- Postfix is now distributed under IBM Public License Version 1.0 780which does not carry the controversial termination clause. The new 781license does have a requirement that contributors make source code 782available. 783 784- INSTALL.sh install/upgrade procedure that replaces existing 785programs and shell scripts instead of overwriting them, and that 786leaves existing queue files and configuration files alone. 787 788- The ugly Delivered-To: header can now be turned off selectively. 789The default setting is: "prepend_delivered_header = command, file, 790forward". Turning off the Delivered-To: header when forwarding 791mail is not recommended. 792 793- mysql client support by Scott Cotton and Joshua Marcus, Internet 794Consultants Group, Inc. See the file MYSQL_README for instructions. 795 796- reject_unauth_destination SMTP recipient restriction that rejects 797destinations not in $relay_domains. Unlike the check_relay_domains 798restriction, reject_unauth_destination ignores the client hostname. 799By Lamont Jones of Hewlett-Packard. 800 801- reject_unauth_pipelining SMTP *anything* restriction to stop mail 802from spammers that improperly use SMTP command pipelining to speed 803up their deliveries. 804 805- Postfix "sendmail" now issues a warning and drops privileges if 806installed set-uid root. 807 808- No more duplicate delivery when "postfix reload" is immediately 809followed by "sendmail -q". 810 811- No more "invalid argument" errors when a Postfix daemon opens a 812DB/DBM file while some other process is changing the file. 813 814- Portability to the Mac OS X Server, Reliant Unix, AIX 3.2.5 and 815Ultrix 4.3. 816 817Incompatible changes with postfix-19990601: 818=========================================== 819 820- The SMTP server now delays all UCE restrictions until the RCPT 821TO, VRFY or ETRN command. This makes the restrictions more useful, 822because many SMTP clients do not expect negative responses earlier 823in the protocol. In order to restore the old behavior, specify 824"smtpd_delay_reject = no" in /etc/postfix/main.cf. 825 826- The Postfix local delivery agent no longer automatically propagates 827address extensions to aliases/include/forward addresses. Specify 828"propagate_unmatched_extensions = canonical, virtual, alias, forward, 829include" to restore the old behavior. 830 831- The Postfix local delivery agent no longer does $name expansion 832on words found in the mailbox_command configuration parameter. This 833makes it easier to specify shell syntax. See conf/main.cf. 834 835- The luser_relay syntax has changed. You can specify one address; 836it is subjected to $user, etc. expansions. See conf/main.cf. 837 838- File system reorganization: daemon executables are now in the 839libexec subdirectory, command executables in the bin subdirectory. 840The INSTALL instructions now recommend installing daemons and 841commands into separate directories. 842 843Major changes with postfix-19990601: 844===================================== 845 846- New USER, EXTENSION, LOCAL, DOMAIN and RECIPIENT environment 847variables for delivery to command (including mailbox_command) by 848the local delivery agent. As you might expect, the information is 849censored. The list of acceptable characters is specified with the 850command_expansion_filter configuration parameter. Unacceptable 851characters are replaced by underscores. See html/local.8.html. 852 853- Specify "forward_path = /var/forward/$user" to avoid looking up 854.forward files in user home directories. The default value is 855$home/.forward$recipient_delimiter$extension, $home/.forward. 856Initial code by Philip A. Prindeville, Mirapoint, Inc., USA. 857 858- Conditional $name expansion in forward_path and luser_relay. 859Available names are: $user (bare user name) $shell (user login 860shell), $home (user home directory), $local (everything to the left 861of @), $extension (optional address extension), $domain (everything 862to the right of @), $recipient (the complete address) and 863$recipient_delimiter. A simple $name expands as usual. ${name?value} 864expands to value when $name is defined. ${name:value} expands to 865value when $name is not defined. With ${name?value} and ${name:value}, 866the value is subject to another iteration of $name expansion. 867 868- POSIX regular expression support, enabled by default on 4.4BSD, 869LINUX, HP-UX, and Solaris 2.5 and later. See conf/sample-regexp.cf. 870Initial code by Lamont Jones, Hewlett-Packard, borrowing heavily 871from the PCRE implementation by Andrew McNamara, connect.com.au 872Pty. Ltd., Australia. 873 874- Regular expression checks for message headers. This requires 875support for POSIX or for PCRE regular expressions. Specify 876"header_checks = regexp:/file/name" or "header_checks = pcre:/file/name", 877and specify "/^header-name: badstuff/ REJECT" in the pattern file 878(patterns are case-insensitive by default). Code by Lamont Jones, 879Hewlett-Packard. It is to be expected that full content filtering 880will be delegated to an external command. 881 882- Regular expression support for all lookup tables, including access 883control (full mail addresses only), address rewriting (canonical/virtual, 884full mail addresses only) and transport tables (full domain names 885only). However, regular expressions are not allowed for aliases, 886because that would open up security exposures. 887 888- Automatic detection of changes to DB or DBM lookup tables. This 889eliminates the need to run "postfix reload" after each change to 890the SMTP access table, or to the canonical, virtual, transport or 891aliases tables. 892 893- New error mailer. Specify ".domain.name error:domain is undeliverable" 894in the transport table to bounce mail for entire domains. 895 896- No more Postfix lockups on Solaris (knock on wood). The code no 897longer uses Solaris UNIX-domain sockets, because they are still 898broken, even with Solaris 7. 899 900- Workaround for the Solaris mailtool, which keeps an exclusive 901kernel lock on the mailbox while its window is not iconified (specify 902"sun_mailtool_compatibility = yes" in main.cf). 903 904- Questionable workaround for Solaris, which reportedly loses 905long-lived exclusive locks that are held by the master daemon. 906 907- New reject_unknown_{sender,recipient}_domain restrictions for 908sender and recipient mail addresses that distinguish between soft 909errors (always 450) and hard errors (unknown_address_reject_code, 910default 450). 911 912- MIME-encapsulated bounce messages, making it easier to recover 913bounced mail. Initial implementation by Philip A. Prindeville, 914Mirapoint, Inc., USA. Support for RFC 1892 (multipart/report) and 915RFC 1894 (DSN) will have to wait until Postfix internals have been 916revised to support RFC 1893. 917 918- Separately configurable "postmaster" addresses for single bounces 919(bounce_notice_recipient), double bounces (2bounce_notice_recipient), 920delayed mail (delay_notice_recipient), and for mailer error reports 921(error_notice_recipient). See conf/main.cf. 922 923- Questionable feature: specify "best_mx_transport = local" if 924this machine is the best MX host for domains not in mydestinations. 925 926Incompatible changes with postfix-19990317: 927=========================================== 928 929- You MUST install the new version of /etc/postfix/postfix-script. 930 931- The pipe mailer "flags" syntax has changed. You now explicitly 932MUST specify the R flag in order to generate a Return-Path: message 933header (as needed by, for example, cyrus). 934 935Major changes with postfix-19990317: 936==================================== 937 938A detailed record of changes is given in the HISTORY file. 939 940- Less postmaster mail. Undeliverable bounce messages (double 941bounces) are now discarded. Specify "notify_classes = 2bounce..." 942to get copies of double bounces. Specify "notify_classes = bounce..." 943to get copies of normal and double bounces. 944 945- Improved LDAP client code by John Hensley of Merit Network, USA. 946See LDAP_README for details. 947 948- Perl-compatible regular expression support for lookup maps by 949Andrew McNamara, connect.com.au Pty. Ltd., Australia.. Example: 950"check_recipient_access pcre:/etc/postfix/sample-pcre.cf". Regular 951expressions provide a powerful tool not only for SMTP access control 952but also for address rewriting. See PCRE_README for details. 953 954- Automatic notification of delayed mail (disabled by default). 955With "delay_warning_time = 4", Postfix informs senders when mail 956has not been delivered after 4 hours. Initial version of the code 957by Daniel Eisenbud, University of California at Berkeley. In order 958to get postmaster copies of such warnings, specify "notify_classes 959= delay...". 960 961- More configurable local delivery: "mail_spool_directory" to 962specify the UNIX mail spool directory; "mailbox_transport" to 963delegate all mailbox delivery to, for example, cyrus, and 964"fallback_transport" to delegate delivery of only non-UNIX users. 965And all this without losing local aliases and local .forward 966processing. See config/main.cf and config/master.cf. 967 968- Several changes to improve Postfix behavior under worst-case 969conditions (frequent Postfix restarts/reloads combined with lots 970if inbound mail, intermittent connectivity problems, SMTP servers 971that become comatose after receiving QUIT). 972 973- More NFS-friendly mailbox delivery. The local delivery agent 974now avoids using root privileges where possible. 975 976- For sites that do not receive mail at all, mydestination can now 977be an empty string. Be sure to set up a transport table entry to 978prevent mail from looping. 979 980- New "postsuper" utility to clean up stale files from Postfix 981queues. 982 983- Workaround for BSD select() collisions that cause performance 984problems on large BSD systems. 985 986- Several questionable but useful features to capture mail: 987"always_bcc = address" to capture a copy of every message that 988enters the system, and "luser_relay = address" to capture mail for 989unknown recipients (does not work when mailbox_transport or 990fallback_transport are being used). 991 992- Junk mail controls: new reject_non_fqdn_{hostname,sender,recipient} 993restrictions to reject non-FQDN arguments in HELO, MAIL FROM and 994RCPT TO commands, and stricter checking of numeric HELO arguments. 995 996- "fallback_relay" feature for sites that use DNS but that can't 997talk to the entire world. The fall-back relay gets the mail when 998a destination is not found in the DNS or when the destination is 999found but not reachable. 1000 1001- Several questionable controls that can help to keep mail going: 1002specify "smtp_skip_4xx_greeting = yes" to skip SMTP servers that 1003greet with 4XX, "ignore_mx_lookup_error = yes" to look up an A 1004record when a DNS server does not respond to an MX query. 1005 1006Incompatible changes with postfix-beta-19990122-pl01: 1007===================================================== 1008 1009None. 1010 1011Major changes with postfix-beta-19990122-pl01: 1012============================================== 1013 1014- Restrict who may use ETRN and what domains may be specified. 1015Example: "smtpd_etrn_restrictions = permit_mynetworks, reject". 1016 1017- BIFF notifications. For compatibility reasons this feature is 1018on by default. Specify "biff = no" in main.cf if your machine has 1019lots of shell users. 1020 1021- With "soft_bounce = yes", defer delivery instead of bouncing 1022mail. This is a safety net for configuration errors with delivery 1023agents. It has no effect on errors in virtual maps, canonical maps, 1024or in junk mail restrictions. 1025 1026- Specify "owner_request_special = no" to turn off special treatment 1027of owner-foo and foo-request addresses. 1028 1029Incompatible changes with postfix-beta-19990122: 1030================================================ 1031 1032- The syntax of the transport table has changed. An entry like: 1033 1034 customer.org smtp:[gateway.customer.org] 1035 1036 no longer forwards mail for anything.customer.org. For that you 1037 need to specify: 1038 1039 customer.org smtp:[gateway.customer.org] 1040 .customer.org smtp:[gateway.customer.org] 1041 1042 This change makes transport tables more compatible with 1043 sendmail mailer tables. 1044 1045- The format of syslog records has changed. A client is now always 1046logged as hostname[address]; the pickup daemon logs queue file uid 1047and sender address. 1048 1049Major changes with postfix-beta-19990122: 1050========================================= 1051 1052- Junk mail restrictions can now be postponed to the RCPT TO command. 1053Specify: "smtpd_recipient_restrictions = reject_maps_rbl...". 1054 1055- More flexible interface for delivery to e.g., cyrus IMAP without 1056need for PERL scripts to munge recipient addresses. In addition to 1057$sender, $nexthop and $recipient, the pipe mailer now also supports 1058$user, $extension and $mailbox. 1059 1060- New mail now has precedence over deferred mail, plus some other 1061tweaks to make bulk mail go faster. But it ain't no cure for massive 1062network outages. 1063 1064- Watchdog timer for systems that cause the Postfix queue manager 1065to lock up, so it recovers without human intervention. 1066 1067- Delivery to qmail-style maildir files, which is good for NFS 1068environments. Specify "home_mailbox = Maildir/", or specify 1069/file/name/ in aliases or in .forward files. The trailing / is 1070required to turn on maildir delivery. 1071 1072- Incremental updates of aliases and maps. Specify "postmap -i 1073mapname" and it will read new entries from stdin. 1074 1075- Newaliases will now update more than one alias database. 1076Specify the names with the main.cf "alias_database" parameter. 1077 1078- Address masquerading exceptions to prevent users from being 1079masqueraded. Specify "masquerade_exceptions = root". 1080 1081- A pipelined SMTP client. Deliveries to Postfix, qmail, LSOFT, 1082zmailer, and exim (once it's fixed) speed up by some 30% for short 1083messages with one recipient, with more for multi-recipient mails. 1084 1085- Hook for local delivery to "|command" via the smrsh restricted 1086shell, to restrict what commands may be used in .forward etc. files. 1087Specify "local_command_shell = /some/where/smrsh -c". 1088