Опыт настройки и эксплуатации SpamAssassin 3.0

advertisement
SpamAssassin:
опыт эксплуатации
Алексей Тутубалин
lexa@lexa.ru
«Ашманов и Партнеры»
Где происходила эксплуатация:






Lexa.ru – персональный домен (зарегистрирован в
1996 г.).
Адрес lexa@lexa.ru общеизвестен, широко
опубликован, используется в форумах, на сайтах и в
новостях в течение 8 лет.
600-1000 спам - сообщений (и 300-500 вирусов) в
сутки.
Очень разнообразная «нормальная почта», разные
языки, разные темы, 100-300 сообщений в сутки.
Классические методы (RBL, черные списки, простые
контентные фильтры) – неэффективны.
С весны 2002 года используется SpamAssassin,
результаты работы которого внимательно изучаются.
SpamAssassin: особенности

Общая идея: множество проверок для
каждого сообщения, обойти сразу много
проверок спамерам трудно.

Общее количество правил на сегодня: >800

Написан на Perl, легко расширяем

FreeWare, OpenSource,
лицензия Apache (начиная с v3.0)
Что анализируется в правилах

Заголовки сообщения (анализируются
регулярными выражениями или отдельной
подпрограммой):



Набор заголовков, их содержание (признаки
spamware)
Правила по DNS (RBL, SPF)
Тело сообщения:



Правила по нераспакованному тексту сообщения.
Правила по тексту (ключевые слова, особенности
оформления, признаки spamware).
Вероятностные правила.
Проверки текста сетевыми сервисами (Razor, DCC,
URI-DNSBL).
Три типа правил

«Локальные» - проверки текста и заголовков
сообщений (текст, оформление, структура
письма).

«Вероятностные» - сравнение с базой данных
по частотностям слов (подсчет вероятностей
по 2).

«Сетевые» - обращение к сетевым сервисам
(RBL/DNSBL, URI-DNSBL, Razor, DCC, Pyzor)
Примеры правил

Проверка RBL
header RCVD_IN_CBL rbleval:check_rbl('CBL', cbl.abuseat.org.')
describe RCVD_IN_CBL Received via a relay in cbl.abuseat.org
tflags RCVD_IN_CBL
net
score RCVD_IN_CBL 1.2

Проверка заголовка
header NO_REAL_NAME
From =~ /^["\s]*\<?\S+\@\S+\>?\s*$/
describe NO_REAL_NAME From: does not include a real name
score NO_REAL_NAME 0.124 0.178 0.336 0.007

Проверка текста письма
body MILLION_EMAIL
/million (?:\w+ )?(?:e-?mail )?addresses/i
describe MILLION_EMAIL Get a million email addresses
score MILLION_EMAIL 0.093 0.417 0.937 0.000
Подсчет результата

Каждое правило имеет свой вес
(может быть несколько весов, выбираемых в разных
режимах использования).




Стандартные («дистрибутивные») веса правил
рассчитываются по подборкам писем авторами
SpamAssassin.
Вес правила может быть переопределен
администратором или пользователем.
Результат работы – арифметическая сумма
весов сработавших правил – сравнивается с
порогом.
Порог «спама» может быть переопределен
администратором (для системы) или
пользователем (для себя лично).
Дополнительные возможности





Черные/белые списки.
Возможность задать желаемые языки и
кодовые страницы сообщений.
Хранение «истории» для каждого
отправителя – SA запоминает и использует
вероятность получения спама от данного
отправителя.
Самообучение вероятностного механизма.
Механизм расширения, позволяющий
добавить новые методы распознавания.
Идеальное решение ? Не вполне!

Опыт использования версий 2.x в целом
позитивный, НО:




«Дистрибутивная» конфигурация требует
переопределения весов многих правил, без этого –
много ложных срабатываний.
Вероятностные методы склонны к «излишнему
обучению», после чего их качество резко падает, за
этим нужно постоянно следить.
После приложения заметных усилий по настройке,
ложные срабатывания все равно присутствуют
(около 0.1%)
Качество фильтрации спама – 75-85%
SpamAssassin 3.0: Качество работы

Качество работы версии 3.0 заметно лучше
чем у версий 2.x, в первую очередь за счет
отсутствия ложных срабатываний:



Уровень распознавания спама 75-91%
Ложных срабатываний за время тестирования не
было
Для ликвидации ложных срабатываний:


Необходима дополнительная настройка.
При использовании вероятностных методов –
нужна аккуратность при обучении.
Качество работы подробно (1)
Методика: запуск SA дважды

1.
2.
На всю почту: запуск без использования
сетевых сервисов (RBL, URI-DNSBL, DCC,
Razor).
Для нераспознанных на первом этапе писем
– запуск с сетевыми проверками.
Результат:

1.
2.
Локальными методами определяется 70-85%
спама.
Сетевые проверки дают 4-6% прироста
качества распознавания.
Качество работы подробно (2)
Трехшаговый тест:

1.
2.
3.
Результат:

1.
2.
3.

Локальные правила
Локальные + вероятностные
Локальные + вероятностные + сетевые
70-85% распознавания
+5% к варианту 1
+~0.5% к варианту 2
Расхождения двух вариантов тестирования
качества определяются разными весами правил в
разных режимах использования (при отключении
части правил, остальные получают больший вес)
Недостатки SpamAssassin 3.0

Требовательность к ресурсам

Низкая скорость работы (запуск из командной
строки/«клиент-сервер», тестировалось на P3-1000Mhz)





0.2/0.25 письма/сек. при включенных сетевых
проверках
0.4/2.2 письма/сек. – локальные + вероятностные
правила
0.5/3.6 письма/сек. – только локальные правила
Высокий расход RAM: 30-36Mb на процесс
При хранении данных в SQL – дополнительное
падение производительности (особенно в
режиме обучения).
Недостатки (продолжение)

Вероятностные методы:



требуют качественного обучения.
Для каждого потока почты (пользователя)
требуется отдельное обучение.
Польза от самообучения сомнительна:




При стандартных настройках обучение спаму происходит
на сообщениях, которые и так распознаются с огромным
запасом.
При снижении порога самообучения – растет возможность
обучения по ложным срабатываниям.
Большое количество правил затрудняет
настройку.
SA не имеет доступа к данным SMTP-сессии
и «угадывает» их из заголовков сообщения.
Выводы и рекомендации


Несмотря на ряд недостатков, использование
SA для не очень больших потоков почты
вполне возможно.
При возникновении проблем с
производительностью уместна
«двухступенчатая» схема:



Сначала «локальные» проверки
Для прошедших первую стадию писем – сетевые
(или сетевые+вероятностные) проверки
При использовании вероятностных методов
необходима аккуратность на стадии обучения
Рекомендации по настройке

Во всех случаях:




Переопределить (в 0) веса правил, дающих ложные
срабатывания на письмах c русским текстом
(HEAD/FROM/SUBJ_ILLEGAL_CHARS, BODY_8BITS)
Указать в списке языков русский (ok_languages,ok_locales ru)
Настроить белый список (общий или отдельный для каждого
пользователя)
При использовании вероятностного метода




При обучении использовать тщательно проверенные
подборки писем, ошибочное попадание «спама» в «хорошие»
может сильно испортить результат обучения.
Подборки должны быть индивидуальными для получателей.
Не стоит учить на слишком больших объемах спама.
Использование самообучения (autolearn) может привести к
резкому ухудшению качества в некоторый момент.
Спасибо за внимание
Пожалуйста, задавайте вопросы
Download