Megtört szívvel jelentem, hogy kedvenc cégem, a StartVox szerverén elszaporodott a SPAM. Méghozzá nem az a vidám, baráti SPAM, amit a zen.spamhaus.org egy mozdulattal eltüntet, hanem magyar SPAM! Na de fúj. Befektetési tanácsadás? Őrületes hozamok? Fogyókúra két hét alatt?? Mindez az én szerveremen???

Nem, ez nem mehet így tovább! Valamit tenni kell, még akkor is, ha több időbe telik, mint egyesével törölni a leveleket. Szerencsére úgy láttam, hogy az összes ilyen levélben található egy meglehetősen fura SMPT fejléc mező, amit más levélben még nem láttam. Úgyhogy a szűrés nem olyan bonyolult: ha egy levélben van ilyen fejléc mező (X-Mailer-RecptId), akkor kuka.

Tanuljunk meg hát Exim4 filtert készíteni, jól, gondoltam én. Tájékozatlanok számára: az Exim4 egy MTA (Mail Transfer Agent), ismertebb nevén: e-mail szerver. Igen jól fejlett példánya az open source szoftvernek: csak a filterezésről szóló dokumentációja 25 oldal kinyomtatva, a Debian által szállított Exim4 mindenesetre tartalmaz egy minta konfigurációs file-t, ami laza 2000 sort nyom.

Összefoglalva: az Exim4 konfigurálás súlyos fekete mágia!

Szerencsére az alap Debian template tartalmaz néhány pontot, ahol bele lehet piszkálni a levélkézbesítés folyamatába, méghozzá anélkül, hogy ezt az óriás template-et kellene szerkesztenem. Némi dokumentáció- és fórumolvasgatás után sikerült kiderítenem, hogy a tartalom alapú filterezés az acl_smtp_data címre hallgató access control list-ben találhatóak. A template elején található rész: .ifndef MAIN_ACL_CHECK_DATA MAIN_ACL_CHECK_DATA = acl_check_data .endif acl_smtp_data = MAIN_ACL_CHECK_DATA

Aham. Szóval keressem azt, hogy acl_check_data. Értem én! Ez a lista a file 870. soránál kezdődött, és egyebek között található volt benne egy ilyen stanza:

# This hook allows you to hook in your own ACLs without having to # modify this file. If you do it like we suggest, you'll end up with # a small performance penalty since there is an additional file being # accessed. This doesn't happen if you leave the macro unset. .ifdef CHECK_DATA_LOCAL_ACL_FILE .include CHECK_DATA_LOCAL_ACL_FILE .endif

Ez lefordítva a magyar nyelvre: ha a lokális makrók között (amik egy külön file-ban vannak) definiálok egy CHECK_DATA_LOCAL_ACL_FILE nevű makrót, akkor azt az Exim4 szépen felveszi a többi filter közé! Nosza, ezt írtam az exim4.conf.localmacros mélyére: # @UPi: Local spam filters CHECK_DATA_LOCAL_ACL_FILE = /etc/exim4/local_check_data

(Általában config file-okban @UPi-val szoktam jelölni a saját változtatásaimat, és az ahhoz kapcsolódó kommenteket. Így látom, hogy hol barmoltam bele a rendszerbe.) Ezután már csak a konkrét filter hiányzik ügye, ami elvégzi a tényleges szűrést.

# @UPi: deny from Hungarian spam gang deny condition = ${if def:h_X-Mailer-RecptId: {yes}{no}} delay = 45s message = DIAF

Mit is jelentenek ezek? A deny annyit fejez ki, hogy ha ez a szűrő érvényesül, akkor szépen visszautasítjuk a levélkét. A condition rész az Exim4 agyament nyelvén azt fejezi ki, hogy ha létezik az a bizonyos fejléc mező, akkor teljesüljön csak a filter. (Ha a condition nem teljesül, akkor a rendszer szépen megy a következő filterre.) A delay bónusz szopatás: 45 másodpercig várunk a válasszal, ezzel is feltartjuk az ő kis SPAM rendszerüket. Az üzenet pedig az én személyes jókívánságom, csak nekik.

Hát ennyit az Exim4 szűrésről. Még azt érdemes megemlítenem, hogy hogyan érdemes egy új szűrőt tesztelni! Erre a következő parancs a legalkalmasabb, az Exim4 kismillió opciója közül: exim4 -bh 46.102.245.88 A 46.102.245.88 egy szabadon választott külső IP cím; az Exim4 a teszt folyamán úgy fog tenni, mintha erről a címről csatlakoztam volna hozzá. Ezek után SMTP protokoll szerint lehet parancsokat beírni, erről egy jól használható példa van a Wikipedia SMTP-ről szóló oldalán. Közben az Exim4 pedig szorgosan írja, hogy éppen melyik filtereket futtatja, és azokat hogyan értelmezte közben.

Itt a vége, fuss el véle, búcsúzik a műsorvezető.

Utoljára módosította UPi 2013.V.23 14:02-n
Bejegyzés módosítása | PermaLink
Votes disabled.

Hozzászólások (4)

UPi hozzászólása 2013-05-23 14:24-kor

És igen, győzelem, megvan az első spam, amit kinyírt az új filter:

2013-05-23 13:58:17 [1646] SMTP connection from [88.151.98.205]:35502 I=[46.102.243.245]:25 (TCP/IP connection count = 1)
2013-05-23 13:59:03 [32484] 1UfU9x-0008Rw-Po H=s11.protopmail.com [88.151.98.205]:35502 I=[46.102.243.245]:25 F=<bounce-supershop@protopmail.com> rejected after DATA: DIAF
2013-05-23 13:59:03 [32484] SMTP connection from s11.protopmail.com [88.151.98.205]:35502 I=[46.102.243.245]:25 closed by QUIT
(Figyeled a 45mp szünetet?)


SurBa hozzászólása 2013-05-23 18:41-kor

(Válaszképp erre)

Gratu! Szeretem a 45mp-es részt, de mit akar a DIAF jelenteni? (Die In A Flame -konzisztens az élet értelmével)


UPi hozzászólása 2013-05-23 19:59-kor

(Válaszképp erre)

A kanonikus kibontás a "Die In A Fire".


Wigy hozzászólása 2013-05-24 13:37-kor

(Válaszképp erre)

Világbékét! Olllyan szép volt ahogy a lány azt akarja, hogy az állatok, a madarak és a csillagok barátok legyenek.