mirror of
https://github.com/vdukhovni/postfix
synced 2025-09-01 14:45:32 +00:00
postfix-2.3.16
This commit is contained in:
committed by
Viktor Dukhovni
parent
f9a223616e
commit
d44913aaab
@@ -13173,3 +13173,15 @@ Apologies for any names omitted.
|
|||||||
legitimate configurations that deliver mail to a symbolic
|
legitimate configurations that deliver mail to a symbolic
|
||||||
link in a directory with less restrictive permissions.
|
link in a directory with less restrictive permissions.
|
||||||
|
|
||||||
|
20080908
|
||||||
|
|
||||||
|
Bugfix: the cleanup server did not update the recipient
|
||||||
|
count after Milter application access. Backported from
|
||||||
|
Postfix 2.4 update 20070215. Files: cleanup_api.c,
|
||||||
|
cleanup_extracted.c, cleanup_final.c.
|
||||||
|
|
||||||
|
20081203
|
||||||
|
|
||||||
|
Cleanup: adjust the VSTREAM buffer strategy when reusing
|
||||||
|
an SMTP connection with a large TCP MSS value. File:
|
||||||
|
smtp/smtp_reuse.c.
|
||||||
|
@@ -3,12 +3,12 @@ SRCS = cleanup.c cleanup_out.c cleanup_envelope.c cleanup_message.c \
|
|||||||
cleanup_extracted.c cleanup_state.c cleanup_rewrite.c \
|
cleanup_extracted.c cleanup_state.c cleanup_rewrite.c \
|
||||||
cleanup_map11.c cleanup_map1n.c cleanup_masquerade.c \
|
cleanup_map11.c cleanup_map1n.c cleanup_masquerade.c \
|
||||||
cleanup_out_recipient.c cleanup_init.c cleanup_api.c \
|
cleanup_out_recipient.c cleanup_init.c cleanup_api.c \
|
||||||
cleanup_addr.c cleanup_bounce.c cleanup_milter.c
|
cleanup_addr.c cleanup_bounce.c cleanup_milter.c cleanup_final.c
|
||||||
OBJS = cleanup.o cleanup_out.o cleanup_envelope.o cleanup_message.o \
|
OBJS = cleanup.o cleanup_out.o cleanup_envelope.o cleanup_message.o \
|
||||||
cleanup_extracted.o cleanup_state.o cleanup_rewrite.o \
|
cleanup_extracted.o cleanup_state.o cleanup_rewrite.o \
|
||||||
cleanup_map11.o cleanup_map1n.o cleanup_masquerade.o \
|
cleanup_map11.o cleanup_map1n.o cleanup_masquerade.o \
|
||||||
cleanup_out_recipient.o cleanup_init.o cleanup_api.o \
|
cleanup_out_recipient.o cleanup_init.o cleanup_api.o \
|
||||||
cleanup_addr.o cleanup_bounce.o cleanup_milter.o
|
cleanup_addr.o cleanup_bounce.o cleanup_milter.o cleanup_final.o
|
||||||
HDRS =
|
HDRS =
|
||||||
TESTSRC =
|
TESTSRC =
|
||||||
DEFS = -I. -I$(INC_DIR) -D$(SYSTYPE)
|
DEFS = -I. -I$(INC_DIR) -D$(SYSTYPE)
|
||||||
@@ -321,6 +321,32 @@ cleanup_extracted.o: ../../include/vstream.h
|
|||||||
cleanup_extracted.o: ../../include/vstring.h
|
cleanup_extracted.o: ../../include/vstring.h
|
||||||
cleanup_extracted.o: cleanup.h
|
cleanup_extracted.o: cleanup.h
|
||||||
cleanup_extracted.o: cleanup_extracted.c
|
cleanup_extracted.o: cleanup_extracted.c
|
||||||
|
cleanup_final.o: ../../include/argv.h
|
||||||
|
cleanup_final.o: ../../include/been_here.h
|
||||||
|
cleanup_final.o: ../../include/cleanup_user.h
|
||||||
|
cleanup_final.o: ../../include/dict.h
|
||||||
|
cleanup_final.o: ../../include/header_opts.h
|
||||||
|
cleanup_final.o: ../../include/htable.h
|
||||||
|
cleanup_final.o: ../../include/mail_conf.h
|
||||||
|
cleanup_final.o: ../../include/mail_stream.h
|
||||||
|
cleanup_final.o: ../../include/maps.h
|
||||||
|
cleanup_final.o: ../../include/match_list.h
|
||||||
|
cleanup_final.o: ../../include/match_ops.h
|
||||||
|
cleanup_final.o: ../../include/milter.h
|
||||||
|
cleanup_final.o: ../../include/mime_state.h
|
||||||
|
cleanup_final.o: ../../include/msg.h
|
||||||
|
cleanup_final.o: ../../include/mymalloc.h
|
||||||
|
cleanup_final.o: ../../include/nvtable.h
|
||||||
|
cleanup_final.o: ../../include/rec_type.h
|
||||||
|
cleanup_final.o: ../../include/resolve_clnt.h
|
||||||
|
cleanup_final.o: ../../include/string_list.h
|
||||||
|
cleanup_final.o: ../../include/sys_defs.h
|
||||||
|
cleanup_final.o: ../../include/tok822.h
|
||||||
|
cleanup_final.o: ../../include/vbuf.h
|
||||||
|
cleanup_final.o: ../../include/vstream.h
|
||||||
|
cleanup_final.o: ../../include/vstring.h
|
||||||
|
cleanup_final.o: cleanup.h
|
||||||
|
cleanup_final.o: cleanup_final.c
|
||||||
cleanup_init.o: ../../include/argv.h
|
cleanup_init.o: ../../include/argv.h
|
||||||
cleanup_init.o: ../../include/been_here.h
|
cleanup_init.o: ../../include/been_here.h
|
||||||
cleanup_init.o: ../../include/dict.h
|
cleanup_init.o: ../../include/dict.h
|
||||||
|
@@ -219,6 +219,11 @@ extern void cleanup_message(CLEANUP_STATE *, int, const char *, ssize_t);
|
|||||||
*/
|
*/
|
||||||
extern void cleanup_extracted(CLEANUP_STATE *, int, const char *, ssize_t);
|
extern void cleanup_extracted(CLEANUP_STATE *, int, const char *, ssize_t);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* cleanup_final.c
|
||||||
|
*/
|
||||||
|
extern void cleanup_final(CLEANUP_STATE *);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cleanup_rewrite.c
|
* cleanup_rewrite.c
|
||||||
*/
|
*/
|
||||||
|
@@ -234,6 +234,13 @@ int cleanup_flush(CLEANUP_STATE *state)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Update the preliminary message size and count fields with the actual
|
||||||
|
* values.
|
||||||
|
*/
|
||||||
|
if (CLEANUP_OUT_OK(state))
|
||||||
|
cleanup_final(state);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If there was an error that requires us to generate a bounce message
|
* If there was an error that requires us to generate a bounce message
|
||||||
* (mail submitted with the Postfix sendmail command, mail forwarded by
|
* (mail submitted with the Postfix sendmail command, mail forwarded by
|
||||||
|
@@ -300,32 +300,4 @@ void cleanup_extracted_finish(CLEANUP_STATE *state)
|
|||||||
* Terminate the extracted segment.
|
* Terminate the extracted segment.
|
||||||
*/
|
*/
|
||||||
cleanup_out_string(state, REC_TYPE_END, "");
|
cleanup_out_string(state, REC_TYPE_END, "");
|
||||||
|
|
||||||
/*
|
|
||||||
* vstream_fseek() would flush the buffer anyway, but the code just reads
|
|
||||||
* better if we flush first, because it makes seek error handling more
|
|
||||||
* straightforward.
|
|
||||||
*/
|
|
||||||
if (vstream_fflush(state->dst)) {
|
|
||||||
if (errno == EFBIG) {
|
|
||||||
msg_warn("%s: queue file size limit exceeded", state->queue_id);
|
|
||||||
state->errs |= CLEANUP_STAT_SIZE;
|
|
||||||
} else {
|
|
||||||
msg_warn("%s: write queue file: %m", state->queue_id);
|
|
||||||
state->errs |= CLEANUP_STAT_WRITE;
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Update the preliminary message size and count fields with the actual
|
|
||||||
* values.
|
|
||||||
*/
|
|
||||||
if (vstream_fseek(state->dst, 0L, SEEK_SET) < 0)
|
|
||||||
msg_fatal("%s: vstream_fseek %s: %m", myname, cleanup_path);
|
|
||||||
cleanup_out_format(state, REC_TYPE_SIZE, REC_TYPE_SIZE_FORMAT,
|
|
||||||
(REC_TYPE_SIZE_CAST1) (state->xtra_offset - state->data_offset),
|
|
||||||
(REC_TYPE_SIZE_CAST2) state->data_offset,
|
|
||||||
(REC_TYPE_SIZE_CAST3) state->rcpt_count,
|
|
||||||
(REC_TYPE_SIZE_CAST4) state->qmgr_opts);
|
|
||||||
}
|
}
|
||||||
|
76
postfix/src/cleanup/cleanup_final.c
Normal file
76
postfix/src/cleanup/cleanup_final.c
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
/*++
|
||||||
|
/* NAME
|
||||||
|
/* cleanup_final 3
|
||||||
|
/* SUMMARY
|
||||||
|
/* finalize queue file
|
||||||
|
/* SYNOPSIS
|
||||||
|
/* #include "cleanup.h"
|
||||||
|
/*
|
||||||
|
/* void cleanup_final(state)
|
||||||
|
/* CLEANUP_STATE *state;
|
||||||
|
/* DESCRIPTION
|
||||||
|
/* cleanup_final() performs final queue file content (not
|
||||||
|
/* attribute) updates so that the file is ready to be closed.
|
||||||
|
/* LICENSE
|
||||||
|
/* .ad
|
||||||
|
/* .fi
|
||||||
|
/* The Secure Mailer license must be distributed with this software.
|
||||||
|
/* AUTHOR(S)
|
||||||
|
/* Wietse Venema
|
||||||
|
/* IBM T.J. Watson Research
|
||||||
|
/* P.O. Box 704
|
||||||
|
/* Yorktown Heights, NY 10598, USA
|
||||||
|
/*--*/
|
||||||
|
|
||||||
|
/* System library. */
|
||||||
|
|
||||||
|
#include <sys_defs.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
/* Utility library. */
|
||||||
|
|
||||||
|
#include <msg.h>
|
||||||
|
|
||||||
|
/* Global library. */
|
||||||
|
|
||||||
|
#include <cleanup_user.h>
|
||||||
|
#include <rec_type.h>
|
||||||
|
|
||||||
|
/* Application-specific. */
|
||||||
|
|
||||||
|
#include "cleanup.h"
|
||||||
|
|
||||||
|
/* cleanup_final - final queue file content updates */
|
||||||
|
|
||||||
|
void cleanup_final(CLEANUP_STATE *state)
|
||||||
|
{
|
||||||
|
const char *myname = "cleanup_final";
|
||||||
|
|
||||||
|
/*
|
||||||
|
* vstream_fseek() would flush the buffer anyway, but the code just reads
|
||||||
|
* better if we flush first, because it makes seek error handling more
|
||||||
|
* straightforward.
|
||||||
|
*/
|
||||||
|
if (vstream_fflush(state->dst)) {
|
||||||
|
if (errno == EFBIG) {
|
||||||
|
msg_warn("%s: queue file size limit exceeded", state->queue_id);
|
||||||
|
state->errs |= CLEANUP_STAT_SIZE;
|
||||||
|
} else {
|
||||||
|
msg_warn("%s: write queue file: %m", state->queue_id);
|
||||||
|
state->errs |= CLEANUP_STAT_WRITE;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Update the preliminary message size and count fields with the actual
|
||||||
|
* values.
|
||||||
|
*/
|
||||||
|
if (vstream_fseek(state->dst, 0L, SEEK_SET) < 0)
|
||||||
|
msg_fatal("%s: vstream_fseek %s: %m", myname, cleanup_path);
|
||||||
|
cleanup_out_format(state, REC_TYPE_SIZE, REC_TYPE_SIZE_FORMAT,
|
||||||
|
(REC_TYPE_SIZE_CAST1) (state->xtra_offset - state->data_offset),
|
||||||
|
(REC_TYPE_SIZE_CAST2) state->data_offset,
|
||||||
|
(REC_TYPE_SIZE_CAST3) state->rcpt_count,
|
||||||
|
(REC_TYPE_SIZE_CAST4) state->qmgr_opts);
|
||||||
|
}
|
@@ -20,8 +20,8 @@
|
|||||||
* Patches change both the patchlevel and the release date. Snapshots have no
|
* Patches change both the patchlevel and the release date. Snapshots have no
|
||||||
* patchlevel; they change the release date only.
|
* patchlevel; they change the release date only.
|
||||||
*/
|
*/
|
||||||
#define MAIL_RELEASE_DATE "20080814"
|
#define MAIL_RELEASE_DATE "20090103"
|
||||||
#define MAIL_VERSION_NUMBER "2.3.15"
|
#define MAIL_VERSION_NUMBER "2.3.16"
|
||||||
|
|
||||||
#ifdef SNAPSHOT
|
#ifdef SNAPSHOT
|
||||||
# define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE
|
# define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE
|
||||||
|
@@ -213,6 +213,11 @@ static SMTP_SESSION *smtp_reuse_common(SMTP_STATE *state, int fd,
|
|||||||
return (state->session = 0);
|
return (state->session = 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Avoid poor performance when TCP MSS > VSTREAM_BUFSIZE.
|
||||||
|
*/
|
||||||
|
vstream_tweak_sock(session->stream);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Update the list of used cached addresses.
|
* Update the list of used cached addresses.
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user