2008-11-28 35 views
1

我有大約20個左右活躍的博客,這些博客有相當多的垃圾郵件。正如我討厭CAPCHA,另一種選擇是非常聰明的垃圾郵件過濾。我想要構建一個簡單的REST API,比如垃圾郵件檢查服務,我將在所有博客中使用這些服務。通過這種方式,我可以整合IP塊並將垃圾郵件檢測功能卸載到第三方,如Akisment,Mollom,Defensio,並在將來某個時候編寫我自己的垃圾郵件檢測程序,以真正讓我的頭腦成爲一些非常有趣的垃圾郵件檢測算法。垃圾郵件檢測服務的最佳語言選擇

我選擇的語言是PHP,我認爲自己非常熟練,我可以深入挖掘並提出解決方案。我覺得這個項目可以作爲學習另一種語言的良好練習。想到的大2是Python和Ruby on Rails,因爲每個人都在談論它們,就像我們救世主的下一個未來。由於這主要只是一個API,並且沒有任何管理員或公衆面對任何東西,所以看起來像運行一個簡單的http服務器的基本Python似乎是要走的路。我錯過了什麼?你,偉大的社區,你會推薦什麼?我很想聽聽您的語言,書籍和最佳實踐建議。

這必須擴展,我想把它寫在腦海中。現在我可能可以使用第三方的免費計劃,但是很快我就不得不擴展整個事情去實際思考。現在我想我只會將所有內容都存儲在MySQL數據庫中,直到我可以對其進行真正的分析。謝謝!

回答

2

Python有一些優點。

  1. 在Python中有幾個HTTP服務器框架。查看WSGI reference implementation,並瞭解如何使用WSGI標準處理Web請求。它非常乾淨和可擴展。需要進行一些研究,看看WSGI是否需要在請求中添加詳細信息,直到您到達處理階段,然後才能制定回覆。

  2. MIME email parsing非常簡單。

  3. 之後,您將使用網站黑名單和內容過濾來進行垃圾郵件檢測。

    • 網站黑名單可能是一個很大的花哨的RDBMS。或者它可以是簡單的pickled Python一套域名和IP地址。我推薦一個簡單的醃製集對象,它存在於內存中。它很快。您可以讓RESTful服務在收到某個強制刷新的GET請求時從源文件重新加載此設置。

    • 文本過濾很難。我會從SpamBayes開始。

9

我的第一個問題 - 爲什麼你不使用你列出的三種服務之一?看來他們正是你想要的。對於憤世嫉俗的抱歉,但我懷疑你單獨工作可能會在合理的時間內擊敗設計這些網站使用的算法的軟件工程師,特別是考慮到他們的收入來源取決於他們做得如何。

然後再次,你可能會比他們= P更聰明。我不是一個可以判斷的人。在任何情況下,我都建議您使用python,由於您陳述的原因 - 您不需要花哨的公共界面,因此python在這方面缺乏卓越並不重要。 Python也適用於文本處理,並且它有很好的內置數據庫綁定(比如sqlite;當然,如果你覺得有必要的話,你可以安裝MySQL)。

缺點:它可能會有點慢,取決於算法的複雜程度。

+0

簡短回答:因爲我想避免設置並取決於第三方服務。最終目標是有成千上萬的安裝,所以當它的成本效益進一步發展,我不會是一個人vs山:) – 2008-11-28 19:11:20

+0

夠公平!如果你使用它的話,那麼它們看起來就不是免費的。 – Claudiu 2008-11-28 19:28:05

1

我謙恭地建議Lua,不僅因爲它是一個偉大的,快速的語言,已經與Web服務器集成,但也因爲你可以再利用OSBF-Lua,已經贏得了垃圾郵件過濾現有的垃圾郵件過濾器連續幾年的比賽。 Fidelis Assis和我進行了大量工作,試圖將該模型推廣到電子郵件之外,我們很樂意與您一起將它與您的應用程序集成在一起,這正是Lua所設計的。

至於縮放,在培訓模式下,我們在2006年的一臺機器上每秒處理數百封電子郵件,因此即使對於繁忙的網站也應該能夠很好地工作。

我們需要與您一起分類沒有郵件標題的東西,但我一直在朝這個方向努力。欲瞭解更多信息,請寫信至[email protected]。 (是的,我人給我發垃圾郵件。這是研究!)

1

我不得不推薦Akismet的易用性和高準確性。只有一個WordPress.com API密鑰和一個API調用,您可以確定來自用戶的給定文本塊是否是垃圾郵件。我一直在使用WordPress的Akismet插件,它使用了相同的API,並在去年左右獲得了很好的結果。

Zend Framework有一個很好的Akismet PHP類,您可以獨立於框架的其餘部分使用,這應該使整合非常簡單。文檔也很全面。