Новыми и совершенно непривычными значениями привычных слов сегодня никого не удивишь. Вот и слово SPAM появилось задолго до электронной почты и нежелательных рекламных рассылок. Это зарегистрированная еще в далеком 1936 г. торговая марка компании Hormel, известного американского производителя мясных консервов, представляющая собой сокращение от SPiced hAM (ветчина со специями). Согласно пресс-релизу компании, годовой объем продаж продуктов под торговой маркой SPAM cоставляет около 45 млн. кг, эти продукты официально поставляются в 92 страны. В том же пресс-релизе говорится: «SPAM получил такое широкое распространение благодаря удобству и универсальности использования». По одной из гипотез название «спам» для нежелательных рассылок привилось под влиянием фильма, по сюжету которого работники одного из ресторанов добавляли ветчину SPAM практически во все предлагаемые блюда. Впрочем, существуют и другие версии.

Предполагается, что электронный спам столь широко распространился опять же как универсальное и дешевое средство продвижения товаров. Вопрос эффективности затрат на спам представляется достаточно спорным, вряд ли кто серьезно занимался или будет заниматься проблемой возврата инвестиций в нежелательные рекламные рассылки, но именно потому, что эти инвестиции значительно меньше любых других, направленных на продвижение товаров, количество подобных «коммерческих предложений» в наших почтовых ящиках постоянно увеличивается. Хотелось бы надеяться, что рано или поздно трезвый расчет возьмет верх над мифом о дешевизне и эффективности спама, но пока этого не произошло, непрерывно растущие объемы спама становятся серьезной проблемой практически для каждого пользователя электронной почты.

О том, как бороться со спамом, сказано и написано достаточно много, в том числе и в нашем журнале. И в общем-то все изложенные рекомендации остаются актуальными, но их применение не всегда возможно и не гарантирует отсутствия спама в почтовом ящике, хотя безусловно уменьшает его количество. В этой статье мы обсудим еще один механизм борьбы с нежелательной почтой — программные фильтры, выделяющие спам из всех остальных писем на основе анализа содержания сообщения. Кстати, повсеместное распространение подобных программ может привести к еще одной проблеме — частому ложному срабатыванию фильтров и, как следствие, к потере почтовых сообщений. Возможно, представление о принципах работы подобных программ поможет вам избежать таких потерь.

Теория

Как правило, не так уж сложно по первым же строчкам письма определить, что это спам. В соответствии с законами жанра, такие послания заметно отличаются от обычных писем. А раз так, считают разработчики спам-фильтров, то вполне возможно, что с подобной задачей справится и компьютер.

Первый и самый простой способ фильтрации сообщений — на основании наличия определенных слов и выражений — не требует каких-либо специальных алгоритмов или программных средств, а необходимой для его реализации функциональностью обладают практически все современные почтовые клиенты. Действительно, так ли часто нам приходят дельные письма со словосочетаниями вроде «нигерийское правительство» или «отказаться от рассылки»? Даже такой простой способ может заметно уменьшить количество нежелательной корреспонденции. С другой стороны, понятно, что слов — однозначных индикаторов спама не так много и существует вполне реальная опасность вместе со спамом удалить действительно нужное письмо. Наличие определенного слова обозначает лишь определенную вероятность того, что письмо является спамом, но не более того. Усложненный механизм фильтрации выглядит так. Составляется список слов, особенно часто встречающихся в спаммерских письмах, а также тех, которые в них попадаются крайне редко. За слово из «черного» списка письму добавляется некоторое количество баллов, за слово из «белого» — вычитается. Если в итоге письмо набрало больше определенного количества баллов — значит, это спам. Именно по такому принципу работают многие предлагаемые сегодня фильтры.

Модификацией данного метода можно считать самообучающиеся фильтры, настраивающиеся под конкретного пользователя. Для первоначальной настройки таких фильтров необходимо предоставить более или менее объемную собственную коллекцию спаммерских писем и рабочей корреспонденции. Программа проводит частотный анализ входящих в обе коллекции слов и рассчитывает вероятность того, что при вхождении данного слова в текст письмо оказывается спамом, по стандартной формуле. Например, если слово «халява» встречается в пятистах из тысячи спаммерских писем и в пяти из двухсот нормальных, то вероятность того, что письмо, содержащее слово «халява», является спамом, можно определить так:

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

При анализе нового письма проводится частотный анализ входящих в него символьных последовательностей (слов) и выбирается определенное количество слов, вероятность содержания которых в спаммерском письме заметно отличается в любую сторону от среднего значения 0,5. Вероятность того, что письмо является спамом, вычисляется опять же по стандартной формуле:

где p1, p2, p3 — соответствующие вероятности для каждого из слов.

После этого все письма со значением p больше определенного, например 0,9 или 0,95, отмечаются как спам. По мнению многих специалистов, метод статистического анализа представляется одним из наиболее перспективных и многообещающих.

Более традиционным методом фильтрации почты является использование баз данных спаммерских IP-адресов и текстов: при получении письма IP-адрес отправителя и (или) текст сообщения проверяются на предмет их присутствия в «черных списках» IP-адресов и базах данных известных спаммерских писем. Вспомогательными аргументами при отнесении сообщения к категории нежелательной корреспонденции могут служить количество цифр в адресе отправителя (так как спам-адреса генерируются автоматически, цифр в них значительно больше), разница между временем отправления и временем получения письма и т. д.

Впрочем, спам отличается от обычных писем далеко не только содержимым и IP-адресом отправителя. Оригинальное решение предложили разработчики программы winantispam. Они обратили внимание на тот факт, что чаще всего спам рассылается с автоматически созданных почтовых адресов и спаммеры, как правило, не вступают в переписку со своей «целевой аудиторией». То есть еще одно отличие спаммерского письма состоит в том, что шансов завязать переписку практически нет. А раз так, то имеется стопроцентно надежный способ отделить спам от всей остальной корреспонденции — достаточно запрашивать у каждого нового отправителя подтверждение того, что его письмо действительно адресовано именно вам. Способ, конечно, действенный, но несколько неоднозначный; есть опасение, что он может быть неадекватно воспринят авторами писем. Но идея, безусловно, достаточно оригинальная.

Практика

Своего рода наглядной демонстрацией представленного выше алгоритма статистического анализа является программа Annoyance Filter, написанная Джоном Волкером (John Walker). Единственный способ взаимодействия с программой — интерфейс командной строки с набором опций, а тексты писем для фильтрации программой считываются только в виде txt-файла. Понятно, что ни о какой интеграции с почтовыми клиентами вроде Microsoft Outlook речи не идет. Но есть у программы и неоспоримые достоинства — она абсолютно бесплатна и распространяется с открытым исходным текстом. Таким образом, лучшего средства разобраться в том, как работают подобные фильтры, просто не придумаешь.

Следующая программа — SpamPal — отличается возможностью интеграции практически со всеми известными почтовыми клиентами (Outlook, The Bat, Eudora и еще около 20 различных программ). Эта программа использует для выделения спама так называемые DNSBL (DNS Providers Blacklist — черные списки спаммеров). После установки программа становится своего рода посредником между сервером и почтовым клиентом. Во все сообщения, отправленные с IP-адресов, содержащихся в черных списках, включается текст «X-SpamPal: SPAM». Впоследствии это позволяет перемещать их в отдельную папку, удалять и т. д. с помощью встроенных практически во все почтовые клиенты средств поиска писем по содержащемуся в них тексту. Для использования программы после ее установки необходимо настроить ваш почтовый клиент таким образом, чтобы программа обращалась не напрямую к почтовому серверу, а к программе SpamPal. Для этого надо изменить в соответствующих учетных записях адрес почтового сервера на localhost, а реальные адреса почтовых серверов добавить к списку серверов программы SpamPal (подробное описание этой операции для всех основных почтовых клиентов приводится в cопроводительной документации к SpamPal). Одна из возможных опций программы — блокировка писем из определенных стран. Если вы не ждете писем из Нигерии, то можете присвоить статус спама всем письмам, пришедшим оттуда, судя по исходящему IP-адресу. Таким образом блокируются, например, известные письма с предложением получить миллион долларов. Некоторое удивление вызвало наличие в том же списке опции «блокировать все письма из России», но по умолчанию эта опция отключена. Программа предоставляет также возможность создавать собственные черные списки. Скажем, добавив в черный список запись *@hotmail.com, можно заблокировать всю почту, приходящую с этого сервера.

В отличии от описанных выше программ, распространяемых бесплатно, продукт IHateSpam компании Sunbelt является коммерческой разработкой, но отличается дружественным интерфейсом и простотой настройки. Программа полностью интегрируется с почтовым клиентом Microsoft Outlook или Outlook Express (в ближайшее время предполагается расширить список поддерживаемых почтовых клиентов). После установки программы в Microsoft Outlook добавляется новая панель инструментов IHateSpam для настройки фильтров и «черных» и «белых» списков. При получении новой почты письма проверяются на принадлежность к спаму практически всеми описанными выше способами — анализируется содержание письма на наличие характерных признаков спама, проверяются IP-адреса отправителей, содержание письма сравнивается с известными спаммерскими текстами. Кроме того, программа постоянно скачивает обновления для баз данных. Ее можно использовать бесплатно в течение 30 дней, для продолжения работы требуется регистрация; полнофункциональная версия программы оценивается производителями в 20 долл.

Работа над новыми алгоритмами и методами фильтрации продолжается, но уже сейчас можно говорить о первых успехах. При тестировании подобные фильтры опознают до 95% спама при отсутствии ложных срабатываний. Если такие программы получат широкое распространение, то в обозримом будущем спаму придется либо серьезно видоизмениться, чтобы проходить через системы фильтров, либо вообще исчезнуть. А слову SPAM вернется первоначальное значение, если, конечно, у владельцев торговой марки нет других планов на этот счет.