From: Wietse Venema Date: Mon, 3 Feb 2020 05:00:00 +0000 (-0500) Subject: postfix-3.4.9 X-Git-Tag: v3.4.9^0 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7c3b1f86d218269fd0a92cf8fed5b49faf0a6b78;p=thirdparty%2Fpostfix.git postfix-3.4.9 --- diff --git a/postfix/HISTORY b/postfix/HISTORY index a6f2542ef..5693ef436 100644 --- a/postfix/HISTORY +++ b/postfix/HISTORY @@ -24319,3 +24319,23 @@ Apologies for any names omitted. now, the parser skips object types that it does not know about for usability, and logs a warning because ignoring inputs is not kosher. Viktor and Wietse. File: tls/tls_certkey.c. + +20191214 + + Bugfix (introduced: Postfix 3.1): support for + smtp_dns_resolver_options was broken while adding support + for negative DNS response caching in postscreen. Postfix + was inadvertently changed to call res_query() instead of + res_search(). Reported by Jaroslav Skarvada. File: + dns/dns_lookup.c. + + Bugfix (introduced: Postfix 3.0): sanitize server responses + before storing them in the verify database, to avoid Postfix + warnings about malformed UTF8. File: verify/verify.c. + +20200115 + + Bugfix (introduced: Postfix 2.5): the Milter connect event + macros were evaluated before the Milter connection itself + had been negotiated. Problem reported by David Bürgin. + Files: milter/milter.h, milter/milter.c, milter/milter8.c diff --git a/postfix/src/dns/dns_lookup.c b/postfix/src/dns/dns_lookup.c index 1ea98b387..1bfeb7ee6 100644 --- a/postfix/src/dns/dns_lookup.c +++ b/postfix/src/dns/dns_lookup.c @@ -396,7 +396,7 @@ static int dns_res_search(const char *name, int class, int type, if (keep_notfound) /* Prepare for returning a null-padded server reply. */ memset(answer, 0, anslen); - len = res_query(name, class, type, answer, anslen); + len = res_search(name, class, type, answer, anslen); /* Begin API creep workaround. */ if (len < 0 && h_errno == 0) { SET_H_ERRNO(TRY_AGAIN); diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h index a53c3d6eb..8076b1c40 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 "20191124" -#define MAIL_VERSION_NUMBER "3.4.8" +#define MAIL_RELEASE_DATE "20200203" +#define MAIL_VERSION_NUMBER "3.4.9" #ifdef SNAPSHOT #define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE diff --git a/postfix/src/milter/milter.c b/postfix/src/milter/milter.c index ac2baaf77..cee169cb4 100644 --- a/postfix/src/milter/milter.c +++ b/postfix/src/milter/milter.c @@ -417,6 +417,8 @@ const char *milter_conn_event(MILTERS *milters, if (msg_verbose) msg_info("report connect to all milters"); for (resp = 0, m = milters->milter_list; resp == 0 && m != 0; m = m->next) { + if (m->connect_on_demand != 0) + m->connect_on_demand(m); any_macros = MILTER_MACRO_EVAL(global_macros, m, milters, conn_macros); resp = m->conn_event(m, client_name, client_addr, client_port, addr_family, any_macros); diff --git a/postfix/src/milter/milter.h b/postfix/src/milter/milter.h index f744910d7..951744fdb 100644 --- a/postfix/src/milter/milter.h +++ b/postfix/src/milter/milter.h @@ -35,6 +35,7 @@ typedef struct MILTER { struct MILTER *next; /* linkage */ struct MILTERS *parent; /* parent information */ struct MILTER_MACROS *macros; /* private macros */ + void (*connect_on_demand) (struct MILTER *); const char *(*conn_event) (struct MILTER *, const char *, const char *, const char *, unsigned, ARGV *); const char *(*helo_event) (struct MILTER *, const char *, int, ARGV *); const char *(*mail_event) (struct MILTER *, const char **, ARGV *); diff --git a/postfix/src/milter/milter8.c b/postfix/src/milter/milter8.c index 57abc3b21..892c38721 100644 --- a/postfix/src/milter/milter8.c +++ b/postfix/src/milter/milter8.c @@ -1917,15 +1917,6 @@ static const char *milter8_conn_event(MILTER *m, #define STR_EQ(x,y) (strcmp((x), (y)) == 0) #define STR_NE(x,y) (strcmp((x), (y)) != 0) - /* - * XXX Sendmail 8 libmilter closes the MTA-to-filter socket when it finds - * out that the SMTP client has disconnected. Because of this, Postfix - * has to open a new MTA-to-filter socket for each SMTP client. - */ -#ifdef LIBMILTER_AUTO_DISCONNECT - milter8_connect(milter); -#endif - /* * Report the event. */ @@ -2835,6 +2826,10 @@ static MILTER8 *milter8_alloc(const char *name, int conn_timeout, /* * Fill in the structure. Note: all strings must be copied. + * + * XXX Sendmail 8 libmilter closes the MTA-to-filter socket when it finds + * out that the SMTP client has disconnected. Because of this, Postfix + * has to open a new MTA-to-filter socket for each SMTP client. */ milter = (MILTER8 *) mymalloc(sizeof(*milter)); milter->m.name = mystrdup(name); @@ -2842,6 +2837,11 @@ static MILTER8 *milter8_alloc(const char *name, int conn_timeout, milter->m.next = 0; milter->m.parent = parent; milter->m.macros = 0; +#ifdef LIBMILTER_AUTO_DISCONNECT + milter->m.connect_on_demand = (void (*) (struct MILTER *)) milter8_connect; +#else + milter->m.connect_on_demand = 0; +#endif milter->m.conn_event = milter8_conn_event; milter->m.helo_event = milter8_helo_event; milter->m.mail_event = milter8_mail_event; diff --git a/postfix/src/verify/verify.c b/postfix/src/verify/verify.c index ae185c0bf..148f2aa32 100644 --- a/postfix/src/verify/verify.c +++ b/postfix/src/verify/verify.c @@ -401,6 +401,7 @@ static void verify_update_service(VSTREAM *client_stream) || STATUS_FROM_RAW_ENTRY(raw_data) != DEL_RCPT_STAT_OK) { probed = 0; updated = (long) time((time_t *) 0); + printable(STR(text), '?'); verify_make_entry(buf, addr_status, probed, updated, STR(text)); if (msg_verbose) msg_info("PUT %s status=%d probed=%ld updated=%ld text=%s",