diff --git a/postfix/RELEASE_NOTES b/postfix/RELEASE_NOTES
index 8030c8bcf..622577fbf 100644
--- a/postfix/RELEASE_NOTES
+++ b/postfix/RELEASE_NOTES
@@ -42,19 +42,19 @@ from the other programs.
Major changes - DNSBL/DNSWL support
-----------------------------------
-[Feature 20101126] Support for address patterns in DNSBL and DNSWL
-lookup results.
+[Feature 20101126] Support for address patterns in DNS blacklist
+and whitelist lookup results.
-For example, "reject_rbl_client example.com=127.0.0.[2,4,6..8]"
+For example, "reject_rbl_client example.com=127.0.0.[2;4;6..8]"
will reject clients when the lookup result is 127.0.0.2, 127.0.0.4,
127.0.0.6, 127.0.0.7, or 127.0.0.8.
-The setting "postscreen_dnsbl_sites = example.com=127.0.0.[2,4,6..8]"
+The setting "postscreen_dnsbl_sites = example.com=127.0.0.[2;4;6..8]"
rejects the same clients.
An IPv4 address pattern has four fields separated by ".". Each
field is either a decimal number, or a sequence inside "[]" that
-contains one or more comma-separated decimal numbers or number..number
+contains one or more ";"-separated decimal numbers or number..number
ranges.
Thus, any pattern field can be a sequence inside "[]", but a "[]"
@@ -71,7 +71,7 @@ The syntax for IPv4 patterns is as follows:
v4pattern = v4field "." v4field "." v4field "." v4field
v4field = v4octet | "[" v4sequence "]"
v4octet = any decimal number in the range 0 through 255
-v4sequence = v4seq_member | v4sequence "," v4seq_member
+v4sequence = v4seq_member | v4sequence ";" v4seq_member
v4seq_member = v4octet | v4octet ".." v4octet
[Feature 20101105] The Postfix SMTP server now supports DNS-based
@@ -91,7 +91,14 @@ silently ignored when they would override reject_unauth_destination.
Also for safety reasons, the result is DEFER_IF_REJECT when DNS
whitelist lookup fails (this result will be made configurable).
-Major changes - Milter suppport
+Major changes - sqlite support
+------------------------------
+
+[Feature 20100617] Support for read-only sqlite database access,
+with code by Axel Steiner and documentation by Jesus Garcia Crespo.
+See SQLITE_README and sqlite_table(5) for details.
+
+Major changes - Milter support
-------------------------------
[Incompat 20101103] Postfix now requests default delivery status
diff --git a/postfix/html/ADDRESS_VERIFICATION_README.html b/postfix/html/ADDRESS_VERIFICATION_README.html
index 00d555c9e..2bdab713e 100644
--- a/postfix/html/ADDRESS_VERIFICATION_README.html
+++ b/postfix/html/ADDRESS_VERIFICATION_README.html
@@ -106,7 +106,7 @@ always discarded.
-
+ |
@@ -165,7 +165,7 @@ always discarded.
-
+ |
|
diff --git a/postfix/html/OVERVIEW.html b/postfix/html/OVERVIEW.html
index adc415ee9..0f55aa157 100644
--- a/postfix/html/OVERVIEW.html
+++ b/postfix/html/OVERVIEW.html
@@ -673,7 +673,7 @@ document. The verify(8) service is available with P
-
+ |
@@ -714,7 +714,7 @@ document. The verify(8) service is available with P
-
+ |
|
diff --git a/postfix/html/SASL_README.html b/postfix/html/SASL_README.html
index d6dd2e696..bd5fac0e4 100644
--- a/postfix/html/SASL_README.html
+++ b/postfix/html/SASL_README.html
@@ -587,13 +587,13 @@ SASL sources provide three authentication plugins.
Plugin | Description |
- sasldb | Accounts
+ |
sasldb | Accounts
are stored stored in a Cyrus SASL Berkeley DB database |
- sql | Accounts are
+ |
sql | Accounts are
stored in a SQL database |
- ldapdb | Accounts
+ |
ldapdb | Accounts
are stored stored in an LDAP database |
diff --git a/postfix/html/postconf.5.html b/postfix/html/postconf.5.html
index 293a3b45c..a6a0397f5 100644
--- a/postfix/html/postconf.5.html
+++ b/postfix/html/postconf.5.html
@@ -11881,7 +11881,7 @@ This feature is available in Postfix 2.0 and later; with Postfix
version 2.8 and later, reject_rhsbl_reverse_client will usually
produce better results.
- permit_rhswl_client rhswl_domain=d.d.d.d
+permit_rhswl_client rhswl_domain=d.d.d.d
Accept the request when the client hostname is listed with the
A record "d.d.d.d" under rhswl_domain. Each "d"
@@ -12106,8 +12106,8 @@ cases:
to translate these into domain names if necessary.
Use "strict_rfc821_envelopes = no" to accept "RCPT TO:<User
-Name <user@example.com>>". Postfix will ignore the "User
-Name" part and deliver to the <user@example.com> address.
+Name <user@example.com>>". Postfix will ignore the "User
+Name" part and deliver to the <user@example.com> address.
@@ -12187,7 +12187,7 @@ in any SMTP command context, described under >\fR". Postfix will ignore the "User
-Name" part and deliver to the \fR address.
+Name >\fR". Postfix will ignore the "\fIUser
+Name\fR" part and deliver to the \fI\fR address.
.PP
Examples of problems that can be solved with the smtpd_command_filter
feature:
@@ -8201,7 +8201,7 @@ Postfix logfile records for a failed SMTP session. The text itself
is not logged to the Postfix SMTP server's maillog file.
.PP
Be sure to keep the text as short as possible. Long text may
-be truncated before it is logged in the Postfix SMTP server's maillog
+be truncated before it is logged to the remote SMTP client's maillog
file, or before it is returned to the sender in a delivery status
notification.
.PP
diff --git a/postfix/proto/ADDRESS_VERIFICATION_README.html b/postfix/proto/ADDRESS_VERIFICATION_README.html
index 07f15f426..e00173717 100644
--- a/postfix/proto/ADDRESS_VERIFICATION_README.html
+++ b/postfix/proto/ADDRESS_VERIFICATION_README.html
@@ -106,7 +106,7 @@ always discarded.
-
+ |
@@ -165,7 +165,7 @@ always discarded.
-
+ |
|
diff --git a/postfix/proto/OVERVIEW.html b/postfix/proto/OVERVIEW.html
index a199c493e..7b34b4d69 100644
--- a/postfix/proto/OVERVIEW.html
+++ b/postfix/proto/OVERVIEW.html
@@ -673,7 +673,7 @@ document. The verify(8) service is available with Postfix version
-
+ |
@@ -714,7 +714,7 @@ document. The verify(8) service is available with Postfix version
-
+ |
|
diff --git a/postfix/proto/SASL_README.html b/postfix/proto/SASL_README.html
index 13117bd5e..5ab745480 100644
--- a/postfix/proto/SASL_README.html
+++ b/postfix/proto/SASL_README.html
@@ -587,13 +587,13 @@ SASL sources provide three authentication plugins.
Plugin | Description |
- sasldb | Accounts
+ |
sasldb | Accounts
are stored stored in a Cyrus SASL Berkeley DB database |
- sql | Accounts are
+ |
sql | Accounts are
stored in a SQL database |
- ldapdb | Accounts
+ |
ldapdb | Accounts
are stored stored in an LDAP database |
diff --git a/postfix/proto/postconf.proto b/postfix/proto/postconf.proto
index 4fac6825c..d583da7fc 100644
--- a/postfix/proto/postconf.proto
+++ b/postfix/proto/postconf.proto
@@ -4919,7 +4919,7 @@ This feature is available in Postfix 2.0 and later; with Postfix
version 2.8 and later, reject_rhsbl_reverse_client will usually
produce better results.
- permit_rhswl_client rhswl_domain=d.d.d.d
+permit_rhswl_client rhswl_domain=d.d.d.d
Accept the request when the client hostname is listed with the
A record "d.d.d.d" under rhswl_domain. Each "d"
@@ -7866,7 +7866,7 @@ smtpd_sender_restrictions or smtpd_recipient_restrictions.
multi-recipient mail. Acting on only one recipient would be misleading,
because any decision will affect all recipients equally. Acting on
all recipients would require a possibly very large amount of memory,
-and would also be misleading for the reasons mentioned before.
+and would also be misleading for the reasons mentioned before.
@@ -12956,8 +12956,8 @@ cases:
to translate these into domain names if necessary.
Use "strict_rfc821_envelopes = no" to accept "RCPT TO:<User
-Name <user@example.com>>". Postfix will ignore the "User
-Name" part and deliver to the <user@example.com> address.
+Name <user@example.com>>". Postfix will ignore the "User
+Name" part and deliver to the <user@example.com> address.
@@ -13929,7 +13929,7 @@ Postfix logfile records for a failed SMTP session. The text itself
is not logged to the Postfix SMTP server's maillog file.
Be sure to keep the text as short as possible. Long text may
-be truncated before it is logged in the Postfix SMTP server's maillog
+be truncated before it is logged to the remote SMTP client's maillog
file, or before it is returned to the sender in a delivery status
notification.
diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h
index 67860cb9e..8b73cef61 100644
--- a/postfix/src/global/mail_version.h
+++ b/postfix/src/global/mail_version.h
@@ -20,8 +20,8 @@
* Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only.
*/
-#define MAIL_RELEASE_DATE "20110118"
-#define MAIL_VERSION_NUMBER "2.8.0-RC3"
+#define MAIL_RELEASE_DATE "20110120"
+#define MAIL_VERSION_NUMBER "2.8.0"
#ifdef SNAPSHOT
# define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE
diff --git a/postfix/src/postscreen/postscreen.c b/postfix/src/postscreen/postscreen.c
index 8df426924..7b3332b61 100644
--- a/postfix/src/postscreen/postscreen.c
+++ b/postfix/src/postscreen/postscreen.c
@@ -416,7 +416,7 @@ int var_psc_post_queue_limit;
int var_psc_pre_queue_limit;
int var_psc_watchdog;
-#define MIGRATION_WARNING
+#undef MIGRATION_WARNING
#ifdef MIGRATION_WARNING
char *var_psc_wlist_nets;
diff --git a/postfix/src/postscreen/postscreen_dict.c b/postfix/src/postscreen/postscreen_dict.c
index ce7efd056..131ff8164 100644
--- a/postfix/src/postscreen/postscreen_dict.c
+++ b/postfix/src/postscreen/postscreen_dict.c
@@ -68,23 +68,15 @@
#include
-/* psc_average - moving average */
-
-static double psc_average(double new, double old)
-{
- return (0.1 * new + 0.9 * old);
-}
-
/*
* Monitor time-critical operations.
*
* XXX Averaging support was added during a stable release candidate, so it
* provides only the absolute minimum necessary. A complete implementation
* should maintain separate statistics for each table, and it should not
- * complain when the average time between table access is larger than the
- * average table access latency.
+ * complain when the access latency is less than the time between accesses.
*/
-#define PSC_GET_TIME_BEFORE_LOOKUP \
+#define PSC_GET_TIME_BEFORE_LOOKUP { \
struct timeval _before, _after; \
DELTA_TIME _delta; \
double _new_delta_ms; \
@@ -92,6 +84,8 @@ static double psc_average(double new, double old)
#define PSC_DELTA_MS(d) ((d).dt_sec * 1000.0 + (d).dt_usec / 1000.0)
+#define PSC_AVERAGE(new, old) (0.1 * (new) + 0.9 * (old))
+
#ifndef PSC_THRESHOLD_MS
#define PSC_THRESHOLD_MS 100 /* nag if latency > 100ms */
#endif
@@ -100,18 +94,23 @@ static double psc_average(double new, double old)
#define PSC_WARN_LOCKOUT_S 60 /* don't nag for 60s */
#endif
+ /*
+ * Shared warning lock, so that we don't spam the logfile when the system
+ * becomes slow.
+ */
static time_t psc_last_warn = 0;
#define PSC_CHECK_TIME_AFTER_LOOKUP(table, action, average) \
GETTIMEOFDAY(&_after); \
PSC_CALC_DELTA(_delta, _after, _before); \
_new_delta_ms = PSC_DELTA_MS(_delta); \
- if ((average = psc_average(_new_delta_ms, average)) > PSC_THRESHOLD_MS \
- && psc_last_warn < event_time() - PSC_WARN_LOCKOUT_S) { \
+ if ((average = PSC_AVERAGE(_new_delta_ms, average)) > PSC_THRESHOLD_MS \
+ && psc_last_warn < _after.tv_sec - PSC_WARN_LOCKOUT_S) { \
msg_warn("%s: %s %s average delay is %.0f ms", \
myname, (table), (action), average); \
- psc_last_warn = event_time(); \
- }
+ psc_last_warn = _after.tv_sec; \
+ } \
+}
/* psc_addr_match_list_match - time-critical address list lookup */
diff --git a/postfix/src/postscreen/postscreen_smtpd.c b/postfix/src/postscreen/postscreen_smtpd.c
index 8e9ec6885..f42855c53 100644
--- a/postfix/src/postscreen/postscreen_smtpd.c
+++ b/postfix/src/postscreen/postscreen_smtpd.c
@@ -728,6 +728,10 @@ static void psc_smtpd_read_event(int event, char *context)
* Drain all input in the VSTREAM buffer, otherwise this socket will not
* receive further read event notification until the client disconnects!
*
+ * To suspend this loop temporarily before the buffer is drained, use the
+ * PSC_SUSPEND_SMTP_CMD_EVENTS() and PSC_RESUME_SMTP_CMD_EVENTS() macros,
+ * and set the PSC_SMTPD_CMD_FLAG_SUSPEND flag in the command table.
+ *
* Don't try to read input before it has arrived, otherwise we would starve
* the pseudo threads of other sessions. Get out of here as soon as the
* VSTREAM read buffer dries up. Do not look for more input in kernel
@@ -737,8 +741,9 @@ static void psc_smtpd_read_event(int event, char *context)
*/
/*
- * Note: on entry into this function the VSTREAM buffer may be non-empty,
- * so we test the "no more input" condition at the bottom of the loops.
+ * Note: on entry into this function the VSTREAM buffer may or may not be
+ * empty, so we test the "no more input" condition at the bottom of the
+ * loops.
*/
for (;;) {