PostFix黑名单configuration

我使用Dovecot / IMAP使用PostFixbuild立了一个基本的电子邮件服务器。 但是我面对黑名单设置的一些问题。

下面是我的postfix main.cf

smtpd_recipient_restrictions = check_sender_access mysql:/etc/postfix/blacklist.cf reject_unauth_destination 

blacklist.cf

 user = mailuser password = mailuser2011 hosts = 127.0.0.1 dbname = mailserver query = SELECT 'REJECT' FROM blacklist WHERE email='%s' AND id=( SELECT id FROM virtual_users WHERE email='%u') 

我的SQL表有2列黑名单。 即idemail ,其中id是个人用户,email是黑名单地址。

我想要做的是从数据库中检索地址匹配,并参考邮件中的收件人。 如果我将电子邮件值硬编码到数据库中存在的东西,它将能够拒绝来自被阻止的用户的邮件。

但是,如果我使用%u (我认为它指的是收件人),则根本无法阻止。

Postfix中的查找表是键值查找。 这意味着你有一个键,并在查找后得到一个值。 在你的情况(check_sender_access)的关键是发件人; 只有发件人。 所以你有两个密钥(发件人和收件人)的要求不能用Postfix来完成。

要解决这个问题的唯一方法就是通过策略委派来实现查询 ,这里有多个键(发件人,收件人,IP,主机名,helo,…)。

但另一方面,依靠发件人地址是一个非常糟糕的主意,因为这是伪造的最简单的东西。