mirror of
https://github.com/vdukhovni/postfix
synced 2025-08-22 09:57:34 +00:00
postfix-3.9.4
This commit is contained in:
parent
10483102de
commit
1b02f1a71a
@ -28105,3 +28105,30 @@ Apologies for any names omitted.
|
|||||||
default smtp_tls_dane_insecure_mx_policy setting resulted in
|
default smtp_tls_dane_insecure_mx_policy setting resulted in
|
||||||
unnecessary 'dnssec_probe' warnings, on systems that disable
|
unnecessary 'dnssec_probe' warnings, on systems that disable
|
||||||
DNSSEC lookups (the default). File: smtp/smtp_addr.c.
|
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.
|
||||||
|
@ -178,7 +178,7 @@ later. </p>
|
|||||||
<p> Dovecot is a POP/IMAP server that has its own configuration to
|
<p> Dovecot is a POP/IMAP server that has its own configuration to
|
||||||
authenticate POP/IMAP clients. When the Postfix SMTP server uses
|
authenticate POP/IMAP clients. When the Postfix SMTP server uses
|
||||||
Dovecot SASL, it reuses parts of this configuration. Consult the
|
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>
|
to configure and operate the Dovecot authentication server. </p>
|
||||||
|
|
||||||
<h4><a name="server_dovecot_comm">Postfix to Dovecot SASL communication</a></h4>
|
<h4><a name="server_dovecot_comm">Postfix to Dovecot SASL communication</a></h4>
|
||||||
|
@ -178,7 +178,7 @@ later. </p>
|
|||||||
<p> Dovecot is a POP/IMAP server that has its own configuration to
|
<p> Dovecot is a POP/IMAP server that has its own configuration to
|
||||||
authenticate POP/IMAP clients. When the Postfix SMTP server uses
|
authenticate POP/IMAP clients. When the Postfix SMTP server uses
|
||||||
Dovecot SASL, it reuses parts of this configuration. Consult the
|
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>
|
to configure and operate the Dovecot authentication server. </p>
|
||||||
|
|
||||||
<h4><a name="server_dovecot_comm">Postfix to Dovecot SASL communication</a></h4>
|
<h4><a name="server_dovecot_comm">Postfix to Dovecot SASL communication</a></h4>
|
||||||
|
@ -20,8 +20,8 @@
|
|||||||
* Patches change both the patchlevel and the release date. Snapshots have no
|
* Patches change both the patchlevel and the release date. Snapshots have no
|
||||||
* patchlevel; they change the release date only.
|
* patchlevel; they change the release date only.
|
||||||
*/
|
*/
|
||||||
#define MAIL_RELEASE_DATE "20250224"
|
#define MAIL_RELEASE_DATE "20250422"
|
||||||
#define MAIL_VERSION_NUMBER "3.9.3"
|
#define MAIL_VERSION_NUMBER "3.9.4"
|
||||||
|
|
||||||
#ifdef SNAPSHOT
|
#ifdef SNAPSHOT
|
||||||
#define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE
|
#define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE
|
||||||
|
@ -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)
|
static char *pcf_next_cf_line(VSTRING *buf, VSTREAM *src, VSTREAM *dst, int *lineno)
|
||||||
{
|
{
|
||||||
char *cp;
|
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)
|
if (lineno)
|
||||||
*lineno += 1;
|
*lineno += 1;
|
||||||
if ((cp = pcf_find_cf_info(buf, dst)) != 0)
|
if ((cp = pcf_find_cf_info(buf, dst)) != 0)
|
||||||
|
@ -217,8 +217,13 @@ static int smtpd_peer_sockaddr_to_hostaddr(SMTPD_STATE *state)
|
|||||||
*/
|
*/
|
||||||
if ((aierr = sockaddr_to_hostaddr(sa, sa_length, &client_addr,
|
if ((aierr = sockaddr_to_hostaddr(sa, sa_length, &client_addr,
|
||||||
&client_port, 0)) != 0)
|
&client_port, 0)) != 0)
|
||||||
msg_fatal("%s: cannot convert client address/port to string: %s",
|
msg_fatal("%s: cannot convert client sockaddr type %s length %ld "
|
||||||
myname, MAI_STRERROR(aierr));
|
"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);
|
state->port = mystrdup(client_port.buf);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -299,9 +304,15 @@ static int smtpd_peer_sockaddr_to_hostaddr(SMTPD_STATE *state)
|
|||||||
state->dest_sockaddr_len,
|
state->dest_sockaddr_len,
|
||||||
&server_addr,
|
&server_addr,
|
||||||
&server_port, 0)) != 0)
|
&server_port, 0)) != 0)
|
||||||
msg_fatal("%s: cannot convert server address/port to string: %s",
|
/* TODO: convert IPv4-in-IPv6 to IPv4 form. */
|
||||||
myname, MAI_STRERROR(aierr));
|
msg_fatal("%s: cannot convert server sockaddr type %s length %ld "
|
||||||
/* TODO: convert IPv4-in-IPv6 to IPv4 form. */
|
"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_addr = mystrdup(server_addr.buf);
|
||||||
state->dest_port = mystrdup(server_port.buf);
|
state->dest_port = mystrdup(server_port.buf);
|
||||||
|
|
||||||
@ -409,8 +420,8 @@ static void smtpd_peer_hostaddr_to_sockaddr(SMTPD_STATE *state)
|
|||||||
|
|
||||||
if ((aierr = hostaddr_to_sockaddr(state->addr, state->port,
|
if ((aierr = hostaddr_to_sockaddr(state->addr, state->port,
|
||||||
SOCK_STREAM, &res)) != 0)
|
SOCK_STREAM, &res)) != 0)
|
||||||
msg_fatal("%s: cannot convert client address/port to string: %s",
|
msg_fatal("%s: cannot convert client address '%s' port '%s' to binary: %s",
|
||||||
myname, MAI_STRERROR(aierr));
|
myname, state->addr, state->port, MAI_STRERROR(aierr));
|
||||||
if (res->ai_addrlen > sizeof(state->sockaddr))
|
if (res->ai_addrlen > sizeof(state->sockaddr))
|
||||||
msg_panic("%s: address length > struct sockaddr_storage", myname);
|
msg_panic("%s: address length > struct sockaddr_storage", myname);
|
||||||
memcpy((void *) &(state->sockaddr), res->ai_addr, res->ai_addrlen);
|
memcpy((void *) &(state->sockaddr), res->ai_addr, res->ai_addrlen);
|
||||||
|
@ -617,6 +617,7 @@ static int xsasl_dovecot_handle_reply(XSASL_DOVECOT_SERVER *server,
|
|||||||
}
|
}
|
||||||
|
|
||||||
vstring_strcpy(reply, "Connection lost to authentication server");
|
vstring_strcpy(reply, "Connection lost to authentication server");
|
||||||
|
xsasl_dovecot_server_disconnect(server->impl);
|
||||||
return XSASL_AUTH_TEMP;
|
return XSASL_AUTH_TEMP;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -705,6 +706,7 @@ int xsasl_dovecot_server_first(XSASL_SERVER *xp, const char *sasl_method,
|
|||||||
|
|
||||||
if (i == 1) {
|
if (i == 1) {
|
||||||
vstring_strcpy(reply, "Can't connect to authentication server");
|
vstring_strcpy(reply, "Can't connect to authentication server");
|
||||||
|
xsasl_dovecot_server_disconnect(server->impl);
|
||||||
return XSASL_AUTH_TEMP;
|
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);
|
"CONT\t%u\t%s\n", server->last_request_id, request);
|
||||||
if (vstream_fflush(server->impl->sasl_stream) == VSTREAM_EOF) {
|
if (vstream_fflush(server->impl->sasl_stream) == VSTREAM_EOF) {
|
||||||
vstring_strcpy(reply, "Connection lost to authentication server");
|
vstring_strcpy(reply, "Connection lost to authentication server");
|
||||||
|
xsasl_dovecot_server_disconnect(server->impl);
|
||||||
return XSASL_AUTH_TEMP;
|
return XSASL_AUTH_TEMP;
|
||||||
}
|
}
|
||||||
return xsasl_dovecot_handle_reply(server, reply);
|
return xsasl_dovecot_handle_reply(server, reply);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user