Php:检查电子邮件内容是否为垃圾邮件

3
我正在创建一个新闻通讯功能,允许用户发送电子邮件。由于存在恶意人员想要发送垃圾邮件,我希望能够检查消息是否为垃圾邮件。
我已经尝试了几种方法,比如尝试使用SpamAssassin,但需要完整的电子邮件,而我直到后来才能获得。或者您需要安装其他实用程序,如spamd,但我正在寻找一个可以为我完成此操作的PHP类,有人知道吗?还是我必须安装一些命令行应用程序来执行此操作?
理想情况下,像这样简单:
$spamChecker = new SpamChecker();
$message =  "Free Credit report, blah blah, I am spam! Detect me if you dare!";
if($spamChecker->isSpam($message)) {
    echo "You are a spammer!";
} else {
    echo "you are my friend";
}
3个回答

2

可能是过滤垃圾邮件最好的服务是Akismet。Akismet被广泛使用,它默认包含在WordPress中。如果我个人使用它,这也许会增加Akismet的可信度。他们还有许多预制的插件/脚本适用于各种服务器端语言。


@SeanDowney 如果你拥有一个非常大的网站或商业网站,那么Akismet只是一项付费服务。对于普通网站来说,它基本上是免费的。 - user372743
@SeanDowney 另外,如果您使用它并真正喜欢 Akismet,但免费使用它,则甚至有捐赠选项。 - user372743
Akismet是一个不错的选择,虽然他们在开发上有些缓慢(付费账户仍然没有检查每月垃圾邮件/非垃圾邮件配额的方法???)。我以前尝试过http://mollom.com/,发现它们至少和Akismet一样好。你可能也想去看看它们。 - ChrisR
1
@ChrisR 通过一些自定义代码和数据库,你可以跟踪任何你想要的东西。 - user372743
1
@Glenn 正确,但在我们的情况下,如果没有构建一个封装的 Web 服务,很难跟踪我们在十几个站点上的 Akismet 集成。如果您能登录某个地方获取一些使用统计数据,这对他们的服务不会造成伤害。 - ChrisR

1

我会采取以下保护措施:

1. 认证。

  • 首先使用类似于lightopenid的东西对用户进行认证。例如,当您使用Google作为OpenID提供程序时,您有很大的机会用户不是垃圾邮件发送者,因为他们采取了防范垃圾邮件的措施。

2. Akismet/Sblam

  • 正如Glenn所指出的那样,您可以使用免费的Akismet来保护个人网站。或者您可以尝试使用sblam,这也是免费的。

3. 验证码

  • 您可以通过验证码进一步保护邮件列表。

4. 授权。

  • 禁止垃圾邮件发送者的OpenID URL。

1
spam assassin,但你需要完整的电子邮件,这个我得等到以后才有。
胡说八道——没有什么可以阻止你使用spamassassin处理任意数据,只是没有人会费心记录如何执行此操作。你甚至不必搞什么虚拟头信息——只需将其通过spamc并检查返回代码即可。
然而,除非您非常小心地建立用户的凭据,否则您只会成为垃圾邮件发送者的目标——至少要检查有效的电子邮件地址——如果他们有一个有效的电子邮件地址,为什么还要使用您的服务呢?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接