![]() |
|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
![]() ![]() |
|
主題工具 | 顯示模式 |
![]() |
#1 | |
長老會員
![]() |
![]() 有在管理 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 社群之中,你我並不孤單..... 此帖於 2006-12-24 09:18 PM 被 Chin-Wei 編輯. |
|
__________________ 思考,正是從一個錯誤,跳進另外一個錯誤。 |
||
![]() |
送花文章: 5387,
![]() |
![]() |
#3 (permalink) | |
管理版主
![]() ![]() |
![]() 引用:
![]() |
|
__________________![]() 愛的時候,可以不公平;不愛了、分開了,總該公平了吧 重情重義重粉味 愛台愛鄉愛查某 |
||
![]() |
送花文章: 3254,
![]() |