diff --git a/postfix/HISTORY b/postfix/HISTORY index 6411c45db..959e0fa34 100644 --- a/postfix/HISTORY +++ b/postfix/HISTORY @@ -27945,9 +27945,9 @@ Apologies for any names omitted. 20240229 - Clenup: moved the new DNS_RR.flags structure member to the - location of a "padding" hole (two bytes for ILP32 systems, - 6 bytes for LP64). File: dns/dns.h. + Compatibility: moved the new DNS_RR.flags structure member + to the location of a "padding" hole (two bytes for ILP32 + systems, 6 bytes for LP64). File: dns/dns.h. Deprecation: removed permit_naked_ip_address, reject_maps_rbl, and check_relay_domains. These have been logging deprecation @@ -27956,3 +27956,20 @@ Apologies for any names omitted. Files: smtpd/smtpd_check.c, smtpd/smtpd_check_backup.ref, smtpd/smtpd_exp.ref, smtpd/smtpd_deprecated.in, smtpd/smtpd_deprecated.ref. + +20240302 + + Cleanup: fixed inconsistent formatting of deprecation warning + messages. Files: postconf/postconf_unused.c, postconf/test76.ref, + smtpd/smtpd_check. + + Documentation: DEPRECATION_README suggests replacements for + features that will be removed or than have been removed. + Files: proto/DEPRECATION_README.html, conf/postfix-files, + html/index.html, proto/Makefile.in. + +20240305 + + Documentation: in the master.cf documentation, added text + for "quoting" a command-line argument that starts with "{". + File: proto/master. diff --git a/postfix/README_FILES/AAAREADME b/postfix/README_FILES/AAAREADME index 6bef06dec..94d552ece 100644 --- a/postfix/README_FILES/AAAREADME +++ b/postfix/README_FILES/AAAREADME @@ -15,6 +15,7 @@ GGeenneerraall ccoonnffiigguurraattiioonn * SMTPUTF8_README: SMTPUTF8 Support * MAILLOG_README: Postfix logging to file or stdout * COMPATIBILITY_README: Backwards-Compatibility Safety Net + * DEPRECATION_README: Deprecated features and alternatives * INSTALL: Installation from source code PPrroobblleemm ssoollvviinngg diff --git a/postfix/README_FILES/DEPRECATION_README b/postfix/README_FILES/DEPRECATION_README new file mode 100644 index 000000000..87cf2474f --- /dev/null +++ b/postfix/README_FILES/DEPRECATION_README @@ -0,0 +1,270 @@ +PPoossttffiixx RReeppllaacceemmeennttss ffoorr DDeepprreeccaatteedd FFeeaattuurreess + +------------------------------------------------------------------------------- + +PPuurrppoossee ooff tthhiiss ddooccuummeenntt + +This document describes Postfix features that are deprecated (will be removed) +or that have already been removed. It also has tips for making an existing +Postfix configuration more future-proof. + +Overview: + + * Why deprecate? + * Deprecation process + * Deprecated features + +WWhhyy ddeepprreeccaattee?? + +Sometimes, a Postfix feature needs to be replaced with a different one. To give +an example: + + * The initial Postfix TLS implementation used multiple boolean parameters: + one parameter to enable opportunistic TLS (for example, "smtp_enforce_tls = + yes") and one parameter to enable mandatory TLS (for example, + "smtp_require_tls = yes"). + + * As we added support more features such as fingerprint, dane, and so on, we + decided not to add more boolean parameters. Instead we introduced one + configuration parameter to select from multiple deployment models (for + example, smtp_tls_security_level = may | encrypt | dane, etc...). + +Having both the "old" and "new" way to configure Postfix is convenient for +existing Postfix installations, because their configuration does not break +after an upgrade to a new version. Unfortunately, there are also disadvantages. +Having multiple ways to do similar things is not only confusing for newcomers, +it also makes Postfix harder to change. + +DDeepprreeccaattiioonn pprroocceessss + +The basic process steps are: + + 1. Inform humans that a feature will be removed, and suggest replacements, in + logging and documentation. + + 2. Remove the feature, and update logging and documentation. + +Disclaimer: it has taken 20 years for some features to be removed. This past is +not a guarantee for the future. + +DDeepprreeccaatteedd ffeeaattuurreess + +The table summarizes removed or deprecated features and replacements. Click on +the "obsolete feature" name for a more detailed description. + + _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + | |WWaarrnniinngg| | | + |OObbssoolleettee ffeeaattuurree nnaammee |aass |RReemmoovveedd |RReeppllaacceemmeenntt | + | |ooff |iinn vveerrssiioonn| | + | |vveerrssiioonn| | | + |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | + |disable_dns_lookups | 3.9 | - |smtp_dns_support_level | + |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | + |xxx_use_tls | 3.9 | - |xxx_tls_security_level | + |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | + |xxx_enforce_tls | 3.9 | - |xxx_tls_security_level | + |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | + |xxx_per_site | 3.9 | - |xxx_policy_maps | + |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | + |smtpd_tls_dh1024_param_file| 3.9 | - |do not specify (leave at | + | | | |default) | + |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | + |smtpd_tls_eecdh_grade | 3.9 | - |do not specify (leave at | + | | | |default) | + |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | + |permit_mx_backup | 3.9 | - |relay_domains | + |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | + |check_relay_domains | 2.2 | 3.9 |permit_mynetworks, | + | | | |reject_unauth_destination| + |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | + |reject_maps_rbl | 2.1 | 3.9 |reject_rbl_client | + |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | + |permit_naked_ip_address | 2.0 | 3.9 |permit_mynetworks, | + | | | |permit_sasl_authenticated| + |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | + +OObbssoolleettee DDNNSS oonn//ooffff ccoonnffiigguurraattiioonn + +The postconf(1) command logs the following: + + * support for parameter "disable_dns_lookups" will be removed; instead, + specify "smtp_dns_support_level" + +Replace obsolete configuration with its replacement: + + _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + |GGooaall |OObbssoolleettee ccoonnffiigguurraattiioonn |RReeppllaacceemmeenntt | + | | |ccoonnffiigguurraattiioonn | + |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | + |To disable DNS lookups|disable_dns_lookups = |smtp_dns_support_level =| + |in the Postfix SMTP/ |yes |disabled | + |LMTP client | | | + |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | + | | |Leave | + | | |smtp_dns_support_level | + |To enable DNS lookups | |at the implicit default | + |in the Postfix SMTP/ |disable_dns_lookups = no|which is empty, unless | + |LMTP client | |you need a higher | + | | |support level such as | + | | |DNSSEC. | + |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | + +OObbssoolleettee ooppppoorrttuunniissttiicc TTLLSS ccoonnffiigguurraattiioonn + +The postconf(1) command logs one of the following: + + * support for parameter "lmtp_use_tls" will be removed; instead, specify + "lmtp_tls_security_level" + * support for parameter "smtp_use_tls" will be removed; instead, specify + "smtp_tls_security_level" + * support for parameter "smtpd_use_tls" will be removed; instead, specify + "smtpd_tls_security_level" + +There are similarly-named parameters and warnings for postscreen(8) and +tlsproxy(8), but those parameters should rarely be specified by hand. + +Replace obsolete configuration with its replacement: + + _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + |GGooaall |OObbssoolleettee ccoonnffiigguurraattiioonn|RReeppllaacceemmeenntt ccoonnffiigguurraattiioonn| + |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | + |To turn off TLS |xxx_use_tls = no |xxx_security_level = none| + |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | + |To turn on opportunistic|xxx_use_tls = yes |xxx_security_level = may | + |TLS | | | + |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | + +OObbssoolleettee mmaannddaattoorryy TTLLSS ccoonnffiigguurraattiioonn + +The postconf(1) command logs one of the following: + + * support for parameter "lmtp_enforce_tls" will be removed; instead, specify + "lmtp_tls_security_level" + * support for parameter "smtp_enforce_tls" will be removed; instead, specify + "smtp_tls_security_level" + * support for parameter "smtpd_enforce_tls" will be removed; instead, specify + "smtpd_tls_security_level" + +There are similarly-named parameters and warnings for postscreen(8) and +tlsproxy(8), but those parameters should rarely be specified by hand. + +Replace obsolete configuration with its replacement: + + _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + |GGooaall |OObbssoolleettee ccoonnffiigguurraattiioonn|RReeppllaacceemmeenntt ccoonnffiigguurraattiioonn| + |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | + |To turn off mandatory |xxx_enforce_tls = no |xxx_security_level = may | + |TLS | | | + |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | + |To turn on mandatory TLS|xxx_enforce_tls = yes |xxx_security_level = | + | | |encrypt | + |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | + +OObbssoolleettee TTLLSS ppoolliiccyy ttaabbllee ccoonnffiigguurraattiioonn + +The postconf(1) command logs one of the following: + + * support for parameter "lmtp_tls_per_site" will be removed; instead, specify + "lmtp_tls_policy_maps" + * support for parameter "smtp_tls_per_site" will be removed; instead, specify + "smtp_tls_policy_maps" + +There is similarly-named parameter and warning for tlsproxy(8), but that +parameter should rarely be specified by hand. + +Unfortunately, this is more than a name change: the table format has changed +too, as has the table search process. There is no simple conversion of the +obsolete form to its replacement. + +cchheecckk__rreellaayy__ddoommaaiinnss + +Depending on the Postfix version, the Postfix SMTP daemon logs following +warning: + + * support for restriction "check_relay_domains" has been removed in Postfix + 3.9"; instead, specify "reject_unauth_destination" + * support for restriction "check_relay_domains" will be removed from Postfix; + use "reject_unauth_destination" instead + +This feature was removed because it would relay based on the client domain +name, which is not robust. + +Recommended configuration to prevent an "open relay" problem with the SMTP +service on port 25: + + main.cf: + smtpd_recipient_restrictions = + permit_mynetworks, + permit_sasl_authenticated, + reject_unauth_destination + ...other restrictions... + +Or equivalent in smtpd_relay_restrictions. + +ppeerrmmiitt__mmxx__bbaacckkuupp + +The Postfix version 3.9 and later SMTP daemon logs the following warning: + + * support for restriction "permit_mx_backup" will be removed from Postfix; + instead, specify "relay_domains" + +This feature will be removed because it is too difficult to configure recipient +address validation, making Postfix a source of backscatter bounces. + +To specify the domains that Postfix will provide MX backup service for, see +Configuring Postfix as primary or backup MX host for a remote site. + +rreejjeecctt__mmaappss__rrbbll + +Depending on the Postfix version, the SMTP daemon logs one of the following +warnings: + + * support for restriction "reject_maps_rbl" has been removed in Postfix 3.9"; + instead, specify "reject_rbl_client domain-name" + * support for restriction "reject_maps_rbl" will be removed from Postfix; use + "reject_rbl_client domain-name" instead + +This feature was replaced because "MAPS RBL" is the name of a specific +reputation service. The reject_rbl_client feature provides a superset of the +reject_maps_rbl functionality. + +Recommended configuration: + + main.cf: + smtpd_recipient_restrictions = + permit_mynetworks, + permit_sasl_authenticated, + reject_unauth_destination + reject_rbl_client domain-name + ...other restrictions... + +Where domain-name is the domain name of a DNS reputation service. + +ppeerrmmiitt__nnaakkeedd__iipp__aaddddrreessss + +Depending on the Postfix version, the SMTP daemon logs one of the following +warnings: + + * support for restriction "permit_naked_ip_address" has been removed in + Postfix 3.9"; instead, specify "permit_mynetworks" or + "permit_sasl_authenticated" + * restriction permit_naked_ip_address is deprecated. Use permit_mynetworks or + permit_sasl_authenticated instead + +This feature was removed because it was easy to get a false match when +smtpd_recipient_restrictions was intended to match a remote SMTP client IP +address. + +Recommended configuration: + + main.cf: + smtpd_recipient_restrictions = + permit_mynetworks, + permit_sasl_authenticated, + reject_unauth_destination + reject_rbl_client domain-name + ...other restrictions... + +That is, no restriction on HELO or EHLO syntax. Such restrictions ar rarely +useful nowadays. + diff --git a/postfix/conf/postfix-files b/postfix/conf/postfix-files index bbc4dcd21..5a939822b 100644 --- a/postfix/conf/postfix-files +++ b/postfix/conf/postfix-files @@ -287,6 +287,7 @@ $readme_directory/CONTENT_INSPECTION_README:f:root:-:644 $readme_directory/DATABASE_README:f:root:-:644 $readme_directory/DB_README:f:root:-:644 $readme_directory/DEBUG_README:f:root:-:644 +$readme_directory/DEPRECATION_README:f:root:-:644 $readme_directory/DSN_README:f:root:-:644 $readme_directory/ETRN_README:f:root:-:644 $readme_directory/FILTER_README:f:root:-:644 @@ -351,6 +352,7 @@ $html_directory/CYRUS_README.html:f:root:-:644:o $html_directory/DATABASE_README.html:f:root:-:644 $html_directory/DB_README.html:f:root:-:644 $html_directory/DEBUG_README.html:f:root:-:644 +$html_directory/DEPRECATION_README.html:f:root:-:644 $html_directory/DSN_README.html:f:root:-:644 $html_directory/ETRN_README.html:f:root:-:644 $html_directory/FILTER_README.html:f:root:-:644 diff --git a/postfix/html/DEPRECATION_README.html b/postfix/html/DEPRECATION_README.html new file mode 100644 index 000000000..47295681e --- /dev/null +++ b/postfix/html/DEPRECATION_README.html @@ -0,0 +1,411 @@ + + + + +
+ +This document describes Postfix features that are deprecated +(will be removed) or that have already been removed. It also has +tips for making an existing Postfix configuration more future-proof. +
+ +Overview:
+ +Sometimes, a Postfix feature needs to be replaced with a different +one. To give an example:
+ +The initial Postfix TLS implementation used multiple boolean +parameters: one parameter to enable opportunistic TLS (for example, +"smtp_enforce_tls = yes") and one parameter to enable mandatory TLS +(for example, "smtp_require_tls = yes").
+ +As we added support more features such as fingerprint, +dane, and so on, we decided not to add more boolean parameters. +Instead we introduced one configuration parameter to select from +multiple deployment models (for example, smtp_tls_security_level = +may | encrypt | dane, etc...).
+ +Having both the "old" and "new" way to configure Postfix is +convenient for existing Postfix installations, because their +configuration does not break after an upgrade to a new version. +Unfortunately, there are also disadvantages. Having multiple ways +to do similar things is not only confusing for newcomers, it also +makes Postfix harder to change.
+ +The basic process steps are:
+ +Inform humans that a feature will be removed, and suggest +replacements, in logging and documentation.
+ +Remove the feature, and update logging and documentation.
+ +Disclaimer: it has taken 20 years for some features to be +removed. This past is not a guarantee for the future.
+ +The table summarizes removed or deprecated features and +replacements. Click on the "obsolete feature" name for a more +detailed description.
+ ++ ++ ++ +
+ ++ + Obsolete feature name Warning as
of version +Removed
in versionReplacement ++ + disable_dns_lookups + 3.9 - +smtp_dns_support_level + + xxx_use_tls +3.9 - +xxx_tls_security_level + + xxx_enforce_tls + 3.9 - +xxx_tls_security_level + + xxx_per_site +3.9 - +xxx_policy_maps + + +smtpd_tls_dh1024_param_file 3.9 +- do not specify (leave at default) + + + smtpd_tls_eecdh_grade + 3.9 - +do not specify (leave at default) + + permit_mx_backup +3.9 - +relay_domains + + check_relay_domains + 2.2 3.9 +permit_mynetworks, reject_unauth_destination + + reject_maps_rbl +2.1 3.9 +reject_rbl_client + + permit_naked_ip_address + 2.0 3.9 + permit_mynetworks, permit_sasl_authenticated
The postconf(1) command logs the following:
+ +Replace obsolete configuration with its replacement:
+ ++ ++ ++ +
+ ++ + Goal Obsolete configuration + Replacement configuration + + To disable DNS lookups in the Postfix SMTP/LMTP client + disable_dns_lookups = yes smtp_dns_support_level += disabled + + To enable DNS lookups in the Postfix SMTP/LMTP client +disable_dns_lookups = no +Leave smtp_dns_support_level at the implicit default which is empty, unless +you need a higher support level such as DNSSEC.
The postconf(1) command logs one of the following:
+ +There are similarly-named parameters and warnings for postscreen(8) +and tlsproxy(8), but those parameters should rarely be specified +by hand.
+ +Replace obsolete configuration with its replacement:
+ ++ ++ ++ +
+ ++ + Goal Obsolete configuration Replacement configuration + + To turn off TLS xxx_use_tls = no +xxx_security_level = none + + To turn on opportunistic TLS xxx_use_tls += yes xxx_security_level = may
The postconf(1) command logs one of the following:
+ +There are similarly-named parameters and warnings for postscreen(8) +and tlsproxy(8), but those parameters should rarely be specified +by hand.
+ +Replace obsolete configuration with its replacement:
+ ++ ++ ++ +
+ ++ + Goal Obsolete configuration Replacement configuration + + To turn off mandatory TLS xxx_enforce_tls += no xxx_security_level = may + + To turn on mandatory TLS xxx_enforce_tls += yes xxx_security_level = encrypt
The postconf(1) command logs one of the following:
+ +There is similarly-named parameter and warning for tlsproxy(8), +but that parameter should rarely be specified by hand.
+ +Unfortunately, this is more than a name change: the table format +has changed too, as has the table search process. There is no simple +conversion of the obsolete form to its replacement.
+ +Depending on the Postfix version, the Postfix SMTP daemon logs +following warning:
+ +This feature was removed because it would relay based on the +client domain name, which is not robust.
+ +Recommended configuration to prevent an "open relay" problem +with the SMTP service on port 25: +
+ +++ ++main.cf: + smtpd_recipient_restrictions = + permit_mynetworks, + permit_sasl_authenticated, + reject_unauth_destination + ...other restrictions... ++
Or equivalent in smtpd_relay_restrictions.
+ +The Postfix version 3.9 and later SMTP daemon logs the following +warning:
+ +This feature will be removed because it is too difficult to +configure recipient address validation, making Postfix a source of +backscatter bounces.
+ +To specify the domains that Postfix will provide MX backup +service for, see +Configuring Postfix as primary or backup MX host for a remote +site.
+ +Depending on the Postfix version, the SMTP daemon logs one of +the following warnings:
+ +This feature was replaced because "MAPS RBL" is the name of a +specific reputation service. The reject_rbl_client feature provides +a superset of the reject_maps_rbl functionality.
+ +Recommended configuration:
+ +++ ++main.cf: + smtpd_recipient_restrictions = + permit_mynetworks, + permit_sasl_authenticated, + reject_unauth_destination + reject_rbl_client domain-name + ...other restrictions... ++
Where domain-name is the domain name of a DNS reputation service.
+ +Depending on the Postfix version, the SMTP daemon logs one of +the following warnings:
+ +This feature was removed because it was easy to get a false +match when smtpd_recipient_restrictions was intended to match a +remote SMTP client IP address.
+ +Recommended configuration:
+ +++ ++main.cf: + smtpd_recipient_restrictions = + permit_mynetworks, + permit_sasl_authenticated, + reject_unauth_destination + reject_rbl_client domain-name + ...other restrictions... ++
That is, no restriction on HELO or EHLO syntax. Such restrictions +ar rarely useful nowadays. + + + + diff --git a/postfix/html/index.html b/postfix/html/index.html index fe1bfab98..a7da6cb51 100644 --- a/postfix/html/index.html +++ b/postfix/html/index.html @@ -53,6 +53,8 @@ configuration examples
This document describes Postfix features that are deprecated +(will be removed) or that have already been removed. It also has +tips for making an existing Postfix configuration more future-proof. +
+ +Overview:
+ +Sometimes, a Postfix feature needs to be replaced with a different +one. To give an example:
+ +The initial Postfix TLS implementation used multiple boolean +parameters: one parameter to enable opportunistic TLS (for example, +"smtp_enforce_tls = yes") and one parameter to enable mandatory TLS +(for example, "smtp_require_tls = yes").
+ +As we added support more features such as fingerprint, +dane, and so on, we decided not to add more boolean parameters. +Instead we introduced one configuration parameter to select from +multiple deployment models (for example, smtp_tls_security_level = +may | encrypt | dane, etc...).
+ +Having both the "old" and "new" way to configure Postfix is +convenient for existing Postfix installations, because their +configuration does not break after an upgrade to a new version. +Unfortunately, there are also disadvantages. Having multiple ways +to do similar things is not only confusing for newcomers, it also +makes Postfix harder to change.
+ +The basic process steps are:
+ +Inform humans that a feature will be removed, and suggest +replacements, in logging and documentation.
+ +Remove the feature, and update logging and documentation.
+ +Disclaimer: it has taken 20 years for some features to be +removed. This past is not a guarantee for the future.
+ +The table summarizes removed or deprecated features and +replacements. Click on the "obsolete feature" name for a more +detailed description.
+ ++ ++ ++ +
+ ++ + Obsolete feature name Warning as
of version +Removed
in versionReplacement ++ + disable_dns_lookups + 3.9 - +smtp_dns_support_level + + xxx_use_tls +3.9 - +xxx_tls_security_level + + xxx_enforce_tls + 3.9 - +xxx_tls_security_level + + xxx_per_site +3.9 - +xxx_policy_maps + + +smtpd_tls_dh1024_param_file 3.9 +- do not specify (leave at default) + + + smtpd_tls_eecdh_grade + 3.9 - +do not specify (leave at default) + + permit_mx_backup +3.9 - +relay_domains + + check_relay_domains + 2.2 3.9 +permit_mynetworks, reject_unauth_destination + + reject_maps_rbl +2.1 3.9 +reject_rbl_client + + permit_naked_ip_address + 2.0 3.9 + permit_mynetworks, permit_sasl_authenticated
The postconf(1) command logs the following:
+ +Replace obsolete configuration with its replacement:
+ ++ ++ ++ +
+ ++ + Goal Obsolete configuration + Replacement configuration + + To disable DNS lookups in the Postfix SMTP/LMTP client + disable_dns_lookups = yes smtp_dns_support_level += disabled + + To enable DNS lookups in the Postfix SMTP/LMTP client +disable_dns_lookups = no +Leave smtp_dns_support_level at the implicit default which is empty, unless +you need a higher support level such as DNSSEC.
The postconf(1) command logs one of the following:
+ +There are similarly-named parameters and warnings for postscreen(8) +and tlsproxy(8), but those parameters should rarely be specified +by hand.
+ +Replace obsolete configuration with its replacement:
+ ++ ++ ++ +
+ ++ + Goal Obsolete configuration Replacement configuration + + To turn off TLS xxx_use_tls = no +xxx_security_level = none + + To turn on opportunistic TLS xxx_use_tls += yes xxx_security_level = may
The postconf(1) command logs one of the following:
+ +There are similarly-named parameters and warnings for postscreen(8) +and tlsproxy(8), but those parameters should rarely be specified +by hand.
+ +Replace obsolete configuration with its replacement:
+ ++ ++ ++ +
+ ++ + Goal Obsolete configuration Replacement configuration + + To turn off mandatory TLS xxx_enforce_tls += no xxx_security_level = may + + To turn on mandatory TLS xxx_enforce_tls += yes xxx_security_level = encrypt
The postconf(1) command logs one of the following:
+ +There is similarly-named parameter and warning for tlsproxy(8), +but that parameter should rarely be specified by hand.
+ +Unfortunately, this is more than a name change: the table format +has changed too, as has the table search process. There is no simple +conversion of the obsolete form to its replacement.
+ +Depending on the Postfix version, the Postfix SMTP daemon logs +following warning:
+ +This feature was removed because it would relay based on the +client domain name, which is not robust.
+ +Recommended configuration to prevent an "open relay" problem +with the SMTP service on port 25: +
+ +++ ++main.cf: + smtpd_recipient_restrictions = + permit_mynetworks, + permit_sasl_authenticated, + reject_unauth_destination + ...other restrictions... ++
Or equivalent in smtpd_relay_restrictions.
+ +The Postfix version 3.9 and later SMTP daemon logs the following +warning:
+ +This feature will be removed because it is too difficult to +configure recipient address validation, making Postfix a source of +backscatter bounces.
+ +To specify the domains that Postfix will provide MX backup +service for, see +Configuring Postfix as primary or backup MX host for a remote +site.
+ +Depending on the Postfix version, the SMTP daemon logs one of +the following warnings:
+ +This feature was replaced because "MAPS RBL" is the name of a +specific reputation service. The reject_rbl_client feature provides +a superset of the reject_maps_rbl functionality.
+ +Recommended configuration:
+ +++ ++main.cf: + smtpd_recipient_restrictions = + permit_mynetworks, + permit_sasl_authenticated, + reject_unauth_destination + reject_rbl_client domain-name + ...other restrictions... ++
Where domain-name is the domain name of a DNS reputation service.
+ +Depending on the Postfix version, the SMTP daemon logs one of +the following warnings:
+ +This feature was removed because it was easy to get a false +match when smtpd_recipient_restrictions was intended to match a +remote SMTP client IP address.
+ +Recommended configuration:
+ +++ ++main.cf: + smtpd_recipient_restrictions = + permit_mynetworks, + permit_sasl_authenticated, + reject_unauth_destination + reject_rbl_client domain-name + ...other restrictions... ++
That is, no restriction on HELO or EHLO syntax. Such restrictions +ar rarely useful nowadays. + + + + diff --git a/postfix/proto/Makefile.in b/postfix/proto/Makefile.in index ad7f73e50..f02ab1415 100644 --- a/postfix/proto/Makefile.in +++ b/postfix/proto/Makefile.in @@ -19,6 +19,7 @@ HTML = ../html/ADDRESS_CLASS_README.html \ ../html/CONTENT_INSPECTION_README.html \ ../html/DATABASE_README.html ../html/DB_README.html \ ../html/DEBUG_README.html \ + ../html/DEPRECATION_README.html \ ../html/DSN_README.html \ ../html/ETRN_README.html ../html/FILTER_README.html \ ../html/FORWARD_SECRECY_README.html \ @@ -69,6 +70,7 @@ README = ../README_FILES/ADDRESS_CLASS_README \ ../README_FILES/DATABASE_README ../README_FILES/DB_README \ ../README_FILES/DEBUG_README \ ../README_FILES/DSN_README \ + ../README_FILES/DEPRECATION_README \ ../README_FILES/ETRN_README ../README_FILES/FILTER_README \ ../README_FILES/FORWARD_SECRECY_README \ ../README_FILES/INSTALL ../README_FILES/IPV6_README \ @@ -200,6 +202,9 @@ clobber: ../html/DEBUG_README.html: DEBUG_README.html $(DETAB) $? | $(POSTLINK) >$@ +../html/DEPRECATION_README.html: DEPRECATION_README.html + $(DETAB) $? | $(POSTLINK) >$@ + ../html/DSN_README.html: DSN_README.html $(DETAB) $? | $(POSTLINK) >$@ @@ -386,6 +391,9 @@ clobber: ../README_FILES/DSN_README: DSN_README.html $(DETAB) $? | $(HT2READ) >$@ +../README_FILES/DEPRECATION_README: DEPRECATION_README.html + $(DETAB) $? | $(HT2READ) >$@ + ../README_FILES/ETRN_README: ETRN_README.html $(DETAB) $? | $(HT2READ) >$@ diff --git a/postfix/proto/master b/postfix/proto/master index 28040b69a..693e9a4ff 100644 --- a/postfix/proto/master +++ b/postfix/proto/master @@ -220,9 +220,10 @@ # Increase the verbose logging level. Specify multiple \fB-v\fR # options to make a Postfix daemon process increasingly verbose. # .IP "Other command-line arguments" -# Specify "{" and "}" around command arguments that contain -# whitespace (Postfix 3.0 and later). Whitespace -# after "{" and before "}" is ignored. +# Specify "{" and "}" around command arguments that must start +# with "{" or that must contain whitespace (Postfix 3.0 and +# later). The outer "{" and "}" are removed from the input, +# together with any leading or trailing whitespace. # SEE ALSO # master(8), process manager # postconf(5), configuration parameters diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h index 3095c8a94..d4f945ea6 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 "20240229" +#define MAIL_RELEASE_DATE "20240305" #define MAIL_VERSION_NUMBER "3.9" #ifdef SNAPSHOT diff --git a/postfix/src/postconf/postconf_unused.c b/postfix/src/postconf/postconf_unused.c index a7e4febf7..717d1a53a 100644 --- a/postfix/src/postconf/postconf_unused.c +++ b/postfix/src/postconf/postconf_unused.c @@ -75,22 +75,22 @@ static const PCF_DEPR_PARAM_INFO pcf_depr_param_info[] = { * disable_dns_lookups parameter was documented as deprecated since * Postfix 2.11 but nothing was logged. */ - "disable_dns_lookups", "specify smtp_dns_support_level", - "lmtp_use_tls", "specify lmtp_tls_security_level", - "postscreen_use_tls", "specify postscreen_tls_security_level", - "smtp_use_tls", "specify smtp_tls_security_level", - "smtpd_use_tls", "specify smtpd_tls_security_level", - "tlsproxy_client_use_tls", "specify tlsproxy_client_security_level", - "tlsproxy_use_tls", "specify tlsproxy_tls_security_level", + "disable_dns_lookups", "specify \"smtp_dns_support_level\"", + "lmtp_use_tls", "specify \"lmtp_tls_security_level\"", + "postscreen_use_tls", "specify \"postscreen_tls_security_level\"", + "smtp_use_tls", "specify \"smtp_tls_security_level\"", + "smtpd_use_tls", "specify \"smtpd_tls_security_level\"", + "tlsproxy_client_use_tls", "specify \"tlsproxy_client_security_level\"", + "tlsproxy_use_tls", "specify \"tlsproxy_tls_security_level\"", "lmtp_enforce_tls", "lmtp_tls_security_level", - "postscreen_enforce_tls", "specify postscreen_tls_security_level", - "smtp_enforce_tls", "specify smtp_tls_security_level", - "smtpd_enforce_tls", "specify smtpd_tls_security_level", - "tlsproxy_client_enforce_tls", "specify tlsproxy_client_security_level", - "tlsproxy_enforce_tls", "specify tlsproxy_tls_security_level", - "lmtp_tls_per_site", "specify lmtp_tls_policy_maps", - "smtp_tls_per_site", "specify smtp_tls_policy_maps", - "tlsproxy_client_per_site", "specify tlsproxy_client_policy_maps", + "postscreen_enforce_tls", "specify \"postscreen_tls_security_level\"", + "smtp_enforce_tls", "specify \"smtp_tls_security_level\"", + "smtpd_enforce_tls", "specify \"smtpd_tls_security_level\"", + "tlsproxy_client_enforce_tls", "specify \"tlsproxy_client_security_level\"", + "tlsproxy_enforce_tls", "specify \"tlsproxy_tls_security_level\"", + "lmtp_tls_per_site", "specify \"lmtp_tls_policy_maps\"", + "smtp_tls_per_site", "specify \"smtp_tls_policy_maps\"", + "tlsproxy_client_per_site", "specify \"tlsproxy_client_policy_maps\"", "smtpd_tls_dh1024_param_file", "do not specify (leave at default)", "smtpd_tls_eecdh_grade", "do not specify (leave at default)", "deleted-test-only", "do not specify", /* For testing */ @@ -171,7 +171,7 @@ static void pcf_flag_unused_parameters(DICT *dict, const char *conf_name, else if ((dp = (const PCF_DEPR_PARAM_INFO *) htable_find(pcf_depr_param_table, param_name)) != 0) { vstream_fflush(VSTREAM_OUT); - msg_warn("%s/%s: support for parameter %s will be removed;" + msg_warn("%s/%s: support for parameter \"%s\" will be removed;" " instead, %s", var_config_dir, conf_name, param_name, dp->alternative); } diff --git a/postfix/src/postconf/test76.ref b/postfix/src/postconf/test76.ref index 29297ff62..3e4cd2640 100644 --- a/postfix/src/postconf/test76.ref +++ b/postfix/src/postconf/test76.ref @@ -2,8 +2,8 @@ config_directory = . disable_dns_lookups = no lmtp_use_tls = no smtpd_tls_dh1024_param_file = auto -./postconf: warning: ./main.cf: support for parameter disable_dns_lookups will be removed; instead, specify smtp_dns_support_level -./postconf: warning: ./main.cf: support for parameter lmtp_use_tls will be removed; instead, specify lmtp_tls_security_level -./postconf: warning: ./main.cf: support for parameter smtpd_tls_dh1024_param_file will be removed; instead, do not specify (leave at default) +./postconf: warning: ./main.cf: support for parameter "disable_dns_lookups" will be removed; instead, specify "smtp_dns_support_level" +./postconf: warning: ./main.cf: support for parameter "lmtp_use_tls" will be removed; instead, specify "lmtp_tls_security_level" +./postconf: warning: ./main.cf: support for parameter "smtpd_tls_dh1024_param_file" will be removed; instead, do not specify (leave at default) ./postconf: warning: ./main.cf: support for parameter deleted-test-only has been removed; instead, do not specify -./postconf: warning: ./master.cf: support for parameter smtp_enforce_tls will be removed; instead, specify smtp_tls_security_level +./postconf: warning: ./master.cf: support for parameter "smtp_enforce_tls" will be removed; instead, specify "smtp_tls_security_level" diff --git a/postfix/src/smtpd/smtpd_check.c b/postfix/src/smtpd/smtpd_check.c index 1ea31e7c6..6aeda7475 100644 --- a/postfix/src/smtpd/smtpd_check.c +++ b/postfix/src/smtpd/smtpd_check.c @@ -1679,7 +1679,7 @@ static int check_relay_domains(SMTPD_STATE *state, char *recipient, msg_info("%s: %s", myname, recipient); msg_warn("support for restriction \"%s\" has been removed in %s 3.9; " - "use \"%s\" instead", + "instead, specify \"%s\"", CHECK_RELAY_DOMAINS, var_mail_name, REJECT_UNAUTH_DEST); reject_server_error(state); } @@ -1998,7 +1998,7 @@ static int permit_mx_backup(SMTPD_STATE *state, const char *recipient, if (once == 0) { once = 1; msg_warn("support for restriction \"%s\" will be removed from %s; " - "instead, use \"%s\"", + "instead, specify \"%s\"", PERMIT_MX_BACKUP, var_mail_name, VAR_RELAY_DOMAINS); } @@ -3905,7 +3905,7 @@ static int reject_maps_rbl(SMTPD_STATE *state) * Restriction reject_maps_rbl is deprecated as of Postfix 2.1. */ msg_warn("support for restriction \"%s\" has been removed in %s 3.9; " - "use \"%s domain-name\" instead", + "instead, specify \"%s domain-name\"", REJECT_MAPS_RBL, var_mail_name, REJECT_RBL_CLIENT); reject_server_error(state); @@ -4487,8 +4487,8 @@ static int generic_checks(SMTPD_STATE *state, ARGV *restrictions, } } else if (strcasecmp(name, PERMIT_NAKED_IP_ADDR) == 0) { /* permit_naked_ip_addr is deprecated as of Postfix 2.0. */ - msg_warn("restriction %s has been removed in %s 3.9;" - " use %s or %s instead", + msg_warn("support for restriction \"%s\" has been removed in %s" + " 3.9; instead, specify \"%s\" or \"%s\"", PERMIT_NAKED_IP_ADDR, var_mail_name, PERMIT_MYNETWORKS, PERMIT_SASL_AUTH); reject_server_error(state);