相信大部分使用電子郵件的人每天都會收到大量垃圾郵件。作為單位網管,筆者每天收到垃圾郵件的數量更在數百封以上,預防垃圾郵件已到了刻不容緩的地步。
一、環境說明
單位的伺服器使用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也可查詢。