本文件的目的
本文件描述了 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 的变更难度。
弃用流程 ;
基本流程步骤如下:
- 在日志和文档中通知用户某功能将被移除,并建议替代方案。
- 移除该功能,并更新日志和文档。
免责声明:某些功能的移除耗时长达 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.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
过时的 DNS 开关配置 ;
postconf(1) 命令会记录以下内容:
- 支持参数"disable_dns_lookups" 将被移除;请改为指定 "smtp_dns_support_level"
用替代配置替换过时配置:
目标 过时配置 替代配置 禁用 Postfix SMTP/LMTP 客户端中的 DNS 解析 disable_dns_lookups = yes smtp_dns_support_level = disabled 要启用 Postfix SMTP/LMTP 客户端中的 DNS 解析 disable_dns_lookups = no 将 smtp_dns_support_level 保持为默认值(空),除非您需要更高的支持级别,例如 DNSSEC。
已废弃的opportunistic TLS配置 ;
postconf(1)命令会记录以下内容之一:
- 对参数 "lmtp_use_tls" 的支持将被移除;请改用 "lmtp_tls_security_level"
- 对参数 "smtp_use_tls" 将被移除;取而代之,请指定 "smtp_tls_security_level"
- 对参数 "smtpd_use_tls" 的支持将被移除;取而代之,请指定 "smtpd_tls_security_level"
postscreen(8) 和 tlsproxy(8) 也有名称相似的参数和警告,但这些参数通常无需手动指定。
用替代配置替换过时的配置:
目标 过时的配置 替代配置 关闭 TLS xxx_use_tls = no xxx_security_level = none 启用机会性 TLS xxx_use_tls = yes xxx_security_level = may
已废弃的强制 TLS 配置 ;
postconf(1) 命令会记录以下内容之一:
- 支持参数 "lmtp_enforce_tls" 将被移除;请改为指定 "lmtp_tls_security_level"
- 对参数 "smtp_enforce_tls" 的支持将被移除;取而代之,请指定 "smtp_tls_security_level"
- 对参数 "smtpd_enforce_tls" 将被移除;请改为指定 "smtpd_tls_security_level"
postscreen(8) 和 tlsproxy(8) 也有名称相似的参数和警告,但这些参数通常不应手动指定。
用替代配置替换过时的配置:
目标 过时的配置 替代配置 关闭强制 TLS xxx_enforce_tls = no xxx_security_level = may 启用强制 TLS xxx_enforce_tls = yes xxx_security_level = encrypt
过时的 TLS 策略表配置 ;
postconf(1) 命令会记录以下内容之一:
- 支持参数 "lmtp_tls_per_site" 将被移除;请改为指定 "lmtp_tls_policy_maps"
- 对参数 "smtp_tls_per_site" 的支持将被移除;取而代之,请指定 "smtp_tls_policy_maps"
tlsproxy(8) 中存在一个同名参数及警告,但该参数通常无需手动指定。
不幸的是,这不仅仅是名称更改:表格格式也发生了变化,表格搜索过程也发生了变化。没有简单的将过时形式转换为其替代形式的方法。
check_relay_domains ;
根据 Postfix 版本,Postfix SMTP 守护进程会记录以下警告:
- 对限制 "check_relay_domains" 的支持已在 Postfix 3.9 中移除;请改用 "reject_unauth_destination"
- 对限制 "check_relay_domains" 的支持将从 Postfix 中移除;请改用 "reject_unauth_destination"
此功能已被移除,因为它会根据客户端域名进行中继,这不够健壮。
为防止 SMTP 服务在端口 25 上出现"开放中继"问题,推荐的配置:
main.cf: smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination ...其他限制...
或在 smtpd_relay_restrictions 中设置等效选项。
permit_mx_backup
Postfix 3.9 及更高版本的 SMTP 守护进程会记录以下警告:
- 对限制 "permit_mx_backup" 的支持将从 Postfix 中移除;取而代之,请指定 "relay_domains"
此功能将被移除,因为配置收件人地址验证过于复杂,导致 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.cf: smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination reject_rbl_client 域名 ...其他限制...
其中 域名 是 DNS 声誉服务器的域名。
permit_naked_ip_address
根据 Postfix 版本,SMTP 守护进程会记录以下警告之一:
- 对限制 "permit_naked_ip_address" 的支持已在 Postfix 3.9 中移除;请改为指定 "permit_mynetworks" 或 "permit_sasl_authenticated"
- 限制 "permit_naked_ip_address" 已废弃。请使用 permit_mynetworks 或 permit_sasl_authenticated 代替
此功能已被移除,因为当 smtpd_recipient_restrictions 用于匹配远程 SMTP 客户端 IP 地址时,容易出现错误匹配。
推荐配置:
main.cf: smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination reject_rbl_client 域名 ...其他限制...
也就是说,对 HELO 或 EHLO 语法没有限制。此类限制如今很少有用。