我已经使用 MYSQL 和以下选项在 postfix 中定义了全局白名单:
smtpd_recipient_restrictions =
reject_invalid_hostname,
check_client_access mysql:/etc/postfix/client_whitelist
check_sender_access mysql:/etc/postfix/sender_whitelist
check_recipient_access mysql:/etc/postfix/recipient_whitelist
permit_mynetworks,reject
内容/etc/postfix/client_whitelist
host = localhost:3306
user = root
password = password
dbname = postfix
query = SELECT restriction FROM client_whitelist WHERE client = "%s" AND status = "1";
mysql表
+---------------+-------------+--------+
| client | restriction | status |
+---------------+-------------+--------+
| 192.168.66.18 | OK | 1 |
| 192.168.66.92 | OK | 1 |
| 192.168.66.93 | REJECT | 1 |
+---------------+-------------+--------+
我有相同的发件人和收件人表。我的主要问题是我在 postfix 后面有多个域,我想在考虑哪个是接收者的情况下过滤客户端/发件人。例如:
Mail from 192.168.66.92 and sender "[email protected]" IS ALLOW to "[email protected]"
Mail from 192.168.66.92 and sender "[email protected]" IS NOT ALLOW to "[email protected]"
Mail from 192.168.66.18 IS ALLOW for recipient or domain "domain1.com"
Mail from 192.168.66.18 IS NOT ALLOW for recipient or domain "domain2.com"
有什么办法可以在 postfix 中实现这个吗?我一直在谷歌搜索但没有运气。
另一方面,我正在考虑放置一个“后缀代理”以重定向到另一个后缀实例,并且每个实例都会过滤每个域。但是我不确定这种环境的性能,即使它是可能的。
这在一次访问检查中是不可能的,因为它只提供一个值作为输入(根据您使用的访问检查,可以是客户端、发件人或收件人),但不能超过一个。
这是后缀访问表工作方式所固有的。
您可以通过使用像 postfwd 这样的策略服务(它可以一次访问所有这些值)或使用限制类来解决这个问题。
例如,这允许您在客户端上实施限制类并返回访问检查作为结果,而不是 OK 或 REJECT。
有关访问映射和可能结果的更多详细信息,请参阅访问手册页。
请注意,如果“白名单”同时包含 OK 和 REJECT 作为结果,则它不是您所拥有的有用术语。