在 postfix 中如何有条件地执行 check_sender_access

在 postfix 中如何有条件地执行 check_sender_access

我正在为 2 个虚拟域提供服务:domain1.org、domain2.org。我想执行以下策略:

如果客户端连接来自 $mynetworks 中的 IP 地址那么我想仅允许邮件为此发件人地址域属于到我的一个域名。

如果客户端连接来自任何其他 IP 地址那么我想仅允许邮件为此发件人地址域不属于到我的一个域名。

为此有两个哈希访问文件(sender_for_local_clients 和 sender_for_remote_clients)

sender_for_local_clients 包含

domain1.org OK
domain2.org OK

sender_for_remote_clients 包含

domain1.org REJECT
domain2.org REJECT

但我不知道如何在 smtpd_sender_restrictions 指令中将它们组合起来。部分问题在于 OK 操作不会自动允许,而 REJECT 操作会自动拒绝,因此我找不到合适的 smtpd_sender_restrictions 序列来实现上述策略。有什么想法吗?

答案1

您需要一个限制类来实现这一点。将 $mynetworks 的内容复制到 CIDR 映射,例如 cidr:/etc/postfix/local_clients,如下所示:

# local networks
192.168.0.0/24 local_senders

smtpd_restriction_classes = local_senders
local_Senders = check_sender_access hash:/etc/postfix/sender_for_local_clients, reject

smtpd_recipient_restrictions = 
 ...
 check_client_access cidr:/etc/postfix/local_clients
 ...
 check_sender_access hash:/etc/postfix/sender_for_remote_clients
 ...

相关内容