milter-greylist 是利用廣告信發信程式為了盡量快點發信,所以不會重送這個原理來運作的。當他不確定對是否是可信賴的郵件主機時,就請對方等一下再送,會自動重送的,就是可信賴的主機。我們裝起來測試後,果然好用。這個系統與MailScanner不相衝突,所以頗有安裝的價值。
本來希望按照joshua提供的方法安裝 4.0 版的 milter-greylist,不過我們實在沒有時間一一追蹤新版本的更新,所以最後還是先用 yum search milter-greylist 找到直接 fedora 7 的 milter-greylist 套件。以下就紀錄如何安裝之:
變身成 root
1.先安裝套件 yum install milter-greylist
2.修改控制檔 vi /etc/mail/greylist.conf
a.信望愛有多台MX peer mail server,所以要改底下這段
# MX peering
peer 主機IP1
peer 主機IP2
b.改網路區段
list "my network" addr { 127.0.0.1/8 10.0.0.0/8 192.0.2.0/24 }
c.把 grey user 拿掉,照說明書是要利用這裡慢慢測試,不過這是小抄,已經都測試過,直接處理掉就是了
list "grey users" rcpt { \
user1@example.com \
user2@example.com \
user3@example.com \
}
d.修改最底下
acl greylist list "grey users" delay 30m autowhite 3d
acl whitelist default
改成
acl greylist default delay 5m autowhite 3d
#acl whitelist default
意思就是所有的信件都當成 greylist ,要對方延遲五分鐘再送,如果對方真的聽話,就將他放入白名單三天
3.設定開機自動啟動,順便測試看看,我們的伺服器是跑 runlevel 3
/sbin/chkconfig –level 3 milter-greylist on
/etc/init.d/milter-greylist start
4.修改 sendmail.mc 以修改 sendmail.cf (請注意,你的sendmail.cf必須是由 sendmail.mc產生的,不然就慘了)
cd /etc/mail
在 define(`confDEF_USER_ID’,“8:12”)dnl之前插入
INPUT_MAIL_FILTER(`greylist’, `S=local:/var/run/milter-greylist/milter-greylist.sock’)
define(`confMILTER_MACROS_CONNECT’, `j, {if_addr}’)
define(`confMILTER_MACROS_HELO’, `{verify}, {cert_subject}’)
define(`confMILTER_MACROS_ENVFROM’, `i, {auth_authen}’)
define(`confMILTER_MACROS_ENVRCPT’, `{greylist}’)
然後 m4 sendmail.mc > sendmail.cf
5.重新跑 sendmail
以信望愛站來說是 /etc/init.d/MailScanner restart
一般可能是 /etc/init.d/sendmail restart
6.檢驗成果
當然,收發信件必須先正常,然後可以去 /var/lib/milter-greylist/db 檢查 greylist.db 這個檔案,就可以看到灰名單是否正常運作。