2014-04-08

為Postfix增加廣告信抵擋 - Postgrey

有鑑於公司自己架設的mail server最近一直收到很多廣告信,所以我們還是得增加一些抵擋這些垃圾的機制。

公司mail server採用Postfix,剛好有套postgrey可以幫助他過濾垃圾信。原理是基於許多發送垃圾信的server通常都射後不理,只要發送出去就好,不管對方有沒有收到都算成功;而正常的mail server會在沒有收到對方回應的時候,停一段時間再重試,所以這個套件就是記錄對方來源,第一次阻擋,等收到第二次重送的時候再放行。我們也可以自己手動增加白名單,在白名單內的位址就不去判斷,一律放行。

以下以本公司的作業系統OpenSuSE來說明如何設定。



首先執行yast,去套件管理搜尋postgrey,安裝的時候會順便把相依的套件一起裝上。


安裝完成後,基本上不需要對postgrey做設定,他預設的判斷重試時間是五分鐘。
如果要修改的話,可編輯/etc/sysconfig/postgrey這個檔案
vi /etc/sysconfig/postgrey

加入
OPTIONS="--unix=/var/spool/postfix/postgrey/socket --delay=60"
#60就是如果60秒後收到對方重試就可放行,這個數字可自己調整到大家都可接受的程度


接著編輯postfix的設定檔
vi /etc/postfix/main.cf

加上紅框處
smtpd_recipient_restrictions =
        permit_mynetworks,
        reject_unauth_destination,
        reject_unknown_sender_domain,
        reject_unknown_recipient_domain,
        reject_rbl_client cbl.abuseat.org,
        reject_rbl_client bl.spamcop.net,
        reject_rbl_client cblless.anti-spam.org.cn,
        reject_rbl_client sbl-xbl.spamhaus.org,
        check_policy_service unix:/var/spool/postfix/postgrey/socket #<-加上這行


啟動postgrey
/etc/init.d/postgrey start


檢查一下看有沒有跑起來
netstat -nlap | grep postgrey


要看到如下面的文字才算有啟動成功
unix  2      [ ACC ]     STREAM     LISTENING     2475812 28418/socket --auto /var/spool/postfix/postgrey/socket


增加開機即啟動
chkconfig postgrey on


重新啟動postfix
/etc/init.d/postfix restart


這樣就完成我們的設定囉~
如果要手動編輯白名單,加入我們信任的server,也可直接編輯白名單
vi /etc/postgrey/whitelist_clients
在最底下加上server的IP或Domain即可。

參考資料:
鳥哥