Журнал LinuxFormat - перейти на главную

LXF92:Убить спам

Материал из Linuxformat
Версия от 12:25, 20 ноября 2008; Crazy Rebel (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

Убить спам

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

Имя SpamAssassin [Спамоубийца, – прим. ред.] отлично подходит для голливудского фильма о фильтрации спама, даже неловко его тратить на какую-то там программу. Но так все же сделано, и приложение, известное, как SpamAssassin для многих из нас – лучшая возможность прикрыть свои почтовые ящики от злостных спамеров. За пять лет, прошедшие после регистрации SpamAssassin на SourceForge, он стал одним из наиболее уважаемых средств фильтрации почты – и среди бесплатных, и среди коммерческих.

SpamAssassin находится всего в паре «кликов» от вас, в менеджере пакетов вашего дистрибутива. Многие системы разбивают его на два инструмента: фоновый демон (spamd) и интерактивный клиент (spamc). Это гораздо эффективнее, чем запускать отдельную программу при каждой проверке почты. Даже среднестатистический пользователь может сканировать десятки писем за сессию, и использование демона устраняет накладные расходы на лишние запуски и остановы одного и того же процесса.

SpamAssassin больше похож на ниндзя, чем на викинга-берсеркера: единожды настроенный и запущенный, он работает тишком. Сидя в фоне, SpamAssassin оценивает степень «спамности» каждого письма, сравнивая содержимое с примерами заведомого спама. Если эта степень превысит определенный порог, SpamAssassin делает что-то типа виртуального эквивалента рисованию красного креста на входной двери, оставляя свою метку в заголовках сообщения. В зависимости от конфигурации, он также может изменить тему сообщения или пнуть его прямо в /dev/null. Любой почтовый клиент сумеет фильтровать сообщения, выискивая письма с меткой SpamAssassin’а и сбрасывая таковые в папку карантина. В принципе, то же самое делают и другие основанные на сопоставлении фильтры спама, но отличительная черта SpamAssassin – чудовищная эффективность, отточенная за годы постижения древнего боевого искусства (как сказали бы голливудские сценаристы) байесовой фильтрации.

Борьбу со спамом легко представить как сканирование текста сообщений в поисках стандартных фрагментов, присущих спаму. Эта технология известна как классификация текста. Слова типа «Viagra», «loan» и «Nigeria» отыскать легко, но простой поиск здесь не спасет. Спамеры давно научились обходить простые технологии фильтрации, фаршируя ключевые слова случайными символами и строками, точно так же, как какой-нибудь вирус модифицирует свой код ДНК, чтобы выжить.

Отношение «сигнал/шум»

Вот почему спам в наши дни напоминает скорее вывод «Энигмы», чем флайер случайного продавца. Наша любимая на сегодняшний день тема спама – «Я предумышленно убил вертекс» смысла не имеет, но фильтру не по зубам отличить его от «хорошего» письма. Байесовский фильтр спроектирован с обучаемостью постоянно меняющимся словам, используемым в спаме, и его секретное оружие – человек. Всякий раз, когда спам просачивается сквозь фильтр, пользователь «скармливает» его алгоритму обучения SpamAssassin, чтобы предотвратить повторную ошибку. Это ключ к успеху SpamAssassin: чем больше данных он получает, тем эффективнее становится; и спам удушен.

Вы можете протестировать байесов фильтр SpamAssassin’а из командной строки, не беря в голову демона или клиента. Сохраните письмо со спамом из вашего почтового клиента в текстовый файл и введите spamassassin с последующим именем файла, содержащего ваше сообщение. Вывод SpamAssassin’а встраивается в стандартный формат электронного сообщения и промчится мимо вас в командной строке, если вы не перенаправите его в отдельный файл, используя >new_file.txt.

SpamAssassin добавляет несколько строк в заголовок всех просканированных писем, будь то спам или нет, неважно. Заголовки сообщений (как правило, скрываемые клиентами электронной почты) содержат данные для передачи сообщения от отправителя получателю, а также путь, пройденный письмом за путешествие до вашего почтового ящика. Как минимум, SpamAssassin добавляет три заголовка: X-Spam-Checker-Version, X-Spam-Level и X-Spam-Status. Поле Level используется для отображения степени сходства письма со спамом: набранный балл отображается символами «звездочка». Если их больше пяти, письмо, вероятно, является спамом. По данным поля Level почтовые клиенты типа KMail выводят кнопку предупреждения достаточно устрашающего вида.

Результаты экзамена

Но пища для размышления может быть найдена в последнем поле, Status. Оно подытоживает обработку, выполненную над сообщением, и то, как SpamAssassin определил похожесть сообщения на спам. Ниже показан статус спам-сообщения, которое мы пропустили через SpamAssassin с настройками по умолчанию:

 X-Spam-Status: No, score=4.7 required=5.0 tests=HTML_FONT_BIG,HTML_MESSAGE,RCVD_IN_BL_SPAMCOP_NET,RCVD_IN_XBL autolearn=no version=3.14

Итоговый балл этого письма – 4.7, он не дотягивает до порога 5.0, определенного в поле required. Тесты, использованные для определения балла, перечислены в поле tests. В нашем случае на письмо отреагировали лишь четыре теста. Первые два обнаружили, что оно является HTML-сообщением с крупными шрифтами ('HTML_FONT_BIG и HTML_MESSAGE). Последние два теста сверяют IP-адрес в заголовке сообщения с черными списками известных преступников, размещенных на некоторых серверах в сети. Несмотря на эти тесты, SpamAssassin не смог набрать достаточно предупреждений, чтобы пометить это сообщение как спам. Одно из решений – отредактировать конфигурацион-ный файл в ~/.SpamAssassin/user_prefs и понизить параметр required_score с 5.0 до 4.5, но в результате SpamAssassin с большей вероятностью будет ошибочно помечать нормальные письма как спам.

Лучше научить SpamAssassin распознавать этот тип сообщений как спам, указав ему на эту ошибку. Используя команду sa-learn, вы можете либо обучить SpamAssassin распознавать спам, который был пропущен, либо повторно рассмотреть сообщения, которые были восприняты как спам (они помечаются как ‘ham’). Чтобы обучить SpamAssassin, наберите либо sa-learn --spam, либо sa-learn --ham, с последующим именем файла, содержащего сообщение. Чем на большем числе писем вы сможете провести обучение, тем лучше ваша защита.

Именно обучаемость делает SpamAssassin столь мощным. Потратив время и потренировав его на письмах из вашего почтового ящика, вы сможете ожидать, что спам вас больше не побеспокоит. Но лучшее, что вы можете сделать для противостояния спаму – никогда не отвечать ни на какие спам-сообщения. Единственное, что в глазах спамера оправдывает его грязный бизнес – это одно письмо из миллиона, приносящее ему некоторые деньги. Вы удивитесь, но некто даже взял да и щелнул на «ответить», получив попрошайническое письмо якобы от имени вдовы Ясира Арафата. LXF

Советы по SpamAssassin

  • Сохраняйте свой спам! SpamAssassin учится на своих ошибках. Это означает, что вам нужно использовать ваши cпам-сообщения для обучения фильтра.
  • Не просто переносите ошибочно отфильтрованные сообщения назад в свой почтовый ящик. Позаботьтесь, чтобы SpamAssassin больше не сделал такую же ошибку: пропустите ‘ham’ через утилиту sa-learn.
  • Проверяйте сообщения у источника. Если у вас запущен почтовый сервер, установите простой скрипт для проверки входящей почты. Если вы платите кому-то за обслуживание вашей почты, попросите его установить SpamAssassin.
  • Интегрируйте SpamAssassin в свой почтовый клиент. Даже без встроенной поддержки вы все же можете пропускать почту через SpamAssassin, используя фильтр.
  • Если ваш клиент не интегрируется со SpamAssassin, сортируйте спам и ошибочно помеченные письма по своим собственным папкам. Вы можете затем обучать SpamAssassin из командной строки.
  • Запускайте SpamAssassin как демон. Команда spamassassin удобна, но интенсивно нагружает процессор. Используйте вместо нее spamd и spamc.

Шаг за шагом: Настройки для KMail или Evolution

LXF92_spam1.png

Установите SpamAssassin Последние версии KMail (слева) и Evolution (справа) имеют встроенную поддержку SpamAssassin. KMail использует Мастер (Anti-Spam Wizard), а Evolution – расширение. Для работы обоих нужно убедиться, что установлен SpamAssassin, а также демон spamd и клиент spamc.

LXF92_spam2.png

Задайте пункт назначения В KMail создайте папку «spam» и укажите ее как место назначения в Мастере. Evolution создает папку «junk» и помещает спам в нее автоматически. Не позволяйте почтовому клиенту удалять сообщения до ручной проверки: SpamAssassin поначалу может допускать некоторые ошибки.

LXF92_spam3.png

Помогите ему учиться!

В KMail выделите любой спам, который не определился автоматически, и щелкните по круглой зеленой иконке. В Evolution щелкните по иконке Junk. Есть и иконки для пометки сообщения как ошибочного причисленного к спаму, их SpamAssassin тоже использует для обучения.

Персональные инструменты
купить
подписаться
Яндекс.Метрика