在服务器上搭建一套邮件系统是简单的,但做好防守工作是困难的。很多用户经常抱怨每天处理的垃圾邮件比正常邮件还多,浪费了大量时间和精力。现在通过在电子邮件系统中建立垃圾邮件综合防范体系,通过五道过滤拦截措施,就会成功地把垃圾邮件过滤掉96%以上。并且垃圾邮件的错误识别率也低于千分之一。

一、反向DNS解析(PTR)

使用反向 DNS 解析(PTR)机制,可以基本确认邮件的来源是否合法。例如新浪通过smtp.vip.sina.com(对应IP 202.108.3.172)发送邮件,我们的邮件服务器在接受新浪发来的邮件过程中,去进行反向DNS解析,查询202.108.3.172该IP是否有对应的固定域名,如果查询成功说明该IP确实是互联网上一个具有固定IP地址的发信服务器。现在国际上的反垃圾邮件组织普遍要求发信邮件服务器需要设置PTR记录,以此来确认这台邮件服务器是否是在Internet上稳定存在的服务器。大家应该为自己的发信邮件服务器设置好PTR记录,以免发生被国外拒收邮件的情况。如果你从ISP运营商处拿到的不是一个完整的C类网段,你就需要向ISP提交添加PTR记录的申请。一般ISP可以在二周内完成。如果你的邮件系统是租用的,则你需要向出租方提出申请。

注意:由于国内绝大多数中小型公司的邮件系统都没有设置PTR,所以,在邮件系统中应该把反向DNS解析结合其他措施进行拦截,而不应该直接拦截。一般可以把PTR用于判断该邮件是否是正常的邮件,用于减少垃圾邮件的误判率。

二、黑名单、白名单、实时黑名单(RBL)

黑名单技术是最早出现的一种反垃圾邮件技术,一般的邮件服务器都有该功能。黑名单技术的原理是确定已知垃圾邮件制造者及其ISP的域名或IP地址,然后将其整理成黑名单。邮件服务器在接收邮件时,拒绝任何来自黑名单上的垃圾邮件制造者的邮件。黑名单服务是基于用户投诉和采样积累而建立的、由域名或IP组成的数据库。实时黑名单是指网上提供的即时更新的黑名单数据库,其具有很强的时效性。目前国际上提供免费第三方实时黑名单的组织有不少,根据本人多年的使用体验,推荐下列组织Spamhaus、Spamcop、Dsbl、Sorb,其中Spamhaus和Spamcop的黑名单数据库更庞大,更新更及时。国内的中国反垃圾邮件联盟也提供类似的服务。这些数据库保存了频繁发送垃圾邮件的主机名字或IP地址,供邮件服务器中的邮件传输代理(MTA)进行实时查询,以决定是否拒收相应的邮件。根据四年来的使用经验,靠RBL实时黑名单可以过滤拦截60%以上的垃圾邮件。

黑名单技术可能会拒绝掉来自某站点的正常邮件,从而造成邮件不能正常的投递。例如,国内的大型邮件系统运营商新浪、163、搜狐等发信服务器的IP地址经常会进入国外的黑名单,甚至Hotmail、Yahoo的发信服务器IP地址也会进入黑名单,这时就需要白名单,我们把国内外大多数大型邮件系统的IP地址列入白名单,从而防止错误拦截。

为了降低垃圾邮件的误判率,我们对于上了黑名单的邮件并不直接拦截,而是对该邮件打分,一般打5分较适宜,再结合贝叶斯统计Spamassassin的分数进行综合评定,这样可以把垃圾邮件过滤掉90%,同时减少误判率。

如果你的邮件服务器的IP地址上了第三方组织的黑名单也不必过分担心,可以到该组织网站自助删除黑名单数据库中的IP地址或写申诉信说明原因。自助删除IP地址一般4小时内生效,申诉信方式一般一天内解决。

三、灰名单GrayList

灰名单不是针对邮件进行内容过滤,而是基于大多数垃圾邮件对一封垃圾信只发送一次,发送失败不重试的特点。对于垃圾邮件发送人来说,他要发的邮件至少百万封以上,如果发送失败重试的话,会大大影响发送速度和系统资源。灰名单技术只是利用了一个简单的smtp协议——smtp 450 错误。对于第一次接受到的邮件打上时间戳,并且拒绝该邮件,拒绝信息是“服务暂时不可用,请稍候再次发送”。如果是正常的邮件服务器发送的邮件,那么,一段时间后会自动第二次发送。第二次发送接收到后,进行时间戳的对比,如果超过了配置中设置的延迟时间,就会自动接收该邮件,否则就会拒绝。

在我们的邮件服务器中,把内网的IP地址网段加入白名单,这样,内网发信及内部员工发信就不受影响。根据经验,灰名单可以拦截40%左右的垃圾邮件。

四、贝叶斯智能分析

贝叶斯智能分析听起来高深莫测,事实上,这个智能分析就是一个统计学上贝叶斯定律的应用而已。这 个智能分析其实是将IP阻挡名单、域名阻挡名单、垃圾邮件指纹检查、统计规律结合起来,从而实现反垃圾邮件的智能分析。

最著名的利用贝叶斯统计算法的反垃圾邮件系统是Spamassassin,在很多邮件系统中可以集成该模块功能。据统计,利用Spamasassin可以过滤70%以上的垃圾邮件,且误判率极低。

为了提高贝叶斯统计反垃圾邮件系统的准确性,平时应该收集误判的邮件提交系统进行自学习。误判的邮件包含两类,一类是把正常邮件误判为垃圾邮件,另一类是把垃圾邮件误判为正常邮件。根据我们的经验,Spamassassin的评分值达到11,判断为垃圾邮件比较合适。

五、SPF验证电子邮件发件人地址技术

SPF是一种较好的垃圾邮件解决方案,旨在应对垃圾邮件中的一个特别问题——发送方假冒问题。很多垃圾邮件假冒是Hotmail、Gmail、新浪、163、Yahoo等的邮件运营商发送的,以前很难辨别,现在有了SPF技术就能很方便地辨别。而且越来越多的域已经发布了各自的SPF记录。

SPF原理分为两步:第一,发送方向接收方发送一封电子邮件。第二,邮件接收服务器接收电子邮件并执行如下操作:检查哪一个域声称发送了该邮件并检查该域DNS中的SPF记录;确定发送服务器的IP地址是否与SPF记录中的某个已发布IP地址相匹配;对电子邮件进行打分:如果IP地址匹配,则邮件通过身份验证并获得一个正分。如果IP地址不匹配,则邮件无法通过身份验证并获得一个负分。然后,结合其他的的防垃圾邮件筛选策略进行综合判断。

例如,一份邮件声明是来自Hotmail的,其IP地址为111.23.45.67,接收方邮件服务器通过DNS查询Hotmail发布的SPF记录,而在Hotmail发布的SPF记录中该IP地址不属于他们的发信服务器,这样,很明显地说明了该邮件是冒充Hotmail发送的垃圾邮件,直接拒绝就行。

SPF是一个非常有效的反垃圾邮件方案,其在smtp握手通信的时候就进行检查,而不是在收完信后才检查,这样可以减少带宽的消耗。

通过检查SPF记录,可以把绝大多数冒充大型邮件运营商的垃圾邮件直接拦截。据统计,可以减少垃圾邮件10%。随着使用SPF方案的用户越来越多,效果会越来越好。微软的反垃圾邮件Send ID方案和SPF方案相类似,建议可以结合使用。

六、其他(减少无效过滤)

反垃圾邮件系统占用大量系统资源,一封信要经过7至8道不同方案的分析过滤拦截。所以,如何减少无效过滤也非常关键。

对大于200K的邮件不进行任何分析过滤处理。由于垃圾邮件发送商要在短时间内发送成百上千万封的邮件,所以,过大的邮件会占用大量的带宽,使发送速度减慢。

经统计,绝大多数垃圾邮件都是小于100K的,所以设置200K是一个比较合适的参数。

一些通过群发软件发送的垃圾邮件有时会在邮件头中的X-mailer项标明群发软件的名称,例如JiXing、Jp-GroupMailer、Jpfree。可以在系统中设置过滤条件,如果X-Mailer包含有那些群发软件的名称的邮件,可以判断为垃圾邮件,直接删除即可。