用于电子邮件和网络邮件集成的开源反馈循环实现

用于电子邮件和网络邮件集成的开源反馈循环实现

我想知道是否有一个开源软件可以实现反馈回路。我会尽量说得更具体一些。我希望我的客户能够将邮件报告为垃圾邮件,反之亦然,这应该通过 webmail(如 roundcube)界面来实现。如何基于开源实现这一点。我现有的电子邮件服务器使用 postfix 作为 mta,使用 clam、amavis 和 spamassasin,使用 dovecot 作为 imap 和 pop3 服务器。

我在网上搜索了很多关于如何实现此功能的信息,但一无所获。我不确定我是否理解了反馈循环下的想法,所以如果能得到任何帮助,我将不胜感激。

在问这个问题之前我已经搜索过类似的问题。

答案1

Dovecot 有一个可爱的小插件,名为antispam,可跟踪 imap maildir 中的邮件移动。当用户将邮件移入/移出“垃圾邮件”文件夹时,该插件会调用一些执行特定操作的脚本。Dovecot 配置应包含下一部分:

plugin {
  antispam_backend            = MAILTRAIN
  antispam_spam               = Junk
  antispam_trash              = Trash
  antispam_mail_spam          = --spam
  antispam_mail_notspam       = --ham
  antispam_mail_sendmail_args = 
  antispam_mail_sendmail      = /usr/local/etc/dovecot/mailtrain.sh
. . . . .

当用户将一些邮件拖入/拖出“垃圾邮件”时,mailtrain.sh脚本会根据方向重复调用一个参数 - --spam/--ham。邮件正文传递到 的标准输入mailtrain.sh。最简单的mailtrain.sh形式如下:

#!/bin/sh
cat <&0 | /usr/local/bin/sa-learn --no-sync $1 2>&1 > /dev/null
exit 0
######

如您所见,sa-learn用户移动邮件后,邮件会立即传递给 SpamAssassin 的学习贝叶斯垃圾邮件/非垃圾邮件分析器。请记住,mailtrain.sh执行此操作时需要使用 dovecot 的 uid/gid,因此您必须确保 spamassassin 已bayes_file_mode 0666在 local.cf 中

特别提到“垃圾”文件夹意味着当邮件从“垃圾邮件”文件夹移至“垃圾”时不应进行训练 - 有些邮件管理员会在一段时间后将过期的垃圾邮件移至垃圾。并且不应将过期的垃圾邮件视为正常邮件。

UPD:我绝对相信你不想向“Return-path”标头中的地址发送声明。身份被盗的人无法帮助发送垃圾邮件。因此,唯一合理的行动是学习你的贝叶斯。

答案2

扩展一下上述内容,这只回答了你问题的一半:

因此,我们找到了一种方法来识别垃圾邮件文件夹/报告为垃圾邮件之间的移动。现在,我们需要做一些剩下的事情:

  1. 处理滥用处理器(ESP 或其他 FBL 注册者)可以读取的有效消息的创建。显然,反馈循环的标准是 ARF 消息。

  2. 处理匿名化原始消息。当您向 FBL 注册人报告滥用行为时,ARF 通常使用删节版来维护您自己用户的隐私。

  3. 建立 FBL 注册页面。如果没有人注册服务,FBL 就毫无用处。您将需要某种方法来验证注册人的所有权,以避免有人冒充自己是 ESP。

  4. 向主要的 ESP/ISP 宣传您的反馈回路。

这可能是处理大量邮件的大型公司最擅长做的事情,以取得成功。

相关内容