史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   網路疑難應用技術研討區 (http://forum.slime.com.tw/f47.html)
-   -   曙光三百秒--終於見到一線曙光 (http://forum.slime.com.tw/thread194366.html)

Chin-Wei 2006-12-24 08:59 PM

曙光三百秒--終於見到一線曙光
 
有在管理 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 回去用吧。

引用:

#!/bin/sh
# $Id: rc-redhat.sh.in,v 1.7 2006/08/20 05:20:51 manu Exp $
# init file for milter-greylist
#
# chkconfig: - 79 21
# description: Milter Greylist Daemon
#
# processname: /usr/local/bin/milter-greylist
# config: /etc/mail/greylist.conf
# pidfile: /var/run/milter-greylist/milter-greylist.pid

# source function library
. /etc/init.d/functions

pidfile="/var/run/milter-greylist/milter-greylist.pid"
socket="/var/milter-greylist/milter-greylist.sock"
user="smmsp"
OPTIONS="-P $pidfile -p $socket -L 24"

if [ -f /etc/sysconfig/milter-greylist ]
then
. /etc/sysconfig/milter-greylist
fi
RETVAL=0
prog="Milter-Greylist"

start() {
echo -n $"Starting $prog: "
if [ -e "/var/lock/subsys/milter-greylist" ]; then
exit 1;
fi

if [ $UID -ne 0 ]; then
RETVAL=1
failure
else
daemon /usr/local/bin/milter-greylist -u $user $OPTIONS
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/milter-greylist
[ $RETVAL -eq 0 ] && success || failure
fi;
echo
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
if [ $UID -ne 0 ]; then
RETVAL=1
failure
else
killproc /usr/local/bin/milter-greylist
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/milter-greylist
#[ $RETVAL -eq 0 ] && success || failure
fi;
echo
return $RETVAL
}
restart(){
stop
start
}

condrestart(){
[ -e /var/lock/subsys/milter-greylist ] && restart
return 0
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
condrestart)
condrestart
;;
status)
status milter-greylist
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart}"
RETVAL=1
esac
exit $RETVAL



==
在 Open Source 社群之中,你我並不孤單.....

Chin-Wei 2006-12-24 09:04 PM

阿鳥老大,偶的 Sendmail + ClamAV + SpamAssassin + MailScanner + DNSBL + Milter-Greylist + MailSanner-MRTG 終於完全建置完畢,蘿莉團中央黨部主機終於可以免除spam的侵害...


http://blogimage.roodo.com/onion_club/331099f6.jpg
感動啊.......:56gtyhu:

superxboy 2006-12-24 09:50 PM

引用:

作者: Chin-Wei
阿鳥老大,偶的 Sendmail + ClamAV + SpamAssassin + MailScanner + DNSBL + Milter-Greylist + MailSanner-MRTG 終於完全建置完畢,蘿莉團中央黨部主機終於可以免除spam的侵害...


http://blogimage.roodo.com/onion_club/331099f6.jpg
感動啊.......:56gtyhu:

我來開發廣告信寄信軟體好了...=.=...目標攻破蘿莉團中央黨部主機...盜取所有蘿莉:n7:

莊孝偉 2006-12-24 10:39 PM

:n3: :n3: 好棒的洋蔥頭

飛鳥 2006-12-25 12:22 AM

Open Source,自我加入中,我支持Open Source:jmfopr:

Chin-Wei老大最強了,給你拍拍手:ahhh: :ahhh:

Chin-Wei 2006-12-25 01:00 AM

引用:

作者: superxboy
我來開發廣告信寄信軟體好了...=.=...目標攻破蘿莉團中央黨部主機...盜取所有蘿莉:n7:


http://img260.imageshack.us/img260/439/1avi000649382tx8.jpg
偶永恆不滅的蘿莉團豈是區區藍星人可以擊敗的了的:face8:


所有時間均為台北時間。現在的時間是 03:55 AM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1