xref: /netbsd-src/external/ibm-public/postfix/dist/RELEASE_NOTES-1.1 (revision 901e7e84758515fbf39dfc064cb0b45ab146d8b0)
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