Grey Listing

English Version

[ 最新版本: 4.2.2-0 ] 為 Fedora 11


從 Fedora 7 開始 Fedora 已經支援 milter-greylist。


任何使用 email 的人一定知道什麼是 spam (廣告或垃圾郵件),因為所有使用 email 的人一定常常收到相當多的 spam。 使用 Linux 作業系統作 mail server 的話,一般使用 spamassassin 來過濾這些不受歡迎的 spam。SpamAssassin 是一個相當好的過濾器,但是它很耗 server 的資源,特別是 RAM。如果能減輕這種負擔一定會更理想。現在就有了, 這就叫 Grey Listing。

SpamAssassin 會使用所謂的 whitelist (白名單) 和 blacklist (黑名單) 來過濾 mail server 所收到 的郵件。它缺乏的是第三種名單,就是 greylist (灰名單)。

Grey listing,Evan Harris 所提供的方法, 主要的概念是:spam 所用的 MTA (Mail Transfer Agent) 寄信之後就不管是否遠方的 mail server 有沒有收到它所寄的信。相反的,標準的 MTA 如果它寄信之後發生錯誤,它會繼續的寄這封信一直到遠方的 mail server 收到了這一封信。

所以 grey listing 的方法來過濾 spam 就是:第一次收到郵件就先拒絕這封郵件。等一段時間之後, 如果又收到同樣的郵件就接收這封郵件。看起來很簡單的方法,但是按照測試的結果 grey listing 可以攔截 95% 的 spam。 剩餘的 5% 就給 spamassassin 來處理。

你如果想安裝 milter-greylist 的話,你先確定你已經安裝了 sendmail、sendmail-cf、sendmail-devel、 bison 和 flex。使用的 sendmail、sendmail-cf 和 sendmail-devel 版本必須 >= 8.11 而且支援 milter (mail filter) 的介面。一般來說,Redhat 和 Fedora 所提供的 sendmail 就符合這個條件。

Fedora 11 支援 milter-greylist。在這裡我描寫如何在 Fedora 11 安裝 milter-greylist。

安裝程序:

  1. Fedora 11 的 milter-greylist 需要以下程式,而且先安裝然後才可以安裝 milter-greylist:

  2. 安裝兩個 milter-greylist 程式:

    安裝之後,你必須編輯 /etc/mail/greylist.conf 按照你的需要。至少以下項目必須修改:

    1. 以下必須修改按照你網路的設定:
      list "my network" addr { 127.0.0.1/8 10.0.0.0/8 192.0.2.0/24 }
    2. 要將所有進來的 email 用 greylist 來處理的話,以下五列就不需要。在每列之前放 # 把這些列便成註解:
      list "grey users" rcpt { \
      user1@example.com \
      user2@example.com \
      user3@example.com \
      }
    3. 修改這一列:
            acl greylist list "grey users" delay 30m autowhite 3d
      為:
            acl greylist default delay 30m autowhite 3d
    4. 確認設定檔沒有問題:
            /usr/sbin/milter-greylist -c
      沒有問題的話就會顯示以下的訊息,要不然請你再檢查設定檔:
            config file "/etc/mail/greylist.conf" is okay

  3. 現在我們可以啟動 milter-greylist:

  4. 這樣就安裝 milter-greylist 完畢。但是工作還沒有完。你必須告訴 sendmail 收到郵件時要先給 milter-greylist 來處理。 所以要修改 /etc/mail/sendmail.mc。在 OSTYPE(`linux')dnl 之後加以下 (註:如果你在更新的話, 請注意以下行列可能有一點不一樣。):

  5. 然後建新的 sendmail.cf
    m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
  6. 重新啟動 sendmail:
    service sendmail restart

這樣,工作就告一段落。從今以後,恭喜你,因為你會注意到你收到的 spam 就減少很多。 同時你也會注意到有病毒之 email 也會減少。

蔡由世神父
2005/02/11
更新:2011/06/04