Назад | Перейти на главную страницу

Spamassassin отметил что-то как спам, но не как спам. Как мне это сказать?

Это своего рода общий вопрос об обучении spamassassin. У меня есть недавно настроенный почтовый сервер, который фильтрует входящую почту через 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

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

Конкретный

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

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

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

Ключевой частью является Антиспам Плагин 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 раздел в конфигурации голубятни:

   antispam_spam_flags = "Junk;$JUNK"

(Цитаты важны для предотвращения $ делать что-нибудь забавное.)

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

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

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


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