萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> Linux中防御垃圾郵件的方法

Linux中防御垃圾郵件的方法

class="21840">

  相信大部分使用電子郵件的人每天都會收到大量垃圾郵件。作為單位網管,筆者每天收到垃圾郵件的數量更在數百封以上,預防垃圾郵件已到了刻不容緩的地步。

  一、環境說明

  單位的服務器使用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<access使修改生效。

  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')dnl
  dnl define(`confAUTH_MECHANISMS',`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
  DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1,Name=MTA')
  改為
  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=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 <http://ORDB.org/lookup/﹖host=″$&{client_addr}″>″')
  ②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所示)。

  5.關閉外部的25端口

  筆者查看Sendmail的LOG,結果沒發現從單位中發出很多垃圾郵件,正在郁悶時,突然想起這段時間正在大鬧Internet的網絡天空“NetSky”和唯諾格“MyDoom”病毒,這兩種病毒都會自動發出很多垃圾郵件,特別是網絡天空,它自帶SMTP服務功能。不需要利用單位的Sendmail,就直接可以發信。單位的Sendmail的LOG中當然也不會有記錄了,於是馬上到網關機WinRoute中對連接內網的網卡加上不能向外連接25號端號的限制,具體設置如圖2所示。

  注意:這個設置是加在內網網卡上的,而上面關閉Open Proxy的設置則是加在外網網卡上的。

  6.從黑名單上除名

  前段時間,由於自已的疏忽,使我單位的IP已經上了國外RBL的黑名單了。查詢和刪除RBL中的IP地址可以到http://openrbl.org/ 和http://ordb.org,另外國內的http://anti-spam.org.cn/cbl_minus/query.html也可查詢。

copyright © 萬盛學電腦網 all rights reserved