mirror of
https://github.com/vdukhovni/postfix
synced 2025-08-29 13:18:12 +00:00
postfix-2.1.3
This commit is contained in:
parent
c302f4a4bf
commit
955a512c02
@ -9373,3 +9373,19 @@ Apologies for any names omitted.
|
||||
John Heasley. File: util/sys_defs.h.
|
||||
|
||||
Documentation: typo fixes by IKEDA Nozomu.
|
||||
|
||||
20040616
|
||||
|
||||
Bugfix: one missed variadic argument list fix. Victor
|
||||
Duchovni, Morgan Stanley. File: global/verify.c.
|
||||
|
||||
Bugfix: the resolver client cache should be context dependent
|
||||
because address verification probes may use a different
|
||||
route than normal mail deliveries. File: global/resolve_clnt.c.
|
||||
|
||||
Safety: added similar context dependence to the address
|
||||
rewriting client in order to avoid trouble when Postfix is
|
||||
changed. File: global/rewrite_clnt.c.
|
||||
|
||||
Bugfix: space in HELO commands could end up in XFORWARD
|
||||
commands. File: smtpd/smtpd.c.
|
||||
|
@ -116,8 +116,8 @@ small site, you probably want to change that into $mydomain, which defaults to
|
||||
the parent domain of the machine name.
|
||||
|
||||
For the sake of consistency between sender and recipient addresses, myorigin
|
||||
also specifies the default domain name that is appended to an unqualified
|
||||
recipient address.
|
||||
also specifies the domain name that is appended to an unqualified recipient
|
||||
address.
|
||||
|
||||
Examples (specify only one of the following):
|
||||
|
||||
|
@ -187,7 +187,7 @@ want to change that into $<a href="postconf.5.html#mydomain">mydomain</a>, which
|
||||
domain of the machine name. </p>
|
||||
|
||||
<p> For the sake of consistency between sender and recipient addresses,
|
||||
<a href="postconf.5.html#myorigin">myorigin</a> also specifies the <a href="ADDRESS_CLASS_README.html#default_domain_class">default domain</a> name that is appended
|
||||
<a href="postconf.5.html#myorigin">myorigin</a> also specifies the domain name that is appended
|
||||
to an unqualified recipient address. </p>
|
||||
|
||||
<p> Examples (specify only one of the following): </p>
|
||||
|
@ -3335,7 +3335,7 @@ What addresses are subject to address masquerading.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
By default, address masquerading is limited to envelope recipient
|
||||
By default, address masquerading is limited to envelope sender
|
||||
addresses, and to header sender and header recipient addresses.
|
||||
This allows you to use address masquerading on a mail gateway while
|
||||
still being able to forward mail to users on individual machines.
|
||||
@ -3773,7 +3773,7 @@ configuration parameter. </p>
|
||||
(default: $<a href="postconf.5.html#myhostname">myhostname</a>)</b></DT><DD>
|
||||
|
||||
<p>
|
||||
The <a href="ADDRESS_CLASS_README.html#default_domain_class">default domain</a> name that locally-posted mail appears to come
|
||||
The domain name that locally-posted mail appears to come
|
||||
from, and that locally posted mail is delivered to. The default,
|
||||
$<a href="postconf.5.html#myhostname">myhostname</a>, is adequate for small sites. If you run a domain with
|
||||
multiple machines, you should (1) change this to $<a href="postconf.5.html#mydomain">mydomain</a> and (2)
|
||||
|
@ -708,9 +708,9 @@ SMTPD(8) SMTPD(8)
|
||||
privileges than "strangers".
|
||||
|
||||
<b><a href="postconf.5.html#myorigin">myorigin</a> ($<a href="postconf.5.html#myhostname">myhostname</a>)</b>
|
||||
The default domain name that locally-posted mail
|
||||
appears to come from, and that locally posted mail
|
||||
is delivered to.
|
||||
The domain name that locally-posted mail appears to
|
||||
come from, and that locally posted mail is deliv-
|
||||
ered to.
|
||||
|
||||
<b><a href="postconf.5.html#process_id">process_id</a> (read-only)</b>
|
||||
The process ID of a Postfix command or daemon pro-
|
||||
|
@ -1670,7 +1670,7 @@ Do not change this unless you have a complete understanding of RFC 821.
|
||||
.SH masquerade_classes (default: envelope_sender, header_sender, header_recipient)
|
||||
What addresses are subject to address masquerading.
|
||||
.PP
|
||||
By default, address masquerading is limited to envelope recipient
|
||||
By default, address masquerading is limited to envelope sender
|
||||
addresses, and to header sender and header recipient addresses.
|
||||
This allows you to use address masquerading on a mail gateway while
|
||||
still being able to forward mail to users on individual machines.
|
||||
@ -1929,7 +1929,7 @@ Postfix to "trust" your entire provider's network. Instead, specify
|
||||
an explicit mynetworks list by hand, as described with the mynetworks
|
||||
configuration parameter.
|
||||
.SH myorigin (default: $myhostname)
|
||||
The default domain name that locally-posted mail appears to come
|
||||
The domain name that locally-posted mail appears to come
|
||||
from, and that locally posted mail is delivered to. The default,
|
||||
$myhostname, is adequate for small sites. If you run a domain with
|
||||
multiple machines, you should (1) change this to $mydomain and (2)
|
||||
|
@ -580,7 +580,7 @@ The internet hostname of this mail system.
|
||||
The list of "trusted" SMTP clients that have more privileges than
|
||||
"strangers".
|
||||
.IP "\fBmyorigin ($myhostname)\fR"
|
||||
The default domain name that locally-posted mail appears to come
|
||||
The domain name that locally-posted mail appears to come
|
||||
from, and that locally posted mail is delivered to.
|
||||
.IP "\fBprocess_id (read-only)\fR"
|
||||
The process ID of a Postfix command or daemon process.
|
||||
|
@ -187,7 +187,7 @@ want to change that into $mydomain, which defaults to the parent
|
||||
domain of the machine name. </p>
|
||||
|
||||
<p> For the sake of consistency between sender and recipient addresses,
|
||||
myorigin also specifies the default domain name that is appended
|
||||
myorigin also specifies the domain name that is appended
|
||||
to an unqualified recipient address. </p>
|
||||
|
||||
<p> Examples (specify only one of the following): </p>
|
||||
|
@ -2064,7 +2064,7 @@ What addresses are subject to address masquerading.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
By default, address masquerading is limited to envelope recipient
|
||||
By default, address masquerading is limited to envelope sender
|
||||
addresses, and to header sender and header recipient addresses.
|
||||
This allows you to use address masquerading on a mail gateway while
|
||||
still being able to forward mail to users on individual machines.
|
||||
@ -2370,7 +2370,7 @@ mynetworks = hash:/etc/postfix/network_table
|
||||
%PARAM myorigin $myhostname
|
||||
|
||||
<p>
|
||||
The default domain name that locally-posted mail appears to come
|
||||
The domain name that locally-posted mail appears to come
|
||||
from, and that locally posted mail is delivered to. The default,
|
||||
$myhostname, is adequate for small sites. If you run a domain with
|
||||
multiple machines, you should (1) change this to $mydomain and (2)
|
||||
|
@ -20,8 +20,8 @@
|
||||
* Patches change the patchlevel and the release date. Snapshots change the
|
||||
* release date only.
|
||||
*/
|
||||
#define MAIL_RELEASE_DATE "20040615"
|
||||
#define MAIL_VERSION_NUMBER "2.1.2"
|
||||
#define MAIL_RELEASE_DATE "20040616"
|
||||
#define MAIL_VERSION_NUMBER "2.1.3"
|
||||
|
||||
#define VAR_MAIL_VERSION "mail_version"
|
||||
#ifdef SNAPSHOT
|
||||
|
@ -91,6 +91,17 @@ const char *mynetworks(void)
|
||||
mask_style = name_mask("mynetworks mask style", mask_styles,
|
||||
var_mynetworks_style);
|
||||
|
||||
/*
|
||||
* XXX Workaround: name_mask() needs a flags argument so that we can
|
||||
* require exactly one value, or we need to provide an API that is
|
||||
* dedicated for single-valued flags.
|
||||
*/
|
||||
for (i = 0, junk = mask_style; junk != 0; junk >>= 1)
|
||||
i += (junk & 1);
|
||||
if (i != 1)
|
||||
msg_fatal("bad %s value: %s; specify exactly one value",
|
||||
VAR_MYNETWORKS_STYLE, var_mynetworks_style);
|
||||
|
||||
result = vstring_alloc(20);
|
||||
my_addr_list = own_inet_addr_list();
|
||||
my_mask_list = own_inet_mask_list();
|
||||
|
@ -127,6 +127,7 @@
|
||||
*/
|
||||
extern CLNT_STREAM *rewrite_clnt_stream;
|
||||
|
||||
static VSTRING *last_class;
|
||||
static VSTRING *last_addr;
|
||||
static RESOLVE_REPLY last_reply;
|
||||
|
||||
@ -151,6 +152,7 @@ void resolve_clnt(const char *class, const char *addr, RESOLVE_REPLY *reply)
|
||||
* One-entry cache.
|
||||
*/
|
||||
if (last_addr == 0) {
|
||||
last_class = vstring_alloc(10);
|
||||
last_addr = vstring_alloc(100);
|
||||
resolve_clnt_init(&last_reply);
|
||||
}
|
||||
@ -169,7 +171,8 @@ void resolve_clnt(const char *class, const char *addr, RESOLVE_REPLY *reply)
|
||||
*/
|
||||
#define IFSET(flag, text) ((reply->flags & (flag)) ? (text) : "")
|
||||
|
||||
if (*addr && strcmp(addr, STR(last_addr)) == 0) {
|
||||
if (*addr && strcmp(addr, STR(last_addr)) == 0
|
||||
&& strcmp(class, STR(last_class)) == 0) {
|
||||
vstring_strcpy(reply->transport, STR(last_reply.transport));
|
||||
vstring_strcpy(reply->nexthop, STR(last_reply.nexthop));
|
||||
vstring_strcpy(reply->recipient, STR(last_reply.recipient));
|
||||
@ -246,6 +249,7 @@ void resolve_clnt(const char *class, const char *addr, RESOLVE_REPLY *reply)
|
||||
/*
|
||||
* Update the cache.
|
||||
*/
|
||||
vstring_strcpy(last_class, class);
|
||||
vstring_strcpy(last_addr, addr);
|
||||
vstring_strcpy(last_reply.transport, STR(reply->transport));
|
||||
vstring_strcpy(last_reply.nexthop, STR(reply->nexthop));
|
||||
|
@ -72,6 +72,7 @@
|
||||
*/
|
||||
CLNT_STREAM *rewrite_clnt_stream = 0;
|
||||
|
||||
static VSTRING *last_rule;
|
||||
static VSTRING *last_addr;
|
||||
static VSTRING *last_result;
|
||||
|
||||
@ -85,6 +86,7 @@ VSTRING *rewrite_clnt(const char *rule, const char *addr, VSTRING *result)
|
||||
* One-entry cache.
|
||||
*/
|
||||
if (last_addr == 0) {
|
||||
last_rule = vstring_alloc(10);
|
||||
last_addr = vstring_alloc(100);
|
||||
last_result = vstring_alloc(100);
|
||||
}
|
||||
@ -102,10 +104,9 @@ VSTRING *rewrite_clnt(const char *rule, const char *addr, VSTRING *result)
|
||||
|
||||
/*
|
||||
* Peek at the cache.
|
||||
*
|
||||
* XXX Must be made "rule" specific.
|
||||
*/
|
||||
if (strcmp(addr, STR(last_addr)) == 0) {
|
||||
if (strcmp(addr, STR(last_addr)) == 0
|
||||
&& strcmp(rule, STR(last_rule)) == 0) {
|
||||
vstring_strcpy(result, STR(last_result));
|
||||
if (msg_verbose)
|
||||
msg_info("rewrite_clnt: cached: %s: %s -> %s",
|
||||
@ -152,6 +153,7 @@ VSTRING *rewrite_clnt(const char *rule, const char *addr, VSTRING *result)
|
||||
/*
|
||||
* Update the cache.
|
||||
*/
|
||||
vstring_strcpy(last_rule, rule);
|
||||
vstring_strcpy(last_addr, addr);
|
||||
vstring_strcpy(last_result, STR(result));
|
||||
|
||||
|
@ -142,7 +142,8 @@ int vverify_append(const char *queue_id, const char *orig_rcpt,
|
||||
*/
|
||||
vstring_vsprintf(text, fmt, ap);
|
||||
if (var_verify_neg_cache || rcpt_stat == DEL_RCPT_STAT_OK) {
|
||||
req_stat = verify_clnt_vupdate(orig_rcpt, rcpt_stat, fmt, ap);
|
||||
req_stat = verify_clnt_update(orig_rcpt, rcpt_stat,
|
||||
"%s", vstring_str(text));
|
||||
if (req_stat == VRFY_STAT_OK && strcasecmp(recipient, orig_rcpt) != 0)
|
||||
req_stat = verify_clnt_update(recipient, rcpt_stat,
|
||||
"%s", vstring_str(text));
|
||||
|
@ -534,7 +534,7 @@
|
||||
/* The list of "trusted" SMTP clients that have more privileges than
|
||||
/* "strangers".
|
||||
/* .IP "\fBmyorigin ($myhostname)\fR"
|
||||
/* The default domain name that locally-posted mail appears to come
|
||||
/* The domain name that locally-posted mail appears to come
|
||||
/* from, and that locally posted mail is delivered to.
|
||||
/* .IP "\fBprocess_id (read-only)\fR"
|
||||
/* The process ID of a Postfix command or daemon process.
|
||||
@ -811,6 +811,11 @@ static void mail_reset(SMTPD_STATE *);
|
||||
static void rcpt_reset(SMTPD_STATE *);
|
||||
static void chat_reset(SMTPD_STATE *, int);
|
||||
|
||||
/*
|
||||
* This filter is applied after printable().
|
||||
*/
|
||||
#define NEUTER_CHARACTERS " <>()\\\";:@"
|
||||
|
||||
#ifdef USE_SASL_AUTH
|
||||
|
||||
/*
|
||||
@ -882,7 +887,7 @@ static int helo_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *argv)
|
||||
mail_reset(state);
|
||||
rcpt_reset(state);
|
||||
state->helo_name = mystrdup(printable(argv[1].strval, '?'));
|
||||
neuter(state->helo_name, "<>()\\\";:@", '?');
|
||||
neuter(state->helo_name, NEUTER_CHARACTERS, '?');
|
||||
/* Downgrading the protocol name breaks the unauthorized pipelining test. */
|
||||
if (strcasecmp(state->protocol, MAIL_PROTO_ESMTP) != 0
|
||||
&& strcasecmp(state->protocol, MAIL_PROTO_SMTP) != 0) {
|
||||
@ -923,7 +928,7 @@ static int ehlo_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *argv)
|
||||
mail_reset(state);
|
||||
rcpt_reset(state);
|
||||
state->helo_name = mystrdup(printable(argv[1].strval, '?'));
|
||||
neuter(state->helo_name, "<>()\\\";:@", '?');
|
||||
neuter(state->helo_name, NEUTER_CHARACTERS, '?');
|
||||
if (strcasecmp(state->protocol, MAIL_PROTO_ESMTP) != 0) {
|
||||
myfree(state->protocol);
|
||||
state->protocol = mystrdup(MAIL_PROTO_ESMTP);
|
||||
@ -2012,7 +2017,6 @@ static int xclient_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *argv)
|
||||
if (s) myfree(s); \
|
||||
s = (v) ? mystrdup(v) : 0; \
|
||||
} while(0)
|
||||
#define NEUTER_CHARACTERS "<>()\\\";:@"
|
||||
|
||||
/*
|
||||
* Iterate over all attribute=value elements.
|
||||
|
Loading…
x
Reference in New Issue
Block a user