Linux中防御垃圾邮件的方法

 更新时间:2006年10月24日 00:00:00   作者:  
相信大部分使用电子邮件的人每天都会收到大量垃圾邮件。作为单位网管,笔者每天收到垃圾邮件的数量更在数百封以上,预防垃圾邮件已到了刻不容缓的地步

  一、环境说明

  单位的服务器使用RedHat Linux 9.0,邮件服务器使用Sendmail 8.12.8;这台服务器放在内网,通过一台Win2000的服务器作网关,连到Internet;网关软件使用的是WinRoute Pro 4.2.5。

  二、主要修改措施

  1.关闭Sendmail的Relay功能

  所谓Relay就是指别人能用这台SMTP邮件服务器,给任何人发信,这样别有用心的垃圾发送者可以使用笔者单位的这台邮件服务器大量发送垃圾邮件,而最后别人投诉的不是垃圾发送者,而是单位的服务器。所以必须关闭Open Relay,其方法就是到Linux服务器的/etc/mail目录,编辑access文件,去掉“*relay”之类的设置,一般只留“localhost relay”和“127.0.0.1 relay”两条即可。

  注意:修改access文件后还要用命令makemap hash access.db

  2.打开Sendmail的SMTP认证功能

  关掉了Relay功能,单位的老师就不能使用OE之类的软件发信了不要紧,只要对Sendmail配置好SMTP认证功能,再在OE中打开SMTP认证,就可以在任何地方使用单位的SMTP服务器了。

  在RedHat Linux 9.0中配置SMTP认证非常方便,首先用命令rpm -qa|grep sasl检查有没有安装cyrus-sasl软件包(一般默认安装已经包括了)。如果没有安装的话,用命令rpm -ivh cyrus-sasl.rpm安装所有软件包,接着打开/etc/mail/sendmail.mc文件,把如下三行:

  dnl TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnldnl define(`confAUTH_MECHANISMS',`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnlDAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1,Name=MTA') 改为TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnldefine(`confAUTH_MECHANISMS',`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnlDAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0,Name=MTA')

  3.在Sendmail中添加RBL功能

  RBL(Realtime Blackhole List)是实时黑名单。国外有一些机构提供RBL服务,它们把收集到的专发垃圾邮件的IP地址加入他们的黑名单,我们只要在Sendmail中加入RBL认证功能,就会使我们的邮件服务器在每次收信时都自动到RBL服务器上去查实,如果信件来源于黑名单,则Sendmail会拒收邮件,从而使单位的用户少受垃圾邮件之苦。

  国外比较有名的RBL是http//www.ordb.org,他们的RBL可免费使用,去年国内的http//anti-spam.org.cn也提供类似的服务,但它必须先注册才能使用免费。

  在Sendmail中添加RBL认证,只要对sendmail.mc添加以下几句话(第一句表示加入了ORDB.ORG的RBL服务,第二句表示加入了ANTI-SPAM的RBL服务,注意第二条必须先去该网站注册后才能使用。如果还想加入其它的RBL认证,则将这样的话再多加几句即可,一般加入两个RBL认证也够了):

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

  ②FEATURE(`dnsbl', `cblplus.anti-spam.org.cn', `', `″451 Temporary lookup failurefor ″ $&{client_addr}″ in cbl.anti-spam.org.cn″')

  最后执行m4 sendmail.mc>sendmail.cf和service sendmail restart两条命令,使有关Sendmail的修改生效。

  4.关闭Open Proxy

  单位的网关使用WinRoute软件,为了提高访问Internet的网速,开放了WinRoute的Proxy服务,但想不到的是大部分Proxy都是默认允许以HTTP Connect Method连接任意一个TCP端口,这样一来,当Proxy没有对使用者及相应的TCP端口做相应的限制时,很容易给垃圾邮件发送者可乘之机。他们只需要利用单位的Proxy来连接另外一台邮件服务器的25端口,并发送特定的SMTP指令就可以发送大量的垃圾邮件。

  不查不知道,一查吓一跳。单位服务器早在去年12月就由于Open Proxy而在国外的黑名单上了。更可气的是,由于开放了代理,我们的网关机CPU利用率一直在50%左右,原来笔者单位的网关一直在为别人义务干坏事。

  在WinRoute中关闭Open Proxy的方法也很简单,只要把连接外网网卡的Proxy端口关闭即可。

  具体操作如下:单击“Settings→Advanced→Packet Filter”,选择Incoming面板,找到接外网的网卡,单击Add按钮,会显示Add Item对话框,把Protocol选为TCP,Destination中的Port选=3128,Action中选Deny(如图1所示)。

  

  图 1

  5.关闭外部的25端口

  笔者查看Sendmail的LOG,结果没发现从单位中发出很多垃圾邮件,正在郁闷时,突然想起这段时间正在大闹Internet的网络天空“NetSky”和唯诺格“MyDoom”病毒,这两种病毒都会自动发出很多垃圾邮件,特别是网络天空,它自带SMTP服务功能。不需要利用单位的Sendmail,就直接可以发信。单位的Sendmail的LOG中当然也不会有记录了,于是马上到网关机WinRoute中对连接内网的网卡加上不能向外连接25号端号的限制,具体设置如图2所示。

  

  图 2

  注意:这个设置是加在内网网卡上的,而上面关闭Open Proxy的设置则是加在外网网卡上的。

  6.从黑名单上除名

  前段时间,由于自已的疏忽,使我单位的IP已经上了国外RBL的黑名单了。查询和删除RBL中的IP地址可以到http://openrbl.org/ 和http://ordb.org,另外国内的http://anti-spam.org.cn/cbl_minus/query.html也可查询。

相关文章

  • Linux忘记root密码及设置root密码的图文操作方法

    Linux忘记root密码及设置root密码的图文操作方法

    这篇文章主要介绍了Linux忘记root密码的图文操作方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • 谈谈shell中的eval与crontab命令

    谈谈shell中的eval与crontab命令

    本文运用实例介绍了shell中的eval与crontab命令,文章介绍的很详细,有需要的可以参考借鉴。
    2016-08-08
  • shell编程基础 单引号和双引号的区别

    shell编程基础 单引号和双引号的区别

    单引号和双引号都能关闭shell对特殊字符的处理。不同的是,双引号没有单引号严格,单引号关闭所有有特殊作用的字符,而双引号只要求shell忽略大多数,具体的说,就是①美元符号②反引号③反斜杠,这3种特殊字符不被忽略。 不忽略美元符号意味着shell在双引号内部也进行变量名替换。
    2008-04-04
  • 混合使用Linux和Windows

    混合使用Linux和Windows

    混合使用Linux和Windows...
    2006-10-10
  • Linux下的信号详解及捕捉信号

    Linux下的信号详解及捕捉信号

    这篇文章详细介绍了Linux下的信号以及怎么捕捉信号,本文首先介绍了信号的基本概念和处理过程,接着介绍了信号捕捉的步骤与捕捉信号实例,有需要的小伙伴们可以参考学习。下面跟着小编一起来看看。
    2016-08-08
  • 使用python进行服务器的监控

    使用python进行服务器的监控

    这篇文章主要介绍了使用python进行服务器的监控以及python实现的监控CPU负载的代码,需要的朋友可以参考下
    2018-01-01
  • Linux下必须要学的系统安全命令

    Linux下必须要学的系统安全命令

    Linux下必须要学的系统安全命令...
    2007-11-11
  • Linux下Makefile的automake生成全攻略

    Linux下Makefile的automake生成全攻略

    Linux下Makefile的automake生成全攻略...
    2006-10-10
  • linux之cut命令的用法

    linux之cut命令的用法

    cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的
    2013-10-10
  • 详解Unix/Linux中周期执行指令Crontab命令

    详解Unix/Linux中周期执行指令Crontab命令

    大家都知道Crontab是 Unix/Linux中用于设置周期执行指令的命令。如果我们需要定期执行某些任务,除了让任务常驻外,更方便的方法是让crontab来帮助我们调度执行。下面通过这篇文章我们来详细介绍Crontab命令,有需要的一起来看看吧。
    2016-10-10

最新评论