Postfix过滤垃圾邮件

在main.cf配置文件中的header_checks参数可以扫描邮件头,在邮件中查找特定的词语,包含这些词语的邮件将不被发送。下面是header_checks参数格式: header_checks=regexp:/etc/postfix/header_checks header_checks查找表规则表达式为: parttern action 注:parttern是对字段头进行匹配的规则表达式
action是当parttern符合时候采取的动作,有三种
.REJECT----拒绝邮件;
.OK----接受邮件;
.IGNORE---不考虑邮件头中的头字段 例如:header_checks有如下格式:
/^Subject: make money/ REJECT
/^Subject: our valued customer/ REJECT 则会拒绝more money,our valued customer 标题的信笺。  
postfix还提供body_checks参数,该参数对邮件整体内容与文件中列出的词语进行匹配扫描,起用法与header_checks参数相同。 注意:body_checks消耗大量邮件系统处理时间,请谨慎使用。     POSTFIX 补充   『.』:代表任意字元 『*』:代表重复零个或多个前一个RE的字元,例如『.*』则代表任意零个或多个字元的意思; 『$』:代表这一行的最后一个字元必须要符合这个字元的意思, /规则/动作显示在登录档里面的讯息 请注意,要使用两个『 / 』将规则包起来喔!举个例子来说明:例如我想要(1)抵挡掉标题为A funny game的信件,(2)并且在登录档里面显示drop headerdeny,我可以这样写:
             /^Subject:.*A funny game/ DISCARD drop header deny      *如果有两条以上的规则,那么就必须要使用if了,例如底下的案例:
             if /^Content/-Type:.*audio.*x/-midi/
             /^.*name/=.*/.scr/ DISCARD drop the header inavalid
             endif上面的意思是,当一封邮件里面同时包含『 Content-Type:audio.x-midi 』与『name=*.scr』时,该封信件就会被丢弃了!那么如果有三条以上的规则时呢?呵呵!就是使用多个if来进行啦!
             if /rule1/
             if /rule2/
             /rule3/动作显示字眼
             endif
             endif不过请特别留意,这个if ....endif的设定我仅在2.x版本上面试过,是没有问题的,不过,已经有很多的朋友提出说,在1.xx版本上面执行时会有问题发生,所以如果您的 Postfix不是2.xx版本,那么底下鸟哥列出的两个范例就参考看看即可,不可直接套用喔!关于动作有底下几个动作:              REJECT :将该封信件退回给原发信者;
             WARN :将信件收下来,但是将该封信的基本资料记录在登录档内;
             DISCARD:将该封信件丢弃,并不给予原发信者回应!一般来说我是比较喜欢以DISCARD将信件直接丢弃的啦!

一、数据前过滤   数据前过滤是指在smtp会话中,data指令发送前进行的过滤。在这个阶段,有四种不同子阶段的过滤:smtp连接时过滤、helo/ehlo指令过滤、mail from指令过滤和rcpt to指令过滤。根据这四个子阶段接收到的信息的不同,他们也分别称作smtp客户端限制、helo/ehlo主机名限制、发送者地址限制和接收者地址限制。   过滤默认是在rcpt to指令后生效的,这是因为一些windows上的邮件客户端不处理在rcpt to指令前的过滤动作。能通过将smtpd_delay_reject设置为no来使过滤动作即时生效。这个参数还影响了在不同的指令上能使用的过滤规则参数。   1、过滤规则   这四个子阶段的过滤是分别通过四个设置语句来指定过滤规则的。他们都接收一系列的规则参数列表,参数间能用空格或逗号分隔开。在默认状态下smtpd_delay_reject的值是yes,他们能接受所有支持的规则,不过需在rcpt to指令后才能全部生效;如果把smtpd_delay_reject设置为no,他们只能接受五个公共的规则参数、之前子阶段的过滤规则参数和该子阶段的规则参数。   他们接受的公共的规则参数如下: o permit 允许该连接进行。该规则通常置于规则列表的最后面使规则更清晰。 o defer 通知客户端目前不能继续会话,稍后再进行smtp连接请求。这常用于服务器需要进行一些dns检查,不过(由于dns查询超时)没有及时获得结果时,通知客户端稍后再进行连接。该规则通常置于规则列表的最后面使规则更清晰。 o reject 拒绝该连接请求。在这个阶段就断开了连接,有效的节约了垃圾邮件造成的带宽和处理能力的浪费。该规则通常置于规则列表的最后面使规则更清晰。 拒绝动作默认不会在匹配了拒绝规则后就即时断开连接,而是在rcpt to指令处理完之后再断开的,这是由于一些windows上有缺陷的邮件程式不处理在rcpt to指令前的发回的拒绝状态码。能通过smtpd_delay_reject设置为no来即时发送拒绝状态码断开连接。 reject_code指定了拒绝的返回状态码(默认是554)。 o warn_if_reject 改动其后规则的拒绝动作为警告,即如果其后存在满足拒绝的条件,并不实际拒绝,而是发出一条警告信息(reject_warning)到日志文件中(通常是/var/log/maillog)。他常用于在实际运行的邮件服务器上测试邮件过滤规则。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值