postfix反垃圾设置

本文详细介绍了如何使用Postfix进行反垃圾邮件设置,包括smtpd_client_restrictions、smtpd_helo_restrictions、smtpd_sender_restrictions等多个字段的配置,以及reject_rbl_client、reject_rhsbl_client等限制条件的使用。通过设置访问表和检查策略,如check_client_access、check_sender_access等,实现对SMTP连接、HELO、邮件头和内容的严格控制,有效阻止垃圾邮件。

垃圾过滤字段:

smtpd_client_restrictions : SMTP链接,可依据客户端的IP或者主机名判断是reject还是accept

smtpd_helo_restrictions : HELO 显示送信方的主机名,可依据它判断是reject还是accept

smtpd_sender_restrictions : MAIL FROM 寄信人的邮件地址,可据此添加限制条件

smtpd_recipient_restrictions : RCPT TO 收件人的邮件地址,可据此添加限制条件

smtpd_data_restrictions : DATA  表示下面要发邮件

header_checks : TO *** FROM *** SUBJECT ***  邮件头限制条件

body_checks : content  邮件内容限制条件

SMTP对话过程中的各个阶段,如果都过,postfix收下邮件。

限制条件与接收检查的信息:

reject_rbl_client :客户端IP倒置后与RBL(实时黑名单)网域名称构成主机名称向DNS查询,若有(已经在黑名单中) 拒绝

reject_rhsbl_client  rblprovider.domain: 如果客户端的主机名在指定的网域rblprovider下有记录 拒绝

reject_unknown_client : 在SMTP client 通过socket建立连接时,postfix在DNS中查不到客户端IP对应的PTR记录(IP地址在DNS系统登记的主机名)+反向查找, 拒绝(unknown_client_reject_code(450))。

 

check_client_access type : mapname :DNS查出客户端IP地址的完整主机名之后去表中对照完成动作。

permit_naked_ip_address :

reject_invalid_hostname : 如果HELO命令提供的主机名无效 拒绝。invalid_hostname_reject_code默认501

reject_non_fqdn_hoshname :HELO命令不是RFC要求的完整主机名 拒绝(non_fqdn_reject_code(504))。

reject_unknown_hostname : HELO提供的主机名没有DNS A记录也没有MX记录 拒绝(unknow_hostname_reject_code 450),一般不是完整形式会被拒绝。

 

check_helo_access type:mapname :对比客户端在HELO命令中显示的主机名去表中对照完成动作。

reject_non_fqdn_sender : MAIL FROM寄信人地址的网域部分不是RFC要求的完整形式 拒绝(non_fqdn_reject_code(504))

reject_rhsbl_sender rblprovider.domain :收件人邮件地址在rblprovider.domain网域下有记录 拒绝

reject_unknown_sender_domain : MAIL FROM提供的邮件地址网域部分DNS A 或者MX无效 拒绝

 

check_sender_access type:mapname : 去表中对照RCPT TO收件人地址之后完成动作。

permit_auth_destination : 收件人位于postfix所辖(mydestination、inet_interfaces、virtual_mailbox_maps、virtual_alias_maps),OK

permit_mx_backup :

reject_non_fqdn_recipient : RCPT TO收信人网域部分不是RFC要求的完整形式 拒绝(non_fqdn_reject_code(504))

reject_unauth_destination : 收件人不在postfix所辖的域(由mydestionation定义),拒绝;relay_domains_reject_code 默认554。

reject_unknown_recipient_domain : RCPT TO提供收件人地址网域部分没有DNS A或者MX记录 拒绝 unknown_address_reject_code 450

check_recipient_access type:mapname :去表中对象MAIL FROM 发信人地址之后完成动作(OK、REJECT)。

reject_unauth_pipelining :拒绝 没确定服务器是否同意pipelining之前就开始流水线操作的邮件。(加速处理大宗邮件技术)

 

permit_mynetworks : 客户端的IP在mynetworks之列,OK

permit  :无条件批准

reject  :无条件拒绝

defer :无条件延时

warn_if_reject :拒绝动作改成警告(不能单独使用,需放在其他条件之前),一般用于测试新垃圾邮件。

 

header_checks 检查标题

mime_header_checks 检查标题MIME的相关字段

nested_header_checks 检查夹带附件的标题

body_checks 检查邮件正文

 

内置条件以permit_和reject_开头;自定义条件以check_*_access开头 type:mapname是自变量(访问表)。

内置条件的工作流程:permit通过即通过、reject拒绝即拒绝。

检查结果分为:DUNNO(默认通过) 、OK、REJECT

check_*_access动作:

OK、REJECT message、DUNNO、FILTER transport:nexthop(转交给指定filter)、HOLD message(没收,除非有动作领取)、DISCARD message(偷偷丢掉mail)、4xx message(缓解误判但会使MX备用系统充斥过多spam)、5xx message(永久拒绝)。

=======================================================================

简单例子1:

smtpd_helo_restrictions =

    check_helo_access hash:/etc/postfix/helo_access

    reject_invalid_hostname

其中 helo_access文件内容:

greatdeals.example.com      REJECT

oreillynet.com                          OK

客户端1:HELO example

查询check_helo_access找不到指定的example主机名接着检查oreillynet.com 也不符合 拒绝

客户端2:HELO greatdeals.example.com

查询check_helo_access对应的动作是REJECT所以 拒绝

客户端3:HELO oreillynet.com

查询check_helo_access对应的动作是OK所以 OK 不在检查smtpd_helo_restrictions项

客户端4:HELO mail.ora.com

查询check_helo_access找不到指定的example主机名接着检查reject_invalid_hostname,符合标准的规定的主机名,该项通过。

简单例子2:

电信警察spamlover;八卦部落spamhater 不同用户组用不同规则限定的极端情况。

smtpd_restriction_classes = spamlover, spamhater

spamhater = reject_invalid_hostname

                        reject_non_fqdn_hostname

                        reject_unknown_sender_domain

                        reject_rbl_client  nospam.example.com

限制条件比较苛刻。

spamlover = permit

限制条件宽裕。

建立一个访问表:per_user_ube

abelard@example.com            spamhater

heloise@example.com             spamlover

postfix设置:

smtpd_recipient_restrictions = permit_mynetworks

                                  reject_unauth_destination

                                  check_recipient_access hash:/etc/postfix/per_user_ube  

 #检查访问表 按照访问表继续过滤相应的限制规则。

简单例子3:

smtpd_restriction_classes = spamlover, spamhater

spamhater = reject_invalid_hostname

                        reject_non_fqdn_hostname

                        reject_unknown_sender_domain

                        reject_rbl_client  nospam.example.com

spamlover = permit

smtpd_helo_requried = yes

smtpd_client_restrictions =

                  check_client_access hash:/etc/postfix/client_access

smtpd_helo_restrictions =

                  reject_invalid_hostname

                  check_helo_access hash:/etc/postfix/helo_access

smtpd_sender_restrictions =

                  reject_non_fqdn_sender

                  reject_unknown_sender_domain

                  check_sender_access hash:/etc/postfix/sender_access

smtpd_recipient_restrictions =

                  permit_mynetworks

                  reject_unauth_destination

                  reject_non_fqdn_recipent

                  reject_unknown_recipient_domain

smtpd_data_restrictions =

                 reject_unauth_pipelining

header_checks = /etc/postfix/header_checks

body_checks = /etc/postfix/body_checks

主机名和发件地址很容易捏造。helo和sender阻挡不了太多邮件。

=================================================================================

访问表设置:

eg:

client_access内容:

10.157                REHECT

192.168.22.2     REJECT

example.com     REJECT

sender _access内容:

user1@examplemail.com     REJECT

user@                                        REJECT

hello.mail.com                         REJECT

用postmap转换成postfix查询的数据库格式:

#postmap /etc/postfix/client_access

#postmap /etc/postfix/sender_access

每次修改访问表时都运行上述命令

=================================================================================

字段设置:

smtp_delay_reject = no、yes:延迟reject的工作或者第一时间reject,一般在RCPT TO 之后发送reject ,考虑链接时间问题。

soft_bounce = yes、no:是否将原reject的5xx拒绝码变成4xx拒绝码。一般用来测试新垃圾邮件。

smtpd_helo_required = yes:SMTP协议的是否必须需要HELO,若YES 不打招呼 则拒绝。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值