From b0fcc907041fa1b33cc8bd155ca8475cb15e9e71 Mon Sep 17 00:00:00 2001 From: Wietse Venema Date: Sat, 30 Mar 2019 00:00:00 -0500 Subject: [PATCH] postfix-3.3.4 --- postfix/HISTORY | 17 +++++++++++++++++ postfix/src/global/mail_version.h | 4 ++-- postfix/src/smtp/smtp_connect.c | 8 ++++++++ postfix/src/smtpd/smtpd_check.c | 2 +- 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/postfix/HISTORY b/postfix/HISTORY index fa93ae1da..c2d2c7ec2 100644 --- a/postfix/HISTORY +++ b/postfix/HISTORY @@ -23431,3 +23431,20 @@ Apologies for any names omitted. reap orhpan processes from non-Postfix code running in the same container, instead of terminating with a panic. File: master/master_spawn.c. + +20190312 + + Bugfix (introduced: Postfix 2.2): reject_multi_recipient_bounce + has been producing false rejects starting with the Postfix + 2.2 smtpd_end_of_data_restrictons, and for the same reasons, + did the same with the Postfix 3.4 BDAT command. The latter + was reported by Andreas Schulze. File: smtpd/smtpd_check.c. + +20190328 + + Bugfix (introduced: Postfix 3.0): LMTP connections over + UNIX-domain sockets were cached but not reused, due to a + cache lookup key mismatch. Therefore, idle cached connections + could exhaust LMTP server resources, resulting in two-second + pauses between email deliveries. This problem was investigated + by Juliana Rodrigueiro. File: smtp/smtp_connect.c. diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h index fda3d8757..0921aacfd 100644 --- a/postfix/src/global/mail_version.h +++ b/postfix/src/global/mail_version.h @@ -20,8 +20,8 @@ * Patches change both the patchlevel and the release date. Snapshots have no * patchlevel; they change the release date only. */ -#define MAIL_RELEASE_DATE "20190226" -#define MAIL_VERSION_NUMBER "3.3.3" +#define MAIL_RELEASE_DATE "20190330" +#define MAIL_VERSION_NUMBER "3.3.4" #ifdef SNAPSHOT #define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE diff --git a/postfix/src/smtp/smtp_connect.c b/postfix/src/smtp/smtp_connect.c index 2bf209d92..7db9e7939 100644 --- a/postfix/src/smtp/smtp_connect.c +++ b/postfix/src/smtp/smtp_connect.c @@ -492,6 +492,8 @@ static void smtp_connect_local(SMTP_STATE *state, const char *path) * the "unix:" prefix. */ smtp_cache_policy(state, path); + if (state->misc_flags & SMTP_MISC_FLAG_CONN_CACHE_MASK) + SET_NEXTHOP_STATE(state, path); /* * Here we ensure that the iter->addr member refers to a copy of the @@ -567,6 +569,12 @@ static void smtp_connect_local(SMTP_STATE *state, const char *path) msg_panic("%s: unix-domain destination not final!", myname); smtp_cleanup_session(state); } + + /* + * Cleanup. + */ + if (HAVE_NEXTHOP_STATE(state)) + FREE_NEXTHOP_STATE(state); } /* smtp_scrub_address_list - delete all cached addresses from list */ diff --git a/postfix/src/smtpd/smtpd_check.c b/postfix/src/smtpd/smtpd_check.c index 94e8c0181..5c2690320 100644 --- a/postfix/src/smtpd/smtpd_check.c +++ b/postfix/src/smtpd/smtpd_check.c @@ -4580,7 +4580,7 @@ static int generic_checks(SMTPD_STATE *state, ARGV *restrictions, status = check_recipient_rcpt_maps(state, state->recipient); } else if (strcasecmp(name, REJECT_MUL_RCPT_BOUNCE) == 0) { if (state->sender && *state->sender == 0 && state->rcpt_count - > (strcmp(state->where, SMTPD_CMD_DATA) ? 0 : 1)) + > (strcmp(state->where, SMTPD_CMD_RCPT) != 0)) status = smtpd_check_reject(state, MAIL_ERROR_POLICY, var_mul_rcpt_code, "5.5.3", "<%s>: %s rejected: Multi-recipient bounce", -- 2.47.3