did not eliminate virtual expansion duplicates with the
same original recipient. File: cleanup/cleanup_out_recipient.c.
+20030223
+
+ Bugfix: smtpd_hard/soft_error_limit off-by-one error, so
+ that the real limit was one larger than the specified value.
+ File: smtpd/smtpd.c, smtpd/smtpd_chat.c.
+
+20030226
+
+ Safety: proxymap server defense against potential deadlock
+ when some library routine wants to open a proxied table.
+ Instead, proxymap opens the requested table directly. File:
+ proxymap/proxymap.c.
+
+20030227
+
+ Bugfix: added mynetworks to the list of proxy_read_maps
+ parameter settings that are pre-authorized to use proxied
+ table lookups. File: global/mail_params.h.
+
Open problems:
Low: after successful delivery, per-queue window += 1/window,
# cleanup service (defined further below).
#
smtp inet n - n - - smtpd
- -o cleanup_service=pre-cleanup
+ -o cleanup_service_name=pre-cleanup
pickup fifo n - n 60 1 pickup
- -o cleanup_service=pre-cleanup
+ -o cleanup_service_name=pre-cleanup
#
# ------------------------------------------------------------------
#
date. Snapshots change only the release date, unless they include
the same bugfixes as a patch release.
+Incompatible changes with Postfix version 2.0.5 (released 20030301)
+===================================================================
+
+The smtpd_hard_error_limit and smtpd_soft_error_limit values now
+behave as documented, that is, smtpd_hard_error_limit=1 causes
+Postfix to disconnect upon the first client error. Previously,
+there was an off-by-one error causing Postfix to change behavior
+after smtpd_hard/soft_error_limit+1 errors.
+
Incompatible changes with Postfix version 2.0.4 (released 20030219)
===================================================================
# dependent. In the case of SMTP, specify host:service for a
# non-default server port, and use [host] or [host]:port in
# order to disable MX (mail exchanger) DNS lookups. The []
-# form can also be used with IP addresses instead of host-
-# names.
+# form is required when you specify an IP address instead of
+# a hostname.
#
# A null transport and null nexthop result means "do not
# change": use the delivery transport and nexthop informa-
tions" errors. The solution:
virtual_alias_maps =
- proxy:mysql:/etc/postfix/virtual.cf
+ proxy:mysql:/etc/postfix/virtual_alias.cf
The total number of connections is limited by the
- number of proxymap server server processes.
+ number of proxymap server processes.
The proxymap server implements the following requests:
dependent. In the case of SMTP, specify <i>host</i>:<i>service</i> for a
non-default server port, and use [<i>host</i>] or [<i>host</i>]:<i>port</i> in
order to disable MX (mail exchanger) DNS lookups. The []
- form can also be used with IP addresses instead of host-
- names.
+ form is required when you specify an IP address instead of
+ a hostname.
A null <i>transport</i> and null <i>nexthop</i> result means "do not
change": use the delivery transport and nexthop informa-
This delivery agent only delivers mail. Other features
such as mail forwarding, out-of-office notifications,
- etc., must be configured via virtual maps or via similar
- lookup mechanisms.
+ etc., must be configured via virtual_alias maps or via
+ similar lookup mechanisms.
<b>MAILBOX</b> <b>LOCATION</b>
The mailbox location is controlled by the <b>virtual</b><i>_</i><b>mail-</b>
dependent. In the case of SMTP, specify \fIhost\fR:\fIservice\fR for a
non-default server port, and use [\fIhost\fR] or [\fIhost\fR]:\fIport\fR
in order to disable MX (mail exchanger) DNS lookups. The [] form
-can also be used with IP addresses instead of hostnames.
+is required when you specify an IP address instead of a hostname.
A null \fItransport\fR and null \fInexthop\fR result means "do
not change": use the delivery transport and nexthop information
.sp
virtual_alias_maps =
.ti +4
-proxy:mysql:/etc/postfix/virtual.cf
+proxy:mysql:/etc/postfix/virtual_alias.cf
.sp
The total number of connections is limited by the number of
-proxymap server server processes.
+proxymap server processes.
.PP
The proxymap server implements the following requests:
.IP "\fBPROXY_REQ_OPEN\fI maptype:mapname flags\fR"
This delivery agent only delivers mail. Other features such as
mail forwarding, out-of-office notifications, etc., must be
-configured via virtual maps or via similar lookup mechanisms.
+configured via virtual_alias maps or via similar lookup mechanisms.
.SH MAILBOX LOCATION
.na
.nf
# dependent. In the case of SMTP, specify \fIhost\fR:\fIservice\fR for a
# non-default server port, and use [\fIhost\fR] or [\fIhost\fR]:\fIport\fR
# in order to disable MX (mail exchanger) DNS lookups. The [] form
-# can also be used with IP addresses instead of hostnames.
+# is required when you specify an IP address instead of a hostname.
#
# A null \fItransport\fR and null \fInexthop\fR result means "do
# not change": use the delivery transport and nexthop information
" $" VAR_SEND_CANON_MAPS \
" $" VAR_RCPT_CANON_MAPS \
" $" VAR_RELOCATED_MAPS \
- " $" VAR_TRANSPORT_MAPS
+ " $" VAR_TRANSPORT_MAPS \
+ " $" VAR_MYNETWORKS
extern char *var_proxy_read_maps;
/*
* Patches change the patchlevel and the release date. Snapshots change the
* release date only, unless they include the same bugfix as a patch release.
*/
-#define MAIL_RELEASE_DATE "20030219"
+#define MAIL_RELEASE_DATE "20030301"
#define VAR_MAIL_VERSION "mail_version"
-#define DEF_MAIL_VERSION "2.0.4"
+#define DEF_MAIL_VERSION "2.0.5"
extern char *var_mail_version;
/*
/* .sp
/* virtual_alias_maps =
/* .ti +4
-/* proxy:mysql:/etc/postfix/virtual.cf
+/* proxy:mysql:/etc/postfix/virtual_alias.cf
/* .sp
/* The total number of connections is limited by the number of
-/* proxymap server server processes.
+/* proxymap server processes.
/* .PP
/* The proxymap server implements the following requests:
/* .IP "\fBPROXY_REQ_OPEN\fI maptype:mapname flags\fR"
vstream_fflush(client_stream);
}
+/* dict_proxy_open - intercept remote map request from inside library */
+
+DICT *dict_proxy_open(const char *map, int open_flags, int dict_flags)
+{
+ if (msg_verbose)
+ msg_info("dict_proxy_open(%s, 0%o, 0%o) called from internal routine",
+ map, open_flags, dict_flags);
+ while (strncmp(map, PROXY_COLON, PROXY_COLON_LEN) == 0)
+ map += PROXY_COLON_LEN;
+ return (dict_open(map, open_flags, dict_flags));
+}
+
/* post_jail_init - initialization after privilege drop */
static void post_jail_init(char *unused_name, char **unused_argv)
int prev_rec_type;
int first = 1;
VSTRING *why = 0;
+ int saved_err;
/*
* Sanity checks. With ESMTP command pipelining the client can send DATA
/*
* Cleanup. The client may send another MAIL command.
*/
+ saved_err = state->err;
chat_reset(state, var_smtpd_hist_thrsh);
mail_reset(state);
rcpt_reset(state);
if (why)
vstring_free(why);
- return (state->err);
+ return (saved_err);
}
/* rset_cmd - process RSET */
}
for (;;) {
- if (state->error_count > var_smtpd_hard_erlim) {
+ if (state->error_count >= var_smtpd_hard_erlim) {
state->reason = "too many errors";
state->error_mask |= MAIL_ERROR_PROTOCOL;
smtpd_chat_reply(state, "421 Error: too many errors");
* things went wrong. Don't complain about clients that go away without
* sending QUIT.
*/
- if (state->reason && state->where && strcmp(state->where, SMTPD_AFTER_DOT))
+ if (state->reason && state->where
+ && (strcmp(state->where, SMTPD_AFTER_DOT)
+ || strcmp(state->reason, "lost connection")))
msg_info("%s after %s from %s[%s]",
state->reason, state->where, state->name, state->addr);
* sleep-on-anything slows down clients that make an excessive number of
* errors within a session.
*/
- if (state->error_count > var_smtpd_soft_erlim)
+ if (state->error_count >= var_smtpd_soft_erlim)
sleep(delay = (state->error_count > var_smtpd_err_sleep ?
state->error_count : var_smtpd_err_sleep));
else if (STR(state->buffer)[0] == '4' || STR(state->buffer)[0] == '5')
/*
/* This delivery agent only delivers mail. Other features such as
/* mail forwarding, out-of-office notifications, etc., must be
-/* configured via virtual maps or via similar lookup mechanisms.
+/* configured via virtual_alias maps or via similar lookup mechanisms.
/* MAILBOX LOCATION
/* .ad
/* .fi