任何使用 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 7 支援 milter-greylist。在這裡我描寫如何在 Fedora 7 安裝 milter-greylist。

安裝程序:

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

    • fedora-usermgmt-0.9-2.fc7.noarch.rpm
    • fedora-usermgmt-core-0.9-2.fc7.noarch.rpm
    • fedora-usermgmt-default-fedora-setup-0.9-2.fc7.noarch.rpm
    • fedora-usermgmt-shadow-utils-0.9-2.fc7.noarch.rpm

     

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

     

    • milter-greylist-3.0-2.fc7.i386.rpm
    • milter-greylist-sysv-3.0-2.fc7.i386.rpm

     

    安裝之後,你必須編輯 /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:

     

    • 註:如果你在更新的話,先執行以下指令來刪除前版本的開啟/停止程式:
      chkconfig milter-greylist off
      chkconfig --del milter-greylist
    • 現在設定在電腦重新啟動時也會啟動 milter-greylist:
      chkconfig --add milter-greylist
      chkconfig milter-greylist on
    • 開啟 milter-greylist:
      service milter-greylist start

     

  4. 這樣就安裝 milter-greylist 完畢。但是工作還沒有完。你必須告訴 sendmail 收到郵件時要先給 milter-greylist 來處理。 所以要修改 /etc/mail/sendmail.mc。在 OSTYPE(`linux')dnl 之後加以下 (註:如果你在更新的話, 請注意以下行列有一點不一樣。):
    INPUT_MAIL_FILTER(`greylist',`S=local:/var/run/milter-greylist/milter-greylist.sock')
    define(`confMILTER_MACROS_CONNECT', `j, {if_addr}')
    define(`confMILTER_MACROS_HELO', `{verify}, {cert_subject}')
    define(`confMILTER_MACROS_ENVFROM', `i, {auth_authen}')
    define(`confMILTER_MACROS_ENVRCPT', `{greylist}')
    
  5. 然後建新的 sendmail.cf
    m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
  6. 重新啟動 sendmail:
    service sendmail restart

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

資料來源:http://www.savs.hcc.edu.tw/~chuavv/articles/mgreylist-tw.html


    全站熱搜

    Frank 發表在 痞客邦 留言(0) 人氣()