The OpenNET Project / Index page

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

Regex спам-фильтр для sendmail. (mail sendmail filter spam regex)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: mail, sendmail, filter, spam, regex,  (найти похожие документы)
From: Sciurus <sciurus@mail.ru.> Date: Mon, 14 May 2003 13:01:37 +0000 (UTC) Subject: Regex спам-фильтр для sendmail. Оригинал: http://linux.ufaras.ru/regex.html Спам-фильтр для sendmail. В данном документе представлены правила sendmail, использующие регулярные выражения для определения наличия спама в письме по ключевым словам в обратном адресе, а также в теме письма. По статистике в среднем в день ловится около 50-100 писем по обратному e-mail и 150-200 по теме сообщений (на 700 почтовых пользователей, максимальные значения 450 и 500 в день соответственно с января 2003г.). Имевшие место случаи ложного срабатывания учтены в WhiteList'ах для e-mail и Subject. Вторая часть документа взята с http://www.softerra.ru/freeos/19480/page1.html В день ловит около 100-150 писем, в основном, по CheckMailer, CheckTo, CheckMessageID Скачать спам-фильтр в текстовом формате можно здесь http://linux.ufaras.ru/regex.txt Его следует добавить в конец стандартного sendmail.mc (после определения MAILER), пересобрать sendmail.cf и перезапустить sendmail. Из-за большой длины строк с регулярными выражениями пришлось разбить их на подгруппы. Но на comp.mail.sendmail предлагается такое решение, когда строки получаются очень длинными: define(`xic_a2000_nl', `node-[cd]-[0-9a-f]{4}\.a2000\.nl$')dnl define(`xic_attbi_com', `(-[0-9]{1,3}){3}\.client[2]?\.attbi\.com$')dnl define(`xic_wanadoo_fr', `(-[0-9]{1,3}){4}.*\.wanadoo\.fr$')dnl Kxic regex xic_a2000_nl|xic_attbi_com|xic_wanadoo_fr Или так: define(`xic_host', `(pattern1|pattern2|pattern3)')dnl define(`xic_domain', `(a2000|attbi|wanadoo)')dnl define(`xic_tld', `(com|fr|nl)$')dnl define(`xic_regex', `xic_host\.xic_domain\.xic_tld')dnl Kxic regex xic_regex Там же рекомендуется комбинации, на которых наиболее часто срабатывают regex-правила, помещать в список первыми (для уменьшения нагрузки на CPU). В regex-выражениях использованы [.] для обозначения точки и \. в качестве пробела ( в силу опции в sendmail.cf): # substitution for space (blank) characters O BlankSub=. Nota bene! При добавлении новых слов в список необходимо следить, чтобы последним в строке не оказался символ "|", иначе будут блокироваться любые темы. LOCAL_CONFIG # WhiteList для e-mail (несмотря на наличие sale, shop, job, deal, love & shit эл. адреса, содержащие эти слова, #не должны блокироваться): KSPAM0 regex -a@MATCH tsalenko|alert|workshop|ideal|-job-|rashit|rollover # BlackList для e-mail: # Электронные адреса, в которых встречается больше 2 знаков подчеркивания: KSPAM1 regex -a@MATCH ^([[:alnum:]]*)(_+)([[:alnum:]]*)(_+)([[:alnum:]]*)(_+)[[:alnum:]_]*$ # Стандартные спам-слова: KSPAM2 regex -a@MATCH movie|woman|discount|astrolog|nomail|adres|addres|viagra|rassylk|anonymous|game|dollar|offer|deal|proces|bonus|casino|reclam|reklam|office|noemail|nouser|sms|prize|sale|job|market|money|cash|shop|xxx|sex|donna|girl|adult|fuck|honey|sweet|porno|playboy|love|lolita|penis|cock|kiss # Цифровые электронные адреса: KSPAM3 regex -a@MATCH ^[[:digit:]]+$ # Комбинированные адреса вида 12.23abc@mail.ru, 12-23dfg@mail.ru, 123-345_567@mail.ru: KSPAM4 regex -a@MATCH ^([[:digit:]]+)([-+=._~]+)([[:digit:]]+)[[:alnum:]+=._~-]*$ # WhiteList для поля Subject: KChSb regex -a@CATCHED tsalenko|alert|workshop|ideal|-job-|rashit|rollover # BlackList для поля Subject: # Темы писем с Avron-вирусом : KChSbVIRAvron regex -a@CATCHED IREX.+fields|FSAU.*2003|ACCELS|Avril|Redirection|Ocho|According|ecurity\.breach|for.+Incorrect.+MIME-header|senior|Specification.+requested|Crime|Junior.+Achievement|perduto|customers|Daos|IIS-Sec|estate|Admission # Темы писем с Klez-вирусом : KChSbVIRKlez regex -a@CATCHED mail(\.+)--|A.+IE.+6.+0.+patch|W32|Klez|\.Eden|removal.+tools # Темы писем с явным спам-Subjectом : KChSbSpam regex -a@CATCHED \$$[[:digit:]]+|language.+center|toefl|game|\.xxx|woman|discount|dollar|casino|rassylk|reklam|reclam|prize|sale|cash|bonus|money|game|donna|girl|adult|fuck|honey|sweet|porno|cock|playboy|play.+boy|\.love|lolita|penis|movie|darling|passwd KChSbSpam2 regex -a@CATCHED [[:digit:]]+%|\.ass\.|\.sex|titt|nude|DVD|.+vogue|\.elle|harper's.+bazaar|marie.+claire|astrolog|viagra|fetish|\.oral|shit|topless|orgy|\.suck\.|shop|lesbo|urgent\.assistance|mobil|kiss|\.sms\.|motors|business|english|drink # Cпам от American Language Center. # Письма от Outlook Express - тема в кодировке base-64 (koi-8) : # Письма от TheBat! - тема в кодировке base-64 (win-1251) : # здесь указаны ключевые комбинации символов, позволяющие выловить сочетание слов #"деловой/разговорный/бизнес + английский" в обоих регистрах: # win-1251:Дделовой|ДЕЛОВОЙ|Рразговорный|РАЗГОВОРНЫЙ|БИЗНЕС|Ббизнес #koi-8:Дделовой|ДЕЛОВОЙ |РАЗГОВОРНЫЙ|Рразговорный|Ббизнес|БИЗНЕС KChSbRuSpam1 regex -a@CATCHED Pr6Onx6ujp|zcPLyMnR|3j6\+jp8e|M3Dy8jJ0|DNw8vIydH|Dt4\+vo6fHq|zsfMycrTy|7ufs6erz|7n7Onq8\+v |7HzMnK08v|x8zJytPLy|Hu5\+zp6vP # Netscape Messenger - кодировка Quoted Printable #н г л и й с к| Н Г Л И Й С К KChSbRuSpam2 regex -a@CATCHED =CE.*=C7.*=CC.*=C9.*=CA.*=D3.*=CB|=EE.*=E7.*=EC.*=E9.*=EA.*=F3.*=EB # Остальные спам-слова в теме на русском языке: # а н г л | м е р и к а н с к | с к и д к | п о д а р | р е к л а м |Научитесь понимать|курс рубл|руководите| с упер # О Т Д Ы Х |аркетинг| ш т а м п KChSbRuSpam3 regex -a@CATCHED [юЮ].*[мМ].*[цЦ].*[кК]|[лЛ].*[еЕ].*[пП].*[хХ].*[йЙ].*[юЮ].*[мМ].*[яЯ].*[йЙ]|[яЯ][йЙ][хХ][дД][йЙ]|[оО][нН][дД][юЮ][пП]|[пП][еЕ][йЙ][кК][юЮ][лЛ]|мЮСВХРЕЯЭ\.ОНМХЛЮРЭ|ЙСПЯ\.ПСАК|ПСЙНБНАХРЕ|[яЯ]СОЕП|[нН][рР][дД][шШ][уУ]|ЮПЙЕРХМЦ|[ьЬ].*[Рр].*[Юю].*[Лл].*[Оо] #ю ридич|утешеств| т ренинг|истрибьют|тратеги| н алог|ухгалтер|ффективны|редлагаем|отрудничеств|отели # знать|аш сайт| т ариф| п окуп| п рода|изнес|роизнош |азговор |есплат| к урорт б а з а(ы) KChSbRuSpam4 regex -a@CATCHED [чЧ]ПХДХВ|СРЕЬЕЯРБ|[рР]ПЕМХМЦ|ХЯРПХАЭЧР|РПЮРЕЦХ|\.[мМ]ЮКНЦ|СУЦЮКРЕП|ТТЕЙРХБМШ|ПЕДКЮЦЮЕЛ|НРПСДМХВЕЯРБ|НРЕКХ\.ГМЮРЭ|ЮЬ\.ЯЮИР|[Рр]ЮПХТ|[оО]НЙСО|[оО]ПНДЮ|ХГМЕЯ|П.*Н.*Х.*Г.*М.*Н.*Ь|Ю.*Г.*Ц.*Н.*Б.*Н.*П|ЕЯОКЮР|[уУ]ЙСЫНР|\.[аА][юЮ][гГ][юЮшШ]\. KChSbRuSpam5 regex -a@CATCHED юридич|утешеств|[тТ]ренинг|истрибьют|тратегия|ухгалтер|ачальник|тариф|девушк|дисконт|английск|выставк|ярмарк|скидк|распродаж|реклам|цены|знакомств|секс|рассыл|фильм|рубл|отд[оы]х|каникул|[Cс]отрудничест|[Пп]редлагаем|[Ээ]ффективн KChSbRuSpam6 regex -a@CATCHED покуп|продаж|изнес|мышлен|произнош|язык|есплатн|курорт|маркетинг|печат|визит|обучение #Очень хотелось блокировать письма с вложениями с расширениями #com|exe|bat|bas|vba|vbe|vbs|reg|inf|cmd|pif|sct|wsh|cpl|js|jse|lnk|chm|hlp|hta|mdb|scr|shs|vb|vbg|wsf #Но, к сожалению, это оказалось невозможно, так как информация о вложениях #содержится во внутрених (или по-другому, дополнительных) полях CheckContentType, а также # в необязательном поле CheckContentDisposition, которые sendmail проверять не умеет #(информация об этом почерпнута из ответа на мой вопрос в новостной группе comp.mail.sendmail) #Тем не менее привожу здесь пример проверки поля CheckContentType на тот случай, если #кому-нибудь понадобится фильтровать почту по внешнему (т.е. основому) полю CheckContentType, #в котором, как правило, содержится информация типа (RFC-1521): #multipart/mixed; boundary="------..." или text/plain; charset=... и т.д. #Фильтрование по внешнему полю отрабатывает нормально. #KChConType1 regex -a@CATCHED name=.+[.](com|exe|bat|bas|vba|vbe|vbs|reg|inf|cmd|pif|sct|wsh|cpl|js|jse|lnk|chm|hlp|hta|mdb|scr|shs|vb|vbg|wsf) LOCAL_RULESETS SLocal_check_mail # check address against various regex checks R$* $: $>Parse0 $>3 $1 R$+<@$*> $: $(SPAM0 $1 $) R@MATCH $: OK R$+ $: $(SPAM1 $1 $) R@MATCH $#error $: 553 SPAM1 is not wanted! R$+ $: $(SPAM2 $1 $) R@MATCH $#error $: 553 SPAM2 is not wanted! R$+ $: $(SPAM3 $1 $) R@MATCH $#error $: 553 SPAM3 is not wanted! R$+ $: $(SPAM4 $1 $) R@MATCH $#error $: 553 SPAM4 is not wanted! ###################################################################### ### Subject, Mailer, Server, Header & Message ID Check ###################################################################### HSubject: $>Check_Subject #D{MPat8}Klez #D{MMsg1}This message may contain a Klez VIRUS SCheck_Subject #R$* ${MPat8} $* $#error $: 553 ${MMsg1} R$+ $: $(ChSb $1 $) R@CATCHED $: OK R$+ $: $(ChSbVIRAvron $1 $) R@CATCHED $#error $: 553 This message may contain Avron.VIRUS R$+ $: $(ChSbVIRKlez $1 $) R@CATCHED $#error $: 553 This message may contain Klez.VIRUS R$+ $: $(ChSbSpam $1 $) R@CATCHED $#error $: 553 This message may contain SPam R$+ $: $(ChSbSpam2 $1 $) R@CATCHED $#error $: 553 This message may contain SPam2 R$+ $: $(ChSbRuSpam1 $1 $) R@CATCHED $#error $: 553 This message may contain ruSPam1 R$+ $: $(ChSbRuSpam2 $1 $) R@CATCHED $#error $: 553 This message may contain ruSPam2 R$+ $: $(ChSbRuSpam3 $1 $) R@CATCHED $#error $: 553 This message may contain ruSPam3 R$+ $: $(ChSbRuSpam4 $1 $) R@CATCHED $#error $: 553 This message may contain ruSPam4 R$+ $: $(ChSbRuSpam5 $1 $) R@CATCHED $#error $: 553 This message may contain ruSPam5 R$+ $: $(ChSbRuSpam6 $1 $) R@CATCHED $#error $: 553 This message may contain ruSPam6 ############## Замечания по поводу проверки полей CheckContentType & ############## CheckContentDisposition см. выше. #HContent-Type: $>CheckContentType # #SCheckContentType #R$* $: $(ChConType1 $1 $) #R@CATCHED $#error $: 553 This message may contain VIRUS $&f ##Вместо предыдущих 2 строк можно использовать последующие 3, ##Эти правила по результату равнозначны. ##Также можно вместо $1 использовать $&{currHeader} ##R$+ $: $(ChConType1 $1 $: $) ##R $@ OK ##R$* $#error $: 553 This message may contain a VIRUS $&f ################### #HContent-Disposition: $>CheckContentDisposition #SCheckContentDisposition #R$+ $: $(ChConType1 $1 $) #R@CATCHED $#error $: 553 This message may contain VIRUS $&f ##Вместо предыдущих 2 строк можно использовать последующие 3, ##Эти правила по результату равнозначны. ##Также можно вместо $&{currHeader} использовать $1: ##R$+ $: $(ChConType1 $&{currHeader} $: $) ##R $@ OK ##R$* $#error $: 553 This message may contain a VIRUS $&f ################################################## # http://www.softerra.ru/freeos/19480/page1.html # ################################################## HX-Mailer: $>CheckMailer HX-Server: $>CheckMailer SCheckMailer RAdvanced Direct Remailer $* $#error $@ 5.7.1 $: "554 Spam (ADR)" RAdvanced Mass Sender $* $#error $@ 5.7.1 $: "554 Spam (AMS)" RSpammer $* $#error $@ 5.7.1 $: "554 Spam (Spammer)" R$* Bomber $* $#error $@ 5.7.1 $: "554 Spam (Bomber)" RMega-Mailer $* $#error $@ 5.7.1 $: "554 Spam (Mega-Mailer)" RMMailer $* $#error $@ 5.7.1 $: "554 Spam (MMailer)" RMailer $* $#error $@ 5.7.1 $: "554 Spam (Mailer)" RLigra Mailer $* $#error $@ 5.7.1 $: "554 Spam (Ligra Mailer)" RDynamic Opt-In Emailer $* $#error $@ 5.7.1 $: "554 Spam(Dynamic Opt-In Emailer)" R$* Group Spamer $#error $@ 5.7.1 $: "554 Spam (WE Group Spamer)" RMail Sender $* $#error $@ 5.7.1 $: "554 Spam (Mail Sender)" RMail Service $* $#error $@ 5.7.1 $: "554 Spam (Mail Service)" RMailloop $* $#error $@ 5.7.1 $: "554 Spam (Mailloop)" RPersMail $* $#error $@ 5.7.1 $: "554 Spam (PersMail)" RLK SendIt $* $#error $@ 5.7.1 $: "554 Spam (LK SendIt)" RWC Mail $* $#error $@ 5.7.1 $: "554 Spam (WC Mail)" RZUBA ZUB $* $#error $@ 5.7.1 $: "554 Spam (ZUBA ZUB)" RMailList Express $* $#error $@ 5.7.1 $: "554 Spam (MailList Express)" RCaretop $* $#error $@ 5.7.1 $: "554 Spam (Caretop)" RMailer Signature $#error $@ 5.7.1 $: "554 Spam (Mailer Si)" Rnone $#error $@ 5.7.1 $: "554 Spam (none)" RPG-MAILINGLIST $#error $@ 5.7.1 $: "554 Spam (PG-MAILINGLIST)" R$* advcomtest $* $#error $@ 5.7.1 $: "554 Spam (advcomtest)" Ryo yo mail $#error $@ 5.7.1 $: "554 Spam (yo yo mail)" RZanziMailer $* $#error $@ 5.7.1 $: "554 Spam (ZanziMailer)" # Настоящий Outlook имеет версию вида: 5.0.23123244 RMicrosoft Outlook Express 5.0 $#error $@ 5.7.1 $: "554 Spam (Microsoft Outlook Express 5.0)" RVersion 5.0 $#error $@ 5.7.1 $: "554 Spam (Version 5.0)" # Заблокируем все мейлеры с названием только из одного слова: Rnethack $@ OK RZ-Mail-SGI $@ OK RDipost $@ OK RSquirrelMail $@ OK R$- $#error $@ 5.7.1 $: "554 Spam (one-word mailer)" # Заблокируем письма с пустым заголовком R$* $: < $1 > R< > $#error $@ 5.7.1 $: "554 Illegal header (empty header)" R$* $@ OK HTo: $>CheckTo HCC: $>CheckTo HMessage-ID: $>CheckMessageID # проверим поле To на "undisclosed-recipients;" или "undisclosed recipient" # комбинации могут быть практически произвольными. SCheckTo R$*Recipient$* $#error $@ 5.7.1 $: "554 Unspecified Mailbox ID" R$*Undisclosed$* $#error $@ 5.7.1 $: "554 Unspecified Mailbox ID" #проверим правильность формата поля Message-ID (оно должно быть в фтификатор@домен). SCheckMessageID R<$+@$+> $@ < $1 @ $2 > R$* $#eror $@ 5.5.2 $: "553 Bad Message ID" ##Spam-rules check is done. 14. Обратная связь Страница создана 10 мая 2003г. Последнее обновление: 15 мая 2003г. Обратная связь: sciurus@mail.ru

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

Обсуждение [ RSS ]
  • 1, олаф (?), 11:35, 07/05/2004 [ответить]  
  • +/
    ничего себе ребята постарались
    примем на вооружение
     
  • 2, kvn (?), 16:03, 09/11/2011 [ответить]  
  • +/
    как пропустить одного адресата мимо этого фильтра?
     

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




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

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