回精華區
作者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
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻