Postfix (3) 反垃圾邮件的措施(1)
2011-08-03 17:51
197 查看
我们知道在现在网络环境中, 存在大量的spam。
就笔者目前负责的一个在线邮件安全系统,每天为客户挡掉的spam就有200M 这么多, 而且这还是已经下降了60%的结果,一年前, 大概每天spam的数量在1B左右。
庞大的垃圾邮件, 浪费的大量的网络带宽与磁盘空间。 如何来处理垃圾邮件呢。
一般来说, 有以下几种选择
1. 在SMTP对话中,当场拒收垃圾邮件。 这也在第一时间将垃圾邮件拒之门外, 但是也有可能会有合法邮件被认为是垃圾邮件而被处理掉, 如果客户不能接收这样的损失, 可以采用方法2
2. 暂时将可疑的邮件存储在另外的专用的邮箱中, 再研究可选的程序来处理他们。 比如定期检阅被 集中起来的可疑邮件, 确定没有合法邮件之后,一并删除。
3. 将可疑的邮件打上某种特殊标记, 投递到用户的邮箱, 让用户收下后自行判断。 (microsoft的outlook exchange就使用的这种方法)
Postfix的挡信机制
1) 客户端判别规则
2)语法检查参数
3)内容检查
4)自定义规则
一、客户端判别规则
如下:
![](http://hi.csdn.net/attachment/201108/3/0_1312365164an4n.gif)
让我们来简单看一个完整的SMTP对话过程
![](http://hi.csdn.net/attachment/201108/4/0_1312431910tv1Q.gif)
![](http://hi.csdn.net/attachment/201108/4/0_1312431708dfzF.gif)
上面 0 对应是smtp_client_restriction过程, 这时已经知道了客户端的IP地址。 就可以做出接受或者拒收的决定。
连接成功后, 客户端发出 HELO命令, 就是1内容, postfix会依据smtp_helo_restriction来检查主机名。
3是smtp_sender_restriction的依据与smtp_recipient_restriction的依据
4 是已经经过了header check 与body check,进入下一跳了。
POSTFIX的限制条件分为三大类
1) 内置的条件, 名称是以permit_ 与 reject_开关的,不需要参数
2)自定义条件, 名称是以check_开头的,需要一个type:mapname自变量,mapname用来指定访问表的名称。
3)通用条件,它们没有额外的自变量,也不检查任何个信息,用来直接改变邮件的处理流程
对于内置的条件, 处理方式包括 OK(略过同一过滤规则的其余条件,继续下一个,直到所有的规则都完毕或者遇到REJECT), REJECT(立即拒收),DUNNO(看其他的结果)
如果整个的规则没有明确的结果(全部是DUNNO),默认是收下邮件。
当处理是REJECT,Postfix并不是立即拒收, 而是等到RCPT TO命令时,才会响应REJECT。如果想改变这种机制,让其立即RJECT, 在main.cf中,设置 smtpd_delay_reject=no就可以了
当我们新加入一个规则,想调试的时候,
1) 将soft_bounce设置为yes,这样服务器返回的5xx会自动转换为4xx,这样允许smtp client保留邮件以再次的尝试。
如果确定没有问题了, 再将其关掉。
2) 使用warn_if_reject,将原来的reject动作变成warn,留下log。
下面用一个例子还说明Postfix处理的过程 。
![](http://hi.csdn.net/attachment/201108/4/0_1312433881iXck.gif)
下一篇,将继续介绍,
就笔者目前负责的一个在线邮件安全系统,每天为客户挡掉的spam就有200M 这么多, 而且这还是已经下降了60%的结果,一年前, 大概每天spam的数量在1B左右。
庞大的垃圾邮件, 浪费的大量的网络带宽与磁盘空间。 如何来处理垃圾邮件呢。
一般来说, 有以下几种选择
1. 在SMTP对话中,当场拒收垃圾邮件。 这也在第一时间将垃圾邮件拒之门外, 但是也有可能会有合法邮件被认为是垃圾邮件而被处理掉, 如果客户不能接收这样的损失, 可以采用方法2
2. 暂时将可疑的邮件存储在另外的专用的邮箱中, 再研究可选的程序来处理他们。 比如定期检阅被 集中起来的可疑邮件, 确定没有合法邮件之后,一并删除。
3. 将可疑的邮件打上某种特殊标记, 投递到用户的邮箱, 让用户收下后自行判断。 (microsoft的outlook exchange就使用的这种方法)
Postfix的挡信机制
1) 客户端判别规则
2)语法检查参数
3)内容检查
4)自定义规则
一、客户端判别规则
smtpd_client_restrictions smtpd_helo_restrictions smtpd_sender_restrictions smtpd_recipient_restrictions smtp_dta_restrictions
如下:
![](http://hi.csdn.net/attachment/201108/3/0_1312365164an4n.gif)
让我们来简单看一个完整的SMTP对话过程
![](http://hi.csdn.net/attachment/201108/4/0_1312431910tv1Q.gif)
![](http://hi.csdn.net/attachment/201108/4/0_1312431708dfzF.gif)
上面 0 对应是smtp_client_restriction过程, 这时已经知道了客户端的IP地址。 就可以做出接受或者拒收的决定。
连接成功后, 客户端发出 HELO命令, 就是1内容, postfix会依据smtp_helo_restriction来检查主机名。
3是smtp_sender_restriction的依据与smtp_recipient_restriction的依据
4 是已经经过了header check 与body check,进入下一跳了。
限制条件 | 客户端提供的受检信息 |
check_client_access type:mapname | |
reject_rbl_client | 客户端的IP地址或者主机名 |
reject_rhsbl_client | |
reject_unknown_client | |
check_helo_access type:mapname | |
permit_naked_ip_address | |
reject_invalid_hostname | |
reject_not_fqdn_hostname | HELO 提供的主机名 |
reject_unknown_hostname | |
check_sender_access type:mapname | |
reject_non_fqdn_sender | |
reject_rhsbl_sender | Mail From提供的寄件人的邮件地址 |
reject_unknown_sender_domain | |
permit_auth_destination | |
permit_mx_backup | RCPT TO提供的收件人邮件地址 |
reject_non_fqdn_recipient | |
reject_unauth_destination | |
reject_unknow_recipient_domain | |
check_recipient_access type:mapname | |
reject_unauth_pipelining | Data命令 |
permit | 无条件批准 |
reject | 无条件拒绝 |
defer | 无条件延迟 |
warn_if_reject | 将原来的REJECT变成WARN |
1) 内置的条件, 名称是以permit_ 与 reject_开关的,不需要参数
2)自定义条件, 名称是以check_开头的,需要一个type:mapname自变量,mapname用来指定访问表的名称。
3)通用条件,它们没有额外的自变量,也不检查任何个信息,用来直接改变邮件的处理流程
对于内置的条件, 处理方式包括 OK(略过同一过滤规则的其余条件,继续下一个,直到所有的规则都完毕或者遇到REJECT), REJECT(立即拒收),DUNNO(看其他的结果)
如果整个的规则没有明确的结果(全部是DUNNO),默认是收下邮件。
当处理是REJECT,Postfix并不是立即拒收, 而是等到RCPT TO命令时,才会响应REJECT。如果想改变这种机制,让其立即RJECT, 在main.cf中,设置 smtpd_delay_reject=no就可以了
当我们新加入一个规则,想调试的时候,
1) 将soft_bounce设置为yes,这样服务器返回的5xx会自动转换为4xx,这样允许smtp client保留邮件以再次的尝试。
如果确定没有问题了, 再将其关掉。
2) 使用warn_if_reject,将原来的reject动作变成warn,留下log。
下面用一个例子还说明Postfix处理的过程 。
smtp_recipient_restrictions= permit_my_network reject_unauth_destination reject_invalid_hostname reject_unknown_sender_domain其处理流程如下:
![](http://hi.csdn.net/attachment/201108/4/0_1312433881iXck.gif)
下一篇,将继续介绍,
Postfix (3) 反垃圾邮件的措施(2)
(未完,待续。。。)相关文章推荐
- Postfix (3) 反垃圾邮件的措施(2)
- postfix反垃圾邮件
- postfix反垃圾邮件的方法
- postfix反垃圾邮件说明
- Postfix上的反垃圾邮件的四个方法
- postfix反垃圾邮件说明
- postfix 反垃圾邮件中使用 RBL
- postfix反垃圾邮件说明
- Postfix上的反垃圾邮件的四个方法
- Postfix上的反垃圾邮件的四个方法
- [ZT]postfix反垃圾邮件
- Postfix反垃圾邮件简介
- Postfix上的反垃圾邮件的四个方法
- RHEL5下构建LAMP+Postfix+Dovecot+SquirrelMail+Extmail+Extman+SpamAssassin防垃圾邮件(上)
- Postfix+dovecot+mysql构建邮件系统
- 在RHEL5下构建基于虚拟用户的Postfix邮件系统
- 数据库性能优化有哪些措施?
- 搭建postfix邮件服务器
- postfix milter简介
- 第三章:配置MTA-Postfix