]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-3.7.15 v3.7.15
authorWietse Z Venema <wietse@porcupine.org>
Tue, 22 Apr 2025 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <ietf-dane@dukhovni.org>
Wed, 23 Apr 2025 01:12:30 +0000 (11:12 +1000)
postfix/HISTORY
postfix/html/SASL_README.html
postfix/proto/SASL_README.html
postfix/src/global/mail_version.h
postfix/src/postconf/postconf_edit.c
postfix/src/smtpd/smtpd_peer.c
postfix/src/xsasl/xsasl_dovecot_server.c

index 781f9293a2a5afd368316301d2a491cf64f210bc..3d6ac81f82d1ccfe2981ed4effec11c245e13eee 100644 (file)
@@ -26885,3 +26885,30 @@ Apologies for any names omitted.
        default smtp_tls_dane_insecure_mx_policy setting resulted in
        unnecessary 'dnssec_probe' warnings, on systems that disable
        DNSSEC lookups (the default). File: smtp/smtp_addr.c.
+
+20250223
+
+       Documentation: updated link to Dovecot documentation. File:
+       proto/SASL_README.
+
+20250227
+
+       Improved and corrected error messages when converting (host
+       or service) information to (symbolic text, numerical text,
+       or binary) form. File: util/myaddrinfo.c.
+
+20250304
+
+       Bugfix (defect introduced: Postfix 2.3, date 20051222): the
+       Dovecot auth client did not attempt to create a new connection
+       after an I/O error on an existing connection. Reported by
+       Oleksandr Kozmenko. File: xsasl/xsasl_dovecot_server.c.
+
+20250316
+
+       Bugfix (defect introduced: date 19991116): when appending
+       a setting to a main.cf or master.cf file that did not end
+       in a newline character, the "postconf -e" command did not
+       add an extra newline character before appending the new
+       setting, causing information to become garbled. Fix by
+       Michael Tokarev. File: postconf/postconf_edit.c.
index eeaad444612878c2eddee78b9947fc5a69aef813..49ea200080c37a88051c08c0ea1c894265245322 100644 (file)
@@ -177,7 +177,7 @@ later. </p>
 <p> Dovecot is a POP/IMAP server that has its own configuration to
 authenticate POP/IMAP clients. When the Postfix SMTP server uses
 Dovecot SASL, it reuses parts of this configuration.  Consult the
-<a href="http://wiki.dovecot.org">Dovecot documentation</a> for how
+<a href="https://doc.dovecot.org">Dovecot documentation</a> for how
 to configure and operate the Dovecot authentication server.  </p>
 
 <h4><a name="server_dovecot_comm">Postfix to Dovecot SASL communication</a></h4>
index c70d2423332d5a66837bff802d698c8a86e6bfed..28fd190eca6d463f6f3ca248ccc28ad02272669b 100644 (file)
@@ -177,7 +177,7 @@ later. </p>
 <p> Dovecot is a POP/IMAP server that has its own configuration to
 authenticate POP/IMAP clients. When the Postfix SMTP server uses
 Dovecot SASL, it reuses parts of this configuration.  Consult the
-<a href="http://wiki.dovecot.org">Dovecot documentation</a> for how
+<a href="https://doc.dovecot.org">Dovecot documentation</a> for how
 to configure and operate the Dovecot authentication server.  </p>
 
 <h4><a name="server_dovecot_comm">Postfix to Dovecot SASL communication</a></h4>
index 9c92f1668c79b50f6d43b1208469dfb3c1d5af76..ab59f0f3f9446619e2bed11e8ff704b291e21736 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      "20250224"
-#define MAIL_VERSION_NUMBER    "3.7.14"
+#define MAIL_RELEASE_DATE      "20250422"
+#define MAIL_VERSION_NUMBER    "3.7.15"
 
 #ifdef SNAPSHOT
 #define MAIL_VERSION_DATE      "-" MAIL_RELEASE_DATE
index 2f9a607318494236911872df5d11a124d6d562e0..83899281dd5509fd2f385d6db5c5eb0f653c9d13 100644 (file)
@@ -113,8 +113,13 @@ static char *pcf_find_cf_info(VSTRING *buf, VSTREAM *dst)
 static char *pcf_next_cf_line(VSTRING *buf, VSTREAM *src, VSTREAM *dst, int *lineno)
 {
     char   *cp;
+    int     last_char;
 
-    while (vstring_get(buf, src) != VSTREAM_EOF) {
+    while ((last_char = vstring_get(buf, src)) != VSTREAM_EOF) {
+       if (last_char != '\n') {
+           VSTRING_ADDCH(buf, '\n');
+           VSTRING_TERMINATE(buf);
+       }
        if (lineno)
            *lineno += 1;
        if ((cp = pcf_find_cf_info(buf, dst)) != 0)
index 3a5c1d46bb3ce87a004c0fecf8e52649033dfb93..4b0e3029e53a66f6fb0e84145dd3e20dcbd6497a 100644 (file)
@@ -216,8 +216,13 @@ static int smtpd_peer_sockaddr_to_hostaddr(SMTPD_STATE *state)
         */
        if ((aierr = sockaddr_to_hostaddr(sa, sa_length, &client_addr,
                                          &client_port, 0)) != 0)
-           msg_fatal("%s: cannot convert client address/port to string: %s",
-                     myname, MAI_STRERROR(aierr));
+           msg_fatal("%s: cannot convert client sockaddr type %s length %ld "
+                     "to string: %s", myname,
+#ifdef AF_INET6
+                     sa->sa_family == AF_INET6 ? "AF_INET6" :
+#endif
+                     sa->sa_family == AF_INET ? "AF_INET" : "other",
+                     (long) sa_length, MAI_STRERROR(aierr));
        state->port = mystrdup(client_port.buf);
 
        /*
@@ -296,9 +301,15 @@ static int smtpd_peer_sockaddr_to_hostaddr(SMTPD_STATE *state)
                                          state->dest_sockaddr_len,
                                          &server_addr,
                                          &server_port, 0)) != 0)
-           msg_fatal("%s: cannot convert server address/port to string: %s",
-                     myname, MAI_STRERROR(aierr));
-       /* TODO: convert IPv4-in-IPv6 to IPv4 form. */
+           /* TODO: convert IPv4-in-IPv6 to IPv4 form. */
+           msg_fatal("%s: cannot convert server sockaddr type %s length %ld "
+                   "to string: %s", myname,
+#ifdef AF_INET6
+                  state->dest_sockaddr.ss_family == AF_INET6 ? "AF_INET6" :
+#endif
+                     state->dest_sockaddr.ss_family == AF_INET ? "AF_INET" :
+                     "other", (long) state->dest_sockaddr_len,
+                     MAI_STRERROR(aierr));
        state->dest_addr = mystrdup(server_addr.buf);
        state->dest_port = mystrdup(server_port.buf);
 
@@ -406,8 +417,8 @@ static void smtpd_peer_hostaddr_to_sockaddr(SMTPD_STATE *state)
 
     if ((aierr = hostaddr_to_sockaddr(state->addr, state->port,
                                      SOCK_STREAM, &res)) != 0)
-       msg_fatal("%s: cannot convert client address/port to string: %s",
-                 myname, MAI_STRERROR(aierr));
+       msg_fatal("%s: cannot convert client address '%s' port '%s' to binary: %s",
+                 myname, state->addr, state->port, MAI_STRERROR(aierr));
     if (res->ai_addrlen > sizeof(state->sockaddr))
        msg_panic("%s: address length > struct sockaddr_storage", myname);
     memcpy((void *) &(state->sockaddr), res->ai_addr, res->ai_addrlen);
index ac93a2da9af97a0d5213766a0d48d1c18e21de4d..86954ed6263878a09281b98c0f4a68b2e0ef80b2 100644 (file)
@@ -617,6 +617,7 @@ static int xsasl_dovecot_handle_reply(XSASL_DOVECOT_SERVER *server,
     }
 
     vstring_strcpy(reply, "Connection lost to authentication server");
+    xsasl_dovecot_server_disconnect(server->impl);
     return XSASL_AUTH_TEMP;
 }
 
@@ -705,6 +706,7 @@ int     xsasl_dovecot_server_first(XSASL_SERVER *xp, const char *sasl_method,
 
        if (i == 1) {
            vstring_strcpy(reply, "Can't connect to authentication server");
+           xsasl_dovecot_server_disconnect(server->impl);
            return XSASL_AUTH_TEMP;
        }
 
@@ -733,6 +735,7 @@ static int xsasl_dovecot_server_next(XSASL_SERVER *xp, const char *request,
                    "CONT\t%u\t%s\n", server->last_request_id, request);
     if (vstream_fflush(server->impl->sasl_stream) == VSTREAM_EOF) {
        vstring_strcpy(reply, "Connection lost to authentication server");
+       xsasl_dovecot_server_disconnect(server->impl);
        return XSASL_AUTH_TEMP;
     }
     return xsasl_dovecot_handle_reply(server, reply);