From: Wietse Z Venema
-Optional lookup tables with aliases that apply only to local(8) -recipients; this is unlike virtual_alias_maps that apply to all -recipients: local(8), virtual, and remote. -The table format and lookups are documented in aliases(5). For an -overview of Postfix address manipulations see the ADDRESS_REWRITING_README -document.
+Optional lookup tables that are searched only with an email address +localpart (no domain) and that apply only to local(8) recipients; +this is unlike virtual_alias_maps that are often searched with a +full email address (including domain) and that apply to all recipients: +local(8), virtual, and remote. +The alias_maps table format and lookups are documented in aliases(5). +For an overview of Postfix address manipulations see the +ADDRESS_REWRITING_README document.Specify zero or more "type:name" lookup tables, separated by @@ -10330,6 +10332,12 @@ are supported in Postfix 3.5 and later. Each destination is tried in the specified order.
+If an SMTP destination is a load balancer, and there are no +alternative destinations, specify the load balancer multiple times. +Without the duplicate info, the Postfix SMTP client would not +reconnect immediately to the same load balancer after a remote SMTP +server failure.
+If you're connected via UUCP, see the UUCP_README file for useful information. @@ -22239,10 +22247,12 @@ This feature is available in Postfix 2.1 and later. (default: $virtual_maps)
-Optional lookup tables with aliases that apply to all recipients: -local(8), virtual, and remote; this is unlike alias_maps that apply +Optional lookup tables that are often searched with a full email +address (including domain) and that apply to all recipients: local(8), +virtual, and remote; this is unlike alias_maps that are only searched +with an email address localpart (no domain) and that apply only to local(8) recipients. -The table format and lookups +The virtual_alias_maps table format and lookups are documented in virtual(5). For an overview of Postfix address manipulations see the ADDRESS_REWRITING_README document.
diff --git a/postfix/html/virtual.5.html b/postfix/html/virtual.5.html index c1c6eceaf..798e644a7 100644 --- a/postfix/html/virtual.5.html +++ b/postfix/html/virtual.5.html @@ -20,10 +20,12 @@ VIRTUAL(5) VIRTUAL(5) DESCRIPTION The optional virtual(5) alias table (virtual_alias_maps) applies to all recipients: local(8), virtual, and remote. This feature is implemented - in the Postfix cleanup(8) daemon before mail is queued. + in the Postfix cleanup(8) daemon before mail is queued. These tables + are often queried with a full email address (including domain). - This is unlike the aliases(5) table (alias_maps) which applies only to - local(8) recipients. + This is unlike the aliases(5) table (alias_maps) which applies only to + local(8) recipients. That table is only queried with the email address + localpart (no domain). Virtual aliasing is recursive; to terminate recursion for a specific address, alias that address to itself. @@ -231,9 +233,11 @@ VIRTUAL(5) VIRTUAL(5) Use the "postfix reload" command after a configuration change. virtual_alias_maps ($virtual_maps) - Optional lookup tables with aliases that apply to all recipi- - ents: local(8), virtual, and remote; this is unlike alias_maps - that apply only to local(8) recipients. + Optional lookup tables that are often searched with a full email + address (including domain) and that apply to all recipients: + local(8), virtual, and remote; this is unlike alias_maps that + are only searched with an email address localpart (no domain) + and that apply only to local(8) recipients. virtual_alias_domains ($virtual_alias_maps) Postfix is the final destination for the specified list of vir- diff --git a/postfix/man/man5/aliases.5 b/postfix/man/man5/aliases.5 index ed6a10fd1..2a18e579e 100644 --- a/postfix/man/man5/aliases.5 +++ b/postfix/man/man5/aliases.5 @@ -10,16 +10,22 @@ Postfix local alias database format .nf .fi \fBnewaliases\fR + +\fBpostalias \-q \fIname\fB [\fIfile\-type\fB]:[\fIfile\-name\fB]\fR .SH DESCRIPTION .ad .fi The optional \fBaliases\fR(5) table (alias_maps) redirects mail for local recipients. The redirections are processed -by the Postfix \fBlocal\fR(8) delivery agent. +by the Postfix \fBlocal\fR(8) delivery agent. This table +is always searched with an email address localpart (no +domain portion). This is unlike \fBvirtual\fR(5) aliasing (virtual_alias_maps) which applies to all recipients: local(8), virtual, and remote, -and which is implemented by the \fBcleanup\fR(8) daemon. +and which is implemented by the \fBcleanup\fR(8) daemon. That +table is often searched with a full email address (including +domain). Normally, the \fBaliases\fR(5) table is specified as a text file that serves as input to the \fBpostalias\fR(1) command. The @@ -95,7 +101,7 @@ defines the expected exit status codes. For example, use .IP \fB:include:\fI/file/name\fR Mail is sent to the destinations listed in the named file. Lines in \fB:include:\fR files have the same syntax -as the right\-hand side of alias entries. +as the right\-hand side of \fBaliases\fR(5) entries. .sp A destination can be any destination that is described in this manual page. However, delivery to "|\fIcommand\fR" and diff --git a/postfix/man/man5/ldap_table.5 b/postfix/man/man5/ldap_table.5 index 660f2c581..7a8dfc19e 100644 --- a/postfix/man/man5/ldap_table.5 +++ b/postfix/man/man5/ldap_table.5 @@ -97,6 +97,12 @@ be possible to give each server in the list a different port server_host = ldap.example.com:1444 .fi +NOTE: if "server_host" specifies one load balancer and no +alternative servers, specify the load balancer multiple +times in the "server_host" line. Without the duplicate info, +the Postfix LDAP client would not reconnect immediately to +the same load balancer after an LDAP server failure. + With OpenLDAP, a (list of) LDAP URLs can be used to specify both the hostname(s) and the port(s): diff --git a/postfix/man/man5/mysql_table.5 b/postfix/man/man5/mysql_table.5 index aebb949e2..d6e64e231 100644 --- a/postfix/man/man5/mysql_table.5 +++ b/postfix/man/man5/mysql_table.5 @@ -76,6 +76,12 @@ localhost over TCP you have to specify .nf hosts = 127.0.0.1 .fi + +NOTE: if "hosts" specifies one load balancer and no alternative +servers, specify the load balancer multiple times in the +"hosts" line. Without the duplicate info, the Postfix MySQL +client would not reconnect immediately to the same load +balancer after a MySQL server failure. .IP "\fBuser\fR" .IP "\fBpassword\fR" The user name and password to log into the mysql server. diff --git a/postfix/man/man5/pgsql_table.5 b/postfix/man/man5/pgsql_table.5 index 869a63540..4b4ecb12e 100644 --- a/postfix/man/man5/pgsql_table.5 +++ b/postfix/man/man5/pgsql_table.5 @@ -71,6 +71,12 @@ Examples: The hosts are tried in random order. The connections are automatically closed after being idle for about 1 minute, and are re\-opened as necessary. + +NOTE: if "hosts" specifies one load balancer and no alternative +servers, specify the load balancer multiple times in the +"hosts" line. Without the duplicate info, the Postfix +PostgreSQL client would not reconnect immediately to the +same load balancer after a PostgreSQL server failure. .IP "\fBuser\fR" .IP "\fBpassword\fR" The user name and password to log into the pgsql server. diff --git a/postfix/man/man5/postconf.5 b/postfix/man/man5/postconf.5 index 38821b16b..67314334f 100644 --- a/postfix/man/man5/postconf.5 +++ b/postfix/man/man5/postconf.5 @@ -358,12 +358,14 @@ alias_database = hash:/etc/mail/aliases .ad .ft R .SH alias_maps (default: see "postconf \-d" output) -Optional lookup tables with aliases that apply only to \fBlocal\fR(8) -recipients; this is unlike virtual_alias_maps that apply to all -recipients: \fBlocal\fR(8), virtual, and remote. -The table format and lookups are documented in \fBaliases\fR(5). For an -overview of Postfix address manipulations see the ADDRESS_REWRITING_README -document. +Optional lookup tables that are searched only with an email address +localpart (no domain) and that apply only to \fBlocal\fR(8) recipients; +this is unlike virtual_alias_maps that are often searched with a +full email address (including domain) and that apply to all recipients: +\fBlocal\fR(8), virtual, and remote. +The alias_maps table format and lookups are documented in \fBaliases\fR(5). +For an overview of Postfix address manipulations see the +ADDRESS_REWRITING_README document. .PP Specify zero or more "type:name" lookup tables, separated by whitespace or comma. Tables will be searched in the specified order @@ -6547,6 +6549,12 @@ The form [hostname] turns off MX or SRV lookups. Multiple destinations are supported in Postfix 3.5 and later. Each destination is tried in the specified order. .PP +If an SMTP destination is a load balancer, and there are no +alternative destinations, specify the load balancer multiple times. +Without the duplicate info, the Postfix SMTP client would not +reconnect immediately to the same load balancer after a remote SMTP +server failure. +.PP If you're connected via UUCP, see the UUCP_README file for useful information. .PP @@ -15808,10 +15816,12 @@ from each original recipient. .PP This feature is available in Postfix 2.1 and later. .SH virtual_alias_maps (default: $virtual_maps) -Optional lookup tables with aliases that apply to all recipients: -\fBlocal\fR(8), virtual, and remote; this is unlike alias_maps that apply +Optional lookup tables that are often searched with a full email +address (including domain) and that apply to all recipients: \fBlocal\fR(8), +virtual, and remote; this is unlike alias_maps that are only searched +with an email address localpart (no domain) and that apply only to \fBlocal\fR(8) recipients. -The table format and lookups +The virtual_alias_maps table format and lookups are documented in \fBvirtual\fR(5). For an overview of Postfix address manipulations see the ADDRESS_REWRITING_README document. .PP diff --git a/postfix/man/man5/virtual.5 b/postfix/man/man5/virtual.5 index e03a50008..15f87d93a 100644 --- a/postfix/man/man5/virtual.5 +++ b/postfix/man/man5/virtual.5 @@ -20,9 +20,12 @@ The optional \fBvirtual\fR(5) alias table (virtual_alias_maps) applies to all recipients: local(8), virtual, and remote. This feature is implemented in the Postfix \fBcleanup\fR(8) daemon before mail is queued. +These tables are often queried with a full email address +(including domain). This is unlike the \fBaliases\fR(5) table (alias_maps) which -applies only to \fBlocal\fR(8) recipients. +applies only to \fBlocal\fR(8) recipients. That table is +only queried with the email address localpart (no domain). Virtual aliasing is recursive; to terminate recursion for a specific address, alias that address to itself. @@ -271,8 +274,10 @@ this topic. See the Postfix \fBmain.cf\fR file for syntax details and for default values. Use the "\fBpostfix reload\fR" command after a configuration change. .IP "\fBvirtual_alias_maps ($virtual_maps)\fR" -Optional lookup tables with aliases that apply to all recipients: -\fBlocal\fR(8), virtual, and remote; this is unlike alias_maps that apply +Optional lookup tables that are often searched with a full email +address (including domain) and that apply to all recipients: \fBlocal\fR(8), +virtual, and remote; this is unlike alias_maps that are only searched +with an email address localpart (no domain) and that apply only to \fBlocal\fR(8) recipients. .IP "\fBvirtual_alias_domains ($virtual_alias_maps)\fR" Postfix is the final destination for the specified list of virtual diff --git a/postfix/proto/BUILTIN_FILTER_README.html b/postfix/proto/BUILTIN_FILTER_README.html index 3d3471d71..8eaeaa030 100644 --- a/postfix/proto/BUILTIN_FILTER_README.html +++ b/postfix/proto/BUILTIN_FILTER_README.html @@ -377,7 +377,7 @@ service with header/body filtering turned off. -o receive_override_options=no_header_body_checks 127.0.0.1:smtp inet n - n - - smtpd -o receive_override_options=no_header_body_checks - pickup fifo n - n 60 1 pickup + pickup unix n - n 60 1 pickup -o receive_override_options=no_header_body_checks diff --git a/postfix/proto/STANDARD_CONFIGURATION_README.html b/postfix/proto/STANDARD_CONFIGURATION_README.html index 72f07b367..6c592479a 100644 --- a/postfix/proto/STANDARD_CONFIGURATION_README.html +++ b/postfix/proto/STANDARD_CONFIGURATION_README.html @@ -423,7 +423,7 @@ whenever you change the transport table. processing inbound and outbound mail on a multi-homed firewall. The inbound Postfix instance has an SMTP server listening on the external firewall interface, and the outbound Postfix instance has an SMTP server -listening on the internal interface. In such a configuration is it is +listening on the internal interface. In such a configuration it is tempting to configure $inet_interfaces in each instance with just the corresponding interface address. diff --git a/postfix/proto/aliases b/postfix/proto/aliases index f48a00b1e..696e76479 100644 --- a/postfix/proto/aliases +++ b/postfix/proto/aliases @@ -6,14 +6,20 @@ # SYNOPSIS # .fi # \fBnewaliases\fR +# +# \fBpostalias -q \fIname\fB [\fIfile-type\fB]:[\fIfile-name\fB]\fR # DESCRIPTION # The optional \fBaliases\fR(5) table (alias_maps) redirects # mail for local recipients. The redirections are processed -# by the Postfix \fBlocal\fR(8) delivery agent. +# by the Postfix \fBlocal\fR(8) delivery agent. This table +# is always searched with an email address localpart (no +# domain portion). # # This is unlike \fBvirtual\fR(5) aliasing (virtual_alias_maps) # which applies to all recipients: local(8), virtual, and remote, -# and which is implemented by the \fBcleanup\fR(8) daemon. +# and which is implemented by the \fBcleanup\fR(8) daemon. That +# table is often searched with a full email address (including +# domain). # # Normally, the \fBaliases\fR(5) table is specified as a text file # that serves as input to the \fBpostalias\fR(1) command. The @@ -89,7 +95,7 @@ # .IP \fB:include:\fI/file/name\fR # Mail is sent to the destinations listed in the named file. # Lines in \fB:include:\fR files have the same syntax -# as the right-hand side of alias entries. +# as the right-hand side of \fBaliases\fR(5) entries. # .sp # A destination can be any destination that is described in this # manual page. However, delivery to "|\fIcommand\fR" and diff --git a/postfix/proto/ldap_table b/postfix/proto/ldap_table index be4c014d0..fadf24a88 100644 --- a/postfix/proto/ldap_table +++ b/postfix/proto/ldap_table @@ -87,6 +87,12 @@ # server_host = ldap.example.com:1444 # .fi # +# NOTE: if "server_host" specifies one load balancer and no +# alternative servers, specify the load balancer multiple +# times in the "server_host" line. Without the duplicate info, +# the Postfix LDAP client would not reconnect immediately to +# the same load balancer after an LDAP server failure. +# # With OpenLDAP, a (list of) LDAP URLs can be used to specify both # the hostname(s) and the port(s): # diff --git a/postfix/proto/mysql_table b/postfix/proto/mysql_table index 31e626fb2..e68e0aea8 100644 --- a/postfix/proto/mysql_table +++ b/postfix/proto/mysql_table @@ -66,6 +66,12 @@ # .nf # hosts = 127.0.0.1 # .fi +# +# NOTE: if "hosts" specifies one load balancer and no alternative +# servers, specify the load balancer multiple times in the +# "hosts" line. Without the duplicate info, the Postfix MySQL +# client would not reconnect immediately to the same load +# balancer after a MySQL server failure. # .IP "\fBuser\fR" # .IP "\fBpassword\fR" # The user name and password to log into the mysql server. diff --git a/postfix/proto/pgsql_table b/postfix/proto/pgsql_table index b4364fb70..31f6661e1 100644 --- a/postfix/proto/pgsql_table +++ b/postfix/proto/pgsql_table @@ -61,6 +61,12 @@ # The hosts are tried in random order. The connections are # automatically closed after being idle for about 1 minute, # and are re-opened as necessary. +# +# NOTE: if "hosts" specifies one load balancer and no alternative +# servers, specify the load balancer multiple times in the +# "hosts" line. Without the duplicate info, the Postfix +# PostgreSQL client would not reconnect immediately to the +# same load balancer after a PostgreSQL server failure. # .IP "\fBuser\fR" # .IP "\fBpassword\fR" # The user name and password to log into the pgsql server. diff --git a/postfix/proto/postconf.proto b/postfix/proto/postconf.proto index a434e1853..e941e7c0b 100644 --- a/postfix/proto/postconf.proto +++ b/postfix/proto/postconf.proto @@ -489,12 +489,14 @@ alias_database = hash:/etc/mail/aliases %PARAM alias_maps see "postconf -d" output-Optional lookup tables with aliases that apply only to local(8) -recipients; this is unlike virtual_alias_maps that apply to all -recipients: local(8), virtual, and remote. -The table format and lookups are documented in aliases(5). For an -overview of Postfix address manipulations see the ADDRESS_REWRITING_README -document.
+Optional lookup tables that are searched only with an email address +localpart (no domain) and that apply only to local(8) recipients; +this is unlike virtual_alias_maps that are often searched with a +full email address (including domain) and that apply to all recipients: +local(8), virtual, and remote. +The alias_maps table format and lookups are documented in aliases(5). +For an overview of Postfix address manipulations see the +ADDRESS_REWRITING_README document.Specify zero or more "type:name" lookup tables, separated by @@ -3938,6 +3940,12 @@ are supported in Postfix 3.5 and later. Each destination is tried in the specified order.
+If an SMTP destination is a load balancer, and there are no +alternative destinations, specify the load balancer multiple times. +Without the duplicate info, the Postfix SMTP client would not +reconnect immediately to the same load balancer after a remote SMTP +server failure.
+If you're connected via UUCP, see the UUCP_README file for useful information. @@ -7311,10 +7319,12 @@ This feature is available in Postfix 2.1 and later. %PARAM virtual_alias_maps $virtual_maps
-Optional lookup tables with aliases that apply to all recipients: -local(8), virtual, and remote; this is unlike alias_maps that apply +Optional lookup tables that are often searched with a full email +address (including domain) and that apply to all recipients: local(8), +virtual, and remote; this is unlike alias_maps that are only searched +with an email address localpart (no domain) and that apply only to local(8) recipients. -The table format and lookups +The virtual_alias_maps table format and lookups are documented in virtual(5). For an overview of Postfix address manipulations see the ADDRESS_REWRITING_README document.
diff --git a/postfix/proto/stop.double-history b/postfix/proto/stop.double-history index 55d625fbc..c09be05de 100644 --- a/postfix/proto/stop.double-history +++ b/postfix/proto/stop.double-history @@ -121,3 +121,5 @@ proto proto aliases proto virtual proto ADDRESS_REWRITING_README html systems 6 bytes for LP64 File dns dns h xxfi_unknown return values File smtpd smtpd c or unimplemented commands File smtpd smtpd c +proto proto mysql_table proto pgsql_table proto ldap_table + File pickup pickup c diff --git a/postfix/proto/stop.spell-history b/postfix/proto/stop.spell-history index 5bfdc4ab3..87de3f6f1 100644 --- a/postfix/proto/stop.spell-history +++ b/postfix/proto/stop.spell-history @@ -14,7 +14,6 @@ Velasco WISHLIST Yasuhiro deduplicates -hmtl libs segfaulting srctoman @@ -77,3 +76,8 @@ Sakaguchi Toshifumi mxonly shar +bugzilla +cgi +mozilla +Dilyan +Palauzov diff --git a/postfix/proto/virtual b/postfix/proto/virtual index e1935f00b..0affd82f1 100644 --- a/postfix/proto/virtual +++ b/postfix/proto/virtual @@ -14,9 +14,12 @@ # applies to all recipients: local(8), virtual, and remote. # This feature is implemented # in the Postfix \fBcleanup\fR(8) daemon before mail is queued. +# These tables are often queried with a full email address +# (including domain). # # This is unlike the \fBaliases\fR(5) table (alias_maps) which -# applies only to \fBlocal\fR(8) recipients. +# applies only to \fBlocal\fR(8) recipients. That table is +# only queried with the email address localpart (no domain). # # Virtual aliasing is recursive; to terminate recursion for # a specific address, alias that address to itself. @@ -245,8 +248,10 @@ # and for default values. Use the "\fBpostfix reload\fR" command after # a configuration change. # .IP "\fBvirtual_alias_maps ($virtual_maps)\fR" -# Optional lookup tables with aliases that apply to all recipients: -# \fBlocal\fR(8), virtual, and remote; this is unlike alias_maps that apply +# Optional lookup tables that are often searched with a full email +# address (including domain) and that apply to all recipients: \fBlocal\fR(8), +# virtual, and remote; this is unlike alias_maps that are only searched +# with an email address localpart (no domain) and that apply # only to \fBlocal\fR(8) recipients. # .IP "\fBvirtual_alias_domains ($virtual_alias_maps)\fR" # Postfix is the final destination for the specified list of virtual diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h index 2461069bb..feded4ed4 100644 --- a/postfix/src/global/mail_version.h +++ b/postfix/src/global/mail_version.h @@ -20,7 +20,7 @@ * Patches change both the patchlevel and the release date. Snapshots have no * patchlevel; they change the release date only. */ -#define MAIL_RELEASE_DATE "20240310" +#define MAIL_RELEASE_DATE "20240422" #define MAIL_VERSION_NUMBER "3.10" #ifdef SNAPSHOT diff --git a/postfix/src/pickup/pickup.c b/postfix/src/pickup/pickup.c index 4a77a476e..384a83eb0 100644 --- a/postfix/src/pickup/pickup.c +++ b/postfix/src/pickup/pickup.c @@ -334,12 +334,13 @@ static int pickup_copy(VSTREAM *qfile, VSTREAM *cleanup, #define HOUR_SECONDS 3600 if (info->st.st_mtime > now + 2 * HOUR_SECONDS) { - msg_warn("%s: message dated %ld seconds into the future", - info->id, (long) (info->st.st_mtime - now)); + msg_warn("%s: message %s dated %ld seconds into the future", + info->id, info->path, (long) (info->st.st_mtime - now)); info->st.st_mtime = now; } else if (info->st.st_mtime < now - DAY_SECONDS) { - msg_warn("%s: message has been queued for %d days", - info->id, (int) ((now - info->st.st_mtime) / DAY_SECONDS)); + msg_warn("%s: message %s has been queued for %d days", + info->id, info->path, + (int) ((now - info->st.st_mtime) / DAY_SECONDS)); } /*