關於部落格
說想說的,記想記的;

未完待續。
  • 87960

    累積人氣

  • 0

    今日人氣

    0

    追蹤人氣

在 Postfix 中加入 SPF (Sender Policy Framework)

我的作法如下,先到 BIND zone 中,加入
 
 @ IN TXT "v=spf1 a mx ~all"
 
可以透過 SPF Setup Wizard 產生上面的字串,這邊有一個中文的簡介
 
然後安裝套件可以參考這篇文章
 
# urpmi perl-Mail-SPF   (我使用 Mandriva Linux 的 urpmi 來裝 rpm)

# wget http://www.openspf.org/blobs/postfix-policyd-spf-perl-2.007.tar.gz
# tar zxvf postfix-policyd-spf-perl-2.007.tar.gz
# cd postfix-policyd-spf-perl-2.007
# cp postfix-policyd-spf-perl /usr/lib/postfix/policyd-spf-perl (這邊有改名字)
 
接下來需要設定 Postfix,vi /etc/postfix/master.cf 來加入 policy:
 
 policy  unix  -       n       n       -       -       spawn
        user=nobody argv=/usr/bin/perl /usr/lib/postfix/policyd-spf-perl
 
policy 名字可以自訂,第二行的 user 前面一定要有空白,argv 中的 perl 程式路徑和後面的 script 路徑檔名要打對,不然執行 policy 不正確會導致 postfix 收不下信來。
 
啟用剛剛設定的 policy,要 vi /etc/postfix/main.cf:
 
..............................
smtpd_recipient_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        reject_unauth_destination,
        ...........................
        check_policy_service unix:private/policy
...............................
 
基本上,我把 check_policy_service 擺在 smtpd_recipient_restrictions 的最後一個,在兩個 permit 後面,可以不檢查 mynetworks 裡面的發信來源,畢竟公司內部發的信應該都合法,也不檢查透過 sasl 認證的信件;另外 check_policy_service 一定要在 reject_unauth_destination 後面,不然就有 open relay 的危險 (至於為什麼,請瞭解 reject_unauth_destination 的意義);check_policy_service 後面接著的 unix:private/policy,那個 policy 要跟 master.cf 中的 policy 字一樣,不然會有 error。
 
到目前為止可以先重啟 postfix 來看看是否信件都加上了 Received-SPF Header,再來決定要不要拒收信件,也可以從別的 IP telnet 到自己的 Mail Server 寄信看看是否會判別成 Received-SPF: softfail,所有的 SPF 判別訊息可以參考這篇
 
一旦測試無誤後,便可以大膽地透過 procmail 或 postfix 的 header_checks 把 softfail 擋下來,我自己是使用 vi /etc/postfix/header_checks:
 
 /^Received-SPF: softfail/ DISCARD SPF-SOFTFAIL-DISCARD
 
設定完後重啟 postfix 就開始拒收了,另外如果之前未使用 header_checks 來判別的,記得要到 main.cf 中加上 header_checks = regexp:/etc/postfix/header_checks 才能生效。使用 DISCARD 是因為用 REJECT 還會回傳 reject code 給寄件者,我想不用了吧直接 Discard 就好。後面的 SPF-SOFTFAIL-DISCARD 可以在 log 中看見那些信被 Discard 掉,當然可以改成任何字串以方便你 grep log 檔囉。
相簿設定
標籤設定
相簿狀態