2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-08-22 09:57:34 +00:00

postfix-3.10-20241027

This commit is contained in:
Wietse Z Venema 2024-10-27 00:00:00 -05:00 committed by Viktor Dukhovni
parent a559c5da49
commit 33701748e1
10 changed files with 173 additions and 108 deletions

View File

@ -28447,3 +28447,23 @@ Apologies for any names omitted.
is allowed). The dbname setting is now optional if the hosts is allowed). The dbname setting is now optional if the hosts
setting specifies only URIs. Files: util/valid_uri_scheme.[hc], setting specifies only URIs. Files: util/valid_uri_scheme.[hc],
proto/pgsql_table. proto/pgsql_table.
202141026
Documentation: updated the pgsql_table manpage that the
"user" and "password" settings are also ignored when a
"hosts" setting specifies an URI. File: proto/pgsql_table.
Documentation: updated text for how to handle retries with a
load balancer. Files: proto/pgsql_table, proto/mysql_table.
20241027
Bugfix (defect introduced: Postfix 2.3, date 20051222):
file descriptor leak after failure to connect to a Dovecot
auth server. The impact is limited because there are limits
on the number of retries (one), on the number of errors per
SMTP session (smtpd_hard_error_limit), on the number
of sessions per SMTP server process (max_use), and on the
number file handles per process (managed with sysctl).
File: xsasl/xsasl_dovecot_server.c.

View File

@ -61,11 +61,11 @@ MYSQL_TABLE(5) MYSQL_TABLE(5)
TCP you have to specify TCP you have to specify
hosts = 127.0.0.1 hosts = 127.0.0.1
NOTE: if "hosts" specifies one load balancer and no alternative NOTE: if the <b>hosts</b> setting specifies one load balancer and no
servers, specify the load balancer multiple times in the "hosts" alternative servers, specify the load balancer multiple times.
line. Without the duplicate info, the Postfix MySQL client would Without the duplicate info, the Postfix MySQL client would not
not reconnect immediately to the same load balancer after a reconnect immediately to the same load balancer after a request
MySQL server failure. failure.
<b>user</b> <b>user</b>
@ -96,6 +96,12 @@ MYSQL_TABLE(5) MYSQL_TABLE(5)
The number of seconds that a database connection will be skipped The number of seconds that a database connection will be skipped
after an error. after an error.
NOTE: if the <b>hosts</b> setting specifies one load balancer and no
alternative servers, specify the load balancer multiple times.
Without the duplicate info, the Postfix MySQL client would not
reconnect immediately to the same load balancer after a request
failure.
This feature is available in Postfix 3.9 and later. This feature is available in Postfix 3.9 and later.
<b>query</b> The SQL query template used to search the database, where <b>%s</b> is <b>query</b> The SQL query template used to search the database, where <b>%s</b> is

View File

@ -61,15 +61,15 @@ PGSQL_TABLE(5) PGSQL_TABLE(5)
matically closed after being idle for about 1 minute, and are matically closed after being idle for about 1 minute, and are
re-opened as necessary. See <b>idle_interval</b> for details. re-opened as necessary. See <b>idle_interval</b> for details.
NOTE: if <b>hosts</b> specifies a PostgreSQL connection URI, the Post- NOTE: if the <b>hosts</b> setting specifies a PostgreSQL connection
greSQL client library will ignore the <b>dbname</b> setting for that URI, the Postfix PostgreSQL client will ignore the <b>dbname</b>, <b>user</b>,
connection. and <b>password</b> settings for that connection.
NOTE: if <b>hosts</b> specifies one load balancer and no alternative NOTE: if the <b>hosts</b> setting specifies one load balancer and no
servers, specify the load balancer multiple times in the <b>hosts</b> alternative servers, specify the load balancer multiple times.
line. Without the duplicate info, the Postfix PostgreSQL client Without the duplicate info, the Postfix PostgreSQL client would
would not reconnect immediately to the same load balancer after not reconnect immediately to the same load balancer after a
a PostgreSQL server failure. request failure.
<b>user</b> <b>user</b>
@ -79,28 +79,31 @@ PGSQL_TABLE(5) PGSQL_TABLE(5)
user = someone user = someone
password = some_password password = some_password
The <b>user</b> and <b>password</b> settings are ignored for <b>hosts</b> connections
that are specified as an URI.
<b>dbname</b> The database name on the servers. Example: <b>dbname</b> The database name on the servers. Example:
dbname = customer_database dbname = customer_database
The <b>dbname</b> setting is ignored for <b>hosts</b> connections that are The <b>dbname</b> setting is ignored for <b>hosts</b> connections that are
specified as an URI. specified as an URI.
The <b>dbname</b> setting is required with Postfix 3.10 and later, when The <b>dbname</b> setting is required with Postfix 3.10 and later, when
<b>hosts</b> specifies any non-URI connection; it is always required <b>hosts</b> specifies any non-URI connection; it is always required
with earlier Postfix versions. with earlier Postfix versions.
<b>encoding</b> <b>encoding</b>
The encoding used by the database client. The default setting The encoding used by the database client. The default setting
is: is:
encoding = UTF8 encoding = UTF8
Historically, the database client was hard coded to use LATIN1 Historically, the database client was hard coded to use LATIN1
in an attempt to disable multibyte character support. in an attempt to disable multibyte character support.
This feature is available in Postfix 3.8 and later. This feature is available in Postfix 3.8 and later.
<b>idle_interval (default: 60)</b> <b>idle_interval (default: 60)</b>
The number of seconds after which an idle database connection The number of seconds after which an idle database connection
will be closed. will be closed.
This feature is available in Postfix 3.9 and later. This feature is available in Postfix 3.9 and later.
@ -109,10 +112,16 @@ PGSQL_TABLE(5) PGSQL_TABLE(5)
The number of seconds that a database connection will be skipped The number of seconds that a database connection will be skipped
after an error. after an error.
NOTE: if the <b>hosts</b> setting specifies one load balancer and no
alternative servers, specify the load balancer multiple times.
Without the duplicate info, the Postfix PostgreSQL client would
not reconnect immediately to the same load balancer after a
request failure.
This feature is available in Postfix 3.9 and later. This feature is available in Postfix 3.9 and later.
<b>query</b> The SQL query template used to search the database, where <b>%s</b> is <b>query</b> The SQL query template used to search the database, where <b>%s</b> is
a substitute for the address Postfix is trying to resolve, e.g. a substitute for the address Postfix is trying to resolve, e.g.
query = SELECT replacement FROM aliases WHERE mailbox = '%s' query = SELECT replacement FROM aliases WHERE mailbox = '%s'
This parameter supports the following '%' expansions: This parameter supports the following '%' expansions:
@ -120,48 +129,48 @@ PGSQL_TABLE(5) PGSQL_TABLE(5)
<b>%%</b> This is replaced by a literal '%' character. (Postfix 2.2 <b>%%</b> This is replaced by a literal '%' character. (Postfix 2.2
and later) and later)
<b>%s</b> This is replaced by the input key. SQL quoting is used <b>%s</b> This is replaced by the input key. SQL quoting is used
to make sure that the input key does not add unexpected to make sure that the input key does not add unexpected
metacharacters. metacharacters.
<b>%u</b> When the input key is an address of the form user@domain, <b>%u</b> When the input key is an address of the form user@domain,
<b>%u</b> is replaced by the SQL quoted local part of the <b>%u</b> is replaced by the SQL quoted local part of the
address. Otherwise, <b>%u</b> is replaced by the entire search address. Otherwise, <b>%u</b> is replaced by the entire search
string. If the localpart is empty, the query is sup- string. If the localpart is empty, the query is sup-
pressed and returns no results. pressed and returns no results.
<b>%d</b> When the input key is an address of the form user@domain, <b>%d</b> When the input key is an address of the form user@domain,
<b>%d</b> is replaced by the SQL quoted domain part of the <b>%d</b> is replaced by the SQL quoted domain part of the
address. Otherwise, the query is suppressed and returns address. Otherwise, the query is suppressed and returns
no results. no results.
<b>%[SUD]</b> The upper-case equivalents of the above expansions behave <b>%[SUD]</b> The upper-case equivalents of the above expansions behave
in the <b>query</b> parameter identically to their lower-case in the <b>query</b> parameter identically to their lower-case
counter-parts. With the <b>result_format</b> parameter (see counter-parts. With the <b>result_format</b> parameter (see
below), they expand the input key rather than the result below), they expand the input key rather than the result
value. value.
The above %S, %U and %D expansions are available with The above %S, %U and %D expansions are available with
Postfix 2.2 and later Postfix 2.2 and later
<b>%[1-9]</b> The patterns %1, %2, ... %9 are replaced by the corre- <b>%[1-9]</b> The patterns %1, %2, ... %9 are replaced by the corre-
sponding most significant component of the input key's sponding most significant component of the input key's
domain. If the input key is <i>user@mail.example.com</i>, then domain. If the input key is <i>user@mail.example.com</i>, then
%1 is <b>com</b>, %2 is <b>example</b> and %3 is <b>mail</b>. If the input key %1 is <b>com</b>, %2 is <b>example</b> and %3 is <b>mail</b>. If the input key
is unqualified or does not have enough domain components is unqualified or does not have enough domain components
to satisfy all the specified patterns, the query is sup- to satisfy all the specified patterns, the query is sup-
pressed and returns no results. pressed and returns no results.
The above %1, ... %9 expansions are available with Post- The above %1, ... %9 expansions are available with Post-
fix 2.2 and later fix 2.2 and later
The <b>domain</b> parameter described below limits the input keys to The <b>domain</b> parameter described below limits the input keys to
addresses in matching domains. When the <b>domain</b> parameter is addresses in matching domains. When the <b>domain</b> parameter is
non-empty, SQL queries for unqualified addresses or addresses in non-empty, SQL queries for unqualified addresses or addresses in
non-matching domains are suppressed and return no results. non-matching domains are suppressed and return no results.
The precedence of this parameter has changed with Postfix 2.2, The precedence of this parameter has changed with Postfix 2.2,
in prior releases the precedence was, from highest to lowest, in prior releases the precedence was, from highest to lowest,
<b>select_function</b>, <b>query</b>, <b>select_field</b>, ... <b>select_function</b>, <b>query</b>, <b>select_field</b>, ...
With Postfix 2.2 the <b>query</b> parameter has highest precedence, see With Postfix 2.2 the <b>query</b> parameter has highest precedence, see
@ -171,42 +180,42 @@ PGSQL_TABLE(5) PGSQL_TABLE(5)
<b>result_format (default: %s</b>) <b>result_format (default: %s</b>)
Format template applied to result attributes. Most commonly used Format template applied to result attributes. Most commonly used
to append (or prepend) text to the result. This parameter sup- to append (or prepend) text to the result. This parameter sup-
ports the following '%' expansions: ports the following '%' expansions:
<b>%%</b> This is replaced by a literal '%' character. <b>%%</b> This is replaced by a literal '%' character.
<b>%s</b> This is replaced by the value of the result attribute. <b>%s</b> This is replaced by the value of the result attribute.
When result is empty it is skipped. When result is empty it is skipped.
<b>%u</b> When the result attribute value is an address of the form <b>%u</b> When the result attribute value is an address of the form
user@domain, <b>%u</b> is replaced by the local part of the user@domain, <b>%u</b> is replaced by the local part of the
address. When the result has an empty localpart it is address. When the result has an empty localpart it is
skipped. skipped.
<b>%d</b> When a result attribute value is an address of the form <b>%d</b> When a result attribute value is an address of the form
user@domain, <b>%d</b> is replaced by the domain part of the user@domain, <b>%d</b> is replaced by the domain part of the
attribute value. When the result is unqualified it is attribute value. When the result is unqualified it is
skipped. skipped.
<b>%[SUD1-9]</b> <b>%[SUD1-9]</b>
The upper-case and decimal digit expansions interpolate The upper-case and decimal digit expansions interpolate
the parts of the input key rather than the result. Their the parts of the input key rather than the result. Their
behavior is identical to that described with <b>query</b>, and behavior is identical to that described with <b>query</b>, and
in fact because the input key is known in advance, in fact because the input key is known in advance,
queries whose key does not contain all the information queries whose key does not contain all the information
specified in the result template are suppressed and specified in the result template are suppressed and
return no results. return no results.
For example, using "result_format = <a href="smtp.8.html">smtp</a>:[%s]" allows one to use For example, using "result_format = <a href="smtp.8.html">smtp</a>:[%s]" allows one to use
a mailHost attribute as the basis of a <a href="transport.5.html">transport(5)</a> table. After a mailHost attribute as the basis of a <a href="transport.5.html">transport(5)</a> table. After
applying the result format, multiple values are concatenated as applying the result format, multiple values are concatenated as
comma separated strings. The expansion_limit and parameter comma separated strings. The expansion_limit and parameter
explained below allows one to restrict the number of values in explained below allows one to restrict the number of values in
the result, which is especially useful for maps that must return the result, which is especially useful for maps that must return
at most one value. at most one value.
The default value <b>%s</b> specifies that each result value should be The default value <b>%s</b> specifies that each result value should be
used as is. used as is.
This parameter is available with Postfix 2.2 and later. This parameter is available with Postfix 2.2 and later.
@ -214,15 +223,15 @@ PGSQL_TABLE(5) PGSQL_TABLE(5)
NOTE: DO NOT put quotes around the result format! NOTE: DO NOT put quotes around the result format!
<b>domain (default: no domain list)</b> <b>domain (default: no domain list)</b>
This is a list of domain names, paths to files, or "<a href="DATABASE_README.html">type:table</a>" This is a list of domain names, paths to files, or "<a href="DATABASE_README.html">type:table</a>"
databases. When specified, only fully qualified search keys with databases. When specified, only fully qualified search keys with
a *non-empty* localpart and a matching domain are eligible for a *non-empty* localpart and a matching domain are eligible for
lookup: 'user' lookups, bare domain lookups and "@domain" lookup: 'user' lookups, bare domain lookups and "@domain"
lookups are not performed. This can significantly reduce the lookups are not performed. This can significantly reduce the
query load on the PostgreSQL server. query load on the PostgreSQL server.
domain = postfix.org, <a href="DATABASE_README.html#types">hash</a>:/etc/postfix/searchdomains domain = postfix.org, <a href="DATABASE_README.html#types">hash</a>:/etc/postfix/searchdomains
It is best not to use SQL to store the domains eligible for SQL It is best not to use SQL to store the domains eligible for SQL
lookups. lookups.
This parameter is available with Postfix 2.2 and later. This parameter is available with Postfix 2.2 and later.
@ -231,28 +240,28 @@ PGSQL_TABLE(5) PGSQL_TABLE(5)
the input keys are always unqualified. the input keys are always unqualified.
<b>expansion_limit (default: 0)</b> <b>expansion_limit (default: 0)</b>
A limit on the total number of result elements returned (as a A limit on the total number of result elements returned (as a
comma separated list) by a lookup against the map. A setting of comma separated list) by a lookup against the map. A setting of
zero disables the limit. Lookups fail with a temporary error if zero disables the limit. Lookups fail with a temporary error if
the limit is exceeded. Setting the limit to 1 ensures that the limit is exceeded. Setting the limit to 1 ensures that
lookups do not return multiple values. lookups do not return multiple values.
<b>OBSOLETE MAIN.CF PARAMETERS</b> <b>OBSOLETE MAIN.CF PARAMETERS</b>
For compatibility with other Postfix lookup tables, PostgreSQL parame- For compatibility with other Postfix lookup tables, PostgreSQL parame-
ters can also be defined in <a href="postconf.5.html">main.cf</a>. In order to do that, specify as ters can also be defined in <a href="postconf.5.html">main.cf</a>. In order to do that, specify as
PostgreSQL source a name that doesn't begin with a slash or a dot. The PostgreSQL source a name that doesn't begin with a slash or a dot. The
PostgreSQL parameters will then be accessible as the name you've given PostgreSQL parameters will then be accessible as the name you've given
the source in its definition, an underscore, and the name of the param- the source in its definition, an underscore, and the name of the param-
eter. For example, if the map is specified as "<a href="pgsql_table.5.html">pgsql</a>:<i>pgsqlname</i>", the eter. For example, if the map is specified as "<a href="pgsql_table.5.html">pgsql</a>:<i>pgsqlname</i>", the
parameter "hosts" would be defined in <a href="postconf.5.html">main.cf</a> as "<i>pgsqlname</i>_hosts". parameter "hosts" would be defined in <a href="postconf.5.html">main.cf</a> as "<i>pgsqlname</i>_hosts".
Note: with this form, the passwords for the PostgreSQL sources are Note: with this form, the passwords for the PostgreSQL sources are
written in <a href="postconf.5.html">main.cf</a>, which is normally world-readable. Support for this written in <a href="postconf.5.html">main.cf</a>, which is normally world-readable. Support for this
form will be removed in a future Postfix version. form will be removed in a future Postfix version.
<b><a name="obsolete_query_interfaces">OBSOLETE QUERY INTERFACES</a></b> <b><a name="obsolete_query_interfaces">OBSOLETE QUERY INTERFACES</a></b>
This section describes query interfaces that are deprecated as of Post- This section describes query interfaces that are deprecated as of Post-
fix 2.2. Please migrate to the new <b>query</b> interface as the old inter- fix 2.2. Please migrate to the new <b>query</b> interface as the old inter-
faces are slated to be phased out. faces are slated to be phased out.
<b>select_function</b> <b>select_function</b>
@ -262,14 +271,14 @@ PGSQL_TABLE(5) PGSQL_TABLE(5)
This is equivalent to: This is equivalent to:
query = SELECT my_lookup_user_alias('%s') query = SELECT my_lookup_user_alias('%s')
This parameter overrides the legacy table-related fields This parameter overrides the legacy table-related fields
(described below). With Postfix versions prior to 2.2, it also (described below). With Postfix versions prior to 2.2, it also
overrides the <b>query</b> parameter. Starting with Postfix 2.2, the overrides the <b>query</b> parameter. Starting with Postfix 2.2, the
<b>query</b> parameter has highest precedence, and the <b>select_function</b> <b>query</b> parameter has highest precedence, and the <b>select_function</b>
parameter is deprecated. parameter is deprecated.
The following parameters (with lower precedence than the <b>select_func-</b> The following parameters (with lower precedence than the <b>select_func-</b>
<b>tion</b> interface described above) can be used to build the SQL select <b>tion</b> interface described above) can be used to build the SQL select
statement as follows: statement as follows:
SELECT [<b>select_field</b>] SELECT [<b>select_field</b>]
@ -277,13 +286,13 @@ PGSQL_TABLE(5) PGSQL_TABLE(5)
WHERE [<b>where_field</b>] = '%s' WHERE [<b>where_field</b>] = '%s'
[<b>additional_conditions</b>] [<b>additional_conditions</b>]
The specifier %s is replaced with each lookup by the lookup key and is The specifier %s is replaced with each lookup by the lookup key and is
escaped so if it contains single quotes or other odd characters, it escaped so if it contains single quotes or other odd characters, it
will not cause a parse error, or worse, a security problem. will not cause a parse error, or worse, a security problem.
Starting with Postfix 2.2, this interface is obsoleted by the more gen- Starting with Postfix 2.2, this interface is obsoleted by the more gen-
eral <b>query</b> interface described above. If higher precedence the <b>query</b> or eral <b>query</b> interface described above. If higher precedence the <b>query</b> or
<b>select_function</b> parameters described above are defined, the parameters <b>select_function</b> parameters described above are defined, the parameters
described here are ignored. described here are ignored.
<b>select_field</b> <b>select_field</b>

View File

@ -77,11 +77,11 @@ localhost over TCP you have to specify
hosts = 127.0.0.1 hosts = 127.0.0.1
.fi .fi
NOTE: if "hosts" specifies one load balancer and no alternative NOTE: if the \fBhosts\fR setting specifies one load balancer
servers, specify the load balancer multiple times in the and no alternative servers, specify the load balancer multiple
"hosts" line. Without the duplicate info, the Postfix MySQL times. Without the duplicate info, the Postfix MySQL client
client would not reconnect immediately to the same load would not reconnect immediately to the same load balancer after
balancer after a MySQL server failure. a request failure.
.IP "\fBuser\fR" .IP "\fBuser\fR"
.IP "\fBpassword\fR" .IP "\fBpassword\fR"
The user name and password to log into the mysql server. The user name and password to log into the mysql server.
@ -112,6 +112,12 @@ This feature is available in Postfix 3.9 and later.
The number of seconds that a database connection will be The number of seconds that a database connection will be
skipped after an error. skipped after an error.
NOTE: if the \fBhosts\fR setting specifies one load balancer
and no alternative servers, specify the load balancer multiple
times. Without the duplicate info, the Postfix MySQL client
would not reconnect immediately to the same load balancer after
a request failure.
This feature is available in Postfix 3.9 and later. This feature is available in Postfix 3.9 and later.
.IP "\fBquery\fR" .IP "\fBquery\fR"
The SQL query template used to search the database, where \fB%s\fR The SQL query template used to search the database, where \fB%s\fR

View File

@ -77,16 +77,15 @@ automatically closed after being idle for about 1 minute,
and are re\-opened as necessary. See \fBidle_interval\fR and are re\-opened as necessary. See \fBidle_interval\fR
for details. for details.
NOTE: if \fBhosts\fR specifies a PostgreSQL connection URI, NOTE: if the \fBhosts\fR setting specifies a PostgreSQL connection
the PostgreSQL client library will ignore the \fBdbname\fR URI, the Postfix PostgreSQL client will ignore the \fBdbname\fR,
setting for that connection. \fBuser\fR, and \fBpassword\fR settings for that connection.
NOTE: if \fBhosts\fR specifies one load balancer and no NOTE: if the \fBhosts\fR setting specifies one load balancer
alternative and no alternative servers, specify the load balancer multiple
servers, specify the load balancer multiple times in the times. Without the duplicate info, the Postfix PostgreSQL client
\fBhosts\fR line. Without the duplicate info, the Postfix would not reconnect immediately to the same load balancer after
PostgreSQL client would not reconnect immediately to the a request failure.
same load balancer after a PostgreSQL server failure.
.IP "\fBuser\fR" .IP "\fBuser\fR"
.IP "\fBpassword\fR" .IP "\fBpassword\fR"
The user name and password to log into the pgsql server. The user name and password to log into the pgsql server.
@ -95,6 +94,9 @@ Example:
user = someone user = someone
password = some_password password = some_password
.fi .fi
.sp
The \fBuser\fR and \fBpassword\fR settings are ignored for
\fBhosts\fR connections that are specified as an URI.
.IP "\fBdbname\fR" .IP "\fBdbname\fR"
The database name on the servers. Example: The database name on the servers. Example:
.nf .nf
@ -127,6 +129,12 @@ This feature is available in Postfix 3.9 and later.
The number of seconds that a database connection will be The number of seconds that a database connection will be
skipped after an error. skipped after an error.
NOTE: if the \fBhosts\fR setting specifies one load balancer
and no alternative servers, specify the load balancer multiple
times. Without the duplicate info, the Postfix PostgreSQL client
would not reconnect immediately to the same load balancer after
a request failure.
This feature is available in Postfix 3.9 and later. This feature is available in Postfix 3.9 and later.
.IP "\fBquery\fR" .IP "\fBquery\fR"
The SQL query template used to search the database, where \fB%s\fR The SQL query template used to search the database, where \fB%s\fR

View File

@ -67,11 +67,11 @@
# hosts = 127.0.0.1 # hosts = 127.0.0.1
# .fi # .fi
# #
# NOTE: if "hosts" specifies one load balancer and no alternative # NOTE: if the \fBhosts\fR setting specifies one load balancer
# servers, specify the load balancer multiple times in the # and no alternative servers, specify the load balancer multiple
# "hosts" line. Without the duplicate info, the Postfix MySQL # times. Without the duplicate info, the Postfix MySQL client
# client would not reconnect immediately to the same load # would not reconnect immediately to the same load balancer after
# balancer after a MySQL server failure. # a request failure.
# .IP "\fBuser\fR" # .IP "\fBuser\fR"
# .IP "\fBpassword\fR" # .IP "\fBpassword\fR"
# The user name and password to log into the mysql server. # The user name and password to log into the mysql server.
@ -102,6 +102,12 @@
# The number of seconds that a database connection will be # The number of seconds that a database connection will be
# skipped after an error. # skipped after an error.
# #
# NOTE: if the \fBhosts\fR setting specifies one load balancer
# and no alternative servers, specify the load balancer multiple
# times. Without the duplicate info, the Postfix MySQL client
# would not reconnect immediately to the same load balancer after
# a request failure.
#
# This feature is available in Postfix 3.9 and later. # This feature is available in Postfix 3.9 and later.
# .IP "\fBquery\fR" # .IP "\fBquery\fR"
# The SQL query template used to search the database, where \fB%s\fR # The SQL query template used to search the database, where \fB%s\fR

View File

@ -67,16 +67,15 @@
# and are re-opened as necessary. See \fBidle_interval\fR # and are re-opened as necessary. See \fBidle_interval\fR
# for details. # for details.
# #
# NOTE: if \fBhosts\fR specifies a PostgreSQL connection URI, # NOTE: if the \fBhosts\fR setting specifies a PostgreSQL connection
# the PostgreSQL client library will ignore the \fBdbname\fR # URI, the Postfix PostgreSQL client will ignore the \fBdbname\fR,
# setting for that connection. # \fBuser\fR, and \fBpassword\fR settings for that connection.
# #
# NOTE: if \fBhosts\fR specifies one load balancer and no # NOTE: if the \fBhosts\fR setting specifies one load balancer
# alternative # and no alternative servers, specify the load balancer multiple
# servers, specify the load balancer multiple times in the # times. Without the duplicate info, the Postfix PostgreSQL client
# \fBhosts\fR line. Without the duplicate info, the Postfix # would not reconnect immediately to the same load balancer after
# PostgreSQL client would not reconnect immediately to the # a request failure.
# same load balancer after a PostgreSQL server failure.
# .IP "\fBuser\fR" # .IP "\fBuser\fR"
# .IP "\fBpassword\fR" # .IP "\fBpassword\fR"
# The user name and password to log into the pgsql server. # The user name and password to log into the pgsql server.
@ -85,6 +84,9 @@
# user = someone # user = someone
# password = some_password # password = some_password
# .fi # .fi
# .sp
# The \fBuser\fR and \fBpassword\fR settings are ignored for
# \fBhosts\fR connections that are specified as an URI.
# .IP "\fBdbname\fR" # .IP "\fBdbname\fR"
# The database name on the servers. Example: # The database name on the servers. Example:
# .nf # .nf
@ -117,6 +119,12 @@
# The number of seconds that a database connection will be # The number of seconds that a database connection will be
# skipped after an error. # skipped after an error.
# #
# NOTE: if the \fBhosts\fR setting specifies one load balancer
# and no alternative servers, specify the load balancer multiple
# times. Without the duplicate info, the Postfix PostgreSQL client
# would not reconnect immediately to the same load balancer after
# a request failure.
#
# This feature is available in Postfix 3.9 and later. # This feature is available in Postfix 3.9 and later.
# .IP "\fBquery\fR" # .IP "\fBquery\fR"
# The SQL query template used to search the database, where \fB%s\fR # The SQL query template used to search the database, where \fB%s\fR

View File

@ -1653,3 +1653,4 @@ ipaddr
STS STS
hs hs
ccformat ccformat
xxsql

View File

@ -20,7 +20,7 @@
* 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 "20241025" #define MAIL_RELEASE_DATE "20241027"
#define MAIL_VERSION_NUMBER "3.10" #define MAIL_VERSION_NUMBER "3.10"
#ifdef SNAPSHOT #ifdef SNAPSHOT

View File

@ -297,6 +297,7 @@ static int xsasl_dovecot_server_connect(XSASL_DOVECOT_SERVER_IMPL *xp)
(unsigned int) getpid()); (unsigned int) getpid());
if (vstream_fflush(sasl_stream) == VSTREAM_EOF) { if (vstream_fflush(sasl_stream) == VSTREAM_EOF) {
msg_warn("SASL: Couldn't send handshake: %m"); msg_warn("SASL: Couldn't send handshake: %m");
(void) vstream_fclose(sasl_stream);
return (-1); return (-1);
} }
success = 0; success = 0;