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

Быстрый способ отфильтровать спам-сообщения от maildir?

У меня есть Maildir с примерно 50 тысячами электронных писем, около 42 тысяч из которых являются спамом (результат того, что мой домен и электронная почта не использовались и не использовались в течение 2 лет).

У меня есть следующий сценарий, чтобы попытаться отфильтровать спам:

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

Но это занимает навсегда!

Устройство, на котором я могу это делать, ограничено, это NAS с процессором arm ... но все же!

Есть ли способ сделать это быстрее? На данный момент работает над поддиректором с 1000 файлами, идет почти 12 часов и обнаружено 36 спам-сообщений ...

Вы можете начать spamd демон в режиме «только локальные тесты» и тестовые сообщения с использованием spamc команда. Это должно устранить огромную часть spamassassin инициализация например парсинг perl и файлов конфигурации.

Проведение сетевых тестов для большого количества старых сообщений (возрастом до двух лет) неэффективно с точки зрения затрат и времени, ИМХО.

AFAIR на моем старом ноутбуке, обрабатывающем одно сообщение в «только локальном режиме», занимает около 0,3 секунды спама (три сообщения в секунду или 10_000 сообщений в час), обработка одного сообщения в «сетевом режиме» обычно занимает 5-7 секунд при использовании мобильного широкополосного соединения. Было бы неплохо провести несколько сетевых тестов параллельно во время массовых проверок.

Вы найдете сводка тем, связанных с производительностью, в руководстве по spamasassin.


#!/bin/sh
for email in "$@"; do
  # SCORE - "12.7/5.0" on success OR "0/0" on error
  SCORE=`spamc -c < "$email" > /dev/null 2>&1`
  # EXIT - 1 on spam detection, 0 on not-spam or error 
  EXIT=$?
  if [ "$EXIT" = "1" ] ; then
    mv "$email" /tmp/spam
  fi
done