知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

设置Linux邮件服务器防垃圾策略

发布时间:2014-09-05 17:27:15作者:知识屋

邮件系统是Linux网络应用的重要组成部分。完整的邮件系统包括底层操作系统、邮件传送代理MTA、邮件分发代理MDA和邮件用户代理MUA。

  目前来看,Linux邮件系统面临的主要危险是垃圾邮件、Linux病毒和DoS攻击。本文将重点介绍Linux邮件服务器的防垃圾邮件策略。

  垃圾邮件的防范

  目前广泛使用的防垃圾邮件技术有:

  (1)SMTP用户认证:一种常见并十分有效的方法,在邮件传送代理(MTA)上对来自本地网络以外的互联网的发信用户进行SMTP认证,仅允许通过认证的用户进行远程转发。这样既能够有效避免邮件传送代理服务器为垃圾邮件发送者所利用,又为出差在外或在家工作的员工提供了便利。如果不采取SMTP认证,在不牺牲安全的前提下,设立面向互联网的Web邮件网关也是可行的。此外,如果SMTP服务和POP3服务集成在同一服务器上,在用户试图发信之前对其进行POP3访问验证(POP before SMTP)是一种更加安全的方法。

  (2)关闭Open Relay:现在依然存在并非少数的开放Open Relay服务器,所以,关闭Open Relay功能对反垃圾邮件效果显著。

  (3)实时黑名单过滤:前面介绍的防范措施对使用自身合法域名的垃圾邮件无效,这时可以使用黑名单服务列表。针对每个进入的邮件信息,MTA程序获取远程服务器的地址,并且查询远程互联网服务器对该地址进行认证。如果该地址在垃圾邮件主机列表中,则MTA拒绝接受这些邮件信息。其中使用BRL认证过程如图1所示。

图1

  (4)内容过滤:MTA、MUA、MDA过滤有自己的特点,通常几种方法同时使用。

  ◆ MTA过滤:大部分MTA提供某种过滤,因为它们在电子邮件的前端,通常更容易控制邮件的到达。

  ◆ MDA过滤:大多数MTA不对邮件内容过滤,对信件内容的过滤就由MDA来完成,许多复杂的过滤器都是使用MDA过滤器做的。

  ◆ MUA过滤:MDA位于邮件服务器上,而许多用户希望从邮件界面管理过滤规则,因此需要MUA过滤。主流的MUA如Windows下的Outlook、Foxmail和Linux下的Evolution都带有过滤功能。

  ◆ 专用工具:如SpamAssassin。

  ◆ 商业软件:如趋势科技IMSS 5.5(整合了垃圾邮件防治服务SPS)。

  应用实例

  Sendmail是RedHat Linux以及大多数类Unix操作系统的邮件传送代理,因此是目前配置最广泛的邮件服务器。下面以RedHat Linux 9.0使用的Sendmail为例,介绍上面几种技术应对垃圾邮件的危害。(1)关闭Sendmail的Relay功能

  所谓Relay,就是指别人能用这台SMTP邮件服务器给任何人发信,这样别有用心的垃圾发送者就可以使用这台邮件服务器大量发送垃圾邮件,而最后别人投诉的不是垃圾发送者,而是这台服务器,因此必须关闭Relay。

  其方法是:到Linux服务器的/etc/mail目录编辑access文件,去掉“*relay”之类的设置,只留“localhost relay”和“127.0.0.1 relay”两条即可。注意,修改access文件后还要使用如下命令使修改生效:

  makemap hash access.db < access

  (2)在Sendmail中添加RBL功能

  RBL(Realtime Blackhole List)是实时黑名单。常用的RBL服务器地址有relays.ordb.org、bl.spamcop.net、dun.dnsrbl.net及dnsbl.sorbs.net等。查询和删除RBL中的IP地址可以去http://openrbl.org和http://ordb.org。

  RBL将收集到的专发垃圾邮件的IP地址加入他们的黑名单,只要在Sendmail中加入RBL认证功能,就会使邮件服务器在每次收信时都自动到RBL服务器上去查实,如果信件来源于黑名单,则Sendmail会拒收邮件,从而使单位的用户少受垃圾邮件之苦。

  在Sendmail中添加RBL认证,需要对Sendmail.mc添加以下内容:

  FEATURE(`dnsbl,`relays.ordb.org,`″Email blocked using ORDB.org - see″)

  最后执行“m4 Sendmail.mc> Sendmail.cf”和“service Sendmail restart”两条命令,使有关Sendmail的修改生效。(3)打开Sendmail的SMTP

  ◆ 服务器端设置

  关掉了Relay功能,用户就不能使用客户端软件发信,此时需要Sendmail配置,开放其SMTP认证功能,再在客户端如Outlook Express、Foxmail等当中打开SMTP认证,这样就可以正常SMTP服务器了。在

  RedHat Linux 9.0中配置SMTP认证非常方便,首先用命令检查有没有安装cyrus-sasl软件包。

  #rpm -qa grep sasl

  cyrus-sasl-2.1.10-4

  cyrus-sasl-plain-2.1.10-4

  cyrus-sasl-devel-2.1.10-4

  cyrus-sasl-md5-2.1.10-4

  如果没有安装的话,用命令“rpm -ivh cyrus-sasl*.rpm”安装所有软件包,接着打开/etc/mail/Sendmail.mc文件,将如下命令:

  dnl TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN)dnl

  dnl define(`confAUTH_MECHANISMS,`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN)dnl

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1,Name=MTA)dn1

  修改为:

  TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN)dnl

  define(`confAUTH_MECHANISMS,`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN)dnl

  DAEMON_OPTIONS(`Port=smtp,Addr=192.168.1.200,Name=MTA)dn1

  然后产生cf文件,并进行测试:

  #m4 Sendmail.mc > Sendmail.cf

  #service Sendmail restat

  # Sendmail d0.1 -bv root  grep SASL

  NETUNIX NEWDB NIS PIPELINING SASL SCANF STARTTLS TCPWRAPPERS #修改成功标志下一步测试,以Telnet到TCP 25 端口的方式:

  #telnet localhost 25

  ehlo localhost

  注意有没有以下的信息出现:

  250-xxxxxxxx

  250-xxxxxxx

  250-AUTH LOGIN CRAM-MD5 DIGEST-MD5

  250-xxxxxx

  Outlook Express和Foxmail使用LOGIN认证,Netscape Mail使用PLAIN认证。

  ◆ 客户端设置

  在Outlook Express主窗口,单击“工具(T)”选单,在下拉选单中选中“账号(A)”。在“Internet账号”窗口中,选定某一邮件账号,单击“属性(P)”。在弹出的账号“属性”窗口中,选择“服务器”选项卡,选中“我的服务器要求身份验证(V)”。单击旁边的“设置(E)”按钮,在“外发邮件服务器”窗口中选择“使用与接收邮件服务器相同的设置(U)”。按“确定”后,设置便完成了。

  (4)使用专用工具防止垃圾邮件

  SpamAssassin的安装过程比较简单,这里就不赘述了。

  其配置过程如下:

  SpamAssassin预设了许多默认规则,可以在/usr/share/spamassassin下找到,用户想添加自己的规则,可以配置通过/etc/mail/spamassassin/local.cf文件实现。要在其中添加白名单(即可以确信不会发送垃圾邮件的发件人列表)。设置代码如下:

  whitelist_from_rcvd people@basic.com

  whitelist_from_rcvd @ people.com

  以上两条规则将people@basic.com邮箱和@people.com整个域加入了白名单。

  下面还要把SpamAssassin与Sendmail(此处以Sendmail为例,Qmail、Postfix略有不同)整合在一起。最简单的方法是使用procmail来调用SpamAssassin过滤器。procmail来调用SpamAssassin的过程。

  添加以下内容到/etc/procmailrc文件:

  :0fw

  /usr/bin/spamassassin

  :0

  * X-Spam-Status: Yes

  Spam

  如果希望SpamAssassin不检查大邮件,可以对其做出限制,添加一行:

  :0fw * < 1000000   /usr/bin/spamassassin这段代码表示把邮件检查的大小限制在1000K字节以内。SpamAssassin还提供了一个专门的spamd后台守护程序,可以设置为系统启动时自动启动。在Mail-SpamAssassin-3.-0.2/spamd/下有一个redhat-rc-script.sh脚本,将此脚本放入RedHat的启动目录/etc/rc.d/init.d/下即可。同时,还需要对/etc/procmailrc文件做如下修改:

  :0fw

  /usr/bin/spamc -s 100000

  这样就可以通过控制spamd进程来调整过滤器的运行状态。配置完成后,可以发邮件进行测试。如果看到在邮件头出现与spam检查相关的几项内容,表示SpamAssassin已经开始发挥作用。

  除了设置内部的规则之外,SpamAssassin也可以访问其他外部的垃圾邮件过滤规则集,这样可以进一步增强其适用性。Chinese_rules.cf是用于垃圾邮件过滤系统SpamAssassin的中文垃圾邮件过滤规则集。由于以前没有中文的过滤规则集,SpamAssassin对中文邮件过滤的准确性不高。CCERT反垃圾邮件研究小组推出了第一个基于SpamAssassin的中文垃圾邮件过滤规则集Chinese_rules.cf。把Chinese_rules.cf复制到/usr/share/spamassassin配置文档中的命令为:

  # wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf

  要注意的是,CCERT每周更新一次规则集,更新使用CCERT反垃圾邮件服务在6个月内处理过的垃圾邮件为样本。经常更新Chinese_rules.cf会使过滤效果更好。

  Linux有一个称为crond的守护程序,主要功能是周期性地检查/var/spool/cron目录下的一组命令文件的内容,并在设定的时间执行这些文件中的命令。用户可以通过crontab命令来建立、

(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜