![]() |
曙光三百秒--終於見到一線曙光
有在管理 Mail Server 的人都知道架設 Mail Server 本身並不困難,但是後續的維護卻是所有 Server 中最難搞定的一環,尤其是與垃圾信(SPAM)的對抗,我們永遠處在下風。現在的群組發信軟體所發出的垃圾信千變萬化,一百封信可能有一百種完全不一樣的形式(pattern),若是要自行維護過濾條件根本防不勝防。所幸,拜 Open Source 社群的貢獻,讓我們有了對抗垃圾信的強力武器,例如 MailScanner、SpamAssassin、ClamAV、Procmail、DNSBL 等。但即使有了這些工具的協助,對於以動態IP使用廣告信軟體大量發送信件的垃圾郵件客,仍然無法有效的防堵,因此,才有所謂的灰名單(greylist)的誕生。
白名單(whitelist)、黑名單(blacklist)很容易理解,只要是有列在白名單上的使用者,我們就會毫不考慮地收下對方所寄送過來的郵件;反之,若是被列在黑名單上的使用者,我們則會毫不考慮地拒絕對方所寄送過來的郵件。那麼灰名單又是什麼?其實灰名單機制簡單的說,就是不管對方是任何人,當對方寄送郵件到我們的郵件主機時,我們一律拒絕對方的 "第一封信"。 這個機制的目的在於,"正常的" 郵件主機在被退信時,會在隔一定的時間之後(註1)再次嘗試寄送該信件;而廣告信寄送軟體都是丟了就跑,當它們被退信時將不會嘗試再次寄送該信件。因此利用灰名單機制就可以有效的防堵那些以動態IP,使用廣告信軟體大量發送信件的垃圾郵件客。當然,它也是有缺點的,它最主要的缺點就是會造成郵件的延遲遞送,依據對方郵件主機設定的差異,可能會延遲數分鐘至數小時。 那麼接下來就來講講最重要的實做吧! == 註1:依據郵件主機設定上的差異,時間不一定但通常是五分鐘(300秒),因此又被稱之為 "曙光三百秒",這也是本篇文章標題的由來。 Sendmail + milter-greylist 安裝與使用說明 工作目錄:/usr/local/src 一、安裝milter-greylist 至milter-greylist官方網站下載:http://hcpnet.free.fr/milter-greylist/ tar zxvf milter-greylist-3.0.tgz cd milter-greylist-3.0 ./configure make make install 二、建立所需的目錄與資料庫檔案 mkdir /var/run/milter-greylist mkdir /var/milter-greylist touch /var/milter-greylist/greylist.db chown smmsp.smmsp /var/run/milter-greylist chown smmsp.smmsp /var/milter-greylist chown smmsp.smmsp /var/milter-greylist/greylist.db chmod 700 /var/run/milter-greylist chmod 700 /var/milter-greylist chmod 600 /var/milter-greylist/greylist.db 三.將 /usr/local/etc/mail/greylist.conf 複製到 /etc/mail/greylist.conf 修改greylist.conf: pidfile "/var/run/milter-greylist/milter-greylist.pid" verbose <= Log較多的訊息,方便debug list "my network" addr { 127.0.0.0/8 192.168.1.0/24 } 這個是白名單,寫在這裡面的網段不會被greylist。 把下面這二行: acl greylist list "grey users" delay 30m autowhite 3d acl whitelist default 改成: #acl greylist list "grey users" delay 5m autowhite 3d acl greylist default delay 5m autowhite 3d 四.將 /usr/local/src/milter-greylist-3.0/rc-redhat.sh 複製成 /etc/rc.d/init.d/milter-greylist 修改 /etc/rc.d/init.d/milter-greylist: pidfile="/var/run/milter-greylist/milter-greylist.pid" user="smmsp" OPTIONS="-P $pidfile -p $socket -L 24" 註: -L 24:表示以255.255.255.0 這個netmask來比對寄信方的IP,也就是只要同在一個C Class網段下就認定它們是來自相同的mail server。主要是用來work around當寄信方採用多台mail server進行負載平衡時,greylist可能產生的誤判。因為當你退信給對方,下一次對方再寄送過來的時候可能是使用不同的mail server,也就是以不同的IP來寄送。詳細資料可參考README中的第七節『Dealing with mail farms』。 在 start() 開頭,echo 指令的下方(29行處)加上: if [ -e "/var/lock/subsys/milter-greylist" ]; then exit 1; fi stop() 中的這行註解掉: #[ $RETVAL -eq 0 ] && success || failure 五.設定開機時自動啟動 milter-greylist chkconfig --add milter-greylist chkconfig milter-greylist on service milter-greylist start 六.修改 /etc/mail/sendmail.mc 在 OSTYPE(`linux')dnl 之後,MAILER(smtp)dnl 之前加上: INPUT_MAIL_FILTER(`greylist',`S=local:/var/milter-greylist/milter-greylist.sock')dnl define(`confMILTER_MACROS_CONNECT', `j, {if_addr}')dnl define(`confMILTER_MACROS_HELO', `{verify}, {cert_subject}')dnl define(`confMILTER_MACROS_ENVFROM', `i, {auth_authen}')dnl define(`confMILTER_MACROS_ENVRCPT', `{greylist}')dnl 七.重新啟動 sendmail 或 MailScanner。 (milter-greylist 機制並不會因為使用MailScanner而有所差別,可以正常使用) ======================================== 下面是我已經改好的 /etc/rc.d/init.d/milter-greylist, 懶得自己改的就直接 copy 回去用吧。 引用:
== 在 Open Source 社群之中,你我並不孤單..... |
阿鳥老大,偶的 Sendmail + ClamAV + SpamAssassin + MailScanner + DNSBL + Milter-Greylist + MailSanner-MRTG 終於完全建置完畢,蘿莉團中央黨部主機終於可以免除spam的侵害...
![]() 感動啊.......:56gtyhu: |
引用:
|
:n3: :n3: 好棒的洋蔥頭
|
Open Source,自我加入中,我支持Open Source:jmfopr:
Chin-Wei老大最強了,給你拍拍手:ahhh: :ahhh: |
引用:
![]() 偶永恆不滅的蘿莉團豈是區區藍星人可以擊敗的了的:face8: |
所有時間均為台北時間。現在的時間是 03:55 AM。 |
Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.
『服務條款』
* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *