2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-08-30 21:55:20 +00:00

postfix-1.1.11-20021114

This commit is contained in:
Wietse Venema
2002-11-14 00:00:00 -05:00
committed by Viktor Dukhovni
parent 6fa7c1a518
commit 7f49c002a2
11 changed files with 57 additions and 11 deletions

View File

@@ -7199,6 +7199,26 @@ Apologies for any names omitted.
Bugfix: a misguided change to the .forward macro expansion
filter broke .forward file lookup.
Bugfix: missing defer_if_permit test in smtpd_data_restrictions.
Victor Duchovni. File: smtpd/smtpd_check.c.
20021112
Robustness: increase the mime_nesting_limit from 20 to 100,
so that bounces can't loop. Each bounces increases the MIME
nesting level by one. Ralf Hildebrandt and Victor Duchovni.
20021113
Robustness: reinstated SMTP client command flushing to
avoid pipeline stalls. File: smtp/smtp_chat.c.
20021114
Robustness: distinguish between timeout and "lost connection"
when the SMTP server is unable to send a reply to the remote
client. File: smtpd/smtpd_chat.c.
Open problems:
Low: revise other local delivery agent duplicate filters.

View File

@@ -553,7 +553,7 @@ unknown_address_reject_code = 450
# The unknown_client_reject_code parameter specifies the SMTP server
# response when a client without address to name mapping violates
# the reject_unknown_clients restriction.
# the reject_unknown_client restriction.
#
# Do not change this unless you have a complete understanding of RFC 821.
#

View File

@@ -34,7 +34,7 @@ POSTSUPER(1) POSTSUPER(1)
input. For example, to delete all mail from or to
<b>user@example.com</b>:
mailq | awk 'BEGIN { RS = "" } \
mailq | tail +2 | awk 'BEGIN { RS = "" } \
/ user@example\.com$/ { print $1 } \
' | tr -d '*!' | postsuper -d -

View File

@@ -358,9 +358,10 @@ reject_unknown_client</b>
<a name="reject_unknown_client">
<dt> <b>reject_unknown_client</b> <dd> Reject the request when the
client IP address has no PTR record in the DNS. The
<b>unknown_client_reject_code</b> parameter specifies the response
code to rejected requests (default: <b>450</b>).
client IP address has no PTR (address to name) record in the DNS,
or when the PTR record does not have a matching A (name to address)
record. The <b>unknown_client_reject_code</b> parameter specifies
the response code to rejected requests (default: <b>450</b>).
<p>

View File

@@ -38,7 +38,7 @@ If a \fIqueue_id\fR of \fB-\fR is specified, the program reads
queue IDs from standard input. For example, to delete all mail
from or to \fBuser@example.com\fR:
.sp
mailq | awk \'BEGIN { RS = "" } \e
mailq | tail +2 | awk \'BEGIN { RS = "" } \e
.ti +4
/ user@example\e.com$/ { print $1 } \e
.br

View File

@@ -1564,7 +1564,7 @@ extern int var_qattr_count_limit;
* MIME support.
*/
#define VAR_MIME_MAXDEPTH "mime_nesting_limit"
#define DEF_MIME_MAXDEPTH 20
#define DEF_MIME_MAXDEPTH 100
extern int var_mime_maxdepth;
#define VAR_MIME_BOUND_LEN "mime_boundary_length_limit"

View File

@@ -20,7 +20,7 @@
* 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 "20021109"
#define MAIL_RELEASE_DATE "20021114"
#define VAR_MAIL_VERSION "mail_version"
#define DEF_MAIL_VERSION "1.1.11-" MAIL_RELEASE_DATE

View File

@@ -32,7 +32,7 @@
/* queue IDs from standard input. For example, to delete all mail
/* from or to \fBuser@example.com\fR:
/* .sp
/* mailq | awk \'BEGIN { RS = "" } \e
/* mailq | tail +2 | awk \'BEGIN { RS = "" } \e
/* .ti +4
/* / user@example\e.com$/ { print $1 } \e
/* .br

View File

@@ -149,6 +149,20 @@ void smtp_chat_cmd(SMTP_STATE *state, char *fmt,...)
* Send the command to the SMTP server.
*/
smtp_fputs(STR(state->buffer), LEN(state->buffer), session->stream);
/*
* Flush unsent data to avoid timeouts after slow DNS lookups.
*/
if (time((time_t *) 0) - vstream_ftime(session->stream) > 10)
vstream_fflush(session->stream);
/*
* Abort immediately if the connection is broken.
*/
if (vstream_ftimeout(session->stream))
vstream_longjmp(session->stream, SMTP_ERR_TIME);
if (vstream_ferror(session->stream))
vstream_longjmp(session->stream, SMTP_ERR_EOF);
}
/* smtp_chat_resp - read and process SMTP server response */

View File

@@ -176,6 +176,8 @@ void smtpd_chat_reply(SMTPD_STATE *state, char *format,...)
/*
* Abort immediately if the connection is broken.
*/
if (vstream_ftimeout(state->client))
vstream_longjmp(state->client, SMTP_ERR_TIME);
if (vstream_ferror(state->client))
vstream_longjmp(state->client, SMTP_ERR_EOF);
}

View File

@@ -3269,8 +3269,8 @@ char *smtpd_check_data(SMTPD_STATE *state)
}
/*
* Reset the defer_if_permit flag. This should not be necessary but we do
* it just in case.
* Reset the defer_if_permit flag. This is necessary when some recipients
* were accepted but the last one was rejected.
*/
state->defer_if_permit.active = 0;
@@ -3284,6 +3284,15 @@ char *smtpd_check_data(SMTPD_STATE *state)
if (status == 0 && data_restrctions->argc)
status = generic_checks(state, data_restrctions,
"DATA", SMTPD_NAME_DATA, NO_DEF_ACL);
/*
* Force permission into deferral when some earlier temporary error may
* have prevented us from rejecting mail, and report the earlier problem.
*/
if (status != SMTPD_CHECK_REJECT && state->defer_if_permit.active)
status = smtpd_check_reject(state, state->defer_if_permit.class,
"%s", STR(state->defer_if_permit.reason));
if (state->rcpt_count > 1)
state->recipient = saved_recipient;