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
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.
Trosku dlhe ale v poho 🙂
postfix a procmail mam aj ja. chcem casom vyuzivat databazu … spamassasin a clamAV je samozrejmost 😉
pouzivam kombinaciu postfix+procmail+postgrey+mailscanner (a v nom je spam assassin+clamAV) a som spokojny
ked mi nedavno zacala chodit kopa bouncov, tak som si nastavil SPF so soft fail a dost sa to zredukovalo
len doplnim, ze vacsinu podmienok pre filtrovanie podla hlaviciek a obsahu mailov som definoval sam 😉