postfix白名单黑名单

说明:
虽然通过上篇postfix增加spf过滤可以过滤掉很多伪造域名的邮箱。但如果对方没有txt域名解析记录,但又是合法的,又需要接收对方的邮件,那怎么办?
这时就需要通过配置postfix的白名单黑名单,让它跳过指定域名的spf认证。
postfxi里有2个完全不同的参数来实现白名单黑名单
check_client_access check_client_access hash:/etc/postfix/client_checks,通过客户端ip,ip段或主机名屏蔽
check_sender_access check_sender_access hash:/etc/postfix/sender_checks,通过判断发件人邮件地址(位于from段)屏蔽

这里一点很重要,check_client_access 和 check_sender_access 需要定义在smtpd_recipient_restrictions的前面。这样做,可能避免白名单,黑名单里定义的邮件地址,ip被postfix的其它过滤条件匹配到。smtpd_recipient_restrictions是从上到下匹配过滤的

具体:
1. 在main.cf的smtpd_recipient_restrictions应用白名单黑名单

# cat /etc/postfix/main.cf
smtpd_recipient_restrictions =
   check_client_access hash:/etc/postfix/client_checks,
   check_sender_access hash:/etc/postfix/sender_checks,
   etc....
   etc....

接下来,我们分别在白名单,黑名单上定义指定邮箱,ip采取的动作,ok或reject。ok为允许,reject为拒绝

2. 限制本系纺邮件使用人的ip,允许客户端哪些客户端可以进行SMTP连接

# cat /etc/postfix/client_checks
example.com               REJECT No spammers
.example.com              REJECT No spammers, from your subdomain
123.456.789.123           REJECT Your IP is spammer
123.456.789.0/24          REJECT Your IP range is spammer
321.987.654.321           OK
example1.com              OK

 
3. 限制域名,哪些邮箱地址可以发送到本系统,拒绝哪些域名发信到本系统。限制允许MAIL FROM命令发件人

# cat /etc/postfix/sender_checks
example.com              REJECT env. from addr any@example.com rejected
.example.com             REJECT env. from addr any@sub.example.com rejected
user@example.com         REJECT We don't want your email
example2.com             OK

上面2个文件只要有修改,记得运行postmap,以便postfix能能查找得到。记得reload postfix

4. 重启生效

# postmap /etc/postfix/client_checks
# postmap /etc/postfix/sender_checks
# /etc/init.d/postfix reload

 
附录:
原文:Blacklist & Whitelist with Postfix

发表评论

邮箱地址不会被公开。 必填项已用*标注