Prereq: "3.2.8" diff -ur --new-file /var/tmp/postfix-3.2.8/src/global/mail_version.h ./src/global/mail_version.h --- /var/tmp/postfix-3.2.8/src/global/mail_version.h 2019-02-26 19:01:38.000000000 -0500 +++ ./src/global/mail_version.h 2019-03-30 10:37:10.000000000 -0400 @@ -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 -ur --new-file /var/tmp/postfix-3.2.8/HISTORY ./HISTORY --- /var/tmp/postfix-3.2.8/HISTORY 2018-12-27 18:31:51.000000000 -0500 +++ ./HISTORY 2019-03-29 08:17:55.000000000 -0400 @@ -23145,3 +23145,20 @@ 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 -ur --new-file /var/tmp/postfix-3.2.8/src/smtp/smtp_connect.c ./src/smtp/smtp_connect.c --- /var/tmp/postfix-3.2.8/src/smtp/smtp_connect.c 2016-10-08 09:36:04.000000000 -0400 +++ ./src/smtp/smtp_connect.c 2019-03-29 07:15:55.000000000 -0400 @@ -487,6 +487,8 @@ * 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 @@ 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 -ur --new-file /var/tmp/postfix-3.2.8/src/smtpd/smtpd_check.c ./src/smtpd/smtpd_check.c --- /var/tmp/postfix-3.2.8/src/smtpd/smtpd_check.c 2017-12-20 20:27:51.000000000 -0500 +++ ./src/smtpd/smtpd_check.c 2019-03-29 08:19:01.000000000 -0400 @@ -4576,7 +4576,7 @@ 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",