我想知道是否有一个开源软件可以实现反馈回路。我会尽量说得更具体一些。我希望我的客户能够将邮件报告为垃圾邮件,反之亦然,这应该通过 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
扩展一下上述内容,这只回答了你问题的一半:
因此,我们找到了一种方法来识别垃圾邮件文件夹/报告为垃圾邮件之间的移动。现在,我们需要做一些剩下的事情:
处理滥用处理器(ESP 或其他 FBL 注册者)可以读取的有效消息的创建。显然,反馈循环的标准是 ARF 消息。
处理匿名化原始消息。当您向 FBL 注册人报告滥用行为时,ARF 通常使用删节版来维护您自己用户的隐私。
建立 FBL 注册页面。如果没有人注册服务,FBL 就毫无用处。您将需要某种方法来验证注册人的所有权,以避免有人冒充自己是 ESP。
向主要的 ESP/ISP 宣传您的反馈回路。
这可能是处理大量邮件的大型公司最擅长做的事情,以取得成功。