divert(-1) # # Copyright (c) 2003, 2004 Victor Ustugov # This hack is under BSD License # Redistributions of source code must retain the above copyright notice # # hacks disscussion's maillist - http://www.mta.org.ua/mailman/listinfo/sendmail-conf # # # Check header Subject # Проверка поля Subject # divert(0) VERSIONID(`$Id: check_subject.m4,v 8.12-0.07 2004/07/23 15:24:23 corvax Exp $')dnl divert(-1) dnl dnl LOCAL_CONFIG dnl dnl # # Regular expression to reject messages with subjects: # .+ {7}[0-9a-z]+ # .+ {7}\([0-9a-z]+\) # # example: # KCheck_Subject regex -a@MATCH ^([A-Za-z0-9[:space:]_-]{0,}(married|lonely|adult|voyers|pics|picture|hbibs|hot|sex|xxx))|([A-Za-z0-9[:space:]_-]{1,} {9,}[A-Za-z0-9_-]{1,}) # KSpamSubjectRegexp1 regex -a@MATCH ^.+ {7}\(?[a-zA-Z0-9]+\)?$ KSpamSubjectRegexp2 regex -a@MATCH ^.+ {7}\[?[a-zA-Z0-9]+\]?$ dnl KSpamSubjectRegexp3 regex -a@MATCH \(?ADV *[\:\-]?\)? dnl KSpamSubjectRegexp4 regex -a@MATCH \[?ADV *[\:\-]?\]? KSpamSubjectRegexp5 regex -a@MATCH ^.+![0-9]+$ KSpamSubjectRegexp6 regex -a@MATCH ^(Save|Make|Earn).+(cash|money) dnl KSpamSubjectRegexp7 regex -a@MATCH ^([A-Za-z0-9[:space:]_-]{0,}(married|lonely|adult|voyers|pics|hbibs|hot|sex|xxx))|([A-Za-z0-9[:space:]_-]{1,} {9,}[A-Za-z0-9_-]{1,}) KSpamSubjectRegexp7 regex -a@MATCH ^([A-Za-z0-9[:space:]_-]{0,}(married|lonely|adult|voyers|pics|hbibs|sex|xxx))|([A-Za-z0-9[:space:]_-]{1,} {9,}[A-Za-z0-9_-]{1,}) # http://www.sophos.com/virusinfo/analyses/w32gibef.html #Ksubjgibe1 regex -a@DENY ^((Fwd?|Re):[[:space:]]*)*((Current|Last|Latest|New|Newest) )?(Critical|Security|Microsoft|Net|Network|Internet) ((Critical|Security) )?(Pack|Patch|Update|Upgrade)$ #Ksubjgibe2 regex -a@DENY ^((Fwd?|Re):[[:space:]]*)*(Current|Last|Latest|New|Newest) ((Critical|Security|Microsoft|Net|Network|Internet) )?((Critical|Security) )?(Pack|Patch|Update|Upgrade)$ #Ksubjgibe3 regex -a@DENY ^((Fwd?|Re):[[:space:]]*)*internet email storage system$ #Ksubjgibe4 regex -a@DENY ^((Fwd?|Re):[[:space:]]*)*((Abort|Error|Failure) )?(Advice|Announcement|Notice|Report|Letter|Message)$ Ksubjgibe1 regex -a@DENY ^((Fwd?|Re):[[:space:]]*)*((Current|Last|Latest|New|Newest).)?(Critical|Security|Microsoft|Net|Network|Internet).((Critical|Security).)?(Pack|Patch|Update|Upgrade)$ Ksubjgibe2 regex -a@DENY ^((Fwd?|Re):[[:space:]]*)*(Current|Last|Latest|New|Newest).((Critical|Security|Microsoft|Net|Network|Internet).)?((Critical|Security).)?(Pack|Patch|Update|Upgrade)$ Ksubjgibe3 regex -a@DENY ^((Fwd?|Re):[[:space:]]*)*internet.email.storage.system$ Ksubjgibe4 regex -a@DENY ^((Fwd?|Re):[[:space:]]*)*((Abort|Error|Failure).)?(Advice|Announcement|Notice|Report|Letter|Message)$ Ksubjgibe sequence subjgibe1 subjgibe2 subjgibe3 subjgibe4 KRegExprForTokenizing regex -a@RegExprForTokenizing@ ^@RegExprForTokenizing@$ dnl dnl LOCAL_RULESETS dnl dnl HSubject: $>+Check_Subject dnl SCheck_Subject dnl # skip checks for authentificated senders R $* $: < $&{auth_type} > $1 R < $+ > $* $@ OK R < $* > $* $: $2 dnl # skip checks for abuse@ R $* $: < $&{rcpt_addr} > $1 R < abuse > $* $@ OK dnl R < abuse @ $m > $* $@ OK dnl R < abuse @ $j > $* $@ OK R < abuse @ $+ > $* $@ OK R < $* > $* $: $2 ###################################################################### # Check Subject field for worm/virus telltales ###################################################################### # Melissa worm detection (done in Check_Subject) # See http://www.cert.org/advisories/CA-99-04-Melissa-Macro-Virus.html R Important Message From $* $#error $: 554 This message may contain the Melissa virus; see http://www.cert.org/advisories/CA-99-04-Melissa-Macro-Virus.html ${Feedback_Msg} R Re: Important Message From $* $#error $: 554 This message may contain the Melissa virus; see http://www.cert.org/advisories/CA-99-04-Melissa-Macro-Virus.html ${Feedback_Msg} # W97M.Melissa.BG virus detection (done in Check_Subject) R $* Janet Simons $* $#error $: 554 This message may contain the W97M.Melissa.BG virus ${Feedback_Msg} R Re: Janet Simons $* $#error $: 554 This message may contain the W97M.Melissa.BG virus ${Feedback_Msg} # ILOVEYOU worm detection (done in Check_Subject) # See http://www.datafellows.com/v-descs/love.htm R ILOVEYOU $#error $: 554 This message may contain the ILOVEYOU virus; see http://www.datafellows.com/v-descs/love.htm ${Feedback_Msg} R Re: ILOVEYOU $#error $: 554 This message may contain the ILOVEYOU virus; see http://www.datafellows.com/v-descs/love.htm ${Feedback_Msg} # Pretty Park virus detection (done in Check_Subject) R $* C\:\\CoolProgs\\Pretty Park.exe $* $#error $: 554 This message may contain the Pretty Park virus ${Feedback_Msg} R Re: $* C\:\\CoolProgs\\Pretty Park.exe $* $#error $: 554 This message may contain the Pretty Park virus ${Feedback_Msg} # Subjects that won't be allowed R Изменен Закон о прибыли - как по-новому правильно снизить налоговую нагрузку. Оптимизация и минимизация налогообложения - не нарушающие законодательства $* $#error $@ 5.7.1 $: "554 Access denied" R хГЛЕМЕМ гЮЙНМ Н ОПХАШКХ - ЙЮЙ ОН-МНБНЛС ОПЮБХКЭМН ЯМХГХРЭ МЮКНЦНБСЧ МЮЦПСГЙС. нОРХЛХГЮЖХЪ Х ЛХМХЛХГЮЖХЪ МЮКНЦННАКНФЕМХЪ - МЕ МЮПСЬЮЧЫХЕ ГЮЙНМНДЮРЕКЭЯРБЮ $* $#error $@ 5.7.1 $: "554 Access denied" R 995 - 82 - 41 $+ $#error $@ 5.7.1 $: "554 Access denied. ALC messages rejected" R Семинары в $* $#error $: 554 ${SpamMsg} R яЕЛХМЮПШ Б $* $#error $: 554 ${SpamMsg} R Краткосрочные образовательные программы в $* $#error $: 554 ${SpamMsg} R йПЮРЙНЯПНВМШЕ НАПЮГНБЮРЕКЭМШЕ ОПНЦПЮЛЛШ Б $* $#error $: 554 ${SpamMsg} R Официальное письмо-приглашение $* $#error $: 554 ${SpamMsg} R пЖЙГЙБМШОПЕ РЙУШНП-РТЙЗМБЫЕОЙЕ $* $#error $: 554 ${SpamMsg} R Приглашашение на семинары $* $#error $: 554 ${SpamMsg} R оПХЦКЮЬЮЬЕМХЕ МЮ ЯЕЛХМЮПШ $* $#error $: 554 ${SpamMsg} R $* Спам разрешен $* $#error $: 554 ${SpamMsg} R $* яОЮЛ ПЮГПЕЬЕМ $* $#error $: 554 ${SpamMsg} R ПРОДАЮТСЯ СПИСКИ АДРЕСОВ ЭЛ.ПОЧТЫ $* $#error $: 554 ${SpamMsg} R опндючряъ яохяйх юдпеянб щк.онврш $* $#error $: 554 ${SpamMsg} R Элитная танцевальная студия $* $#error $: 554 ${SpamMsg} R щКХРМЮЪ РЮМЖЕБЮКЭМЮЪ ЯРСДХЪ $* $#error $: 554 ${SpamMsg} R Промышленный маркетинг $* $#error $: 554 ${SpamMsg} R оПНЛШЬКЕММШИ ЛЮПЙЕРХМЦ $* $#error $: 554 ${SpamMsg} R $* Предприятиям и частным лицам $* $#error $: 554 ${SpamMsg} R $* оПЕДОПХЪРХЪЛ Х ВЮЯРМШЛ КХЖЮЛ $* $#error $: 554 ${SpamMsg} R $* ВНИМАНИЮ РУКОВОДИТЕЛЕЙ $* $#error $: 554 ${SpamMsg} R $* бмхлюмхч псйнбндхрекеи $* $#error $: 554 ${SpamMsg} R Стратегия эффективного мерчендайзинга $* $#error $: 554 ${SpamMsg} R яРПЮРЕЦХЪ ЩТТЕЙРХБМНЦН ЛЕПВЕМДЮИГХМЦЮ $* $#error $: 554 ${SpamMsg} R Плaн ceминаpoв $* $#error $: 554 ${SpamMsg} R оКaМ ceЛХМЮpoБ $* $#error $: 554 ${SpamMsg} R План семинаров $* $#error $: 554 ${SpamMsg} R оКЮМ ЯЕЛХМЮПНБ $* $#error $: 554 ${SpamMsg} dnl R Мерчендайзинг: Прибыль без затрат $* $#error $: 554 ${SpamMsg} R лЕПВЕМДЮИГХМЦ: оПХАШКЭ АЕГ ГЮРПЮР $* $#error $: 554 ${SpamMsg} R =?windows-1251?b?zOXw9+Xt5ODp5+jt4yAtIO/w6OH76/wg4eXnIOfg8vDg8iAgcXI=?= $* $#error $: 554 ${SpamMsg} dnl R here is a good story $* $#error $: 554 ${SpamMsg} R Re: here is a good story $* $#error $: 554 ${SpamMsg} R $Как арендовать самолет? $* $#error $: 554 ${SpamMsg} R Re: Как арендовать самолет? $* $#error $: 554 ${SpamMsg} R Мы продадим Ваш товар $* $#error $: 554 ${SpamMsg} R Re: Мы продадим Ваш товар $* $#error $: 554 ${SpamMsg} R $* we want to finance/buy your business $* $#error $: 554 ${SpamMsg} R РЕКЛАМА В МЕТРО $* $#error $: 554 ${SpamMsg} R Продвижение Вашего бизнеса в Интернет $* $#error $: 554 ${SpamMsg} R new photos from my party $* $#error $: 554 ${SpamMsg} R 2002 Gov Grants $* $#error $: 554 ${SpamMsg} R enhance your sexlife $* $#error $: 554 ${SpamMsg} R Hardcore Farm Sex $* $#error $: 554 ${SpamMsg} R Accept Credit Cards $* $#error $: 554 ${SpamMsg} R CONGRATULATIONS!! YOU'VE WON!! $* $#error $: 554 ${SpamMsg} R Dear corvax , as you reguested... $* $#error $: 554 ${SpamMsg} R FINANCIAL ABUNDANCE IS Y O U R S $* $#error $: 554 ${SpamMsg} R News for corvette $* $#error $: 554 ${SpamMsg} R News for corvette $* $#error $: 554 ${SpamMsg} R girls girls girls $* $#error $: 554 ${SpamMsg} R Change your life in $* $#error $: 554 ${SpamMsg} R Limited time offer $* $#error $: 554 ${SpamMsg} R Quick approvals $* $#error $: 554 ${SpamMsg} R Secure Your $* $#error $: 554 ${SpamMsg} R Fwd: Poison $* $#error $: 554 ${SpamMsg} R Are Your Mortgage Rates $* $#error $: 554 ${SpamMsg} R Free adult $* $#error $: 554 ${SpamMsg} R Does Size Really Matter $* $#error $: 554 ${SpamMsg} R Size Does Matter $* $#error $: 554 ${SpamMsg} R $* Become your own private eye $* $#error $: 554 ${SpamMsg} R $* Wanna hear a story $* $#error $: 554 ${SpamMsg} R $* The monthly get-together $* $#error $: 554 ${SpamMsg} R $* please re-send the email $* $#error $: 554 ${SpamMsg} R $* Free Government Grants $* $#error $: 554 ${SpamMsg} dnl R $* $: $(SpamSubjectRegexp1 $1 $: OK $) $| $1 R $* @MATCH $* $#error $: 554 ${SpamMsg} R OK $| $* $: $1 dnl R $* $: $(SpamSubjectRegexp2 $1 $: OK $) $| $1 R $* @MATCH $* $#error $: 554 ${SpamMsg} R OK $| $* $: $1 dnl dnl R $* $: $(SpamSubjectRegexp3 $1 $: OK $) $| $1 dnl R $* @MATCH $* $#error $: 554 ${SpamMsg} dnl R OK $| $* $: $1 dnl dnl dnl R $* $: $(SpamSubjectRegexp4 $1 $: OK $) $| $1 dnl R $* @MATCH $* $#error $: 554 ${SpamMsg} dnl R OK $| $* $: $1 dnl R $* $: $(SpamSubjectRegexp5 $1 $: OK $) $| $1 R $* @MATCH $* $#error $: 554 ${SpamMsg} R OK $| $* $: $1 dnl R $* $: $(SpamSubjectRegexp6 $1 $: OK $) $| $1 R $* @MATCH $* $#error $: 554 ${SpamMsg} R OK $| $* $: $1 dnl R $* $: $(SpamSubjectRegexp7 $1 $: OK $) $| $1 R $* @MATCH $#error $: 554 5.7.1 Subject like this not allowed due to local policy R OK $| $* $: $1 dnl R $* $: $(subjgibe $1 $: OK $) $| $1 R @DENY $| $* $#error $@ 5.7.1 $: "550 \"" $1 "\"... W32.Gibe.F signature in Subject rejected" R OK $| $* $: $1 dnl R $+ $: $1 $| $>Check_Subject_access_db $1 R $* $| $#$* $#$2 R $* $| $* $: $1 dnl ifdef(`confSHOW_TOKENIZED_SUBJ_ADDR', ` SLocal_check_rcpt R $* $: $(macro {_RCPT_TO_} $@ $1 $) $1 ') SCheck_Subject_access_db R $* = ? $- ? Q ? $+ $@ SKIP_QUOTED_PRINTABLE R $* = ? $- ? B ? $+ $@ SKIP_BASE64 dnl R $* $: $(RegExprForTokenizing $1 $: $1 $) R $+ $: $>Tokenize_Subject $1 ifdef(`confSHOW_TOKENIZED_SUBJ_ADDR', ` R $* $: <$&{_RCPT_TO_}> $| $1 R > $* $| $* $#error $@ 4.3.0 $: " tokenized subject: " $2 R $* $| $* $: $2 ') R $+ $: $(access Subject:$1 $) R REJECT $#error $@ 5.7.1 $: "554 Spam is blocked" R REJECT $* $#error $@ 5.7.1 $: $1 R REJECT:$* $#error $@ 5.7.1 $: $1 R DISCARD $* $#discard $: discard R TEMP $#error $@ TEMPFAIL $: " error checking header. Try again later" R TEMP $* $#error $@ TEMPFAIL $: $1 " error checking header. Try again later" R TEMP:$* $#error $@ TEMPFAIL $: $1 " error checking header. Try again later" R ERROR:$-.$-.$-:$+ $#error $@ $1.$2.$3 $: $4 R ERROR:$* $#error $@ UNAVAILABLE $: $1 " error checking header" R ERROR $#error $@ UNAVAILABLE $: " error checking header" R ERROR $* $#error $@ UNAVAILABLE $: $1 " error checking header" dnl STokenize_Subject R $- $- $* $: $| $1 + $2 $| $3 R $| $+ $| $- $* $| $1 + $2 $| $3 R $| $+ $| $: $1