header_checks或body_checks的设置规则

发表于:2007-05-26来源:作者:点击数: 标签:
在規則設定檔裡面 ( 就是 header_checks 與 body_checks) 只要是 # 代表該行為註解,系統或直接略過; 所謂的過濾規則即是 Header 與 body 裡面的『關鍵字』,例如我不想讓192.168.100.5 這個 IP 寄件到我的 mail server ,那麼這個 From:.* 192.168.100.5就
  • 在規則設定檔裡面 ( 就是 header_checks 與 body_checks ) 只要是 # 代表該行為註解,系統或直接略過;
  • 所謂的過濾規則即是 Header 與 body 裡面的『關鍵字』,例如我不想讓 192.168.100.5 這個 IP 寄件到我的 mail server ,那麼這個 From:.* 192.168.100.5 就是一條規則了!那個 .* 代表什麼意思呢?他代表『沒有或多個任意字元』的意思~更詳細的說明請參考各個正規表示法的標準說明了!常見的正規表示法特殊字元與意義為:
    • 『.』:代表任意字元
      『\』:代表跳脫字元,可以讓後面接的一個字元變成一般字元;
      『*』:代表重複零個或多個前一個 RE 的字元,例如『.*』則代表任意零個或多個字元的意思;
      『^』:代表『這一行的第一個字元需要符合規則』的意思;
      『$』:代表這一行的最後一個字元必須要符合這個字元的意思,
  • 單一規則的設定方法為:
    • /規則/  動作  顯示在登錄檔裡面的訊息
    請注意,要使用兩個『 / 』將規則包起來喔!舉個例子來說明:例如我想要 (1)抵擋掉標題為 A funny game 的信件,(2)並且在登錄檔裡面顯示 drop header deny,我可以這樣寫:
      /^Subject:.*A funny game/  DISCARD drop header deny

  • 在預設的規則當中,大小寫是視為相同的;
  • 如果有兩條以上的規則,那麼就必須要使用 if 了,例如底下的案例:
    • if /^Content\-Type:.*audio.*x\-midi/
      /^.*name\=.*\.scr/  DISCARD   drop the header inavalid
      endif
    上面的意思是,當一封郵件裡面同時包含『 Content-Type: audio.x-midi 』與『name=*.scr』時,該封信件就會被丟棄了!那麼如果有三條以上的規則時呢?呵呵!就是使用多個 if 來進行啦!
      if /rule1/
      if /rule2/
      /rule3/  動作   顯示字眼
      endif
      endif
    不過請特別留意,這個 if .... endif 的設定我僅在 2.x 版本上面試過,是沒有問題的,不過,已經有很多的朋友提出說,在 1.xx 版本上面執行時會有問題發生,所以如果您的 Postfix 不是 2.xx 版本,那麼底下鳥哥列出的兩個範例就參考看看即可,不可直接套用喔!
  • 關於動作有底下幾個動作:
    • REJECT :將該封信件退回給原發信者;
      WARN   :將信件收下來,但是將該封信的基本資料記錄在登錄檔內;
      DISCARD:將該封信件丟棄,並不給予原發信者回應!
    一般來說我是比較喜歡以 DISCARD 將信件直接丟棄的啦! ^_^
此外,請特別留意,在各主要 Linux distribution 釋出的 1.xx 版本中,並無法使用 DISCARD 的規則喔!所以您只能使用 REJECT 了!底下列出鳥哥的兩個範本:
header_checks 範本
body_checks 範本

原文转自:http://www.ltesting.net