The OpenNET Project / Index page

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

Антиспамовый фильтр (Sendmail + DrWeb + SpamAssassin) (sendmail mail virus spam filter)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: sendmail, mail, virus, spam, filter,  (найти похожие документы)
From: Сергей Тараненко <setar@trinity.spb.ru.> Newsgroups: email Date: Mon, 30 Oct 2003 14:31:37 +0000 (UTC) Subject: Антиспамовый фильтр (Sendmail + DrWeb + SpamAssassin) -= Постоянный адрес статьи в сети http://www.3nity.ru/viewtopic.htm?t=1459 =- Последнюю неделю усиленно работал над проблемой спама, уж ож очень спамеры активизировались нынче. Пред история - в нашей конторе стоит почтовый сервер который работает примерно на 20 пользователей. На реальных юзеров сыплется почта с большого количества доменов. Последнее время из почтовых ящиков каждое утро стало выгребаться 200-300 спамовых писем, причем это как direct spam по БД так и тупой спам по ящикам типа info@домен , sales@домен и т.д. Спам это плохо, потому что отнимает время, трафик да ещё в добавок у утра придаёт отрицательных эмоций... кстати трафика на спам уходит каждый день несколько сотен МБ, что за месяц влетает в кругленькую сумму. Так как исторически сложившимся почтовиком у нас работает sendmail, фильтрацию спама я решил реализовавать именно на нём, и отказываться от него только в случае невозможности решения поставленной задачи. Итак, изучив основательно методы борьбы со спамом описаные в интернете я нашёл несколько решений которые можно разделить на группы: - Службы фильтрации, как правило платные, когда вы почту офиса заворачиваете на определённый адрес, а на ваш почтовик приходит уже "чистая" почта. Этот метод я отмёл как слишком простой и неконтролируемый ;) - Входные фильтры основаные на анализе ip адреса передающего хоста и использования общих баз данных ip спамеров (DNSBL). Практически малоэффективный способ борьбы с современными методами спама, в данный момент эту функцию sendmail я отключил вовсе. - фильтрация на основе постоянного пополнения access листа адресами спамеров. Использует встречный анализ подозрительности отправляющего хоста ( win|linux ; есть трояны| нет их ; уровень домена, наличие в имени домена ppp dialup и т.д.). Пробовал применять. требуется постоянный контроль, тонкая правка ручками регулярных выражений и коэффициентов подозрительности. Но самое плохое то что первое письмо от спамера этот фильтр пропускает по любому (т.к. работает на анализе лога), что делает его работу малоэффективной. - фильтрация по заголовкам писем с использованием очень продвинутого конфига sendmail. Хорошая статья по этому поводу http://linux.ufaras.ru/regex.html Использовал но получил много нареканий от коллег по сбоям в работе фильтра. Требуется тонкая и вдумчивая подгонка регулярных выражений. - И наконец то решение на котором я остановиля - это применение внешних программ для анализа содержимого письма. Программы проверки (их может быть несколько) сидят обычными демонами и принимают информацию от sendmail по механизму milter, возвращая в почтовик свою оценку и рекомендацию к дальнейшему действию. По такому же принципу работает DrWeb Mail filter, его я тоже применяю для защиты от вирусов, почтовых бомб, и почтовых червей. Программу для защиты от спама я использовал spamassassin http://www.spamassassin.org Она имеет развутую систему контекстного лингвистического анализа, систему обучения и самообучения. Кроме того она может работать совместно с другими программами анализа. Теперь собственно по прикручиванию spamassassin к sendmail. Настройка Sendmail для работы с поддержкой milter Здесь всё крайне просто: качаем последний дистрибут с www.sendmail.org распаковываем его, создаём в дистрибуте файл devtools/Site/site.config.m4 с содержимым: APPENDDEF(`conf_sendmail_ENVDEF', `-DMILTER') APPENDDEF(`confENVDEF',`-DMAP_REGEX') первая строка включает механизм milter вторая позволяет использовать регулярные выражения в конфиге Далее компилируем и инсталируем сам sendmail ./Build && make all && make install Для RedHat я подправил скрипт запуска (что то в оригинальном мне не понравилось) http://www.3nity.ru/files/antispam/sendmail вот он, только проверте пути. Файл конфигурации cf/cf/sendmail.mc (нужно создать) http://www.3nity.spb.ru/files/antispam/sendmail.mc лежит здесь, объяснять все опции здесь я не буду, скажу лишь что подходит он для большинства офисных почтовиков фактически без изменений. Уникальными и нестандартными здесь лишь расположение файла aliases (он вынесен в /etc/mail/), и изменённые названия директорий спулов (QUEUE_DIR и MSP_QUEUE_DIR) эти строчки можно просто закоментировать. После пересборки конфига требуется перезапуск sendmail (проверяйте пути): cd /usr/src/sendmail-8.12.10/cf/cf rm -f sendmail.cf make sendmail.cf mv ./sendmail.cf /etc/mail/sendmail.cf /etc/init.d/sendmail restart Настройка DrWeb для работы по механизму milter Последняя версия DrWeb под linux закачивается с сайта http://drweb.ru/unix/ от туда же загружается milter для sendmail (пакет drweb-sendmail-4.30-linux.tar.gz). Сам drweb настраивается стандартным образом, обращаем внимание на то чтобы демон висел на 3000 порту: drweb32.ini: SocketMode = TCP DaemonPort = 3000 Далее настраиваем антивирусный milter (drweb_smf), который из себя представляет демона, который с одной стороны проверяет содержимое у drwebd с другой стороны выдаёт рекомендации почтовику. я использую такие настройки drweb_smf.conf (я оставил только важные опции остальные по смыслу): [DaemonCommunication] Address = inet:3000@localhost [Scanning] SpamFilter = on [Mailer] MailSystem = Sendmail Sendmail = /usr/sbin/sendmail MilterAddress = inet:3001@localhost кстати опция SpamFilter = on позволяет зарезать почтовых червей по заголовку письма ;) Как видим сам milter занимает 3001 tcp порт что и указывается при подключении в конфиге sendmail. Разумным решением является запуск демона drweb и его milter`а (drwebd и drweb-smf) из одного стартового скрита что я и реализовал в http://www.3nity.ru/files/antispam/drweb этом файле Установка spamassassin Поскольку рускоязычных материалов по установке spamassassin я не нашёл описываю этот процесс : Закачиваем последний дистрибутив с http://spamassassin.rediris.es/downloads.html далее распаковываем архив: #tar -xvzf ./Mail-SpamAssassin-2.60.tar.gz Добавляем перловый модуль для spamassassin: perl -MCPAN -e shell [as root] o conf prerequisites_policy ask install Mail::SpamAssassin quit первоя строка запустит оболочку, последующие дадут команду обновить модуль (онлайн) Далее пытаемся откомпилировать дистрибутив #perl Makefile.PL Скорее всего получаем кучу ошибок о отсутствующих модулях Perl Вообще требуемые модули перечислены в INSTALL Все перл модули добавляются в систему либо вышеописаным способом, либо качаются с http://search.cpan.org/ (там в поиске вводится название модуля например HTML::Parser) дале каждый модуль собирается и инсталируется в систему: #perl Makefile.PL && make test && make install после установки всех модулей и компилируем и инсталируем саму программу spamassassin: #perl Makefile.PL && make all && make install[/color] Установка spamassassin milter Его дистрибутив я нашёл на стороннем сайте http://savannah.nongnu.org/projects/spamass-milt качаем его и устанавливаем, там всё просто #tar -xvzf ./spamass-milter-0.2.0 #cd spamass-milter-0.2.0 #./configure ; make ; make install Конфигурация и запуск spamassassin daemon + spammass-milter Мой файл конфигурации http://www.3nity.ru/files/antispam/local.cf , по умолчанию расположен в директории /etc/mail/spamassassin. Документация по нему (англоязычная) есть http://www.spamassassin.org/doc/Mail_SpamAssassin_Conf.html Базы данных Баеса (результат обучения системы) я вынес в тот же каталог по умолчанию они лежат в ~/spamassassin Самым сложным было понять как всё это запускается. Переворошив документацию я написал (http://www.3nity.ru/files/antispam/spam_filter) стартовый скрипт Строка запуска милтера (/usr/local/sbin/spamass-milter -f -p /var/run/spamass-milter -b setar@trinity.spb.ru -r 10) содержит параметры : -f запустить в фоне -b мыло куда пересылаем письма распознаные как спам, к оригинальному реципиенту письма не доходят. Чтобы они доходили и одновременно дублировались на ответственного ставится опция -B -r 10 самая интересная опция ;) уровень баллов для режекта письма рекомендую в процессе обучения этот параметр не ставить вовсе. Обучение системы Вообще система начинает действовать сразу с заранее предустановленными параметрами и вылавливает спам с вероятностью 60-70% для того чтобы эту вероятность увеличить необходимо систему обучить - скормить ей более 200 писем с примерами "белых писем" ( ham ) и более 200 спамовых писем ( spam ). Любое письмо после запуска системы получает в заголовок дополнительную информацию по анализу его на предмет спама: (пример злобного спама, уровень признания письма как спам 5.0 ) X-Spam-Flag: YES X-Spam-Status: Yes, hits=22.0 required=5.0 tests=BAYES_99,FORGED_MUA_OUTLOOK, FORGED_OUTLOOK_HTML,FROM_ILLEGAL_CHARS,HTML_FONTCOLOR_RED, HTML_FONTCOLOR_UNKNOWN,HTML_FONT_BIG,HTML_MESSAGE,MIME_HTML_ONLY, SUBJ_HAS_SPACES,SUBJ_ILLEGAL_CHARS autolearn=no version=2.60 X-Spam-Orig-To: <info@trinity.spb.ru.> X-Spam-Report: * 4.1 SUBJ_HAS_SPACES Subject contains lots of white space * 0.1 HTML_FONTCOLOR_RED BODY: HTML font color is red * 5.4 BAYES_99 BODY: Bayesian spam probability is 99 to 100% * [score: 1.0000] * 0.1 HTML_FONTCOLOR_UNKNOWN BODY: HTML font color is unknown to us * 0.3 MIME_HTML_ONLY BODY: Message only has text/html MIME parts * 0.1 HTML_MESSAGE BODY: HTML included in message * 0.3 HTML_FONT_BIG BODY: HTML has a big font * 3.9 SUBJ_ILLEGAL_CHARS Subject contains too many raw illegal characters * 4.1 FROM_ILLEGAL_CHARS From contains too many raw illegal characters * 2.6 FORGED_MUA_OUTLOOK Forged mail pretending to be from MS Outlook * 1.0 FORGED_OUTLOOK_HTML Outlook can't send HTML message only X-Spam-Level: ********************* X-Spam-Checker-Version: SpamAssassin 2.60 (1.212-2003-09-23-exp) on gw.trinity.spb.ru Оценка BAYES появляется после полного обучения системы. Теперь как учить - в комплекте есть программа sa-learn ей нужно скормить каталог с письмами ham и spam сами письма нужно иметь в немодивицированном виде (без forward`а и прочих почтовых пересылок перенаправлений) я их получал прямым экспортом из программы TheBat в формат .MSG для удобства завёл специальные папочки в которых скидывал примеры писем, а в конце дня делал экспорт на сервер. Для процесса обучения не требуется восстанавливать оригинальный заголовок письма вырезая пометку ****SPAM**** и оценочное содержимое заголовка, система их просто игнорирует. Для автоматизации процесса обучения я написал (http://www.3nity.ru/files/antispam/learn) маленький скриптик который забирает файлы сообщений с файлового сервера по ftp и скармливает их обучалке. Обучение до включения в работу системы Баеса у меня заняло 4 дня. Фуххх вроде всё. будут вопросы - пишите помогу. P.S. Постоянный адрес статьи в сети http://www.3nity.ru/viewtopic.htm?t=1459

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, setar (?), 18:35, 30/10/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    При партировании статейки потерялись некоторый ссылочки - смотрите оригинальную версию  http://www.3nity.ru/viewtopic.htm?t=1459
     
     
  • 2.2, Maxim Chirkov (?), 11:23, 31/10/2003 [^] [^^] [^^^] [ответить]  
  • +/
    >При партировании статейки потерялись некоторый ссылочки - смотрите оригинальную версию  http://www.3nity.ru/viewtopic.htm?t=1459

    Хм, проверил, единственная замеченная проблема со ссылками - это  www.sendmail.ru голым текстом, остальное в остальном не отличается от той статьи что была прислана через http://www.opennet.dev/announce_art.shtml

     

  • 1.3, setar (?), 11:56, 31/10/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Лишний слеш в конце
    http://www.3nity.ru/files/antispam/sendmail/ = http://www.3nity.ru/files/antispam/sendmail

    http://www.3nity.spb.ru/files/antispam/sendmail.mc/ = http://www.3nity.spb.ru/files/antispam/sendmail.mc

    и т.д.

    Соответственно это файлы а не директории и ссылки не открываются

     
     
  • 2.4, Maxim Chirkov (?), 15:21, 31/10/2003 [^] [^^] [^^^] [ответить]  
  • +/
    >Лишний слеш в конце

    Понятно, исправил.

     

  • 1.5, Sergey G. Porotnikov (?), 22:02, 31/10/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Входные фильтры основаные на анализе ip адреса малоэффективный способ борьбы с современными методами спама

    Позвольте не согласиться. Практика показывает, что 90пама на сегодняшний день приходит:
    1. с адресов не имеющих записи в обратой зоне, выдающих HELO/EHLO не соответсвующих имени хоста или домена, не имеющих записи даже в прямолй зоне
    2. с фейковых e-mail адресов


    >решение на котором я остановиля - это применение внешних программ для анализа содержимого письма

    На сегодняшний день это решение уже не эффективно, потому, что спамеры просто суют вам в нос картинку. Попробуй проанализируй содержимое. Отметать картинки конечно хорошо, но большая часть ползователей шлет открыки, схемы, рисунки и пр. не удосуживаясь даже прятать их в архив.

    Кто-нибудь спросит: критиковать легко - предоли решение. Предлагаю (конечно если все сообщество со мной согласиться)
    1. Принимать почту только с адресов имеющих запись MX (по крайней мере таких спамеров на сегодня меньшинство).
    2. Обязательно вести прямую и обратную зону для почтовых серверов и только с них принимать почту.
    3. Делать callback для отправителя на предмет наличия реального e-mail
    4. Не принмать почту с динимически выделяемых адресов (ака ppp, dialin, modemcabe, pppoe и пр.)
    5. Практика показывает, что договориться с ISP даже без международных соглашений, гораздо проще, чем с конечным пользователем (как правило еще и ламером)

     
     
  • 2.6, uldus (?), 09:50, 03/11/2003 [^] [^^] [^^^] [ответить]  
  • +/
    >1. Принимать почту только с адресов имеющих запись MX (по крайней мере
    >таких спамеров на сегодня меньшинство).

    Не спамеров, к сожалению, тоже хватает. Не все для доменов третьего уровня создают MX, почта вполне может отправляется с отличного от "MX" хоста и т.д.

    >2. Обязательно вести прямую и обратную зону для почтовых серверов и только с них принимать почту.

    Бесполезно, будет блокироваться огромное число полезной почты (например, в сети RT процентов 60очтовых серверов не прописаны в обратной зоне).

    >3. Делать callback для отправителя на предмет наличия реального e-mail

    Никто не обязан посылать почту с того-же сервера что и принимает ее (не у всех один релей и прямой маршрут почтового рутинга, множество серверов на RCPT TO стадии не проверяет реальности реципиента, пользователи  отправляют почту не только с "родного" SMTP).

     
  • 2.7, setar (?), 13:50, 03/11/2003 [^] [^^] [^^^] [ответить]  
  • +/
    Абсолютно согласен с предыдущим высказыванием Простите на что запись MX смотрет... большой текст свёрнут, показать
     
     
  • 3.8, Sergey G. Porotnikov (?), 19:57, 03/11/2003 [^] [^^] [^^^] [ответить]  
  • +/
    Ну не надо так сильно возмущаться Статья про настройку фильтра мне понравилась ... большой текст свёрнут, показать
     
     
  • 4.9, setar (?), 17:12, 04/11/2003 [^] [^^] [^^^] [ответить]  
  • +/
    Всё верно, но Вы говорите о желаемом, а я исхожу из тех реалей в которых нахожусь каждый день.
    Борьба со Спамом это очень тонкий вопрос, не первый день утром я спрашиваю у коллег "Вот письмо, оно шло тебе, было завёрнуто на меня как спам, я НЕ УВЕРЕН в оценке, тебе оно нужно ?"...
    А вообще, кажется те проверки о которых вы говорите есть в SpamAssassin, они отданы на откуп внешним модулям (DCC,Razor), я пока их не использовал, как разберусь будет бополнительный повод для обсуждений.
     

  • 1.10, setar (?), 13:15, 05/11/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Нашёл досадную ошибку в порядке подключения проверяющих программ. Нужно чтобы было так :
    Код:
    dnl# DRWEB , SpamAssassin
    INPUT_MAIL_FILTER('spamassassin', 'S=local:/var/run/spamass-milter, F=T, T=C:15m;S:4m;R:4m;E:10m')dnl
    INPUT_MAIL_FILTER('drweb-filter', 'S=inet:3001@127.0.0.1, F=T, T=C:1m;S:5m;R:5m;E:1h')
    define('confMILTER_MACROS_CONNECT','b, j, _, spamd, lo, 127.0.0.1')dnl
    define('confMILTER_LOG_LEVEL','6')


    В исходном варианте первым включался DrWeb который проверял письмо только полностью его приняв - (не было экономии трафика).

    P.S. Ошибку нашёл сам анализируя причины не_уменьшения трафика.
    выходит документацию читать хорошо, а а вот следовать ей буква в букву не есть правильно - нужно думать.

     
     
  • 2.11, A Clockwork Orange (?), 19:17, 29/11/2003 [^] [^^] [^^^] [ответить]  
  • +/
    Интересную вещь нашел в файле
    /usr/ports/mail/spamass-milter/work/activation.txt

    Now all messages received by Sendmail are filtered through
    SpamAssassin, and probable spam messages are tagged with the header
    'X-Spam-Flag: YES'.  Tell your users about this so they can set up
    appropriate filters on their mail reader.

    А как с этим вяжется такое

    man spamass-milter

    -b spamaddress
                Redirects tagged spam to the specified email address.  
                All envelope recipients are removed, and inserted
                into the message as 'X-Spam-Orig-To:' headers.

    -B spamaddress
                Same as -b, except the original recipients are retained.
                Only one of -b and -B may be used.


    Разъясниет пожалуйста Redirects tagged spam to the specified email address значит что сообещния, помеченные как спам будет направляться на определенный ящик, а будет ли это сообщение доставляться  рецепиенту или же нет, ???!!!!!

    Если спам не должен доставляться пользователю, то какого черта пишется в первом случае???? (У меня доставляется пользователю, хотя настроек упрвляющих их никаких кроме вышеуказанных. ошибки не может быть)

    Если спам доставляется пользователю, то зачем вышеописанные переключатели -b и -B ???!!!!!!!!!!

     
  • 2.17, A Clockwork Orange (?), 10:28, 19/01/2004 [^] [^^] [^^^] [ответить]  
  • +/
    Где же написано что spamass-milter при идентификации спама не принимает сообщение и тем самым уменьшает трафик?
     

  • 1.12, setar (?), 13:05, 01/12/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не путайте настройки spamв и спам милтера.
    Вообще вопрос уже поднимался http://www.3nity.ru/viewtopic.htm?t=1459&postdays=0&postorder=asc&start=15#76
     
  • 1.13, vd (?), 11:46, 16/12/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а это только у меня так?
    spamass-milter.sh поставил без правки и..
    # spamass-milter.sh start
    смотрим процессы там все ок, оно запустилось..
    # spamass-milter.sh stop
    kill: 442: No such process
    оказывается при старте в spamass-milter.pid записывается неверный PID процесса

     
     
  • 2.15, anonumous (?), 11:21, 09/01/2004 [^] [^^] [^^^] [ответить]  
  • +/
    Надо в spamass-milter.sh вместо
    kill ${pid}
    прописать
    killall spamass-milter
    и все будет тип-топ
     

  • 1.14, критик (?), 19:59, 18/12/2003 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Очень жесткие правила - раз (порог в 5.0)
    Настройки неприемлимы к русским реалиям - два
    просмотри http://gq.pp.ru/index.php/docs/5 там более толковые настройки именно spamassassin'а
     
     
  • 2.16, setar (?), 12:48, 13/01/2004 [^] [^^] [^^^] [ответить]  
  • +/
    Статья не панацея а руководство к действию пороги (их два) каждый устанавливает для себяя сам. Я пошёл дальше - после того как за месяц убедился в достоверности оценки баеса, увеличил значимость его оценок (с соответствующей корректировкой порогов срабатывания).
     
  • 2.18, markko (?), 21:03, 10/03/2004 [^] [^^] [^^^] [ответить]  
  • +/
    Доигрались с фильтрами ? ;)
    http://gq.pp.ru/
    Server is down due to hard disk crash. Come back later.
     
     
  • 3.20, GQ (?), 18:39, 17/02/2006 [^] [^^] [^^^] [ответить]  
  • +/
    типа того
     

  • 1.19, onin alexander (?), 14:38, 14/05/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    супер, для новичов в сэндмэйле - это супер
    спасибо
     
  • 1.21, Владимир (??), 13:20, 23/02/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Провёл я теже действия, что и Вы... всё работает замечательно?!... ошибок нет...
    Но при получении письма не добавляется в заголовок информация про спам... подозреваю, что вообще не работает что-то... :)
    Помогите!
     
     
  • 2.23, SunX (?), 09:44, 08/09/2007 [^] [^^] [^^^] [ответить]  
  • +/
    E меня тоже самое.... вроде все работает, а в письмах никаких заголовков не появляется...
     

  • 1.22, Vasily (??), 14:16, 18/10/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Возникла непонятка со spamass-milter. Скачал  http://download.savannah.nongnu.org/releases/spamass-milt/spamass-milter-0.3.
    , после некоторого количества приседаний (добавил using namespace std; в spamass-milter.cpp) скомпиллировал. Попробовал запустить
    spamass-milter -f -p /var/run/spamass-milter -b vvz@avg-consult.com.ua
    На что получил четкий и ясный ответ:
    spamass-milter- Version0.1.0
    SpamAssassin Sendmail Milter Plugin
    Usage: spamass-milter <socket>
    Т.е. у него только один параметр - сокет и все.
    Кхгм......
    Дальше копать не стал.
    Решил спросить у Гуру.
    P.S. Все танцы с бубном вокруг sendmail были проделаны.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




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

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