我有一个多年前继承的 Postfix 服务器。最初,它成功地通过身份验证和 IP 地址控制了消息的发送 - 如果经过身份验证的用户从“mynetworks”中的 IP 地址发送,则允许发送。从那时起,它经历了两次重大升级,2017 年从 Lenny 升级到 Jesse,2022 年从 Jesse 升级到 Bullseye。似乎 IP 地址限制要求随着 Bullseye 升级而消失,现在经过身份验证的用户可以从任何 IP 地址发送。
main.cf 中的所有 smtpd 检查和限制过去都位于 smtpd_recipient_restrictions 下,而 smtpd_helo/sender/data_restrictions 均为空。以下是当前设置:
smtpd_recipient_restrictions =
reject_unlisted_recipient,
permit_mynetworks,
check_client_access hash:/etc/postfix/GEN000_override,
check_client_access regexp:/etc/postfix/fqrdns.regexp,
check_helo_access hash:/etc/postfix/access,
check_helo_access regexp:/etc/postfix/helo_blacklist.regexp,
check_sender_access hash:/etc/postfix/blacklist,
check_sender_access regexp:/etc/postfix/sender_blacklist.regexp,
check_sender_mx_access cidr:/etc/postfix/mx_access.txt,
check_sender_access hash:/etc/postfix/bdwl
check_client_access hash:/etc/postfix/broken_helos,
reject_invalid_hostname,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_unknown_recipient_domain,
reject_non_fqdn_hostname,
reject_non_fqdn_recipient,
reject_unauth_destination,
check_recipient_access hash:/etc/postfix/restricted,
reject_unknown_client,
reject_unknown_hostname,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client bl.spamcop.net
尽管多年来我已经了解了很多有关 Postfix 的知识,但我仍然觉得该系统令人望而生畏。不用说,许多软件包都被替换了,也许意义重大的是,我们不得不将基于 Web 的客户端从 SquirrelMail 迁移到 RoundCube(大多数使用 Thunderbird)。FWIW 我确实尝试过...
smtpd_client_restrictions = permit_mynetworks, reject
...这有效,但有一个不良副作用,即所有来自外部来源(例如 gmail.com)的传入邮件都被退回,并出现 554 5.7.1 错误。我希望在升级过程中一些简单的东西被移动或丢失了。欢迎指点!!
答案1
好吧,我不得不暂时搁置这个问题,但我本周能够重新开始并找到答案。在 Bullseye 升级之前,master.cf 包含以下内容:
submission inet n - n - - smtpd
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o smtpd_client_restrictions=permit_mynetworks,reject
升级后更改为:
submission inet n - n - - smtpd
-o smtpd_recipient_restrictions=
-o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
因此,recipient_restrictions 被替换为relay_restrictions。使用此配置,任何经过身份验证的用户都可以发送邮件,无论位置/IP 地址如何。由于某种原因(设计或用户错误,我不知道),升级后 client_restrictions 行丢失。正在恢复它...
submission inet n - n - - smtpd
-o smtpd_recipient_restrictions=
-o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o smtpd_client_restrictions=permit_mynetworks,reject
...解决了“从任何地方发送”的问题。