From: Wietse Venema
Date: Sun, 1 May 2011 05:00:00 +0000 (-0500)
Subject: postfix-2.9-20110501
X-Git-Tag: v2.9.0-RC1~45
X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0d004a6d614f0b3e53bc091b71eda6f3ccccf3b5;p=thirdparty%2Fpostfix.git
postfix-2.9-20110501
---
diff --git a/postfix/HISTORY b/postfix/HISTORY
index 6b1ca9886..35735c497 100644
--- a/postfix/HISTORY
+++ b/postfix/HISTORY
@@ -15616,7 +15616,7 @@ Apologies for any names omitted.
for the "virtual:" transport to "/etc/postfix/virtual:".
Symptom reported by Christoph Anton Mitterer.
-20200102
+20100102
Workaround: don't report bogus Berkeley DB close errors as
fatal errors. All operations before close are already error
@@ -16753,3 +16753,54 @@ Apologies for any names omitted.
Bitrot: text about queue ID reuse in the postsuper manpage.
File: postsuper/postsuper.c.
+
+20110328
+
+ Cleanup: don't log warnings about socket shutdown() errors
+ after a connection breaks. Postfix calls shutdown() to avoid
+ unnecessary socket write timeouts. This is only an optimization,
+ and failure is not critical. File: global/smtp_stream.c.
+
+20110411
+
+ Cleanup: postscreen(8) and verify(8) daemons now lock their
+ respective cache file exclusively upon open, to avoid massive
+ cache corruption by unsupported sharing. Files: util/dict.h,
+ util/dict_open.c, verify/verify.c, postscreen/postscreen.c.
+
+20110414
+
+ Bugfix (introduced with Postfix SASL patch 20000314): don't
+ reuse a server Cyrus SASL handle after authentication
+ failure. File: smtpd/smtpd_proto.c.
+
+20110418
+
+ Bugfix (introduced Postfix 2.3 and Postfix 2.7): the Milter
+ client reported some "file too large" errors as temporary
+ errors. Problem reported by Michael Tokarev. Files:
+ milter/milter8.c, cleanup/cleanup_milter.c.
+
+20110420
+
+ Performance: a high load of DSN success notification requests
+ could stall the queue manager. Solution: make the trace
+ client asynchronous, just like the bounce and defer clients.
+ Problem reported by Eduardo M. Stelmaszczyk of terra.com.br.
+ Files: global/abounce.[hc], *qmgr/qmgr_active.c (the
+ qmgr_active.c files are identical).
+
+20110421
+
+ Cleanup: updated abounce warning message, and added a safety
+ timeout to abounce() etc. requests. File: global/abounce.c.
+
+20110426
+
+ Bugfix (introduced in Postfix 1.1, duplicated in Postfix
+ 2.3, unrelated mistake in Postfix 2.7): the local(8) delivery
+ agent ignored table lookup errors in mailbox_command_maps,
+ mailbox_transport_maps, fallback_transport_maps and (while
+ bouncing mail to alias) alias owner lookup. Problem reported
+ by William Ono. Files: local/command.c, local/mailbox.c,
+ local/unknown.c, local/bounce_workaround.c.
diff --git a/postfix/README_FILES/OVERVIEW b/postfix/README_FILES/OVERVIEW
index ee271e61b..637ea9842 100644
--- a/postfix/README_FILES/OVERVIEW
+++ b/postfix/README_FILES/OVERVIEW
@@ -370,8 +370,12 @@ queues.
While postscreen(8) keeps the zombies away, more smtpd(8) processes remain
available for legitimate clients.
+ postscreen(8) maintains a temporary whitelist for clients that pass its
+ tests; by allowing whitelisted clients to skip tests, postscreen(8)
+ minimizes its impact on legitimate email traffic.
+
The postscreen(8) server is available with Postfix 2.8 and later. To keep
- the implementation simple, postscreen(8) delegates DNS white/backlist
+ the implementation simple, postscreen(8) delegates DNS white/blacklist
lookups to dnsblog(8) server processes, and delegates TLS encryption/
decryption to tlsproxy(8) server processes. This delegation is invisible to
the remote SMTP client, and is not shown in the diagram below.
diff --git a/postfix/README_FILES/POSTSCREEN_README b/postfix/README_FILES/POSTSCREEN_README
index 19df31b0a..71fb3eb33 100644
--- a/postfix/README_FILES/POSTSCREEN_README
+++ b/postfix/README_FILES/POSTSCREEN_README
@@ -9,6 +9,10 @@ connections at the same time. While a single postscreen(8) process keeps
zombies away from Postfix SMTP server processes, more Postfix SMTP server
processes remain available for legitimate clients.
+postscreen(8) maintains a temporary whitelist for clients that pass its tests;
+by allowing whitelisted clients to skip tests, postscreen(8) minimizes its
+impact on legitimate email traffic.
+
postscreen(8) should not be used on SMTP ports that receive mail from end-user
clients (MUAs). In a typical deployment, postscreen(8) is used on the "port 25"
service, while MUA clients submit mail via the submission service.
@@ -83,10 +87,10 @@ focused on.
GGeenneerraall ooppeerraattiioonn
The postscreen(8) triage process involves a number of tests, in the order as
-described below. Some tests introduce a delay of a few seconds. Once a client
-passes a test, its IP address is whitelisted from 24 hours for simple tests, to
-1 week for complex tests. Whitelisting minimizes the impact of postscreen(8)'s
-tests on legitimate mail clients.
+described below. Some tests introduce a delay of a few seconds. postscreen(8)
+maintains a temporary whitelist for clients that pass its tests; by allowing
+whitelisted clients to skip tests, postscreen(8) minimizes its impact on
+legitimate email traffic.
By default, postscreen(8) hands off all connections to a Postfix SMTP server
process after logging its findings. This mode is useful for non-destructive
@@ -448,14 +452,16 @@ ddrroopp (default for non-SMTP commands)
OOtthheerr eerrrroorrss
-When an SMTP client hangs up unexpectedly during any tests, postscreen(8) logs
-this as:
+When an SMTP client hangs up unexpectedly, postscreen(8) logs this as:
HHAANNGGUUPP aafftteerr time ffrroomm [address]:port iinn test name
Translation: the SMTP client at [address]:port disconnected unexpectedly, time
seconds after the start of the test named test name.
+There is no punishment for hanging up. A client that hangs up without sending
+the QUIT command can still pass all postscreen(8) tests.
+
The following errors are reported by the built-in SMTP engine. This engine
never accepts mail, therefore it has per-session limits on the number of
commands and on the session length.
diff --git a/postfix/WISHLIST b/postfix/WISHLIST
index ebcbabc1e..f2a13b73f 100644
--- a/postfix/WISHLIST
+++ b/postfix/WISHLIST
@@ -11,11 +11,13 @@ Wish list:
Don't forget Apple's code donation for fetching mail from
IMAP server.
- Simplify postscreen logic: set the noforward flag if the
- client made an unforgivable error. Individual "fail" flags
- are needed only to avoid logging the same offense multiple
- times. Individual "pass" flags are still needed as proof
- that the client didn't skip tests by hanging up early.
+ Simplify postscreen logic. Individual "fail" flags help to
+ avoid repeated testing/logging the same mistake. Individual
+ "pass" flags provide evidence that the client didn't skip
+ tests by hanging up early. The current global "noforward"
+ flag implements the wrong model: instead we need an indicator
+ that a client has passed all tests or that all mistakes
+ were forgiven.
In the SMTP server, check if the connection is closed before
replying to ".", and discard the message if the reply can't
@@ -23,17 +25,14 @@ Wish list:
duplication, and may even prevent the delivery of some spam.
http://www.exim.org/lurker/message/20070416.103159.9d5ff0ce.en.html
+ Find out how to reproduce Berkeley DB bogus ENOENT errors.
+ postscreen does not log this with Berkeley DB 1 (FreeBSD
+ 4..8), 4.7.25 (Ubuntu 9.04) and 4.8.24 (Ubuntu 10.04).
+
postconf command-line option to show the compile-time
settings (CCARGS, AUXLIBS) in case binary packages
don't install the makedefs.out file.
- propagate alias owner from pcre, regexp, cidr, texthash,
- etc. databases, i.e. set the owner property at open time;
- it can't be looked up at run-time with fstat(dict->stat_fd)
- because there is no open file. What about *SQL, LDAP, etc.?
- Maybe use the source of the configuration file? We can reuse
- that to enforce root ownership of main/master.cf files.
-
events.c: cache the side effects of file descriptor event
enable/disable operations in user space, and do bulk kernel
updates at event_loop() time. This can eliminate costly
@@ -85,10 +84,6 @@ Wish list:
This would apply to postmaster notices and bounce messages
(DKIM), and address verification (BATV).
- As postscreen implements more ESMTP keywords, need to copy
- inter-operability features from smtpd to filter keywords
- and command syntax.
-
Consistency: in postconf.proto make .. tags bold.
postscreen(8): listen on multiple IP addresses and enforce
diff --git a/postfix/html/OVERVIEW.html b/postfix/html/OVERVIEW.html
index 0f55aa157..1393e26d0 100644
--- a/postfix/html/OVERVIEW.html
+++ b/postfix/html/OVERVIEW.html
@@ -737,9 +737,14 @@ those numbers were 92% and 95%, respectively. While smtpd(8) processes remain available
for legitimate clients.
+ postscreen(8) maintains a temporary whitelist for clients that
+pass its tests; by allowing whitelisted clients to skip tests,
+postscreen(8) minimizes its impact on legitimate email traffic.
+
+
The postscreen(8) server is available with Postfix 2.8 and
later. To keep the implementation simple, postscreen(8) delegates
-DNS white/backlist lookups to dnsblog(8) server processes, and
+DNS white/blacklist lookups to dnsblog(8) server processes, and
delegates TLS encryption/decryption to tlsproxy(8) server processes.
This delegation is invisible to the remote SMTP client, and is not
shown in the diagram below.
diff --git a/postfix/html/POSTSCREEN_README.html b/postfix/html/POSTSCREEN_README.html
index d20d13672..6b501fdec 100644
--- a/postfix/html/POSTSCREEN_README.html
+++ b/postfix/html/POSTSCREEN_README.html
@@ -23,6 +23,11 @@ process keeps zombies away from Postfix SMTP server processes, more
Postfix SMTP server processes remain available for legitimate
clients.
+ postscreen(8) maintains a temporary whitelist for clients that
+pass its tests; by allowing whitelisted clients to skip tests,
+postscreen(8) minimizes its impact on legitimate email traffic.
+
+
postscreen(8) should not be used on SMTP ports that receive
mail from end-user clients (MUAs). In a typical deployment,
postscreen(8) is used on the "port 25" service, while MUA clients
@@ -121,10 +126,10 @@ and that is the problem that postscreen(8) is fo
The postscreen(8) triage process involves a number of tests,
in the order as described below. Some tests introduce a delay of
-a few seconds. Once a client passes a test, its IP address is
-whitelisted from 24 hours for simple tests, to 1 week for complex
-tests. Whitelisting minimizes the impact of postscreen(8)'s tests
-on legitimate mail clients.
+a few seconds. postscreen(8) maintains a temporary whitelist for
+clients that pass its tests; by allowing whitelisted clients to
+skip tests, postscreen(8) minimizes its impact on legitimate email
+traffic.
By default, postscreen(8) hands off all connections to a Postfix
SMTP server process after logging its findings. This mode is useful
@@ -606,8 +611,8 @@ feature.
- When an SMTP client hangs up unexpectedly during any tests,
-postscreen(8) logs this as:
+ When an SMTP client hangs up unexpectedly, postscreen(8) logs
+this as:
HANGUP after time from [address]:port in test name
@@ -617,6 +622,10 @@ feature.
unexpectedly, time seconds after the start of the
test named test name.
+ There is no punishment for hanging up. A client that hangs up
+without sending the QUIT command can still pass all postscreen(8)
+tests.
+