Павел Литвинов
Основой почтового сервера в нашей организации был Exim. Он отлично
справлялся со своей задачей, при том что работал на достаточно слабом
компьютере. Но через какое-то время количество нежелательной почты (спама) в
организации возросло до такой степени, что это стало серьезной проблемой. И эту
проблему надо было как-то решать.
Выбираем подходящий антиспам-фильтр
Стандартными средствами Exim отсеивалось большое количество спама,
но не все. Посему было решено «прикрутить» к нему какой-нибудь антиспам-фильтр.
Сказано – сделано. Недолгие поиски в Интернете определили два основных
претендента:
n SpamAssassin;
n DSPAM.
Первый хоть и был «раскручен», обладал, на мой
взгляд, одним, но весомым недостатком. Учитывая, что эта программа была
написана на Perl, она сильно нагружала сервер при большом количестве входящей
почты. А если взять в расчет то, что на почтовом сервере еще работал антивирус ClamAV,
который и без того слабую машинку буквально вводил в ступор при анализе писем с
вложенными файлами, было решено не использовать этот вариант.
Второй мне понравился больше, но я не смог в нем
найти «белый список» с возможностью ручного редактирования (не автообучаемый),
да и не хотелось устанавливать на и так загруженный компьютер базу данных MySQL,
которая была необходима для полноценной работы DSPAM. В общем, и этот вариант
мне не подошел.
Начался второй этап поиска. Просматривая порты на
момент ключевого слова «SPAM», мне на глаза попался SpamProbe. Что сразу
понравилось, программка была написана на C++, была маленькой, шустрой в работе
и не требовала установки базы данных, в отличие от DSPAM. К тому же алгоритм
работы программы построен на основе математической теоремы Байеса. А ведь
именно этот метод статистической фильтрации является наиболее удачным и
используется практически всеми спам-фильтрами, в том числе и упомянутыми ранее.
Метод Байеса подразумевает использование
статистической, оценочной базы, разделенной на две части, одна из которых
содержит черный список слов, а другая – белый. При анализе письма
подсчитывается количество совпадений каждого отдельного слова (токена) со
списками в базе, и на основании этого вычисляется оценка. Оценка эта колеблется
в диапазоне от 0 до 1, где значение 0 означает отсутствие признаков спама, 1 –
полную уверенность в том, что это спам.