在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行为会自动拒绝,所以我无法find一个合适的smtpd_sender_restrictions序列来完成我的上述策略。 有任何想法吗?

你将需要一个限制类。 将$ 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 ...