Spamassassin помечал что-то как спам, который не является спамом. Как мне это сказать?

14

Это своего рода общий вопрос об обучении спамассассина. У меня есть недавно настроенный почтовый сервер, который фильтрует входящую почту через spamassassin. Недавно я получил бронирование, помеченное как спам (оценка 5), и хотел бы сказать spamassassin, что это не спам. (Возможно, если вы сделаете это, вы также повторно отправите письмо без измененных заголовков spamassassin?)

Я пытался искать по всему и только нахожу материал о том, чтобы заставить spamassassin помечать сообщения как спам (а не исправлять ложные срабатывания), или для людей, пишущих электронные письма, - как не быть помеченными как спам.

Так что в отношении предоставления spamassassin отзывов о неправильных звонках:

  1. Есть ли способ сделать это из почтового клиента (например, Thunderbird)

  2. Есть ли способ сделать это через командную строку на почтовом сервере?

Я хотел бы сделать процесс настолько плавным, насколько это возможно, но что бы ни делали работу.

Подробности от 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: <tdsfndprd@amadeus.com>
X-Envelope-To: <nick@xxx.xxx>
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 <tdsfndprd@amadeus.com>
Received: from obeap115 (nat-dns-mnp.amadeus.net [82.150.225.129])
    by mail1.amadeus.net (Postfix) with ESMTP id 3F7A9200042
    for <nick@xxx.xxx>; Fri, 20 Jan 2017 07:55:10 +0000 (GMT)
From: eticket@garuda-indonesia.com
TO: NICK@XXX.XXXX
Message-ID: <CTS/GA/C50D54421A07/1@tds.amadeus.com>
FND-Request-ID: <CTS/GA/C50D54421A07/1@tds.amadeus.com>
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
Ник Дженнингс
источник
Первым делом нужно спросить, почему он был помечен как спам. Без этого мы можем сделать общие предложения, показать вам, как настроить байесовский движок для ветчины, но мы не можем помочь конкретно обратиться к правилу (ам), которые не срабатывали. Пожалуйста, добавьте к своему вопросу первые несколько строк в теле письма и все заголовки .
MadHatter
@MadHatter спасибо за предложения, обновил вопрос соответственно.
Ник Дженнингс
Вы не говорите, что Байесовский счет он получил. Вы вообще используете байесовский двигатель?
MadHatter
Счет был 5,0 .. он вставлен в тему: ***** СПАМ 5.0 *****
Ник Дженнингс
1
Это общая оценка SA, а не вклад байесовской оценки. Но не волнуйтесь, из остального, что вы написали, похоже, что ваш байесовский двигатель не запускается, потому что вы никогда не тренировались, и вы намерены заняться этим!
MadHatter

Ответы:

22

В этом случае могут быть полезны как конкретные, так и общие рекомендации.

Конкретный

Основная проблема здесь заключается в том, что авиакомпания Garuda Airlines, благослови свои маленькие хлопчатобумажные носки, отправляет электронные письма с подтверждением, на которых отмечены многие признаки спама. Строка темы - ОЧЕНЬ ШОУ, они отправляют электронные письма только в формате HTML, которые содержат довольно много изображений и очень мало текста, envelope-sender ( tdsfndprd@amadeus.com) - это явно одноразовый механизм, созданный машиной, и поставщик электронной почты для их (аутсорсинговой) системы подтверждения. (amadeus.com) имеет бесполезную запись SPF (несмотря на все наши советы об обратном , некоторые люди по ошибке думают, что есть запись в записи, в которой перечислены некоторые из их отправляющих систем и целей ~all).

С этим практически ничего не поделаешь. Если вы хотите быть уверенным в том, ~/.spamassassin/user_prefsчто они whitelist_from *@amadeus.comпройдут, в вашей строке , где написано, передадут вам эти сообщения. Идти дальше и вмешиваться в весовые коэффициенты сработавших правил, вероятно, плохая идея. Набор правил SpamAssassin (SA) создается путем фильтрации огромного количества спама и определения того, какие характеристики применимы к большей его части; отключив эти правила, вы, скорее всего, откроете свой INBOX намного больше, чем просто электронные письма с подтверждением Garuda.

Общая

Это именно та ситуация, с которой байесовский двигатель справляется хорошо. Он предназначен для фильтрации электронной почты, которая не запускает другие правила, но содержит материалы, которые вы не хотите читать, в то время как помощь по электронной почте вызывает эти правила, но содержит материалы, которые вы действительно хотите прочитать.

IIRC, двигатель ничего не сделает, если ты его не тренируешь. Самый простой способ обучить это поддерживать две папки, называемые, скажем, spamи ham. В spamвы положили копии электронной почты , которые сделали его в ваш почтовый ящик , но вы не хотите; в hamвас помещают копии электронных писем, которые были нарушены SA, но вы действительно хотели, например, это подтверждение по электронной почте.

Тогда ночью (или около того) у вас есть работа cron, которая говорит

sa-learn --spam --mbox mail/spam
sa-learn --ham  --mbox mail/ham

изменяя пути соответственно. Со временем это научит двигатель тому, что вы делаете, а не любите читать. Поскольку высокий балл по Байесу может добавить +4,0 балла к баллу SA по электронной почте, а низкий балл может вычесть 1,9, хорошо обученный движок действительно может помочь SA отличить то, что вы хотите прочитать от того, что вы не делаете - но вы должны приложите усилия, чтобы научить этому .

Безумный Шляпник
источник
1
Это звучит разумно. Я дам этому потоку почтового ящика спама / ветчины попытку. Благодарность!
Ник Дженнингс
1
«Благослови их маленькие хлопчатобумажные носки»
Алекс
@MadHatter следит за этим. Я попытался перетащить сообщение со спамом, которое Spamassassin изменил, в папку Ham, и когда я запустил sa-learn --ham ...команду, он сказал, что обнаружил 0 писем, из которых можно извлечь уроки: Learned tokens from 0 message(s) (0 message(s) examined)... Я попытался перехватить .emlвложение, в которое SpamAsssasin поместил исходное письмо, в папку Ham. непосредственно на сервере, но тем не менее, говорит, что находит 0 сообщений для обработки ...
Ник Дженнингс
Я должен добавить, что я имею дело с исходным письмом как приложением согласно report_safe 1настройке.
Ник Дженнингс
@NickJennings, тогда вам, вероятно, придется использовать MIME-совместимый клиент, чтобы вырезать исходное письмо и передать его sa-learn. Если это слишком много боли, выключите report_safe. Хорошей идеей будет обучить ветеринара другим вещам, кроме того, что было ошибочно идентифицировано как спам, поскольку предположения Байесовского фильтра отделены от SA в целом. Я передаю всю свою личную почту, которую я получаю, потому что это то, что я больше всего хочу прочитать.
MadHatter
7

Вы, кажется, используете dovecot. Я потратил несколько недель, пытаясь понять плавную интеграцию, которая позволяет пользователям легко обучать фильтры спама на стороне сервера без необходимости копировать почту.

Ключевой частью является плагин Antispam Dovecot. Антиспам плагин триггеры на перемещение операций между тремя группами папок: trash, unsureи spam. В частности, когда обнаружен переход от чего-либо (но spam) к spam, запускается действие по обучению спаму, а когда обнаруживается переход от spamк unsure, запускается действие по обучению.

Он поддерживает различные обучающие бэкэнды. Простым является тот mailtrain, который просто выполняет команду и помещает почту на стандартный ввод. Конфигурация для этого может выглядеть так:

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

Конфигурация гласит: «Чтобы учиться как спам, беги /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.

Это уже довольно мило. Если вы можете настроить свой клиент для перемещения писем, помеченных как спам, в папку для спама, это уже довольно автоматическая интеграция между клиентом и сервером. Аналогично, если вы сконфигурируете сервер для хранения писем, классифицированных как спам, в папке спама при доставке (например, с помощью Sieve), сообщение будет считаться ветчиной, когда пользователь перемещает его из папки спама.


Чтобы улучшить интеграцию с Thunderbird и KMail, я написал патч для антиспама , который, к сожалению, не получил откликов от апстрима; использовать на свой страх и риск .

Он добавляет опцию конфигурации в антиспам, которую можно просто добавить в pluginраздел конфигурации dovecot:

   antispam_spam_flags = "Junk;$JUNK"

(Цитаты важны, чтобы не $делать что-то смешное.)

С помощью патча антиспам также запускает обучающее действие, если сообщение получает флаг спама или теряет все свои флаги спама. Флаги являются функцией IMAP и используются клиентами для хранения битов информации на стороне сервера. Оказывается, Thunderbird и KMail используют эти флаги для хранения статуса нежелательной почты / спама.

JunkThunderbird устанавливает этот флаг, когда вы помечаете сообщение как нежелательное. Аналогично для $JUNKфлага KMail. Таким образом, в этой конфигурации вы можете инициировать обучение на стороне сервера, пометив почту как нежелательная / нежелательная в Thunderbird в KMail.

Другие клиенты, такие как K9-Mail, по-прежнему хорошо играют, потому что по умолчанию там перемещается нежелательная почта в папке «Спам», которая также запускается антиспамом.


Вы можете реализовать ту же функциональность, я думаю, в IMAPSieve . Это на моем TODO, но, к сожалению, в настоящее время у меня нет готовой к тестированию среды с достаточно недавним dovecot.

Йонас Шефер
источник
Это выглядит интересно, обязательно рассмотрим это.
Ник Дженнингс