2014-10-01 291 views
1

我一直在閱讀上的SpamAssassin有一段時間了,也學到了很多,但我似乎無法找出一個辦法,我無法找到一個方法來創建規則,其中第三方腳本可以SpamAssassin的自定義規則執行到自定義規則。 這將不得不是基於用戶而不是全局的東西。運行shell命令

我想運行域和電子郵件地址的額外驗證。

我希望建立一個信譽系統,其中如果根據聯繫人列表和其他事情檢查域或電子郵件地址。

我已經考慮修改配置文件來添加正則表達式規則,但這似乎是一種複雜的方式來做到這一點。更優選的方案是簡單地運行第三方腳本,該腳本返回每個域和電子郵件地址的分數。

回答

1

開箱即用,垃圾殺手有沒有這樣的設施,但既然你問一個編程網站,我想你是不是外星來寫一些自己的代碼。

SpamAssassin的插件工具就是爲這類事情設計的。您可以創建一段Perl代碼,該代碼將針對SpamAssassin分析的每條消息進行調用,並且您可以訪問Perl有權訪問的所有內容。

特別是,看它調用外部程序並返回其分析結果的SpamAssassin的pyzor plugin。這裏有相當多的樣板文件,但是你需要開始的部分是爲helper_app_pipe_open調用獲得正確的參數(在我上面鏈接的3.4.0版本的第282行中)。這些東西都是可配置的,所以你甚至可以將路徑重新配置爲pyzor作爲你自己的程序來證明概念。請注意,它需要接受check參數和其他一些參數,以及標準輸入中來自臨時文件的消息。

Mail::SpamAssassin::Plugin.pm包含了插件API POD文檔。模塊樹中的其他文件也包含有用的文檔;尤其是,您可能想參考Mail::SpamAssassin.pmMail::SpamAssassin::Conf.pm中的一般文檔來了解可以傳遞給插件的配置參數。

+0

如何通過調用exec來添加規則呢?我正在嘗試將此操作完成爲用戶配置,以便不需要對SA執行任何更改。 – transilvlad 2014-10-01 13:31:58

+0

那麼你爲什麼要發佈到編程網站?但無論如何,我會重複這個想法來使用'pyzor'插件,而是讓它調用你自己的檢查工具。你可能需要一些包裝來使它像pyzor插件所期望的那樣,但它不應該太難。 – tripleee 2014-10-01 13:34:47

0

開箱即用的,有一個新的TxRep插件,自動識別你最近訪問過的發件人。還有一個whitelist and blacklist options的集合。

如果你想自己實現的東西,我想你很快就會發現,一個exec機制將無法很好地擴展。也許嘗試自己製作DNSBL。這可以通過自定義代碼和任何DNS服務器(例如bind,dnsmasq等)或者使用專爲此目的而設計的DNS服務器完成,如RBLDNSD。關於DnsBlocklists的SA維基有關於如何將其掛接到SA的說明。

通常,尋求這種解決方案的人沒有正確配置DNSBL。在嘗試構建自己的項目之前,我會仔細研究一下。