From: Wietse Venema Date: Sat, 30 Mar 2019 05:00:00 +0000 (-0500) Subject: postfix-3.2.9 X-Git-Tag: v3.2.9^0 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=27b1a9ae796f9eb8205daf285327a3c4e2d172ba;p=thirdparty%2Fpostfix.git postfix-3.2.9 --- diff --git a/postfix/HISTORY b/postfix/HISTORY index 981519b8d..4be1d313d 100644 --- a/postfix/HISTORY +++ b/postfix/HISTORY @@ -23145,3 +23145,20 @@ Apologies for any names omitted. a lookup table that does not use fixed-string keys (regexp, pcre, tcp, etc.). Historically, Postfix would not case-fold the search string with such tables. File: util/dict_utf8.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 f3c2d5147..cae85277f 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.2.8" +#define MAIL_RELEASE_DATE "20190330" +#define MAIL_VERSION_NUMBER "3.2.9" #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 7eb0462cf..50337dc28 100644 --- a/postfix/src/smtp/smtp_connect.c +++ b/postfix/src/smtp/smtp_connect.c @@ -487,6 +487,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 @@ -562,6 +564,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 e16152238..62b731085 100644 --- a/postfix/src/smtpd/smtpd_check.c +++ b/postfix/src/smtpd/smtpd_check.c @@ -4576,7 +4576,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",