The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Борьба со спамом на почтовых серверах."
Отправлено jdspb, 18-Июл-05 19:11 
Месяц назад я попробовал новый почтовик XMail v 1.21 /все в одном флаконе, smtp, pop3, imap и т.д. http://www.xmailserver.com /.
Заработало через 5 мин. после подстройки конфига, все достаточно ясно и прозрачно. Для машины выделил несколько доменов, на которые из-за особенностей их владельцев сыпалось довольно много спама /точнее - только спам/.
Основной сервер работает с MTA sendmail и его пока трогать боязно, т.к. об XMail практически нет никаких отзывов, а которые есть, часто путают с одноименной программой под X11-unix. Так вот - спам полился широкой речкой...
Идеи, которые заложены в статье http://www.anrb.ru/linux/regex.html были реализованы уже давно, помогали конечно, но недостаточно.

В xmail есть возможность обрабатывать письма на стадии соединения  - делается это просто: название фильтра включается в файл filters.pre-data.tab, в котором указывается внешняя программа обработчик.

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

а теперь bash и регекспы...конспективно

Фильтру на вход передаются два параметра File=$1 и RemoteAddress=$2

1. Отсекаем локальные адреса
if [ "$RemoteAddress" == "127.0.0.1" ]; then exit; fi

2. Whitelist - список своих левых адресов /правые и так проходят нормально :-) /
Found=`cat /var/XMailRoot/filters/whitelist.ip|grep $RemoteAddress|wc -l|sed -e 's/ //g'`

3. Определяем обратную запись
Relay=`dig -x $RemoteAddress | grep PTR |grep in-addr.arpa.| awk  '{print $5}'`

--- a теперь начинаем резать ---

4. Считаем минусы в имени: 2-допустимо, больше - режем...
Minuses=`echo "$Relay" | sed -e 's/[a-z A-Z 0-9 .]*//g' | wc -m|sed -e 's/ //g'`

5. Считаем группы цифр: режем, ежели больше трех...
DigGroups=`echo "$Relay" | sed -e 's/[0-9]\{2,\}/+/g' -e  's/[a-z A-Z]//g' -e 's/-//g' -e 's/\.//g' -e 's/[0-9]//g' | wc -m|sed -e 's/ //g

6. Скурпулезно считаем точки: у порядочного сервера больше трех не бывает.../или я не прав?/
Dots=`echo "$Relay" | sed -e 's/[0-9 a-z A-Z -]//g' | wc -m|sed -e 's/ //g'`

7. И последнее, проверяем на "неприличные" слова из списка
BadWords="dsl. dslam. dial cable. ppp dhcp pool node dyn- host- host. home. dynamic try user client customer \-gw. modem dynip bbtec"

Заработало практически сразу, я даже числа знаков и точек не подбирал.

Спам конечно проходит, но это уже единицы, и их можно обработать руками.

Итог работы: за 15 дней июля на сервер пришло 5557 запросов на доставку /100%/

Из них, отвергнуто без обработки 2799 /50%/ по списку "spammers.tab", составленному по логам работы этого фильтра - это так называемый рецидив;

1008 /18%/ писем сервер отверг по внешним спамерским спискам. Статистика такова: из 17 прописанных серверов реально работают только пять

list.dsbl.org    727
bl.spamcop.net   249
sbl.spamhaus.org  25
dul.ru             6
relays.ordb.org    1

1346 /24%/ писем сервер отверг благодаря работе фильтра. Это т.н. новые спам-письма Из них:
566 - не прописан ДНС;
442 - слишком много минусов;
241 - много точек;
73  - группы чисел;
24  - из списка слов.

пример из лога для каждого случая:
2005-07-11 03:26:27     58.19.43.13     No DNS entry
2005-07-11 03:26:27     201.2.154.46    Minuses=3       201-002-154-046.osrce204.dial.brasiltelecom.net.br
2005-07-11 03:35:27     195.5.144.26    Dots =3         ppp-144-26.dialup.metrocom.ru
2005-07-11 04:03:47     200.124.28.78   DigGroups=7     cm-200.124.28.78.cableonda.net.28.124.200.in-addr.arpa.
2005-07-04 10:30:31     195.98.67.39    Bad Word        uas1-pool-39.vrn.ru.

Через фильтры просочилось 404 письма, из них 15х24=360 - это служебные, ежечасно отправляемые с самого сервера отчеты.

Выводы: система фильтрации "пропустила" 100%*(404-15*24)/(5557-15*24)=0,85% спам-писем, о чем честно сделала записи в логах, типа
2005-07-13 10:45:02     195.208.235.29  Pass thru...    relay02.infobox.ru.

Мне кажется, что данный алгоритм можно использовать и для других MTA.
Двигаемся дальше...

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру