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

Автоматическое повторное сканирование электронной почты с помощью SpamAssassin после ее получения

В последние месяцы количество получаемого мной спама сводило меня с ума. Несмотря на бег SpamAssassin (с проверками RBL) на моем Exim4 mailserver, многие из них попали в наши почтовые ящики.

Я заметил, что подавляющее большинство преступников попадают в RBL, но только после он уже отсканирован и признан безвредным. Обычно оценка спама этих писем составляет 0,0–1,1, когда я их получаю, а через некоторое время оценка будет много выше.

Я немного поискал, но не смог найти ничего, что казалось бы пригодным для использования, поэтому я собрал небольшую программу, которая просматривает самые последние сообщения в моем почтовом ящике и позволяет SpamAssassin повторно анализировать их. Результаты были ошеломляющими: почти каждое письмо, которое попадало в мой почтовый ящик, превышало порог 5.0 через 5-10 минут после доставки. Иногда это занимает немного больше времени, но пока что в конечном итоге всегда будет преодолевать порог.

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

Проблема в том, что созданная мной программа запускается отдельно и использует IMAP для подключения к определенному почтовому ящику и внесения изменений. Из-за этого мне сложно использовать это решение для других пользователей, потому что мне понадобятся их пароли.

Существуют ли какие-либо инструменты, позволяющие повторно обрабатывать уже полученную почту? Я использую Maildir отформатируйте на диске, если это важно. Если такого инструмента не существует, библиотека для прямого доступа и изменения почтовых ящиков Maildir также может помочь.

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

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

Я не знаю готового программного обеспечения, которое могло бы это сделать локально, но Спам IMAP ушел может удовлетворить ваши потребности. Он подключается к вашему почтовому серверу через IMAP (как это делает стандартный почтовый клиент) и запускает SpamAssassin, чтобы очистить его за вас.


Если вам нужно что-то, что работает локально, вы, вероятно, могли бы написать простую оболочку для SpamAssassin, которая делает это. Maildir хранит каждое сообщение в отдельном файле, поэтому должно быть что-то вроде этого:

Содержимое sa-bootstrap.sh:

#!/bin/sh
for email in "$@"; do
  if ! spamassassin -e < "$email" > /dev/null 2>&1; then
    mv "$email" /full/path/to/spam/folder
  fi
done

Теперь можно запустить:

find /path/to/maildir -type f -print0 |xargs -0 sa-bootstrap.sh

Не забудьте проверить свой спам и использовать sa-learn на спам и ветчину перед их удалением.

(spamassassin -e завершится с ненулевым кодом ошибки, если данное сообщение будет определено как спам.)

Вы думали о включении / выключении серый список (также для каждого почтового ящика)?

например Отключите серые списки в рабочее время и включите в нерабочее время (для пользователей без активных сеансов IMAP).