2008-11-28 39 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类,您可以独立于框架的其余部分使用,这应该使整合非常简单。文档也很全面。