352 lines
15 KiB
Groff
352 lines
15 KiB
Groff
The stable Postfix release is called postfix-2.9.x where 2=major
|
|
release number, 9=minor release number, x=patchlevel. The stable
|
|
release never changes except for patches that address bugs or
|
|
emergencies. Patches change the patchlevel and the release date.
|
|
|
|
New features are developed in snapshot releases. These are called
|
|
postfix-2.10-yyyymmdd where yyyymmdd is the release date (yyyy=year,
|
|
mm=month, dd=day). Patches are never issued for snapshot releases;
|
|
instead, a new snapshot is released.
|
|
|
|
The mail_release_date configuration parameter (format: yyyymmdd)
|
|
specifies the release date of a stable release or snapshot release.
|
|
|
|
If you upgrade from Postfix 2.7 or earlier, read RELEASE_NOTES-2.8
|
|
before proceeding.
|
|
|
|
Major changes - critical
|
|
------------------------
|
|
|
|
[Incompat 20110321] You need to "postfix reload" after upgrade from
|
|
snapshot 20110320 or earlier. The hash_queue_names algorithm was
|
|
changed to provide better performance with long queue IDs.
|
|
|
|
[Incompat 20110313] Use "postfix reload" after "make upgrade" on a
|
|
running Postfix system. This is needed because the protocol between
|
|
postscreen(8) and dnsblog(8) has changed.
|
|
|
|
Major changes - library API
|
|
---------------------------
|
|
|
|
[Incompat 20110130] The VSTREAM error flags are now split into
|
|
separate read and write error flags. As a result of this change,
|
|
all programs that use Postfix VSTREAMs MUST be recompiled.
|
|
|
|
Major changes - compatibility
|
|
-----------------------------
|
|
|
|
[Incompat 20111012] For consistency with the SMTP standard, the
|
|
(client-side) smtp_line_length_limit default value was increased
|
|
from 990 characters to 999 (i.e. 1000 characters including <CR><LF>).
|
|
Specify "smtp_line_length_limit = 990" to restore historical Postfix
|
|
behavior.
|
|
|
|
[Incompat 20111012] To simplify integration with third-party
|
|
applications, the Postfix sendmail command now always transforms
|
|
all input lines ending in <CR><LF> into UNIX format (lines ending
|
|
in <LF>). Specify "sendmail_fix_line_endings = strict" to restore
|
|
historical Postfix behavior (i.e. convert all input lines ending
|
|
in <CR><LF> only if the first line ends in <CR><LF>).
|
|
|
|
[Incompat 20111106] To work around broken remote SMTP servers, the
|
|
Postfix SMTP client by default no longer appends the "AUTH=<>"
|
|
option to the MAIL FROM command. Specify "smtp_send_dummy_mail_auth
|
|
= yes" to restore the old behavior.
|
|
|
|
Major changes - gradual degradation
|
|
-----------------------------------
|
|
|
|
[Incompat 20120114] Logfile-based alerting systems may need to be
|
|
updated to look for "error" messages in addition to "fatal" messages.
|
|
Specify "daemon_table_open_error_is_fatal = yes" to get the historical
|
|
behavior (immediate termination with "fatal" message).
|
|
|
|
[Feature 20120114] Instead of terminating immediately with a "fatal"
|
|
message when a database file can't be opened, a Postfix daemon
|
|
program now logs an "error" message, and continues execution with
|
|
reduced functionality. For the sake of sanity, the number of
|
|
"errors" over the life of a process is limited to 13.
|
|
|
|
Features that don't depend on the unavailable table will continue
|
|
to work; attempts to use features that depend on the table will
|
|
fail, and will be logged with a "warning" message.
|
|
|
|
[Feature 20120108] Instead of terminating with a fatal error, the
|
|
LDAP, *SQL and memcache clients now handle table lookup errors in
|
|
the "domain" feature, instead of terminating with a fatal error.
|
|
|
|
[Feature 20120102] Degrade gradually when some or all network
|
|
protocols specified with inet_protocols are unavailable, instead
|
|
of terminating with a fatal error. This eliminates build errors on
|
|
non-standard systems where opening an IPv4 socket results in an
|
|
error, and on non-standard systems where opening an IPv6 socket
|
|
results in an error. In the worst case, the master daemon will log
|
|
a message that it disables all type "inet" services. This will still
|
|
allow local submission and local delivery.
|
|
|
|
[Feature 20111222] Instead of terminating with a fatal error, the
|
|
Postfix SMTP server now handles errors with database lookups in
|
|
mynetworks, TLS client certificate tables, debug_peer_list,
|
|
smtpd_client_event_limit_exceptions, permit_mx_backup_networks and
|
|
local_header_rewrite_clients, and reports "server local data error"
|
|
or "temporary lookup error".
|
|
|
|
[Feature 20111229] Instead of terminating with a fatal error, the
|
|
trivial-rewrite server now handles errors with database lookups in
|
|
virtual_alias_domains, relay_domains, virtual_mailbox_domains. This
|
|
means fewer occasions where trivial-rewrite clients (such as the
|
|
SMTP server) will appear to hang.
|
|
|
|
Major changes - long queue IDs
|
|
------------------------------
|
|
|
|
Postfix 2.9 introduces support for non-repeating queue IDs (also
|
|
used as queue file names). These names are encoded in a mix of upper
|
|
case, lower case and decimal digit characters. Long queue IDs are
|
|
disabled by default to avoid breaking tools that parse logfiles and
|
|
that expect queue IDs with the smaller [A-F0-9] character set.
|
|
|
|
[Incompat 20110320] If you enable support for long queue file names,
|
|
you need to be aware that these file names are not compatible with
|
|
Postfix <= 2.8. If you must migrate back to Postfix <= 2.8, you
|
|
must first convert all long queue file names into short names,
|
|
otherwise the old Postfix version will complain.
|
|
|
|
The conversion procedure before migration to Postfix <= 2.8 is:
|
|
|
|
# postfix stop
|
|
# postconf enable_long_queue_ids=no
|
|
# postsuper
|
|
|
|
Run the postsuper command repeatedly until it no longer reports
|
|
queue file name changes.
|
|
|
|
[Feature 20110320] Support for long, non-repeating, queue IDs (queue
|
|
file names). The benefit of non-repeating names is simpler logfile
|
|
analysis, and easier queue migration (if you don't merge different
|
|
queues, there is no need to run "postsuper" to change queue file
|
|
names that don't match their message file inode number).
|
|
|
|
Specify "enable_long_queue_ids = yes" to enable the feature. This
|
|
does not change the names of existing queue files. See postconf(5)
|
|
or postconf.5.html#enable_long_queue_ids for a detailed description
|
|
of the differences with the old short queue IDs.
|
|
|
|
This changes new Postfix queue IDs from the short form 0FCEE9247A9
|
|
into the longer form 3Ps0FS1Zhtz1PFjb, and changes new Message-ID
|
|
header values from YYMMDDHHMMSS.queueid@myhostname into the shorter
|
|
form queueid@myhostname.
|
|
|
|
Major changes - memcache
|
|
------------------------
|
|
|
|
[Feature 20111209] memcache lookup and update support. This provides
|
|
a way to share postscreen(8) or verify(8) caches between Postfix
|
|
instances. See MEMCACHE_README and memcache_table(5) for details
|
|
and limitations.
|
|
|
|
[Feature 20111213] Support for a persistent backup database in the
|
|
memcache client. The memcache client updates the memcache whenever
|
|
it looks up or modifies information in the persistent database.
|
|
|
|
Major changes - postconf
|
|
------------------------
|
|
|
|
The postconf command was restructured - it now warns about unused
|
|
parameter name=value settings in main.cf or master.cf (likely to
|
|
be mistakes), it now understands "dynamic" parameter names such as
|
|
parameters whose name depends on the name of a master.cf entry, and
|
|
it can display main.cf and master.cf in a more user-friendly format.
|
|
|
|
[Feature 20120117] support for legacy database parameter names
|
|
(main.cf parameter names that are generated by prepending a suffix
|
|
to the database name).
|
|
|
|
[Feature 20111118] The "postconf -M" (display master.cf) command
|
|
now supports filtering. For example, specify "postconf -M inet"
|
|
to display only services that listen on the network.
|
|
|
|
[Feature 20111113] postconf support to warn about unused "name=value"
|
|
entries in main.cf, and about unused "-o name=value" entries in
|
|
master.cf. This should help to eliminate common errors with mis-typed
|
|
names.
|
|
|
|
[Feature 20111108] postconf support for parameter names that are
|
|
generated automatically from master.cf entries (delivery agents,
|
|
spawn services), and for parameter names that are defined with
|
|
main.cf smtpd_restriction_classes.
|
|
|
|
[Feature 20111106] "postconf -M" support to print master.cf entries,
|
|
and "postconf -f" support to fold long main.cf or master.cf lines
|
|
for human readability.
|
|
|
|
Major changes - trickle defense
|
|
-------------------------------
|
|
|
|
[Feature 20110212] Support for per-record deadlines. These change
|
|
the behavior of Postfix timeout parameters, from a time limit per
|
|
read or write system call, to a time limit to send or receive a
|
|
complete record (an SMTP command line, SMTP response line, SMTP
|
|
message content line, or TLS protocol message). This limits the
|
|
impact from hostile peers that trickle data one byte at a time.
|
|
|
|
The new configuration parameters and their default settings are:
|
|
smtpd_per_record_deadline (normal: no, overload: yes),
|
|
smtp_per_record_deadline (no), and lmtp_per_record_deadline (no).
|
|
|
|
Note: when per-record deadlines are enabled, a short time limit may
|
|
cause problems with TLS over very slow network connections. The
|
|
reason is that a TLS protocol message can be up to 16 kbytes long
|
|
(with TLSv1), and that an entire TLS protocol message must be sent
|
|
or received within the per-record deadline.
|
|
|
|
Per-record deadlines were introduced with postscreen(8) in Postfix
|
|
2.8. This program does not receive mail, and therefore it has no
|
|
problems with TLS over slow connections.
|
|
|
|
Major changes - postscreen
|
|
--------------------------
|
|
|
|
[Feature 20111211] The proxymap(8) server can now be used to share
|
|
postscreen(8) or verify(8) caches between Postfix instances. Support
|
|
for proxymap-over-TCP, to share a Postfix database between hosts,
|
|
is expected to be completed in the Postfix 2.10 development cycle.
|
|
|
|
[Feature 20111209] memcache lookup and update support. This provides
|
|
a way to share postscreen(8) or verify(8) caches between Postfix
|
|
instances.
|
|
|
|
[Feature 20110228] postscreen(8) support to force remote SMTP clients
|
|
to implement proper MX lookup policy. By listening on both primary
|
|
and backup MX addresses, postscreen(8) can deny the temporary
|
|
whitelist status to clients that connect only to backup MX hosts,
|
|
and prevent them from talking to a Postfix SMTP server process.
|
|
|
|
Example: when 1.2.3.4 is a local backup IP address, specify
|
|
"postscreen_whitelist_interfaces = !1.2.3.4 static:all".
|
|
|
|
Major changes - tls
|
|
-------------------
|
|
|
|
[Incompat 20111205] Postfix now logs the result of successful TLS
|
|
negotiation with TLS logging levels of 0. See the smtp_tls_loglevel
|
|
and smtpd_tls_loglevel descriptions in the postconf(5) manpage for
|
|
other minor differences.
|
|
|
|
[Feature 20111205] Support for TLS public key fingerprint matching
|
|
in the Postfix SMTP client (in smtp_tls_policy_maps) and server (in
|
|
check_ccert access maps). Public key fingerprints are inherently
|
|
more specific than fingerprints over the entire certificate.
|
|
|
|
[Feature 20111205] Revision of Postfix TLS logging. The main
|
|
difference is that Postfix now logs the result of successful TLS
|
|
negotiation with TLS logging levels of 0. See the smtp_tls_loglevel
|
|
and smtpd_tls_loglevel descriptions in the postconf(5) manpage for
|
|
other minor differences.
|
|
|
|
Major changes - sasl authentication
|
|
-----------------------------------
|
|
|
|
[Incompat 20111218] To support external SASL authentication, e.g.,
|
|
in an NGINX proxy daemon, the Postfix SMTP server now always checks
|
|
the smtpd_sender_login_maps table, even without having
|
|
"smtpd_sasl_auth_enable = yes" in main.cf.
|
|
|
|
[Feature 20111218] Support for external SASL authentication via the
|
|
XCLIENT command. This is used to accept SASL authentication from
|
|
an SMTP proxy such as NGINX. This support works even without having
|
|
to specify "smtpd_sasl_auth_enable = yes" in main.cf.
|
|
|
|
[Incompat 20111106] To work around broken remote SMTP servers, the
|
|
Postfix SMTP client by default no longer appends the "AUTH=<>"
|
|
option to the MAIL FROM command. Specify "smtp_send_dummy_mail_auth
|
|
= yes" to restore the old behavior.
|
|
|
|
Major changes - large file support
|
|
----------------------------------
|
|
|
|
[Feature 20110219] Postfix now uses long integers for message_size_limit,
|
|
mailbox_size_limit and virtual_mailbox_limit. On LP64 systems (64-bit
|
|
long and pointer, but 32-bit integer), these limits can now exceed
|
|
2GB.
|
|
|
|
Major changes - ipv6
|
|
--------------------
|
|
|
|
[Incompat 20110918] The following changes were made in default
|
|
settings, in preparation for general availability of IPv6:
|
|
|
|
- The default inet_protocols value is now "all" instead of "ipv4",
|
|
meaning use both IPv4 and IPv6.
|
|
|
|
To avoid an unexpected loss of performance for sites without
|
|
global IPv6 connectivity, the commands "make upgrade" and "postfix
|
|
upgrade-configuration" now append "inet_protocols = ipv4" to
|
|
main.cf when no explicit inet_protocols setting is already present.
|
|
This workaround will be removed in a future release.
|
|
|
|
- The default smtp_address_preference value is now "any" instead
|
|
of "ipv6", meaning choose randomly between IPv6 and IPv4. With
|
|
this the Postfix SMTP client will have more success delivering
|
|
mail to sites that have problematic IPv6 configurations.
|
|
|
|
Major changes - address verification
|
|
------------------------------------
|
|
|
|
[Feature 20111211] The proxymap(8) server can now be used to share
|
|
postscreen(8) or verify(8) caches between Postfix instances. Support
|
|
for proxymap-over-TCP, to share a Postfix database between hosts,
|
|
is expected to be completed in the Postfix 2.10 development cycle.
|
|
|
|
[Feature 20111209] memcache lookup and update support. This provides
|
|
a way to share postscreen(8) or verify(8) caches between Postfix
|
|
instances.
|
|
|
|
[Feature 20111203] Support for time-dependent sender addresses
|
|
of address verification probes. The default address, double-bounce,
|
|
may end up on spammer blacklists. Although Postfix discards mail
|
|
for this address, such mail still uses up network bandwidth and
|
|
server resources. Specify an address_verify_sender_ttl value of
|
|
several hours or more to frustrate address harvesting.
|
|
|
|
Major changes - session transcript notification
|
|
-----------------------------------------------
|
|
|
|
[Incompat 20120114] By default the Postfix SMTP server no longer
|
|
reports transcripts of sessions where a client command is rejected
|
|
because a lookup table is unavailable. Postfix now implements gradual
|
|
degradation, for example, the SMTP server keeps running instead of
|
|
terminating with a fatal error. This change in error handling would
|
|
result in a very large number of "transcript of session" email
|
|
notifications when an LDAP or *SQL server goes down).
|
|
|
|
To receive such reports, add the new "data" class to the notify_classes
|
|
parameter value. The reports will be sent to the error_notice_recipient
|
|
address as before. This class is also used by the Postfix SMTP
|
|
client to report about sessions that fail because a table is
|
|
unavailable.
|
|
|
|
Major changes - logging
|
|
----------------------------------------
|
|
|
|
[Incompat 20120114] Logfile-based alerting systems may need to be
|
|
updated to look for "error" messages in addition to "fatal" messages.
|
|
Specify "daemon_table_open_error_is_fatal = yes" to get the historical
|
|
behavior (immediate termination with "fatal" message).
|
|
|
|
[Incompat 20111214] Logfile-based analysis tools may need to be
|
|
updated. The submission and smtps examples in the sample master.cf
|
|
file were updated to make their logging easier to distinguish.
|
|
|
|
See the source file pflogsumm_quickfix.txt for a "quick fix".
|
|
|
|
[Incompat 20111205] Postfix now logs the result of successful TLS
|
|
negotiation with TLS logging levels of 0. See the smtp_tls_loglevel
|
|
and smtpd_tls_loglevel descriptions in the postconf(5) manpage for
|
|
other minor differences.
|
|
|
|
[Incompat 20110219] The Postfix SMTP and QMQP servers now log
|
|
"hostname X does not resolve to address Y", when a "reverse hostname"
|
|
lookup result does not resolve to the client IP address. Until now
|
|
these servers logged "Y: hostname X verification failed" or "Y:
|
|
address not listed for hostname X" which people found confusing.
|