Prereq: "3.3.3" diff -ur --new-file /var/tmp/postfix-3.3.3/src/global/mail_version.h ./src/global/mail_version.h --- /var/tmp/postfix-3.3.3/src/global/mail_version.h 2019-02-26 19:04:16.000000000 -0500 +++ ./src/global/mail_version.h 2019-03-30 10:37:46.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.3.3" +#define MAIL_RELEASE_DATE "20190330" +#define MAIL_VERSION_NUMBER "3.3.4" #ifdef SNAPSHOT #define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE diff -ur --new-file /var/tmp/postfix-3.3.3/HISTORY ./HISTORY --- /var/tmp/postfix-3.3.3/HISTORY 2019-02-17 10:45:06.000000000 -0500 +++ ./HISTORY 2019-03-29 08:19:31.000000000 -0400 @@ -23431,3 +23431,20 @@ 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 -ur --new-file /var/tmp/postfix-3.3.3/src/smtp/smtp_connect.c ./src/smtp/smtp_connect.c --- /var/tmp/postfix-3.3.3/src/smtp/smtp_connect.c 2017-12-27 17:29:45.000000000 -0500 +++ ./src/smtp/smtp_connect.c 2019-03-29 07:16:01.000000000 -0400 @@ -492,6 +492,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 @@ -567,6 +569,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.3.3/src/smtpd/smtpd_check.c ./src/smtpd/smtpd_check.c --- /var/tmp/postfix-3.3.3/src/smtpd/smtpd_check.c 2018-01-06 18:12:51.000000000 -0500 +++ ./src/smtpd/smtpd_check.c 2019-03-30 08:01:12.000000000 -0400 @@ -4580,7 +4580,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",