Spamassassin将垃圾邮件标记为非垃圾邮件。 我该怎么说呢?

这是关于训练spamassassin的一般问题。 我有一个新build立的邮件服务器,通过spamassassin过滤传入的邮件。 我最近得到一个标记为垃圾邮件的航class预定(5分),并想告诉spamassassin它不是垃圾邮件。 (也许这样做也会重新发送邮件没有修改spamassassin头?)

我试过四处寻找,只能find让spamassassin把邮件标记为垃圾邮件(而不是纠正误报)的东西,或者是写邮件的人 – 怎么不被标记为垃圾邮件。

所以关于给错误的电话spamassassin反馈:

  1. 有没有一种方法可以从电子邮件客户端(例如:Thunderbird)

  2. 有没有办法通过邮件服务器上的命令行来做到这一点?

我想尽可能使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,如果你没有训练它,引擎将不会做任何事情。 培训它的最简单的方法是保持两个文件夹,称为(说) spamham 。 把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,而不必复制邮件。

    关键部分是反垃圾邮件插件。 反垃圾邮件插件触发三个文件夹组之间的移动操作: trashunsurespam 。 具体而言,当检测到从spamspam的转换时,触发垃圾邮件学习动作,并且当检测到从spamunsure 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_spamantispam_mail_notspamantispam_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就绪的环境。