Ako bojovať proti spamu?

Mnohí to poznáte. Otvoríte si Vašu poštu a okrem mailov od Vašich známych tam častokrát nájdete aj ponuky na kúpu Viagry, ponuky kasín alebo iných somarín. Skrátka – spam. To isté sme mali v našej firme. Denno-denne u každého z kolegov sa v schránke ocitlo v priemere 100 až 300 správ označených ako ***SPAM*** . V apríli keď som prebral správu serverov som sa tomu rozhodol zamedziť v maximálnej možnej miere.

Máme mail kontá vyše desiatky aktívnych domén smerovaných na náš mail server. Poradím – hlavne tým začínajúcim adminom – ako eliminovať vo väčšom množstve danú nevyžiadanú poštu priamo na samotnom mail serveri. Keďže používame ako MTA PostFix a filter správ SpamAssasin, budem sa venovať konfigurácii práve týchto dvoch programov.

V súbore /etc/postfix/main.cf ponecháme väčšinu poinštalačných nastavení, použijeme overenie príjemcu (či nám dané konto existuje v aliastable) a za položku receive_override_options = no_address_mappings doplníme nasledujúci parameter:

reject_rbl_client = bl.spamcop.net

O niečo nižšie nájdeme položku smtpd_recipient_restrictions, do ktorej doplníme (môžeme nakoniec) reject_rbl_client bl.spamcop.net,

To nám zabezpečí, že pri prijatí mailu si server overí, či IP adresa odosielateľa sa nenachádza v spamcop-e.

A teraz nastavenie SpamAssasinu. Ten niektoré filtre má, ale spammeri sú vynaliezaví. Takže nejaké hinty na doplnenie ďaľších pravidiel.

V súbore /etc/mail/spamsassasin/local.cf môžete definovať napríklad blacklist na TLD, alebo konkrétne domény:


blacklist_from *bcs-hq.com
blacklist_from *.jp
blacklist_from *.kr
blacklist_from *.mx
blacklist_from *.ru
blacklist_from *.cn
blacklist_from *virgilio.it # loterie typu confirm your winning!


body LOCAL__banned_1 /GAIN UPTP/
describe LOCAL__banned_1 Banned GAIN_UP
score LOCAL__banned_1 42.0

body LOCAL__banned_2 /Quark Xpress/
describe LOCAL__banned_2 Banned Quark_Xpress
score LOCAL__banned_2 42.0

body LOCAL__banned_3 /VIAGRA/
describe LOCAL__banned_3 Banned VIAGRA
score LOCAL__banned_3 42.0

body LOCAL__banned_4 /SPERMAMAX/
describe LOCAL__banned_4 Banned SPERMAMAX
score LOCAL__banned_4 42.0

body LOCAL__banned_5 /Cialis/
describe LOCAL__banned_5 Banned Cialis
score LOCAL__banned_5 42.0

body LOCAL__banned_6 /Viaagrra/
describe LOCAL__banned_6 Banned Viaagrra
score LOCAL__banned_6 42.0

body LOCAL__banned_7 /many more/
describe LOCAL__banned_7 Banned many_more
score LOCAL__banned_7 42.0

body LOCAL__banned_8 /sexual partners/
describe LOCAL__banned_8 Banned sexual_partners
score LOCAL__banned_8 42.0

body LOCAL__banned_9 /This shop/
describe LOCAL__banned_9 Banned This_shop
score LOCAL__banned_9 42.0

body LOCAL__banned_10 /online pharmacy/
describe LOCAL__banned_10 Banned online_pharmacy
score LOCAL__banned_10 42.0

body LOCAL__banned_11 /penis/
describe LOCAL__banned_11 Banned penis
score LOCAL__banned_11 42.0

body LOCAL__banned_12 /Flash MX/
describe LOCAL__banned_12 Flash_MX
score LOCAL__banned_12 42.0

body LOCAL__banned_13 /C\nV\nV\nA\n/
describe LOCAL__banned_13 Viagra_cialis
score LOCAL__banned_13 42.0

body LOCAL__banned_14 /HGH/
describe LOCAL__banned_14 HGH
score LOCAL__banned_14 42.0

body LOCAL__banned_15 /are for only/
describe LOCAL__banned_15 are_for_only
score LOCAL__banned_15 42.0

header LOCAL__banned_16 Subject =~ /celeb/
describe LOCAL__banned_16 celebrity
score LOCAL__banned_16 40.0

header LOCAL__banned_17 Subject =~ /guarant/
describe LOCAL__banned_17 garancia uspechu
score LOCAL__banned_17 40.0

header LOCAL__banned_18 Subject =~ /off/
describe LOCAL__banned_18 zlava
score LOCAL__banned_18 12.0

header LOCAL__banned_19 Subject =~ /T4g/
describe LOCAL__banned_19 hodinky
score LOCAL__banned_19 40.0

header LOCAL__banned_20 Subject =~ /lottery/
describe LOCAL__banned_20 loteria
score LOCAL__banned_20 42.0

header LOCAL__banned_21 Subject =~ /pill/
score LOCAL__banned_21 42.0
describe LOCAL__banned_21 tabletky

header LOCAL__banned_22 Subject =~ /eposit/
score LOCAL__banned_22 42.0
describe LOCAL__banned_22 deposit

header LOCAL__banned_23 Subject =~ /ook/
score LOCAL__banned_23 42.0
describe LOCAL__banned_23 Look

header LOCAL__banned_24 Subject =~ /atch/
score LOCAL__banned_24 42.0
describe LOCAL__banned_24 Watches

body LOCAL__banned_25 /dating/
describe LOCAL__banned_25 dating
score LOCAL__banned_25 42.0

score LOCAL__banned_26 42.0
describe LOCAL__banned_26 cina
header LOCAL__banned_26 From =~ /.cn/

body LOCAL__banned_27 /Bacheelor/
describe LOCAL__banned_27 svadba
score LOCAL__banned_27 42.0

body LOCAL__banned_28 /sex/
describe LOCAL__banned_28 sex
score LOCAL__banned_28 42.0

body LOCAL__banned_29 /CS3/
describe LOCAL__banned_29 software
score LOCAL__banned_29 42.0

body LOCAL__banned_30 /Pharmacy/
describe LOCAL__banned_30 farmacia
score LOCAL__banned_30 42.0

header LOCAL__banned_31 Subject =~ /VIAGRA/
score LOCAL__banned_31 42.0
describe LOCAL__banned_31 viagra - subject

header LOCAL__banned_32 Subject =~ /Pamela/
score LOCAL__banned_32 42.0
describe LOCAL__banned_32 andersonka

header LOCAL__banned_33 Subject =~ /Best/
score LOCAL__banned_33 42.0
describe LOCAL__banned_33 to najlepsie

header LOCAL__banned_34 Subject =~ /Dear/
score LOCAL__banned_34 42.0
describe LOCAL__banned_34 drahy

header LOCAL__banned_35 Subject =~ /oupon/
describe LOCAL__banned_35 kupony
score LOCAL__banned_35 42.0

header LOCAL__banned_36 Subject =~ /sex/
describe LOCAL__banned_36 sex v predmete
score LOCAL__banned_36 42.0

header LOCAL__banned_37 Subject =~ /VlAGRA/
describe LOCAL__banned_37 subject - viagra - odrb
score LOCAL__banned_37 42.0

body LOCAL__banned_38 /pleasure/
describe LOCAL__banned_38 pozitok
score LOCAL__banned_38 42.0

header LOCAL__banned_39 Subject =~ /avings/
describe LOCAL__banned_39 setrit
score LOCAL__banned_39 42.0

Keďže väčšina bežných správ má tzv. SPAM SCORE záporné číslo alebo niečo okolo nuly, môžeme do tohto súboru na začiatku pridať ešte
required_score 4

Taktiež si môžeme zabezpečiť akceptáciu správ, ktoré spĺňajú aj jazykové mutácie:
ok_languages cs en it sk

Ak by sa stalo, že Vám chodia maily od dôveryhodných zdrojov s vyšším spam-score, dá sa pridať podmienka, ktorá zabezpečí, že sa pravidlá na ne nebudú vzťahovať:
whitelist_from *nejakadomena.tld

alebo

whitelist_from kamarat@nejakadomena.tld

Keď už máme nastavené spam-score, do /etc/procmailrc pridáme toto:


:0fw:/var/tmp/spamassassin.$$.lock
* <256000
| /usr/bin/spamassassin
DROPPRIVS=yes

MAILDIR=$HOME/mail

:0
* ^X-Spam-Level: \*\*\*\*
/dev/null
#almost-certainly-spam

Tým pádom sa správy so spam-score vyšším ako 4 automaticky zmažú. Keď to máme, už nám stačí len reštartovať PostFix a SpamAssasin. A či to funguje? Náš mail server takto odmietne vyše 70 – 90 správ za minútu a ďaľších 30 zmaže. Užívateľom prejde odhadom maximálne cca. 5 spamov/konto denne. 😉

P.S.: cesty sa môžu meniť v závislosti od distribúcie!

Užitočné linky:
Déja-vix – ova príručka sysadmina – dosť mi pomáha.
SpamAssasin Homepage
PostFix

eMDi

Blogger, webdeveloper, linuxák, F1 Fan

6 thoughts on “Ako bojovať proti spamu?

  1. No.Asi by som sa trochu tejto tvojej konfiguracie bal. Tie LOCAL__banned pravidla su dost jednorazove. Vela toho v globale nechytia. Skor narazov. Skore znizene na 4 mi tiez dojde rizikove. BTW: skus pouzit spamassassin skor cez milter interface ako cez procmail. Dokazes stopnut/odmietnut mail uz v skorsej faze.

Pridaj komentár