Exim 和 spamassassin 自訂規則

Exim 和 spamassassin 自訂規則

我安裝並運行了 exim 和 spamassassin (由 exiscan 使用),但我想添加自訂規則,如果“to”和“envelope-to”不相同,該規則將為電子郵件添加一些點。我為 local.cf 添加了以下規則:

header      EXIM_SENDER_SWAP        X-Sender-Swap =~ /To_envelope-to/
describe    EXIM_SENDER_SWAP        To doesnt match envelope-to
score       EXIM_SENDER_SWAP        2.0

和 exim.conf 中的行

  acl_check_data:

      warn message = X-Subject-Swap: To_envelope-to
          condition = ${if !match {${lc:$h_envelope-to:}}{${lc:$h_to:}}{yes}{no}}

我正在發送測試訊息,並且 exim 添加了相應的標頭,但 spamassassin 沒有添加任何附加點。怎麼了?

答案1

首先,「message」修飾符不是您想要的,而是當您想要在 ACL 中的訊息中新增標頭時,您需要使用「add_header」。讀http://www.exim.org/exim-html-current/doc/html/spec_html/ch42.html#SECTaddheadacl如果您需要有關該部分的更多資訊。

但是,我認為您嘗試做的事情不會以您正在使用的方式起作用。在 exim 的內部,當它處理每個 ACL 時,ACL 就會執行,然後當 ACL 完成時完全的,所有標頭新增和刪除均已完成。您在相同資料 ACL 中執行這兩項操作,這表示第一次比較新增的標頭尚未實際新增至 spam 指令正在掃描的暫存檔案中的郵件。

一種選擇是進行垃圾郵件掃描,檢測要添加標頭的條件,然後在比較時將該分數添加到保存垃圾郵件分數的變數中,以查看是否為垃圾郵件。

第二個選擇,也是我認為更好的選擇,是使用兩個不同的使用者來執行垃圾郵件掃描。例如,您將垃圾郵件分數設定為 5.0。對於第二個,您將垃圾郵件分數設定為 3.0。這比正常限制少了 2 分,相當於垃圾郵件分數增加了 2 分。

那麼你的 ACL 節可能看起來像是(未經測試):

warn condition = ${if !match {${lc:$h_envelope-to:}}{${lc:$h_to:}}{yes}{no}}
     set $acl_m_env_ok = 1
     spam = strict_user:true

warn condtion = ${if eq{$acl_m_env_ok}{1} {no}{yes}}
     spam = normal_user:true

warn add_header = X-Spam-Score: $spam_score
     add_header = X-Spam-Report: $spam_report

deny condition  = ${if eq{$acl_m_env_ok}{1}}
     condition  = ${if >{$spam_score_int}{30}}
     message    = This message with mismatched header/envelope score $spam_score_points...REJECTED

deny condition  = ${if >{$spam_score_int}{50}}
     message    = This message scored $spam_score points...REJECTED

相關內容