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 :)