跳转到主要内容

于 2025年04月22日 摘录自 Postfix Replacements for Deprecated Features

本文件的目的

本文件描述了 Postfix 中已废弃(将被移除)或已移除的功能。它还提供了使现有 Postfix 配置更具未来兼容性的建议。

概述:

为何要弃用? ;

有时,Postfix 的某个功能需要被另一个功能取代。例如:

  • 最初的 Postfix TLS 实现使用了多个布尔参数:一个参数用于启用机会性 TLS(例如,"smtp_enforce_tls = yes"),另一个参数用于启用强制性 TLS(例如,"smtp_require_tls = yes")。
  • 随着我们添加了更多功能(如指纹、DANE 等),我们决定不再添加更多布尔参数。取而代之,我们引入了一个配置参数,用于在多种部署模型中进行选择(例如,smtp_tls_security_level = may | encrypt | dane 等)。

同时保留"旧"和"新"配置方式对现有 Postfix 安装非常方便,因为升级到新版本后配置不会中断。然而,这也存在缺点。多种方式实现相同功能不仅会让新手感到困惑,还会增加 Postfix 的变更难度。

弃用流程 ;

基本流程步骤如下:

  1. 在日志和文档中通知用户某功能将被移除,并建议替代方案。
  2. 移除该功能,并更新日志和文档。

免责声明:某些功能的移除耗时长达 20 年。过去的情况并不保证未来。

已废弃的功能 ;

下表总结了已移除或已废弃的功能及其替代方案。点击"已废弃功能"名称可查看详细描述。

已废弃功能名称警告 ;
版本
移除 ;
版本
替代
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-不指定(保持默认)
smtpd_tls_eecdh_grade ;3.9-不指定(保持默认)
permit_mx_backup ;3.9-relay_domains
check_relay_domains ;2.23.9permit_mynetworksreject_unauth_destination
reject_maps_rbl ;2.13.9reject_rbl_client
permit_naked_ip_address ;2.03.9permit_mynetworkspermit_sasl_authenticated

过时的 DNS 开关配置 ;

postconf(1) 命令会记录以下内容:

用替代配置替换过时配置:

目标过时配置替代配置
禁用 Postfix SMTP/LMTP 客户端中的 DNS 解析disable_dns_lookups = yessmtp_dns_support_level = disabled
要启用 Postfix SMTP/LMTP 客户端中的 DNS 解析disable_dns_lookups = nosmtp_dns_support_level 保持为默认值(空),除非您需要更高的支持级别,例如 DNSSEC。

已废弃的opportunistic TLS配置 ;

postconf(1)命令会记录以下内容之一:

postscreen(8) 和 tlsproxy(8) 也有名称相似的参数和警告,但这些参数通常无需手动指定。

用替代配置替换过时的配置:

目标过时的配置替代配置
关闭 TLSxxx_use_tls = noxxx_security_level = none
启用机会性 TLSxxx_use_tls = yesxxx_security_level = may

已废弃的强制 TLS 配置 ;

postconf(1) 命令会记录以下内容之一:

postscreen(8) 和 tlsproxy(8) 也有名称相似的参数和警告,但这些参数通常不应手动指定。

用替代配置替换过时的配置:

目标过时的配置替代配置
关闭强制 TLSxxx_enforce_tls = noxxx_security_level = may
启用强制 TLSxxx_enforce_tls = yesxxx_security_level = encrypt

过时的 TLS 策略表配置 ;

postconf(1) 命令会记录以下内容之一:

tlsproxy(8) 中存在一个同名参数及警告,但该参数通常无需手动指定。

不幸的是,这不仅仅是名称更改:表格格式也发生了变化,表格搜索过程也发生了变化。没有简单的将过时形式转换为其替代形式的方法。

check_relay_domains ;

根据 Postfix 版本,Postfix SMTP 守护进程会记录以下警告:

此功能已被移除,因为它会根据客户端域名进行中继,这不够健壮。

为防止 SMTP 服务在端口 25 上出现"开放中继"问题,推荐的配置:

main.cfsmtpd_recipient_restrictions = 
permit_mynetworkspermit_sasl_authenticatedreject_unauth_destination
...其他限制...

或在 smtpd_relay_restrictions 中设置等效选项。

permit_mx_backup

Postfix 3.9 及更高版本的 SMTP 守护进程会记录以下警告:

此功能将被移除,因为配置收件人地址验证过于复杂,导致 Postfix 成为反向散射退信的来源。

要指定 Postfix 将为其提供 MX 备份服务的域名,请参阅 将 Postfix 配置为远程站点的主要或备用 MX 主机

reject_maps_rbl

根据 Postfix 版本,SMTP 守护进程会记录以下警告之一:

  • 对限制 "reject_maps_rbl" 的支持已在 Postfix 3.9 中移除;请改用 "reject_rbl_client domain-name"
  • 对限制 "reject_maps_rbl" 的支持将从 Postfix 中移除;请改用 "reject_rbl_client domain-name"

此功能已被替换,因为 "MAPS RBL" 是特定声誉服务器的名称。reject_rbl_client 功能提供了 reject_maps_rbl 功能的超集。

推荐配置:

main.cfsmtpd_recipient_restrictions =
permit_mynetworkspermit_sasl_authenticatedreject_unauth_destination
reject_rbl_client 域名
...其他限制...

其中 域名 是 DNS 声誉服务器的域名。

permit_naked_ip_address

根据 Postfix 版本,SMTP 守护进程会记录以下警告之一:

此功能已被移除,因为当 smtpd_recipient_restrictions 用于匹配远程 SMTP 客户端 IP 地址时,容易出现错误匹配。

推荐配置:

main.cfsmtpd_recipient_restrictions =
permit_mynetworkspermit_sasl_authenticatedreject_unauth_destination
reject_rbl_client 域名
...其他限制...

也就是说,对 HELO 或 EHLO 语法没有限制。此类限制如今很少有用。