服务器 频道

限制垃圾邮件 让邮件服务器减负

  【IT168 服务器学院】Internet发展的今天,电子邮件已经成为信息时代的主要通信工具之一。它的方便快捷费用低廉、与地理位置无关的特性加快了信息的流动和交互。但在电子邮件为人们到来许多快捷、方便的服务时,也带来了很多干扰因素,我们每天被迫删除大量的垃圾邮件,严重影响工作效率。许多企业投入了高额设备服务器来处理邮件,但还是得不到高效率的工作,甚至于有时服务器瘫痪,是什么引起这些现象,是垃圾邮件。

  垃圾邮件对企业和个人造成了严重的危害,但目前,其发展势头依然没有被彻底控制的迹象。阻止垃圾邮件,应该从源头做起,至少是在企业的电子邮件服务器上就能够阻挡绝大多数垃圾邮件到个人端。在这里介绍几种限制垃圾邮件的方法。

  一、SMTP认证

  SMTP认证是针对无限制转发采取的措施。所谓无限制转发,就是任何人都可以使用你的服务器发送邮件,一方面隐藏了真实的来源,另一方面转移了资源成本:发送者可以使用一台简单的PC机借用你的强大的服务器一次发送几十万封信。OPEN RELAY 是由于历史的原因----电子邮件使用的发信协议SMTP(简单邮件传输协议)不需要进行任何身份验证导致的邮件服务器的安全缺陷,虽然目前绝大多数邮件服务器都具有关闭或限制OPEN RELAY的功能,(有的需要更新到某个版本之后,有的需要打补丁。)但仍有很多企业没有对邮件转发做任何限制,导致大量垃圾邮件通过邮件服务器转发。采用SMTP认证,用户在发信时必须提交口令,只有通过服务器认证的用户才能发送邮件,这样极大的阻止了别人利用你的服务器传播大量的垃圾邮件。

  你可以通过以下方式测试服务器是否可以被别人中继,(黑体为输入的命令)

  $ telnet mailhostname或IP地址 25 #第一步

  Trying IP地址...

  Connected to IP地址.

  Escape character is ''^]''.

  220 mail.test.gov.cn ESMTP Sendmail 8.12.9/8.12.9; Wed, 7 Apr 2004 17:20:47 +0800 (CST)

  mail from: user1@domainname1 #第二步。User1为非本服务器用户,domainname1为非本服务器域名

  250 2.1.0 user1@domainname... Sender ok

  rcpt to:user2@domainname2

  250 2.1.5 user2@domainame2... Recipient ok

  data

  354 Enter mail, end with "." on a line by itself

  如果可以顺利的到这一步,已经说明你的服务器有很大的漏洞可以被别人作为中继服务器。否则服务器会显示-ERR authorization first。

  二、邮件地址或域名过滤。

  虽然采用SMTP认证可以阻止别人利用你的服务器发送大量垃圾邮件,但阻止不了接受垃圾邮件,但我们可以采用邮件地址或域名过滤的方法阻止垃圾邮件,如果使用的邮件服务器是sendmail,可以采用以下步骤:

  首先定位sendmail.cf文件,默认的存放位置是/etc/mail

  拷贝sendmail.cf到一个安全目录。

  在/etc/mail目录下创建以下文件。

  Spammers.txt,该文件是被你服务器所拒绝的邮箱地址列表。

  Spamdomain.txt,所拒绝的主机或域名列表。

  Relaydomain.txt,允许可以转发信的主机或域名列表(除此之外的拒绝)。

  How to edit sendmail.cf

  下来就该配置sendmail.cf,要将过滤域名与邮箱的代码信息插入到sendmail.cf 中,而且必须插入到准确的位置,如果插入位置错误,邮件服务会异常或忽略此段设置。插入位置如下所示:

  ### Ruleset 0 -- Parse Address ###

  ######################################

  Sparse=0

  R$* $: $>Parse0 $1 initial parsing

  R<@> $#local $: <@> special case error msgs

  R$* $: $>ParseLocal $1 handle local hacks

  R$* $: $>Parse1 $1 final parsing

  #

  # Parse0 -- do initial syntax checking and eliminate local addresses.

  # This should either return with the (possibly modified) input

  # or return with a #error mailer. It should not return with a

  # #mailer other than the #error mailer.

  #

  SParse0

  R<@> $@ <@> special case error msgs

  从该位置开始插入过滤信息的代码

  过滤邮箱地址和站点

  将以下的代码插入到sendmail.cf的特定位置,这些配置代码就开启了sendmail服务器过滤的功能。

  #############################################
########################

  # Ruleset check_mail - Stop Spammers (see http://www.vix.com/spam/) #

  ##############################################
#######################

  # spam site list files

  F{SpamDomains} /etc/mail/spamdomains.txt

  F{Spammers} /etc/mail/spammers.txt

  Scheck_mail

  R<$={Spammers}> $#error $@ 4.7.1 $: "471 We don''t accept junk mail"

  R$={Spammers} $#error $@ 4.7.1 $: "471 We don''t accept junk mail"

  R$* $: $>3 $1

  R$*<@$*$={SpamDomains}.>$* $#error $@ 4.7.1 $: "471 We don''t accept junk mail from your domain"

  R$*<@$*$={SpamDomains}>$* $#error $@ 4.7.1 $: "471 We don''t accept junk mail from your domain"

  R$* $@ ok

  R$* $#error $@ 4.1.8 $: "418 can''t resolve your name, check your DNS"

  Spammers.txt文件由邮箱地址组成,格式如下:

  company1@spamsite.com

  company2@spamsite.com

  这种方法只是滤掉了特定的邮箱地址,当然了不能完全遏止住垃圾邮件,因为重新创建新的邮箱地址及其容易。

  在spamdomain.txt中,列举的是主机的ip地址或域名,格式如下:

  spammer.spamsite1.com

  spamsite2.com

  拒绝整个域的邮件产生的威力远大于对单个邮件的拒绝,但是会有一个弊端,可能会拒绝了一个合法的邮件,如果你接到合法用户的投诉,抱怨他不能向你的域发信,那么你只能告诉他,他们的服务器允许大量的垃圾邮件转发,只能建议他,向他们的系统管理员提出这点,并尽快能改正这一做法。记住,每次sendmail.cf文件的更改必须重新启动sendmail服务才可能生效。

  Qmail邮件服务器由于其安全、可靠、高效、简单,越来越受用户的喜欢,所以它的应用也越来越广泛。在/var/qmail/control(Qmail默认安装目录)下建立badmailfrom文件,将要拒收的邮箱地址写入,每条记录为一行,如:333@spam.com,这样所有来自333@spam.com的邮件都会被服务器拒收。可以采用软件加入拒收的ip地址,如果操作系统是linux ,还可以采用ipchain或iptables 来拒收。

  Ipchain拒收:

  Ipchain -A INPUT -p tcp -s 服务器要拒收的ip地址 -d服务器地址 25 -j DENY

  Iptables 拒收:

  Iptables -A INPUT -p tcp -s 服务器要拒收的ip地址 -d服务器地址 -dport 25 -j \DROP

  不管是sendmail或qmail 都可以采用第三方的实时黑洞列表。国际上的反垃圾邮件组织(如MAPS、ORBS、SpamCop等)都提供IP地址数据库(或黑名单),其中以RBL(Realtime Blackhole List)形式最为常见。垃圾邮件地址黑名单以DNS记录的形式存储在DNS服务器中,可以配置邮件服务器订阅RBL的黑名单,邮件服务器在收到SMTP的请求后用源发的IP地址实时检索RBL,如果该IP地址在RBL黑名单中则拒绝接收。

  三、智能化的过滤机制

  智能化过滤机制为现在大多数的邮件网关过滤软件所采用,可以分特征过滤,内容过滤,病毒过滤。特征过滤,是指根据邮件的信息特征进行过滤,也就是说对垃圾邮件进行大量的学习,掌握起基本规律,对垃圾邮件来说,它可能包含以下特征:邮件报头发送者的信息由一长串数字组成;邮件报头的地址栏开头或结尾处往往由数字组成,或同时含有数字和字母; 没有Reply-To:项或该项后面为空; 伪造发件人,SMTP命令里面的Mail From和信体里面的From不一致;信头有3个以上的Recived; Sent To: 后面有以下几种形式:一个陌生的邮箱地址、地址栏为空、邮件列表地址而不是单个收件人的邮箱地址;From: 和 To: 后的邮箱地址相同; 邮件报头里含有过多的 CC: 或 BC: 项;To: 或CC: 包含好多相同的用户名。内容过滤是指对邮件的正文内容,根据关键字进行过滤,邮件正文TEXT文本过滤,邮件正文HTML文本过滤等。贝叶斯(Bayesian)算法不失为一种很好的过滤方法,贝叶斯算法是基于内容学习的一种统计算法,所以算法本身就要求对很多已经确定是黑邮件和白邮件的样本库进行学习,它从百万级量的垃圾邮件学习中总结垃圾邮件的特征,而且定期需要学习改变新的垃圾邮件特征。病毒过滤是指对所有进入邮件系统的邮件进行病毒查杀。过滤的对象包括:邮件正本中可能包含的脚本病毒,邮件正本中可能包含的宏病毒,邮件附件中可能包含的所有类型病毒,邮件附件中可能包含于ZIP压缩包中的所有类型病毒。

  "邮件指纹"技术作为一种反垃圾邮件的新技术越来越受到人们的青睐,这种新的技术给每封发送的电子邮件信息增加扩张了的报头信息。这种报头中会包含一种独特的签名信息,签名信息由相应的加密算法生成,这种算法基于电子邮件用户身份的特有识别信息以及邮件的时间识别信息等。外部电子邮件器通常返回原始信息的传输指令,称为"报头信息",其中包括新指纹的扩展信息和原始信息的一部分。这就允许服务器检测签名信息以确定电子邮件是合法的用户信息还是垃圾邮件制造者的伪造返回消息。其目的是利用邮件指纹组织垃圾邮件风暴。当然这种新技术不可能解决所有问题,但可以保证采用这种技术的邮件服务器免受垃圾邮件的淹没。

  垃圾邮件肯定不能完全制止,但是只要我们采取措施,一定会制止相当一部分垃圾邮件,这对internet网络明天能长久与健康的发展意义重大,让我们共同努力,还电子邮件一个有序的明天。

0
相关文章