作者itoc, 信區: itoc
標題[文件] postfix 在 anti-spam 上的設定 (2005/11/30)
時間03/04/15
作者: DarkKiller (悸動) 看板: Daily
標題: Re: [docs] postfix 在 anti-spam 上的設定 (UCE Controls)
時間: Wed Aug 29 17:39:50 2001
* LICENSE
This document uses GNU FDL (Version 1.1, March 2000):
http://www.gnu.org/licenses/fdl.txt
* AUTHOR
Gea-Suan Lin <gslin@ccca.nctu.edu.tw>
* 前言、參考文獻
postfix 的功能的確超乎當初我的想像,而且 source 也很容易懂,我把很多
本來是用 sendmail 的 server 都換成 postfix。
這篇文章不是給剛碰 postfix 的人看的,你應該要對 postfix 有些許了解,
另外,我會提到一些 regular expression 的東西,你可以 man re_format
看到相關的介紹 (我知道你不喜歡看英文,但是這份 manpage 寫的很好)。
另外,SMTP 指令的介紹你也要會一些,我們在介紹 anti-UCE (下面會提到)
的時候有很大一部分是跟這點有關。
我不會介紹所有的功能,完整的功能還是要請你參考原文的文獻資料:
http://d2.nctu.edu.tw/postfix/ (postfix 交大 web mirror site)
/usr/local/etc/postfix/sample-smtpd.cf
如果你有任何建議,您可以 mail 給我,或是在看板上討論,謝謝。
* UCE ?
UCE 是 Unsolicited Commercial Email 的縮寫,簡單的說,其實就是廣告信。
下面講到的設定,都是在 /usr/local/etc/postfix/main.cf 裡面。
* anti-UCE 的機制 -- smtpd_client_restrictions
有不少的廣告信是從沒有反解的 IP 連線過來,對於這類 request,我們可以用
reject_unknown_client 這個參數拒絕他的 request。
smtpd_client_restrictions = reject_unknown_client
或者,我們可以要求 postfix 透過一個自己設的設定檔去設定黑白名單:
# 太長了,請接成一行
smtpd_client_restrictions = check_client_access regexp:/usr/local/etc/
postfix/client-access
其中的 regexp 是指使用 regular expression。這個 client-access 的檔案內
容,長的像是這個樣子:
# 註解用 '#' 開頭
#
# 用 '/' 把 regular expression 包起來
#
# OK 表示允許這個 request,不再對 smtpd_client_restrictions 後面所列的
# 條件做檢查了。
/\.edu\.tw$/ OK
/\.edu$/ OK
/\.com\.tw$/ OK
/\.com$/ OK
/\.net\.tw$/ OK
/\.net$/ OK
/\.org\.tw$/ OK
/\.org$/ OK
/\.idv\.tw$/ OK
/\.cc$/ OK
/\.tw$/ OK
#
# REJECT 表示不吃這封信 (其實也都還沒看到信件)
/kimo\.com\.tw$/ REJECT
#
# 除了 REJECT,我們也可以自己訂理由,只要是 [45]xx [text] 即可:
/\.hinet\.net$/ 554 I don't want to receive ANY mail from hinet
#
# 如果都不符合上面列出來的,就繼續檢查吧。
另外,postfix 支援 DNSBL 的機制,關於什麼是 DNSBL,請自行於網頁上搜尋
我們可以設定 maps_rbl_domains:
# 太長了,請接成一行
maps_rbl_domains = orbs.dorkslayers.com orbz.gst-group.co.uk relays.os
irusoft.com
綜合以上所說的,我們也可以這樣設:
# 這代表我們先拒絕沒有反解的機器,然後再拒絕在 maps_rbl_domains 裡面的
# IP,然後再檢查 client-access 裡面的設定。
#
# 太長了,請接成一行
smtpd_client_restrictions = reject_unknown_client, reject_maps_rbl, ch
eck_client_access, regexp:/usr/local/etc/postfix/client-access
* anti-UCE 的機制 -- smtpd_sender_restrictions
理論上,mail from 在有技巧的亂填的情況下,你無法知道他的真實性,所以設
這個也沒有什麼用。不過,台灣的 spammers 對於送 spam 的技巧似乎還是停留
在 Sendmail 8.8.x without patch 的階段,所以設一下會有很大的用處 :p
下面的設定會把 mail from 送過來的 E-mail address 後面的 domain 拿出來
查詢,如果不存在 A RR 或是 MX RR,那麼就 reject 掉。
smtpd_sender_restrictions = reject_unknown_sender_domain
* anti-UCE 的機制 -- smtpd_recipient_restrictions
# rcpt to 設限
smtpd_recipient_restrictions =
* anti-UCE 的機制 -- header_checks
# header 的檢查
header_checks =
* 全部設定好以後,重新載入 postfix
postfix reload
--
Gea-Suan Lin <gslin@informath.net>
--
※ Origin: 小鹿鹿 <Deer.abpe.org> ◆ From: infomath.math.nctu.edu.tw