Exim - header_checks - hogyan?

Fórumok

Sziasztok!

Postfixben meg tudtam oldani a következőt: ha egy bejövő e-mail fejlécének "Return-Path"-a, vagy "From"-ja akármi@vps.bármilyendomain.com akkor azt utasítsa el:

/^(From|Return-Path):.*@vps\..*\.com\>/ REJECT

Ugyanezt szeretném megoldani Exim 4.84 alatt.
Egyáltalán nem értek az Exim ilyen irányú állítgatásához, ebből induljunk el :)
Tudnátok ebben segíteni?

Előre is köszönöm! :)

Hozzászólások

Érdemes lesz utána olvasnod, mert ez nem ilyen egyszerű - vagy ha igen, alig várom, hogy valaki megmondja. :D
A levél fejlécét az acl_smtp_data szekcióban kell vizsgálnod, két db olyan droppoló subaclel, ami a header alapján vizsgálódik. A lenti példa alapján elindulhatsz. NEM GARANTÁLOM HOGY MŰKÖDIK!
A feltételek sorban értékelődnek ki. Először hogy a h_from (vagy a h_return-path) létezik-e az emailben, ha igen, jön a blokkban megadott következő feltétel vizsgálata. Ezzel még az email átvétele ELŐTT szűrhetsz.
A wildlsearch egy olyan textfájlra hivatkozik, amibe beleírhatsz valamiféle regexpet. Soronként egyet, mindegyiket végignézi. A pontos szintaktikát nem merném megmondani. :D
System filterrel pedig az átvétel után is megoldhatod a dolgot. Másképp. De az már _teljesen_ más tészta.

drop message = bad boy!
condition = ${if def:h_from: {yes}{no}}
condition = ${lookup{${address:$h_from:}}wildlsearch{/etc/exim4/lists/banned}{yes}{no}}
delay = 10s

Köszönöm szépen! Akárhogy is próbálgatom, nem megy. Mindig bejön a levél.
Itt találtam egy tiedhez nagyon hasonló leírást:
https://github.com/Exim/exim/wiki/AclSmtpData
A "Black list headers" részlegből mazsoláztam, de ugyanúgy hatástalan volt.

Aztán találtam egy végtelenül egyszerű megoldást:
A begin_acl után beteszem ezt a sort:

deny senders = /etc/exim4/lists/banned

Ami email címet ebbe a banned nevű fájlba belerakok (root@vps1.kuldodomain.hu), attól nem fogad el levelet, ez látszik a logban:
2017-02-02 22:50:33 H=vps1.kuldodomain.hu [xxx.xxx.xxx.xxx] F= rejected RCPT

De azt szeretném, hogy az akárki@vps1.akármilyendomain.hu-ról ne fogadjon el levelet.
Nem tudom wildcardolni sehogy sem. Amint kicsillagozom a kuldodomain-t, már bejön a levél:

*@vps1.*.hu

Van valami ötletetek? Semmilyen épkézláb leírást nem találtam erre (nyilván nem jól keresek).

Ha sender alapján akarod kitiltani, akkor:

deny senders = ^.*@vps1\..*$

Ha host alapján bérmilyen vps1-el kezdődőt, akkor:

deny hosts = vps1.

Tesztelni úgy tudod, hogy:

exim -bhc tetszőleges IP cím

helo vps1.kuldodomain.hu
mail from: valaki @vps1.kuldodomain.hu
rcpt to: valaki@valid_helyi_domain
data
.

Ezzel pontosan látni fogod, hogy mi történik, eléggé beszédes a log :)

--
http://eVIR.hu
Elektronikus Vállalatirányítási Információs Rendszer

Hja, sender vagy domain alapján tiltani elég egyszerű feladat lenne. Ezért is írtam, hogy header regexp alapján tiltani nem lesz egyszerű. ;)
Amit ne keverj össze: az acl-ek logikailag sorban hajtódnak végre, 4 db fő blokk van. Először az smtp kapcsolat felvételére vonatkozó szabályokat adhatod meg, (pl. helo, stb.) utána a sendert vizsgálhatod, utána az rcpt-t, és a legvégén hajtódnak végre a data részt vizsgáló acl-ek. Csakis ide tudod betenni a header checkeket.

Szerk: megfelelő regexp kifejezéssel a wildlsearch direktívával és a megfelelő (létező!) headerre feltétel állításával a data aclbe a fenti példa alapján, akkor ez tutifix működni fog.

Van valami ötletetek?

Van. :) Olvasd el a wildlsearch használatát a manuálban :)

Köszönöm szépen a segítségeteket, működik a dolog. Az acl-ekkel kapcsolatosan is köszönöm az infót, ideje olvasgatnom a nagy exim tutorialt :)