]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-3.4.9 v3.4.9
authorWietse Venema <wietse@porcupine.org>
Mon, 3 Feb 2020 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <postfix-users@dukhovni.org>
Mon, 3 Feb 2020 14:37:16 +0000 (09:37 -0500)
postfix/HISTORY
postfix/src/dns/dns_lookup.c
postfix/src/global/mail_version.h
postfix/src/milter/milter.c
postfix/src/milter/milter.h
postfix/src/milter/milter8.c
postfix/src/verify/verify.c

index a6f2542ef235cff9beda0f3af01cd87924db3711..5693ef436b593209a1d640c842d35105a62225c4 100644 (file)
@@ -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
index 1ea98b387f5a6f82e119d42871597f4b1e484a46..1bfeb7ee68abd2e2da5d51ce6210b9bc7b95b4f1 100644 (file)
@@ -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);
index a53c3d6eb577acfe38d5c983cd7b703ee50a72d0..8076b1c401af74665d5acb46f2f113ab884d3b07 100644 (file)
@@ -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
index ac2baaf7762445a527db60c2d2be3ff48c1f0156..cee169cb47d2d18f58cdf7c2b603db6133ef491c 100644 (file)
@@ -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);
index f744910d7831158d0b105d908a989f492f2ebd9e..951744fdb1c1f941d0fb4bab965a2e0ba5a7d837 100644 (file)
@@ -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 *);
index 57abc3b21620740812e9eebca1320c2cda51381b..892c38721e20bce073c5c5bfdd07bad9c5c621aa 100644 (file)
@@ -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;
index ae185c0bfefc70e9ac0102bb35284db9a878dd39..148f2aa32eca01d10cd39a3cc43803d606ecec6f 100644 (file)
@@ -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",