Если на
почтовом сервере провайдера нет антиспамового фильтра, то отсеять нежелательную
корреспонденцию помогут специальные программы, которые устанавливаются на
клиентскую машину. Но и отсеивать они будут уже в почтовой программе.
Черные списки
Как же программа может определить, является
письмо спамом или нет? Один из довольно эффективных и простых методов –
проверка IP-алресов
узлов, через которые пришло письмо. Все эти адреса содержатся в заголовке
письма. В Интернете существует множество служб, содержащих списки IP-адресов узлов –
источников спама. Сюда попадают открытые релеи (серверы, разрешающие отправку
писем всем, даже анонимным пользователям), открытые прокси, зомбированные сети
и другие потенциальные источники спама. Конечно же, сюда заносятся и адреса,
для которых уже выявлен факт массовой рассылки. Списки пополняются не только по
жалобам от людей, но и по результатам работы роботов, которые проверяют
различные узлы. Поэтому периодически в таких списках оказываются «нормальные»
серверы, которые по каким-либо причинам не совсем корректно настроены.
Анализ содержимого
Принципиально другой метод определения спама –
просмотр содержимого письма. Здесь есть несколько подходов. Первый – это метод
Байеса. Фильтр использует специально подготовленную базу слов, в которой
вероятность того, что конкретное слово содержится в спам-письме, выражена
числом. На основе слов, имеющих ярко выраженную принадлежность к спаму или,
наоброт, к обычным письмам, вычисляется общая характеристика письма.
Получившееся число отражает вероятность того, что проверенное письмо – спам.
Далее, в зависимости от этой вероятности можно установить нужный порог, при
котором письмо будет отфильтровано. При этом такой фильтр можно обучать,
указывая ему на ошибки. Таким образом он будет приспосабливаться к конкретному
пользователю и к его типу корреспонденции.
Второй подход – это анализ «оформления»
письма. Спам-письма часто обладают характерными особенностями. Например, если
это письмо в формате HTML, то в нем используются шрифты разных размеров и цветов. Или же текст
письма представлен в виде графического файла. Есть также множество других
деталей, не присущих «нормальным» письмам, которые можно обнаружить в заголовке
письма.
Мы отобрали несколько программ,
предназначенных для фильтрации спама на компьютерах конечного пользователя. Эти
программы используют как вышеописанные способы обнаружения спама, так и
некоторые другие. Большинство таких программ требует изменения настроек
почтового клиента. В результате этих изменений почтовый клиент соединяется не с
самим почтовым сервером, а уже с программой-фильтром на этом же компьютере,
после чего фильтр проводит почтовую сессию с почтовым сервером и возвращает
результат клиенту. Для этого в настройках почтовой программы адрес РОР3-сервера
заменяется на 127.0.0.1 (или localhost, что, по сути, одно и то же), а после имени пользователя через
специальный символ-разделитель (как правило, это @) добавляется имя (адрес)
настоящего сервера. Иногда требуется изменить в большую сторону и время
ожидания данных от сервера, так как процесс проверки письма антиспамовым
фильтром замедляет доставку почты.
SpamPal
SpamPal – бесплатная программа, которая делает то, что, по идее, должно
происходить не на компьютере пользователя,
а на почтовом сервере: находит в заголовке письма IP-адреса узлов,
участвовавших в его доставке, и запрашивает различные службы черных списков (DNSBL). Если хотя бы одна
служба черного списка вернула положительный ответ, то письмо помечается как
спам и передается в почтовую программу. Помечается письмо строкой “X-SpamPal” в служебном
заголовке письма с указанием службы черного списка, которая выдала
положительный ответ. Кроме того, изменяется и тема письма – туда добавляется
строка “***SPAM***”. Для более удобной работы со спамом в почтовой программе следует
настроить фильтр, отправляющий все письма с такой темой в особую папку. Ответы
от DNSBL кешируются, чтобы уменьшить количество
отправляемых запросов.
Основа работы программы – список DNSBL – обновляется автоматически. Из списка всех доступных DNSBL можно выбрать, какие
именно стоит использовать. Есть предустановленные наборы активных DNSBL (называемые
стратегиями), различающиеся «агрессивностью» фильтрации. Для каждого DNSBL из списка доступно
его краткое описание. Кроме того, в черный список можно добавить принадлежность
открытого релея определенной стране, почтовый или IP-адрес.
В белый список (whitelist) добавляются почтовые адреса, с которых
заведомо не придет спам, даже если информация из черных списков утверждает
обратное. Есть режим автоматического занесения адресов в белый список, если с
этих адресов в течение определенного времени приходит не спам. Для исключения
ложного срабатывания используется также игнорирующий список. Его содержимое
(одиночные IP-адреса
и диапазоны IP-адресов) тоже пропускается фильтром, то есть письма не считаются
спамом, даже если DNSBL вернет положительный ответ.
В SpamPal предусмотрена установка плагинов. Есть плагин, реализующий фильтрацию
по алгоритму Байеса, плагин для проверки URL, находящихся в теле письма, а также плагин для
фильтрации с использованием регулярных выражений (regexp).
Надо заметить, что даже при установке
стратегии средней агрессивности фильтрации в спам попали письма, написанные с
публичных почтовых серверов, рассылки Subscribe.ru и даже письма, отправленные через провайдера
«МТУ-Интел». Поэтому нужно устанавливать самую щадящую стратегию или
разбираться, какой из DNSBL блокирует нужное, и вносить изменения в их список.
Сейчас ведется разработка SpamPal 2, в которой будет
добавлена возможность работы программы в виде службы Windows, параллельная
обработка писем, а главное – работа в режиме прозрачного прокси (transparent proxy). То есть уже не понадобится изменять настройки
почтового клиента: SpamPal будет сама ловить и обрабатывать соединения почтового клиента с
серверами.
Описание и бета-версия SpamPal 2 доступны по
адресу http://www.spampal2.org
Продолжение следует.