Greylisting原理:
假設某方寄信給我的Mail Server,Server會先傳回Error Code 450,正常的MTA會在一段時間後重送該封信件(約10分鐘),但發廣告信的軟體或套件將不會重送該封信件。目前有一套可行的方法為Postfix+Postgrey。
Postgrey官方網站:
http://isg.ee.ethz.ch/tools/postgrey/
一. 安裝所需套件:
1. Berkeley DB (也可用第2項做法)
至下方連結處抓最新版db套件
http://www.sleepycat.com/download/db/index.shtml
wget
http://downloads.sleepycat.com/db-4.4.20.tar.gz
tar -zxvf db-4.4.20.tar.gz
cd db-4.4.20
./dist/configure
make
make install
2. perl相關套件
perl -MCPAN -e shell
cpan> install Net::Server
cpan> install IO::Multiplex
cpan> install BerkeleyDB
二. 安裝Postgrey
wget
http://isg.ee.ethz.ch/tools/postgrey/pub/postgrey-1.27.tar.gz
tar -zxvf postgrey-1.27.tar.gz
cd postgrey-1.27
cp postgrey /usr/local/sbin
mkdir /var/spool/postfix/postgrey
chown postfix:postfix /var/spool/postfix/postgrey
cp postgrey_whitelist_clients postgrey_whitelist_recipients /etc/postfix/
三. 修改postfix設定檔
vi /etc/postfix/main.cf
新增如下的內容:
smtpd_recipient_restrictions =permit_mynetworks, reject_unauth_destination, check_policy_service inet:127.0.0.1:10023
四. 設定開機自動執行
vi /etc/rc.d/rc.local
新增如下的內容:
/usr/local/sbin/postgrey --inet=10023 --user=postfix --group=postfix -d
五. 由maillog檢驗Postgrey是否運作正常
Aug 11 01:23:12 dns postfix/smtpd[22490]: connect from msu.epaper.com.tw[211.20.188.106]
Aug 11 01:23:12 dns postfix/smtpd[22490]: NOQUEUE: reject: RCPT from msu.epaper.com.tw[211.20.188.106]: 450 <
[email protected]
m.tw>: Sender address rejected: Domain not found; from=<
[email protected]> to=<
[email protected]> proto=ESMTP helo=<msu.
epaper.com.tw>
六. 亦可製作一個script檔置於/etc/rc.d/init.d/postgrey,內容如下:
#!/bin/bash
# chkconfig: 2345 36 36
# description: Postgrey Script
start() {
echo -n "Starting Postgrey: "
/usr/local/sbin/postgrey --inet=10023 --user=postfix --group=postfix --delay=300 -d
return 0
}
stop() {
killall postgrey
return 0
}
case "$1" in
start)
start
;;
stop)
stop
;;
esac
參考文獻:
http://www.postfix.org/SMTPD_POLICY_README.html
http://www.kozupon.com/mail/postgrey.html
http://www.yung.jp/hp/php/Postgrey.php
本文轉自於
酷學園