一、 確認你的qmail服務器不是OPEN-RELAY狀態
這一點非常的關鍵。如果你的qmail服務器現在是OPEN-RELAY狀態的話,就是允許所有的人利用你的郵件服務器對外發送垃圾郵件,這樣,你的服務器就成了一個制造垃圾郵件的源頭了?!谩?/P>
如何來解決這個問題?
通過使用ESMTP協議的SMTP認證功能(SMTP AUTH)來控制發信者,只有通了認證的用戶才可以通過服務器發送電子郵件。
Qmail本身是沒有SMTP認證功能的,但是可以使用pacth包對Qmail打補丁增加發信認證功能,重新編譯生成qmail-smtpd程序,就有了發信認證的功能了??梢詮南螺dqmail-smtpd的auth補丁包。
安裝方法是:
tar zxvf qmail-smtpd-auth-0.31.tar.gz
cd qmail-smtpd-auth-0.31
cp base64.* ../qmail-1.03
cd ..
patch -d qmail-1.03 < qmail-smtpd-auth-0.31/auth.patch
make qmail-smtpd
cp qmail-smtpd /var/qmail/bin
這樣你的qmail就有SMTP發信認證功能了。但是這樣是不是就可以算是關閉OPEN-RELAY了?
不,還是要確認一下,你的/etc/tcp.smtp文件中的內容為
127.0.0.1:allow,RELAYCLIENT=""
并且成功生成了tcp.smtp.cdb文件,生成方法如下:
/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
同時確認你的服務器啟動腳本為
/usr/local/bin/tcpserver -H -R -l 0 -t 1 -v -p -x \
/home/vpopmail/etc/tcp.smtp.cdb -u qmaild -g nofiles 0 smtp \
/var/qmail/bin/qmail-smtpd hostname /home/vpopmail/bin/vchkpw \
/bin/true 2>&1 | /var/qmail/bin/splogger smtpd 3 &
這樣,你的qmail服務器就完全關閉了OPEN-RELAY。
二、 拒收垃圾郵件的發件人
如果郵件系統管理員在對日志進行統計分析,可以發現一些比較集中的收發件人的郵件地址,對于比較集中的發件人,我們可以根據他所發送到的郵件地址來判斷,是否是垃圾郵件。如果收件人地址大量是不存在的地址,可以肯定,這是以用戶名猜測方式來發送垃圾郵件的手段(這也是比較常見的垃圾郵件發送方式),需要對此發信地址進行拒收?;蛘呤菍ν粋€帳號發送大量的郵件,也需要對此發信地址進行拒收。
拒收的方法:
編輯/var/qmail/control/badmailfrom文件(如果沒有可以新建一個)將要拒收的郵件地址寫入,每條記錄為一行如:
123@123.com
這樣所有FROM來自123@123.com的郵件都會被郵件服務器拒收。
同樣也可以對一個域進行拒收,在badmailfrom文件中加入
@test.com
這樣所有來自test.com的任何地址的電子郵件都會被服務器拒收。
三、 拒收垃圾郵件的發送IP
如果利用一些工具來發送垃圾郵件,可以使發件人的郵件地址變成隨機地址,可能發到你的服務器的每一封垃圾郵件的發件人地址都不一樣,這樣怎么辦?拒收發件人的方法,就起不到應有的做用了。
我們可以通過查看郵件日志和網絡的SMTP(25)端口的連接情況,找出發件數目比較高的IP和連接數比較高的IP,用防火墻來對這些IP進行拒收,從網絡層就拒收這些垃圾郵件,同時也有相當高的效率。
如果是Linux系統就可以直接的用ipchains或iptables來拒收。
ipchains拒收:
ipchains –A INPUT –p tcp –s 你要拒收的IP –d 你的服務器IP 25 –j DENY
iptables 拒收
iptables –A INPUT –p tcp –s 你要拒收的IP –d 你的服務器IP --dport 25 –j \ DROP
有關Linux防火墻的更多使用參考請訪問。
四、 正確的設置.qmail-default
.qmail-default文件在/var/qmail/alias目錄下,相關的.qmail-文件是為了實現qmail的轉發功能的,而.qmail-default是qmail-local進程找不到合適的轉發規則時而要匹配的最后一個文件,如果是默認的設置,qmail會認為所有的Mailbox都是合法存在的??梢栽O置它的內容為
/home/vpopmail/bin/vdelivermail @#@# bounce-no-mailbox
這樣不存在的郵箱都會bounce掉并且返回no-mailbox信息。
五、 使用第三方RBL
RBL(Realtime Blackhole List)是實時黑洞列表,是國際上比較流行的反垃圾郵件技術,可以采用RBL來使郵件服務器拒收在列表中已知的垃圾郵件發送服務器所發送的垃圾郵件。
你需要下載一下補丁程序來增加這個功能。
下載地址:
Qmail的rblsmtpd必須要和ucspi-tcp結合在一起使用。
rblsmtpd的安裝方法很簡單。在解開的源碼目錄中
make
make setup check
注:在新版的ucspi-tcp 0.88里,已經包含了rblsmtpd,直接安裝ucspi-tcp 0.88就可以了。
安裝完后修改你的SMTP啟動腳本,加上/usr/local/bin/rblsmtpd。
/usr/local/bin/tcpserver -H -R -l 0 -t 1 -v -p -x \
/home/vpopmail/etc/tcp.smtp.cdb -u qmaild -g nofiles 0 \smtp /usr/local/bin/rblsmtpd \
/var/qmail/bin/qmail-smtpd hostname \
/home/vpopmail/bin/vchkpw /bin/true 2>&1 | \
/var/qmail/bin/splogger smtpd 3 &
如果你想使用第三方的RBL列表,只要加上-r選項就可以了,比如:
-r blackholes.mail-abuse.org
第三方的RBL服務器請參閱本站的【>>>>】,本站也即將推出自己的黑名單服務器。
六、 使用Anti-Spam軟件
使用Anti-Spam軟件來過濾,現在這項技術被越來越多的人認為是行之有效的。 有很多的Anti-Spam軟件,其中一些Anti-Spam是結合來使用的(Procmail是一個非常優秀的MDA軟件,使用請參考 http://www.procmail.org)。
Spamassassin
相當不錯的Anti-Spam軟件,可以用在多個UNIX平臺的MTA上。
spambouncer
Kaspersky Anti-Spam
可以用在多種郵件MTA上,并且有郵件頭的的檢查。
七、 總結
垃圾郵件肯定是不能夠完全制止的,但是我們采取上面的措施,肯定會制止住相當部分的垃圾郵件。這對于我們的郵件服務器的負載降低、帶寬占有減少和工作效率提高都是很有意義的。