2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-08-29 13:18:12 +00:00

postfix-2.5-20071122

This commit is contained in:
Wietse Venema 2007-11-22 00:00:00 -05:00 committed by Viktor Dukhovni
parent 261e3f8965
commit 66bc6411d2
16 changed files with 82 additions and 10 deletions

View File

@ -13839,3 +13839,14 @@ Apologies for any names omitted.
further review the number of parameters will be consolidated
and the defaults will select the better algorithms. Files:
qmgr/qmgr_queue.c, qmgr/qmgr_deliver.c.
20071121
Boundary condition: Patrik Rak pointed out that handling
of negative feedback with concurrency window 1 could
be improved.
Feature: support to look up null sender addresses
in sender-dependent relayhost maps. Parameter name:
empty_address_relayhost_maps_lookup_key (default; <>).
Keean Schupke. File: trivial-rewrite/resolve.c.

View File

@ -33,10 +33,9 @@ number of pseudo-cohorts(*) reports connection or handshake failure.
The drawbacks of the old +/-1 feedback scheduler are a) overshoot
due to exponential delivery concurrency growth with each pseudo-cohort(*)
(5-10-20...); b) throttling down to zero concurrency after a single
pseudo-cohort(*) failure. The second problem was especially an issue
with low-concurrency channels where a single failure could be
sufficient to mark a destination as "dead", and suspend further
deliveries.
pseudo-cohort(*) failure. This was especially an issue with
low-concurrency channels where a single failure could be sufficient
to mark a destination as "dead", and suspend further deliveries.
The new code is a laboratory model with a multitude of configuration
parameters, so that developers can experiment with different feedback

View File

@ -1,5 +1,7 @@
Wish list:
document dict_get() as returning const char *
Make event_drain() a proper event loop; update the zero mask,
and don't ignore a non-empty timer queue.

View File

@ -2253,6 +2253,19 @@ created locally as the result of configuration or software error.
</p>
</DD>
<DT><b><a name="empty_address_relayhost_maps_lookup_key">empty_address_relayhost_maps_lookup_key</a>
(default: <>)</b></DT><DD>
<p> The <a href="postconf.5.html#sender_dependent_relayhost_maps">sender_dependent_relayhost_maps</a> search string that will be
used instead of the null sender address. </p>
<p> This feature is available in Postfix 2.5 and later. With
earlier versions, <a href="postconf.5.html#sender_dependent_relayhost_maps">sender_dependent_relayhost_maps</a> lookups were
skipped for the null sender address. </p>
</DD>
<DT><b><a name="enable_errors_to">enable_errors_to</a>

View File

@ -193,6 +193,13 @@ TRIVIAL-REWRITE(8) TRIVIAL-REWRITE(8)
A sender-dependent override for the global <a href="postconf.5.html#relayhost">relay</a>-
<a href="postconf.5.html#relayhost">host</a> parameter setting.
Available in Postfix version 2.5 and later:
<b><a href="postconf.5.html#empty_address_relayhost_maps_lookup_key">empty_address_relayhost_maps_lookup_key</a> (</b>&lt;&gt;<b>)</b>
The <a href="postconf.5.html#sender_dependent_relayhost_maps">sender_dependent_relayhost_maps</a> search string
that will be used instead of the null sender
address.
<b>ADDRESS VERIFICATION CONTROLS</b>
Postfix version 2.1 introduces sender and recipient
address verification. This feature is implemented by

View File

@ -1212,6 +1212,13 @@ for \fBshowq\fR(8) queue displays.
The recipient of mail addressed to the null address. Postfix does
not accept such addresses in SMTP commands, but they may still be
created locally as the result of configuration or software error.
.SH empty_address_relayhost_maps_lookup_key (default: <>)
The sender_dependent_relayhost_maps search string that will be
used instead of the null sender address.
.PP
This feature is available in Postfix 2.5 and later. With
earlier versions, sender_dependent_relayhost_maps lookups were
skipped for the null sender address.
.SH enable_errors_to (default: no)
Report mail delivery errors to the address specified with the
non-standard Errors-To: message header, instead of the envelope

View File

@ -172,6 +172,11 @@ Available in Postfix version 2.3 and later:
.IP "\fBsender_dependent_relayhost_maps (empty)\fR"
A sender-dependent override for the global relayhost parameter
setting.
.PP
Available in Postfix version 2.5 and later:
.IP "\fBempty_address_relayhost_maps_lookup_key (<>)\fR"
The sender_dependent_relayhost_maps search string that will be
used instead of the null sender address.
.SH "ADDRESS VERIFICATION CONTROLS"
.na
.nf

View File

@ -379,6 +379,7 @@ while (<>) {
s;\bsender_canonical_classes\b;<a href="postconf.5.html#sender_canonical_classes">$&</a>;g;
s;\bsender_canonical_maps\b;<a href="postconf.5.html#sender_canonical_maps">$&</a>;g;
s;\bsender_dependent_relay[-</bB>]*\n*[ <bB>]*host_maps\b;<a href="postconf.5.html#sender_dependent_relayhost_maps">$&</a>;g;
s;\bempty_address_relayhost_maps_lookup_key\b;<a href="postconf.5.html#empty_address_relayhost_maps_lookup_key">$&</a>;g;
s;\bsendmail_path\b;<a href="postconf.5.html#sendmail_path">$&</a>;g;
s;\bservice_throttle_time\b;<a href="postconf.5.html#service_throttle_time">$&</a>;g;
s;\bsetgid_group\b;<a href="postconf.5.html#setgid_group">$&</a>;g;

View File

@ -9091,6 +9091,15 @@ substitutions in regular expression maps. </p>
This feature is available in Postfix 2.3 and later.
</p>
%PARAM empty_address_relayhost_maps_lookup_key <>
<p> The sender_dependent_relayhost_maps search string that will be
used instead of the null sender address. </p>
<p> This feature is available in Postfix 2.5 and later. With
earlier versions, sender_dependent_relayhost_maps lookups were
skipped for the null sender address. </p>
%PARAM address_verify_sender_dependent_relayhost_maps empty
<p>

View File

@ -192,6 +192,10 @@ extern char *var_relayhost;
#define DEF_SND_RELAY_MAPS ""
extern char *var_snd_relay_maps;
#define VAR_NULL_RELAY_MAPS_KEY "empty_address_relayhost_maps_lookup_key"
#define DEF_NULL_RELAY_MAPS_KEY "<>"
extern char *var_null_relay_maps_key;
#define VAR_SMTP_FALLBACK "smtp_fallback_relay"
#define DEF_SMTP_FALLBACK "$fallback_relay"
#define VAR_LMTP_FALLBACK "smtp_fallback_relay"

View File

@ -20,7 +20,7 @@
* Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only.
*/
#define MAIL_RELEASE_DATE "20071121"
#define MAIL_RELEASE_DATE "20071122"
#define MAIL_VERSION_NUMBER "2.5"
#ifdef SNAPSHOT

View File

@ -310,8 +310,11 @@ void qmgr_queue_throttle(QMGR_QUEUE *queue, DSN *dsn)
* adjustments on the concurrency limit itself, instead of using the
* actual concurrency. The latter fluctuates wildly when deliveries
* complete in bursts (artificial benchmark measurements).
*
* Even after reaching 1, we maintain the negative hysteresis cycle so that
* negative feedback can cancel out positive feedback.
*/
if (queue->window > 1) {
if (queue->window > 0) {
feedback = QMGR_FEEDBACK_VAL(qmgr_neg_feedback_idx, queue->window);
QMGR_LOG_FEEDBACK(feedback);
queue->failure -= feedback;

View File

@ -507,8 +507,9 @@ static void resolve_addr(RES_CONTEXT *rp, char *sender, char *addr,
* With off-host delivery, sender-dependent or global relayhost
* override the recipient domain.
*/
if (rp->snd_relay_info && *sender
&& (relay = mail_addr_find(rp->snd_relay_info, sender,
if (rp->snd_relay_info
&& (relay = mail_addr_find(rp->snd_relay_info, *sender ?
sender : var_null_relay_maps_key,
(char **) 0)) != 0)
vstring_strcpy(nexthop, relay);
else if (*RES_PARAM_VALUE(rp->relayhost))

View File

@ -150,6 +150,11 @@
/* .IP "\fBsender_dependent_relayhost_maps (empty)\fR"
/* A sender-dependent override for the global relayhost parameter
/* setting.
/* .PP
/* Available in Postfix version 2.5 and later:
/* .IP "\fBempty_address_relayhost_maps_lookup_key (<>)\fR"
/* The sender_dependent_relayhost_maps search string that will be
/* used instead of the null sender address.
/* ADDRESS VERIFICATION CONTROLS
/* .ad
/* .fi
@ -315,6 +320,7 @@ int var_show_unk_rcpt_table;
int var_resolve_nulldom;
char *var_remote_rwr_domain;
char *var_snd_relay_maps;
char *var_null_relay_maps_key;
int var_resolve_num_dom;
/*
@ -557,6 +563,7 @@ int main(int argc, char **argv)
VAR_VRFY_RELAYHOST, DEF_VRFY_RELAYHOST, &var_vrfy_relayhost, 0, 0,
VAR_REM_RWR_DOMAIN, DEF_REM_RWR_DOMAIN, &var_remote_rwr_domain, 0, 0,
VAR_SND_RELAY_MAPS, DEF_SND_RELAY_MAPS, &var_snd_relay_maps, 0, 0,
VAR_NULL_RELAY_MAPS_KEY, DEF_NULL_RELAY_MAPS_KEY, &var_null_relay_maps_key, 1, 0,
VAR_VRFY_RELAY_MAPS, DEF_VRFY_RELAY_MAPS, &var_vrfy_relay_maps, 0, 0,
0,
};

View File

@ -137,7 +137,7 @@ extern DICT *dict_open(const char *, int, int);
extern DICT *dict_open3(const char *, const char *, int, int);
extern void dict_open_register(const char *, DICT *(*) (const char *, int, int));
#define dict_get(dp, key) (dp)->lookup((dp), (key))
#define dict_get(dp, key) ((const char *) (dp)->lookup((dp), (key)))
#define dict_put(dp, key, val) (dp)->update((dp), (key), (val))
#define dict_del(dp, key) (dp)->delete((dp), (key))
#define dict_seq(dp, f, key, val) (dp)->sequence((dp), (f), (key), (val))

View File

@ -22,7 +22,7 @@
/* const char *key;
/* const char *value;
/*
/* char *dict_get(dict, key)
/* const char *dict_get(dict, key)
/* DICT *dict;
/* const char *key;
/*
@ -137,6 +137,9 @@
/*
/* dict_get() retrieves the value stored in the named dictionary
/* under the given key. A null pointer means the value was not found.
/* As with dict_lookup(), the result is owned by the lookup table
/* implementation. Make a copy if the result is to be modified,
/* or if the result is to survive multiple table lookups.
/*
/* dict_put() stores the specified key and value into the named
/* dictionary.