postfix bad word howto
Добър ден.
Днес ще пиша за спам-а който ме тормози последно време, и за начина по който се справих с него.
Проблема
Последно време съм нападнат от така нареченият умен спам. Добавят ми мейлите по разни мейл листи и ме спамят с какви ли не дивотии. Типичният пример – „Eat THESE Foods to Reverse Diabetes“ и разни подобни. Казвам че това е умен спам, тъй като се изпраща от мейл сървъри който имат SPF, обратен резолв и всичко друго което моят мейл сървър проверява при получен мейл.
Решението
Така наречения postfix bad word howto, или как научих postfix-a ми да следи за определени думи в мейлите и по този начин да реже писмата който съдържат тези думи.
Използвах body_checks и header_checks който са вградени функции на postfix.
Ето и конфигурация която ми:
в main.cf добавих следните редове:
header_checks = pcre:/etc/postfix/header_checks.pcre body_checks = regexp:/etc/postfix/body_checks
/etc/postfix/header_checks.pcre
съдържа следните редове:
/^Content-(Disposition|Type).*name\s*=\s*"?(.*(\.|=2E)( ade|adp|asp|bas|bat|chm|cmd|com|cpl|crt|dll|exe| hlp|ht[at]| inf|ins|isp|jse?|lnk|md[betw]|ms[cipt]|nws| \{[[:xdigit:]]{8}(?:-[[:xdigit:]]{4}){3}-[[:xdigit:]]{12}\}| ops|pcd|pif|prf|reg|sc[frt]|sh[bsm]|swf| vb[esx]?|vxd|ws[cfh]))(\?=)?"?\s*(;|$)/x REJECT Attachment name "$2" may not end with ".$4"
^-> Това е за прикачените файлове и разширението им.
И /etc/postfix/body_checks
съдържа следните редове:
# viagra /(VP[\-]RX|[vV][ j!\-\.]?[iI1][ j!\-\.]?[aA4@][ !j\-\.]?[gG][ !j\-\.]?[rR][ !j\-\.]?[aA4][ !j\-\.]?)/ REJECT Message body rejected [301] # diabet /(VP[\-]RX|[dD][ j!\-\.]?[iI1][ j!\-\.]?[aA4@][ !j\-\.]?[bB][ !j\-\.]?[e3E][ !j\-\.]?[tT][ !j\-\.]?)/ REJECT Message body rejected [301]
Тук е малко по-особенно и е необходимо да разбираме от regular expression – аз не разбирам, но лесно разбрах как става работата.
Давам пример за думата „diabet“ ->
/(VP[\-]RX|[dD][ j!\-\.]?[iI1][ j!\-\.]?[aA4@][ !j\-\.]?[bB][ !j\-\.]?[e3E][ !j\-\.]?[tT][ !j\-\.]?)/
Одебелените букви са цялата хватка – тоест ако искаме да добавим нова дума просто копираме целия ред, заместваме одебелените букви с буквите от думата ни (ако е по-дълга трябва да добавим и [ !j\-\.]? между след всяка буква) и рестартираме postfix-a
Резултата е следния:
Jun 26 14:51:13 alpha postfix/cleanup[15649]: 500AA34CC63: reject: body viagra from mail-we0-f178.google.com[74.125.82.178]; from= to= proto=ESMTP helo=: 5.7.1 Message body rejected [301]