mirror of
https://github.com/vdukhovni/postfix
synced 2025-09-01 06:35:27 +00:00
postfix-1.1.11-20020613
This commit is contained in:
committed by
Viktor Dukhovni
parent
866561e747
commit
97342c743c
@@ -6623,6 +6623,15 @@ Apologies for any names omitted.
|
|||||||
address must be handled sensibly. Files: global/resolve_clnt.c,
|
address must be handled sensibly. Files: global/resolve_clnt.c,
|
||||||
trivial-rewrite/resolve.c. It ain't perfect yet, but close.
|
trivial-rewrite/resolve.c. It ain't perfect yet, but close.
|
||||||
|
|
||||||
|
20020613
|
||||||
|
|
||||||
|
Bugfix: postsuper -r was broken as of 20020510. The cleanup
|
||||||
|
daemon would discard mail with MIME type information. Moved
|
||||||
|
a bunch of sanity checks from the cleanup daemon to the
|
||||||
|
pickup daemon, so the checks are in one place. Problem
|
||||||
|
experienced by Pavol Luptak. Files: pickup/pickup.c,
|
||||||
|
cleanup/cleanup_extracted.c.
|
||||||
|
|
||||||
Open problems:
|
Open problems:
|
||||||
|
|
||||||
Medium: old maildrop files are no longer readable by the
|
Medium: old maildrop files are no longer readable by the
|
||||||
@@ -6630,8 +6639,8 @@ Open problems:
|
|||||||
|
|
||||||
Low: all table lookups should consistently use internalized
|
Low: all table lookups should consistently use internalized
|
||||||
(unquoted) or externalized (quoted) forms as lookup keys.
|
(unquoted) or externalized (quoted) forms as lookup keys.
|
||||||
smtpd, qmgr, local, etc. use internalized forms as keys.
|
smtpd, qmgr, local, etc. use unquoted address forms as
|
||||||
cleanup uses externalized forms.
|
keys. cleanup uses quoted forms.
|
||||||
|
|
||||||
Low: sendmail does not store null command-line recipients.
|
Low: sendmail does not store null command-line recipients.
|
||||||
|
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
#
|
|
||||||
# VIRTUAL(5) VIRTUAL(5)
|
# VIRTUAL(5) VIRTUAL(5)
|
||||||
#
|
#
|
||||||
# NAME
|
# NAME
|
||||||
@@ -132,8 +131,8 @@
|
|||||||
# $inet_interfaces.
|
# $inet_interfaces.
|
||||||
#
|
#
|
||||||
# This functionality overlaps with functionality of
|
# This functionality overlaps with functionality of
|
||||||
# the local alias(5) database. The difference is that
|
# the local aliases(5) database. The difference is
|
||||||
# virtual mapping can be applied to non-local
|
# that virtual mapping can be applied to non-local
|
||||||
# addresses.
|
# addresses.
|
||||||
#
|
#
|
||||||
# @domain address, address, ...
|
# @domain address, address, ...
|
||||||
@@ -216,5 +215,4 @@
|
|||||||
# P.O. Box 704
|
# P.O. Box 704
|
||||||
# Yorktown Heights, NY 10598, USA
|
# Yorktown Heights, NY 10598, USA
|
||||||
#
|
#
|
||||||
# 1
|
# VIRTUAL(5)
|
||||||
#
|
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
<html> <head> </head> <body> <pre>
|
<html> <head> </head> <body> <pre>
|
||||||
|
|
||||||
VIRTUAL(5) VIRTUAL(5)
|
VIRTUAL(5) VIRTUAL(5)
|
||||||
|
|
||||||
<b>NAME</b>
|
<b>NAME</b>
|
||||||
@@ -133,8 +132,8 @@ VIRTUAL(5) VIRTUAL(5)
|
|||||||
$<i>inet_interfaces</i>.
|
$<i>inet_interfaces</i>.
|
||||||
|
|
||||||
This functionality overlaps with functionality of
|
This functionality overlaps with functionality of
|
||||||
the local <i>alias</i>(5) database. The difference is that
|
the local <i>aliases</i>(5) database. The difference is
|
||||||
<b>virtual</b> mapping can be applied to non-local
|
that <b>virtual</b> mapping can be applied to non-local
|
||||||
addresses.
|
addresses.
|
||||||
|
|
||||||
@<i>domain</i> <i>address,</i> <i>address,</i> <i>...</i>
|
@<i>domain</i> <i>address,</i> <i>address,</i> <i>...</i>
|
||||||
@@ -217,6 +216,5 @@ VIRTUAL(5) VIRTUAL(5)
|
|||||||
P.O. Box 704
|
P.O. Box 704
|
||||||
Yorktown Heights, NY 10598, USA
|
Yorktown Heights, NY 10598, USA
|
||||||
|
|
||||||
1
|
VIRTUAL(5)
|
||||||
|
|
||||||
</pre> </body> </html>
|
</pre> </body> </html>
|
||||||
|
@@ -144,7 +144,7 @@ Mail for \fIuser\fR@\fIsite\fR is redirected to \fIaddress\fR when
|
|||||||
$\fRmydestination\fR, or when it is listed in $\fIinet_interfaces\fR.
|
$\fRmydestination\fR, or when it is listed in $\fIinet_interfaces\fR.
|
||||||
.sp
|
.sp
|
||||||
This functionality overlaps with functionality of the local
|
This functionality overlaps with functionality of the local
|
||||||
\fIalias\fR(5) database. The difference is that \fBvirtual\fR
|
\fIaliases\fR(5) database. The difference is that \fBvirtual\fR
|
||||||
mapping can be applied to non-local addresses.
|
mapping can be applied to non-local addresses.
|
||||||
.IP "@\fIdomain address, address, ...\fR"
|
.IP "@\fIdomain address, address, ...\fR"
|
||||||
Mail for any user in \fIdomain\fR is redirected to \fIaddress\fR.
|
Mail for any user in \fIdomain\fR is redirected to \fIaddress\fR.
|
||||||
|
@@ -132,7 +132,7 @@
|
|||||||
# $\fRmydestination\fR, or when it is listed in $\fIinet_interfaces\fR.
|
# $\fRmydestination\fR, or when it is listed in $\fIinet_interfaces\fR.
|
||||||
# .sp
|
# .sp
|
||||||
# This functionality overlaps with functionality of the local
|
# This functionality overlaps with functionality of the local
|
||||||
# \fIalias\fR(5) database. The difference is that \fBvirtual\fR
|
# \fIaliases\fR(5) database. The difference is that \fBvirtual\fR
|
||||||
# mapping can be applied to non-local addresses.
|
# mapping can be applied to non-local addresses.
|
||||||
# .IP "@\fIdomain address, address, ...\fR"
|
# .IP "@\fIdomain address, address, ...\fR"
|
||||||
# Mail for any user in \fIdomain\fR is redirected to \fIaddress\fR.
|
# Mail for any user in \fIdomain\fR is redirected to \fIaddress\fR.
|
||||||
|
@@ -120,21 +120,13 @@ void cleanup_extracted(CLEANUP_STATE *state, int type, char *buf, int len)
|
|||||||
|
|
||||||
/* cleanup_extracted_process - process extracted segment */
|
/* cleanup_extracted_process - process extracted segment */
|
||||||
|
|
||||||
static void cleanup_extracted_process(CLEANUP_STATE *state, int type, char *buf, int unused_len)
|
static void cleanup_extracted_process(CLEANUP_STATE *state, int type, char *buf, int len)
|
||||||
{
|
{
|
||||||
char *myname = "cleanup_extracted_process";
|
char *myname = "cleanup_extracted_process";
|
||||||
VSTRING *clean_addr;
|
VSTRING *clean_addr;
|
||||||
ARGV *rcpt;
|
ARGV *rcpt;
|
||||||
char **cpp;
|
char **cpp;
|
||||||
|
|
||||||
if (type == REC_TYPE_RRTO) {
|
|
||||||
/* XXX Use extracted information instead. */
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (type == REC_TYPE_ERTO) {
|
|
||||||
/* XXX Use extracted information instead. */
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (type == REC_TYPE_RCPT) {
|
if (type == REC_TYPE_RCPT) {
|
||||||
clean_addr = vstring_alloc(100);
|
clean_addr = vstring_alloc(100);
|
||||||
cleanup_rewrite_internal(clean_addr, *buf ? buf : var_empty_addr);
|
cleanup_rewrite_internal(clean_addr, *buf ? buf : var_empty_addr);
|
||||||
@@ -154,9 +146,7 @@ static void cleanup_extracted_process(CLEANUP_STATE *state, int type, char *buf,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (type != REC_TYPE_END) {
|
if (type != REC_TYPE_END) {
|
||||||
msg_warn("%s: unexpected record type %d in extracted segment",
|
cleanup_out(state, type, buf, len);
|
||||||
state->queue_id, type);
|
|
||||||
state->errs |= CLEANUP_STAT_BAD;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -20,7 +20,7 @@
|
|||||||
* Patches change the patchlevel and the release date. Snapshots change the
|
* Patches change the patchlevel and the release date. Snapshots change the
|
||||||
* release date only, unless they include the same bugfix as a patch release.
|
* release date only, unless they include the same bugfix as a patch release.
|
||||||
*/
|
*/
|
||||||
#define MAIL_RELEASE_DATE "20020610"
|
#define MAIL_RELEASE_DATE "20020613"
|
||||||
|
|
||||||
#define VAR_MAIL_VERSION "mail_version"
|
#define VAR_MAIL_VERSION "mail_version"
|
||||||
#define DEF_MAIL_VERSION "1.1.11-" MAIL_RELEASE_DATE
|
#define DEF_MAIL_VERSION "1.1.11-" MAIL_RELEASE_DATE
|
||||||
|
@@ -200,19 +200,26 @@ static int copy_segment(VSTREAM *qfile, VSTREAM *cleanup, PICKUP_INFO *info,
|
|||||||
}
|
}
|
||||||
#define STREQ(x,y) (strcmp(x,y) == 0)
|
#define STREQ(x,y) (strcmp(x,y) == 0)
|
||||||
|
|
||||||
if (info->st.st_uid == var_owner_uid
|
if (STREQ(attr_name, MAIL_ATTR_ENCODING)
|
||||||
|| (STREQ(attr_name, MAIL_ATTR_ENCODING)
|
&& (STREQ(attr_value, MAIL_ATTR_ENC_7BIT)
|
||||||
&& (STREQ(attr_value, MAIL_ATTR_ENC_7BIT)
|
|| STREQ(attr_value, MAIL_ATTR_ENC_8BIT)
|
||||||
|| STREQ(attr_value, MAIL_ATTR_ENC_8BIT)
|
|| STREQ(attr_value, MAIL_ATTR_ENC_NONE))) {
|
||||||
|| STREQ(attr_value, MAIL_ATTR_ENC_NONE)))) {
|
|
||||||
rec_fprintf(cleanup, REC_TYPE_ATTR, "%s=%s",
|
rec_fprintf(cleanup, REC_TYPE_ATTR, "%s=%s",
|
||||||
attr_name, attr_value);
|
attr_name, attr_value);
|
||||||
continue;
|
} else if (info->st.st_uid != var_owner_uid) {
|
||||||
|
msg_warn("uid=%ld: ignoring attribute record: %.200s=%.200s",
|
||||||
|
(long) info->st.st_uid, attr_name, attr_value);
|
||||||
}
|
}
|
||||||
msg_warn("uid=%ld: ignoring attribute record: %.200s=%.200s",
|
|
||||||
(long) info->st.st_uid, attr_name, attr_value);
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (type == REC_TYPE_RRTO)
|
||||||
|
/* Use message header extracted information instead. */
|
||||||
|
continue;
|
||||||
|
if (type == REC_TYPE_ERTO)
|
||||||
|
/* Use message header extracted information instead. */
|
||||||
|
continue;
|
||||||
|
if (type == REC_TYPE_INSP && info->st.st_uid != var_owner_uid)
|
||||||
|
continue;
|
||||||
if (type == REC_TYPE_FILT && info->st.st_uid != var_owner_uid)
|
if (type == REC_TYPE_FILT && info->st.st_uid != var_owner_uid)
|
||||||
continue;
|
continue;
|
||||||
else {
|
else {
|
||||||
|
Reference in New Issue
Block a user