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

postfix-1.1.11-20021028

This commit is contained in:
Wietse Venema
2002-10-28 00:00:00 -05:00
committed by Viktor Dukhovni
parent 1eee692a04
commit bae04c10f3
23 changed files with 71 additions and 52 deletions

View File

@@ -7089,6 +7089,9 @@ Apologies for any names omitted.
20020126
Logging: SMTP UCE reject/warn/hold/discard logging now
includes queue ID. This will break some logfile analyzers.
Logging: SMTP UCE reject/warn/hold/discard logging now
includes the protocol name and, if available, the hostname
given in the SMTP HELO or EHLO command.
@@ -7097,10 +7100,13 @@ Apologies for any names omitted.
now includes the protocol name and, if available, the
hostname given in the SMTP HELO or EHLO command.
Open problems:
20021028
Low: smtpd should log queue ID with reject/warn/hold/discard
actions.
Bugfix: don't reset state after rejected EHLO. Reset state
after HELO. Reported by Karthikeyan Bhargavan, upenn.edu.
Files: smtpd/smtpd.c.
Open problems:
Low: revise other local delivery agent duplicate filters.

View File

@@ -216,6 +216,7 @@ can use one of the following commands:
% perl -MMIME::Base64 -e \
'print encode_base64("username\0username\0password");'
mmencode is part of the metamail software.
MIME::Base64 is available from www.cpan.org.
Enabling SASL authentication in the Postfix SMTP client

View File

@@ -12,17 +12,18 @@ snapshot release). Patches change the patchlevel and the release
date. Snapshots change only the release date, unless they include
the same bugfixes as a patch release.
Incompatible changes with Postfix snapshot 1.1.11-20021026
Incompatible changes with Postfix snapshot 1.1.11-20021028
==========================================================
Logging formats have changed. This may affect logfile processing
software.
Logfile formats have changed. This may affect logfile processing
software. The queue file format is still compatible with Postfix
version 1.1 (stable release).
- The Postfix SMTP UCE reject etc. logging now includes the queue
ID, the mail protocol (SMTP or ESMTP), and the hostname that was
received with the HELO or EHLO command, if available.
- The Postfix SMTP server UCE reject etc. logging now includes the
queue ID, the mail protocol (SMTP or ESMTP), and the hostname that
was received with the HELO or EHLO command, if available.
- The Postfix header/body_checks logging now includes the the mail
- The Postfix header/body_checks logging now includes the mail
protocol (SMTP, ESMTP, QMQP) and the hostname that was received
with the SMTP HELO or EHLO command, if available.
@@ -31,13 +32,15 @@ original recipient address (as received before any address rewriting
or aliasing). The original recipient address is logged only when
it differs from the final recipient address.
Major changes with Postfix snapshot 1.1.11-20021026
Major changes with Postfix snapshot 1.1.11-20021028
===================================================
The Postfix status=sent/bounced/deferred logging now shows the
original recipient address (as received before any address rewriting
or aliasing). The original recipient address is logged only when
it differs from the final recipient address.
Postfix logs more information, as described in the "incompatibilities"
section above.
The local(8) and virtual(8) delivery agents now record the original
recipient address in the X-Original-To: message header. This header
can also be emitted by the pipe(8) delivery agent.
Major changes with Postfix snapshot 1.1.11-20021024
===================================================

View File

@@ -299,7 +299,6 @@ static int cleanup_act(CLEANUP_STATE *state, char *context, const char *buf,
#define STREQUAL(x,y,l) (strncasecmp((x), (y), (l)) == 0 && (y)[l] == 0)
#define CLEANUP_ACT_KEEP 1
#define CLEANUP_ACT_DROP 0
#define STR(x) vstring_str(x)
if (STREQUAL(value, "REJECT", command_len)) {
if (state->reason == 0)

View File

@@ -78,8 +78,7 @@ void cleanup_out_recipient(CLEANUP_STATE *state, const char *orcpt,
return;
if (cleanup_virtual_maps == 0) {
if (strcasecmp(orcpt, recip) != 0)
cleanup_out_string(state, REC_TYPE_ORCP, orcpt);
cleanup_out_string(state, REC_TYPE_ORCP, orcpt);
cleanup_out_string(state, REC_TYPE_RCPT, recip);
state->rcpt_count++;
} else {

View File

@@ -34,7 +34,7 @@
/* const char *encoding;
/* const char *sender;
/*
/* int bounce_one(flags, queue, id, encoding, sender,
/* int bounce_one(flags, queue, id, encoding, sender, orig_rcpt,
/* recipient, relay, entry, format, ...)
/* int flags;
/* const char *queue;

View File

@@ -108,7 +108,7 @@ static int deliver_pass_send_request(VSTREAM *stream, DELIVER_REQUEST *request,
ATTR_TYPE_STR, MAIL_ATTR_RRCPT, request->return_receipt,
ATTR_TYPE_LONG, MAIL_ATTR_TIME, request->arrival_time,
ATTR_TYPE_LONG, MAIL_ATTR_OFFSET, offs,
ATTR_TYPE_STR, MAIL_ATTR_ORCPT, orcpt ? orcpt : "",
ATTR_TYPE_STR, MAIL_ATTR_ORCPT, orcpt,
ATTR_TYPE_STR, MAIL_ATTR_RECIP, addr,
ATTR_TYPE_NUM, MAIL_ATTR_OFFSET, 0,
ATTR_TYPE_END);

View File

@@ -246,7 +246,7 @@ static int deliver_request_get(VSTREAM *stream, DELIVER_REQUEST *request)
return (-1);
}
recipient_list_add(&request->rcpt_list, offset,
*vstring_str(orig_addr) ? vstring_str(orig_addr) : 0,
vstring_str(orig_addr),
vstring_str(address));
}

View File

@@ -23,6 +23,13 @@
#include <iostuff.h>
#include <attr.h>
/*
* External protocols.
*/
#define MAIL_PROTO_SMTP "SMTP"
#define MAIL_PROTO_ESMTP "ESMTP"
#define MAIL_PROTO_QMQP "QMQP"
/*
* Names of services: these are the names if INET ports, UNIX-domain sockets
* or FIFOs that a service listens on.

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 "20021026"
#define MAIL_RELEASE_DATE "20021028"
#define VAR_MAIL_VERSION "mail_version"
#define DEF_MAIL_VERSION "1.1.11-" MAIL_RELEASE_DATE

View File

@@ -100,7 +100,7 @@ void recipient_list_add(RECIPIENT_LIST *list, long offset,
list->info = (RECIPIENT *)
myrealloc((char *) list->info, list->avail * sizeof(RECIPIENT));
}
list->info[list->len].orig_addr = orig_rcpt ? mystrdup(orig_rcpt) : 0;
list->info[list->len].orig_addr = mystrdup(orig_rcpt);
list->info[list->len].address = mystrdup(rcpt);
list->info[list->len].offset = offset;
list->len++;
@@ -113,8 +113,7 @@ void recipient_list_free(RECIPIENT_LIST *list)
RECIPIENT *rcpt;
for (rcpt = list->info; rcpt < list->info + list->len; rcpt++) {
if (rcpt->orig_addr)
myfree(rcpt->orig_addr);
myfree(rcpt->orig_addr);
myfree(rcpt->address);
}
myfree((char *) list->info);

View File

@@ -177,8 +177,7 @@ static int qmgr_deliver_send_request(QMGR_ENTRY *entry, VSTREAM *stream)
for (recipient = list.info; recipient < list.info + list.len; recipient++)
attr_print(stream, ATTR_FLAG_MORE,
ATTR_TYPE_LONG, MAIL_ATTR_OFFSET, recipient->offset,
ATTR_TYPE_STR, MAIL_ATTR_ORCPT,
recipient->orig_rcpt ? recipient->orig_rcpt : "",
ATTR_TYPE_STR, MAIL_ATTR_ORCPT, recipient->orig_rcpt,
ATTR_TYPE_STR, MAIL_ATTR_RECIP, recipient->address,
ATTR_TYPE_END);
attr_print(stream, ATTR_FLAG_NONE,

View File

@@ -402,7 +402,7 @@ static int qmgr_message_read(QMGR_MESSAGE *message)
if (message->rcpt_list.len < recipient_limit) {
message->rcpt_unread--;
qmgr_rcpt_list_add(&message->rcpt_list, curr_offset,
orig_rcpt, start);
orig_rcpt ? orig_rcpt : "unknown", start);
if (orig_rcpt) {
myfree(orig_rcpt);
orig_rcpt = 0;

View File

@@ -80,7 +80,7 @@ void qmgr_rcpt_list_add(QMGR_RCPT_LIST *list, long offset,
list->info = (QMGR_RCPT *)
myrealloc((char *) list->info, list->avail * sizeof(QMGR_RCPT));
}
list->info[list->len].orig_rcpt = (orcpt ? mystrdup(orcpt) : 0);
list->info[list->len].orig_rcpt = mystrdup(orcpt);
list->info[list->len].address = mystrdup(rcpt);
list->info[list->len].offset = offset;
list->info[list->len].queue = 0;
@@ -94,8 +94,7 @@ void qmgr_rcpt_list_free(QMGR_RCPT_LIST *list)
QMGR_RCPT *rcpt;
for (rcpt = list->info; rcpt < list->info + list->len; rcpt++) {
if (rcpt->orig_rcpt)
myfree(rcpt->orig_rcpt);
myfree(rcpt->orig_rcpt);
myfree(rcpt->address);
}
myfree((char *) list->info);

View File

@@ -172,8 +172,7 @@ static int qmgr_deliver_send_request(QMGR_ENTRY *entry, VSTREAM *stream)
for (recipient = list.info; recipient < list.info + list.len; recipient++)
attr_print(stream, ATTR_FLAG_MORE,
ATTR_TYPE_LONG, MAIL_ATTR_OFFSET, recipient->offset,
ATTR_TYPE_STR, MAIL_ATTR_ORCPT,
recipient->orig_rcpt ? recipient->orig_rcpt : "",
ATTR_TYPE_STR, MAIL_ATTR_ORCPT, recipient->orig_rcpt,
ATTR_TYPE_STR, MAIL_ATTR_RECIP, recipient->address,
ATTR_TYPE_END);
attr_print(stream, ATTR_FLAG_NONE,

View File

@@ -278,7 +278,7 @@ static int qmgr_message_read(QMGR_MESSAGE *message)
#define FUDGE(x) ((x) * (var_qmgr_fudge / 100.0))
if (message->rcpt_list.len < FUDGE(var_qmgr_rcpt_limit)) {
qmgr_rcpt_list_add(&message->rcpt_list, curr_offset,
orig_rcpt, start);
orig_rcpt ? orig_rcpt : "unknown", start);
if (orig_rcpt) {
myfree(orig_rcpt);
orig_rcpt = 0;

View File

@@ -80,7 +80,7 @@ void qmgr_rcpt_list_add(QMGR_RCPT_LIST *list, long offset,
list->info = (QMGR_RCPT *)
myrealloc((char *) list->info, list->avail * sizeof(QMGR_RCPT));
}
list->info[list->len].orig_rcpt = (orcpt ? mystrdup(orcpt) : 0);
list->info[list->len].orig_rcpt = mystrdup(orcpt);
list->info[list->len].address = mystrdup(rcpt);
list->info[list->len].offset = offset;
list->info[list->len].queue = 0;
@@ -94,8 +94,7 @@ void qmgr_rcpt_list_free(QMGR_RCPT_LIST *list)
QMGR_RCPT *rcpt;
for (rcpt = list->info; rcpt < list->info + list->len; rcpt++) {
if (rcpt->orig_rcpt)
myfree(rcpt->orig_rcpt);
myfree(rcpt->orig_rcpt);
myfree(rcpt->address);
}
myfree((char *) list->info);

View File

@@ -117,4 +117,7 @@ qmqpd_state.o: ../../include/vbuf.h
qmqpd_state.o: ../../include/vstring.h
qmqpd_state.o: ../../include/mail_stream.h
qmqpd_state.o: ../../include/cleanup_user.h
qmqpd_state.o: ../../include/mail_proto.h
qmqpd_state.o: ../../include/iostuff.h
qmqpd_state.o: ../../include/attr.h
qmqpd_state.o: qmqpd.h

View File

@@ -191,8 +191,7 @@ static void qmqpd_open_file(QMQPD_STATE *state)
MAIL_CLASS_PUBLIC, var_cleanup_service);
state->cleanup = state->dest->stream;
state->queue_id = mystrdup(state->dest->id);
msg_info("%s: client=%s proto=%s", state->queue_id,
state->namaddr, state->protocol);
msg_info("%s: client=%s", state->queue_id, state->namaddr);
/*
* Record the time of arrival. Optionally, enable content filtering (not

View File

@@ -47,6 +47,7 @@
#include <mail_stream.h>
#include <cleanup_user.h>
#include <mail_proto.h>
/* Application-specific. */
@@ -72,7 +73,7 @@ QMQPD_STATE *qmqpd_state_alloc(VSTREAM *stream)
state->reason = 0;
state->sender = 0;
state->recipient = 0;
state->protocol = "QMQP";
state->protocol = MAIL_PROTO_QMQP;
state->where = "initializing client connection";
state->why_rejected = vstring_alloc(10);
return (state);

View File

@@ -278,6 +278,9 @@ smtpd_state.o: ../../include/msg.h
smtpd_state.o: ../../include/cleanup_user.h
smtpd_state.o: ../../include/mail_params.h
smtpd_state.o: ../../include/mail_error.h
smtpd_state.o: ../../include/mail_proto.h
smtpd_state.o: ../../include/iostuff.h
smtpd_state.o: ../../include/attr.h
smtpd_state.o: smtpd.h
smtpd_state.o: ../../include/vstring.h
smtpd_state.o: ../../include/argv.h

View File

@@ -453,8 +453,6 @@ static int helo_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *argv)
smtpd_chat_reply(state, "501 Syntax: HELO hostname");
return (-1);
}
if (state->helo_name != 0)
helo_reset(state);
if (argc > 2)
collapse_args(argc - 1, argv + 1);
if (SMTPD_STAND_ALONE(state) == 0
@@ -463,8 +461,14 @@ static int helo_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *argv)
smtpd_chat_reply(state, "%s", err);
return (-1);
}
if (state->helo_name != 0)
helo_reset(state);
chat_reset(state, var_smtpd_hist_thrsh);
mail_reset(state);
rcpt_reset(state);
state->helo_name = mystrdup(printable(argv[1].strval, '?'));
state->protocol = "SMTP";
if (strcmp(state->protocol, MAIL_PROTO_ESMTP) != 0)
state->protocol = MAIL_PROTO_SMTP;
smtpd_chat_reply(state, "250 %s", var_myhostname);
return (0);
}
@@ -485,13 +489,6 @@ static int ehlo_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *argv)
smtpd_chat_reply(state, "501 Syntax: EHLO hostname");
return (-1);
}
if (state->helo_name != 0)
helo_reset(state);
#ifndef RFC821_SYNTAX
chat_reset(state, var_smtpd_hist_thrsh);
mail_reset(state);
rcpt_reset(state);
#endif
if (argc > 2)
collapse_args(argc - 1, argv + 1);
if (SMTPD_STAND_ALONE(state) == 0
@@ -500,8 +497,13 @@ static int ehlo_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *argv)
smtpd_chat_reply(state, "%s", err);
return (-1);
}
if (state->helo_name != 0)
helo_reset(state);
chat_reset(state, var_smtpd_hist_thrsh);
mail_reset(state);
rcpt_reset(state);
state->helo_name = mystrdup(printable(argv[1].strval, '?'));
state->protocol = "ESMTP";
state->protocol = MAIL_PROTO_ESMTP;
smtpd_chat_reply(state, "250-%s", var_myhostname);
smtpd_chat_reply(state, "250-PIPELINING");
if (var_message_limit)

View File

@@ -52,6 +52,7 @@
#include <cleanup_user.h>
#include <mail_params.h>
#include <mail_error.h>
#include <mail_proto.h>
/* Application-specific. */
@@ -86,7 +87,7 @@ void smtpd_state_init(SMTPD_STATE *state, VSTREAM *stream)
state->sender = 0;
state->recipient = 0;
state->etrn_name = 0;
state->protocol = "SMTP";
state->protocol = MAIL_PROTO_SMTP;
state->where = SMTPD_AFTER_CONNECT;
state->recursion = 0;
state->msg_size = 0;