这是关于训练spamassassin的一般问题。 我有一个新build立的邮件服务器,通过spamassassin过滤传入的邮件。 我最近得到一个标记为垃圾邮件的航class预定(5分),并想告诉spamassassin它不是垃圾邮件。 (也许这样做也会重新发送邮件没有修改spamassassin头?)
我试过四处寻找,只能find让spamassassin把邮件标记为垃圾邮件(而不是纠正误报)的东西,或者是写邮件的人 – 怎么不被标记为垃圾邮件。
所以关于给错误的电话spamassassin反馈:
有没有一种方法可以从电子邮件客户端(例如:Thunderbird)
有没有办法通过邮件服务器上的命令行来做到这一点?
我想尽可能使stream程尽可能stream畅,但无论什么工作都能完成。
SpamAssassin关于电子邮件的详情:
0.0 FSL_HELO_NON_FQDN_1 No description available. 0.6 HK_RANDOM_ENVFROM Envelope sender username looks random -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [82.150.225.129 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [82.150.225.129 listed in wl.mailspike.net] 0.0 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) 1.6 SUBJ_ALL_CAPS Subject is all capitals 1.1 MIME_HTML_ONLY BODY: Message only has text/html MIME parts 0.7 HTML_IMAGE_ONLY_20 BODY: HTML: images with 1600-2000 bytes of words 0.0 HTML_MESSAGE BODY: HTML included in message -0.0 RCVD_IN_MSPIKE_WL Mailspike good senders 0.0 UNPARSEABLE_RELAY Informational: message has unparseable relay lines 0.0 T_REMOTE_IMAGE Message contains an external image
显然,主要的罪魁祸首是全部大写的主题行SUBJ_ALL_CAPS和MIME_HTML_ONLY(我猜,没有文字替代)。
电子邮件是为了确认机票,主题看起来像这样:
Subject: JENNINGS/NICHOLAS KOSSOW MR 24 JAN MOF DPS
头:
X-Envelope-From: <[email protected]> X-Envelope-To: <[email protected]> Received: from mail1.amadeus.net (unknown) by 147-49-15-51.rev.cloud.scaleway.com(Postfix 3.1.0/8.13.0) with SMTP id unknown Fri, 20 Jan 2017 07:55:10 +0000 (envelope-from <[email protected]> Received: from obeap115 (nat-dns-mnp.amadeus.net [82.150.225.129]) by mail1.amadeus.net (Postfix) with ESMTP id 3F7A9200042 for <[email protected]>; Fri, 20 Jan 2017 07:55:10 +0000 (GMT) From: [email protected] TO: [email protected] Message-ID: <CTS/GA/C50D54421A07/[email protected]> FND-Request-ID: <CTS/GA/C50D54421A07/[email protected]> Job-ID: 1 Subject: JENNINGS/NICHOLAS KOSSOW MR 24 JAN MOF DPS Date: Fri, 20 Jan 2017 07:55:09 +0000 Content-Type: multipart/mixed; boundary="----=_Part_191904_1900935199.1484898909762" MIME-Version: 1.0
在这种情况下,可能有用的具体和一般的build议。
这里的根本问题是,Garuda航空公司,保佑他们的小棉袜,正在发送确认电子邮件,其中包含许多垃圾邮件的标志。 主题是VERY SHOUTY,他们发送只包含很多图片和很less文本的HTML电子邮件,信封发件人( [email protected]
)很明显是一个机器构build的随机数,而他们的电子邮件提供商(外包)确认系统(amadeus.com)有一个无用的SPFlogging(尽pipe我们所有的build议相反 ,有些人错误地认为有logging,其中列出了一些发送系统的价值,并~all
结束)。
大部分情况你可以做的不多。 如果你想确保这些通过,你的~/.spamassassin/user_prefs
中有一行说whitelist_from *@amadeus.com
会把这些消息传给你。 进一步篡改触发规则的权重可能是一个坏主意。 SpamAssassin(SA)规则集是通过过滤大量垃圾邮件来创build的,并且研究了哪些特征适用于大部分垃圾邮件; 您可能会通过closures这些规则来打开您的收件箱,而不仅仅是Garuda确认电子邮件。
这正是贝叶斯引擎处理好的情况。 它旨在过滤不会触发其他规则但包含您不想阅读的内容的电子邮件,同时帮助通过电子邮件触发这些规则,但包含您想要阅读的内容。
IIRC,如果你没有训练它,引擎将不会做任何事情。 培训它的最简单的方法是保持两个文件夹,称为(说) spam
和ham
。 把spam
复制到spam
邮件中,但是你不想要; 进入ham
你把电子邮件的SA副本,但你确实想要,如确认电子邮件的副本。
然后每晚(或者如此)你有一个cron的工作,说
sa-learn --spam --mbox mail/spam sa-learn --ham --mbox mail/ham
相应地修改path。 随着时间的推移,这将教导你的引擎,你不喜欢读。 由于高贝叶斯分数可以使电子邮件的SA分数增加4.0分,而低分数可以减less1.9分,训练有素的引擎可以真正帮助SA区分你想要阅读的东西和你不知道的内容 – 但是你必须付出努力去教它 。
你似乎正在使用鸽舍。 我花了几个星期的时间试图找出一个顺利的整合,这使用户能够轻松地训练服务器端垃圾邮件filter,而不必复制邮件。
关键部分是反垃圾邮件插件。 反垃圾邮件插件触发三个文件夹组之间的移动操作: trash
, unsure
和spam
。 具体而言,当检测到从spam
到spam
的转换时,触发垃圾邮件学习动作,并且当检测到从spam
到unsure
spam
的转换时,触发火腿学习动作。
它支持不同的培训后端。 一个简单的mailtrain
就是mailtrain
,它只是执行一个命令并把邮件放在标准input上。 一个configuration可能看起来像这样:
plugin { antispam_backend = mailtrain antispam_mail_sendmail = /usr/local/bin/sa-learn-stdin.sh antispam_mail_spam = spam antispam_mail_notspam = ham antispam_mail_sendmail_args = -L antispam_spam = Junk;INBOX.Junk antispam_trash = Trash;INBOX.Trash antispam_allow_append_to_spam = no }
与/usr/local/bin/sa-learn-stdin.sh
一起:
#!/bin/bash /usr/bin/spamc "$@" >> /tmp/sa-learn-log exit 0
configuration中说:“要学习垃圾邮件,运行/usr/local/bin/sa-learn-stdin.sh -L spam
,学习火腿,运行/usr/local/bin/sa-learn-stdin.sh -L ham
。 参数由antispam_mail_spam
, antispam_mail_notspam
和antispam_mail_sendmail_args
进行configuration。
这已经很不错了。 如果您可以将您的客户端configuration为将标记为垃圾邮件的邮件移动到垃圾邮件文件夹中,则这已经是客户端与服务器之间非常自动的集成。 同样,如果您将服务器configuration为在分发时将垃圾邮件存储在垃圾邮件文件夹中(例如,使用Sieve),则当用户将邮件移出垃圾邮件文件夹时,会将该邮件学习为火腿。
为了改善与Thunderbird和KMail的整合,我写了一个反垃圾邮件补丁 ,很遗憾没有得到上游的反馈; 使用风险自负 。
它为反垃圾邮件添加了一个configuration选项,它可以简单地添加到dovecotconfiguration中的plugin
部分:
antispam_spam_flags = "Junk;$JUNK"
(这些引号对于防止$
搞笑很重要)。
使用该补丁程序,如果邮件获得垃圾邮件标记或丢失所有垃圾邮件标记,则反垃圾邮件也会触发学习操作。 标志是一个IMAPfunction,用于客户端存储服务器端的信息位。 事实certificate,Thunderbird和KMail使用这些标志来存储消息的垃圾/垃圾邮件状态。
邮件标记为垃圾邮件时,垃圾邮件标志由Thunderbird设置。 同样的$JUNK
标志一个KMail。 因此,使用此configuration,您可以通过在KMail中将邮件标记为Thunderbird中的Junk / NonJunk来触发服务器端学习。
其他客户端,例如K9-Mail,仍然可以很好地发挥作用,因为默认情况下,垃圾邮件文件夹中的垃圾邮件会被移动,反垃圾邮件也会触发。
您可以在IMAPSieve中实现相同的function。 这是在我的TODO,但不幸的是,我目前没有一个足够近期鸽舍的testing就绪的环境。