Postfix 2.x:
直接在过滤条件中(如smtpd_recipient_restrictions )使用reject_rbl_client来拒绝黑名单连接:
smtpd_recipient_restrictions =...
reject_rbl_client rbl.anti-spam.cn,...
如果您想先测试一下RBL服务是否工作正常,可以在reject_maps_rbl指令和reject_rbl_client指令前加上warning_if_reject来改变默认的拒绝动作为警告(警告信息会在邮件日志中看到)。等确认工作正常后再去掉警告指令。 四、内容过滤
即使使用了前面诸多环节中的技术,仍然会有相当一部分垃圾邮件漏网。对此情况,目前最有效的方法是基于邮件标题或正文的内容过滤。其中比较简单的方法是,结合内容扫描引擎,根据垃圾邮件的常用标题语、垃圾邮件受益者的姓名、电话号码、Web地址等信息进行过滤。
更加复杂但同时更具智能性的方法是,基于贝叶斯概率理论的统计方法所进行的内容过滤,该算法最早由Paul Graham提出(http://www.paulgraham.com/spam.html),并使用他自己设计的Arc语言实现。这种方法的理论基础是通过对大量垃圾邮件中常见关键词进行分析后得出其分布的统计模型,并由此推算目标邮件是垃圾邮件的可能性。这种方法具有一定的自适应、自学习能力,目前已经得到了广泛的应用。最有名的垃圾邮件内容过滤是Spamassassin,它使用Perl语言实现,集成了以上两种过滤方法,可以与当前各种主流的MTA集成使用。内容过滤是以上所有各种方法中耗费计算资源最多的,在邮件流量较大的场合,需要配合高性能服务器使用。
反垃圾邮件中,内容过滤是非常重要的部分,在Postfix中有两种内容过滤:邮件头过滤和邮件内容过滤。 1)邮件头过滤
邮件头包括邮件头部信息和MIME头信息,要使邮件头过滤生效需要在main.cf中加入:
header_checks =regexp:/etc/postfix/checks/header_checks
mime_header_checks= regexp:/etc/postfix/checks/mime_header_checks
在这里我们使用的是标准正规表示式过滤规则,规则文件中的第一行都类似于如下行:
/^HEADER:.*content_to_act_on/ ACTION MESSAGE
/^HEADER:.*content_to_act_on/是正规表示式,ACTION是对满足正规表示式时所采取的动作,MESSAGE是该规则的说明,一般用于向客户端反回信息或用户邮件日志。常用的ACTION有:
REJECT 通知Postfix弹回邮件,这样邮件在进入你的邮件服务器前便被禁止 IGNORE 通知Postfix删除满足过滤条件的那部分内容 HOLD 通知Postfix将邮件保存在邮件队列中,以便管理对之进一步处理DISCARD 通知Postfix直接删除邮件,在这种情况下,服务器不对发送者返回任何信息,以便让发送端感觉邮件已经正常发送
下面是一些有用的例子:
/^Subject: .* /REJECT Spam Header Many Spaces
/^Subject: FreeMoney/ REJECT Spam Free Money Mails
/^Date:19[0-9][0-9]/ REJECT Spam past date
/name=[^>]*\.(bat|com|exe)/REJECT Spam Executable Attachements 2)邮件内容过滤
邮件内容过滤是指邮件的正文内容过滤,它是针对邮件正文中的文字进行过滤,其规则的用法和邮件头过滤一样,为了使用邮件内容过滤需要在main.cf中加入:
body_checks =regexp:/etc/postfix/checks/body_checks
下面是几个有用的规则:
/Free Money/ REJECTSpam Free Money in Body mails
/www.disallowdsites.com/REJECT Disallowed Sites
/Real Bad Words/REJECT Bad Words
需要提醒的是,与邮件头过滤规则不同的,邮件内容过滤规则中的正则表示式不区分大小写。
附:访问控制列表
访问控制列表可以限制客户端对邮件服务器的访问,main.cf中常用的访问控制如下:
smtpd_client_restrictions SMTPD客户端限制 smtpd_helo_restrictions SMTPD标识限制smtpd_sender_restrictions SMTPD发送者限制 smtpd_recipient_restrictions SMTPD接收都限制
以下是访问控制列表使用的示例:
smtpd_client_restrictions = check_client_accesshash:/etc/postfix/checks/access_client
smtpd_helo_restrictions = check_client_accesshash:/etc/postfix/checks/helo_client
smtpd_sender_restrictions = check_client_access hash:/etc/postfix/checks/sender_client
smtpd_recipient_restrictions = check_client_accesshash:/etc/postfix/checks/recipient_client
访问控制表是一个hash表,其中每一行就是一条控制项,如下:
spammer.com 550 You can't sends mailfrom my server.
hacker@ 550You aren't allowed to send mail.
规则中,第一项是规则内容,第二项是对满足规则时所采取的行动,第三项是返回给客户端的信息。
其中第一条表示禁止任何spammer.com上的用户发送邮件,第二条表示禁止任何用户名为hacker的用户发送邮件。
参考网址:
[1]: postfix邮件服务器的关键安全策略
http://netsecurity.iyunv.com/art/200912/166847_1.htm
[2]: 带smtp认证的postfix配置 http://www.mailwhy.com/yjfwq/ps/303.html
[3]: Postfix 邮件服务器中应用 RBL 的设置方法: http://www.why100000.com/show_answer.asp?autoid=1350&Path=_email
[4]: Postfix反垃圾邮件简介 http://www.mailwhy.com/yjfwq/ps/3026.html
Amailexchanger record(MX record) is a type ofresource recordin theDomain Name Systemthat specifies a mail server responsible for acceptingemailmessages on behalf of a recipient's domain and a preferencevalue used to prioritize mail delivery if multiple mail servers are available.The set of MX records of a domain name specifies howemailshould be routed with theSimple Mail Transfer Protocol.