[Megoldva] Postfix szövegtörzs alapján átirányítás

 ( ScOut3R | 2008. február 13., szerda - 14:39 )

Sewastok!

Át szeretném vizsgálni bizonyos címekre beérkező levelek törzsét és kulcsszavak alapján bizonyos címekre továbbítani.
A szöveg átvizsgálásával nincs gond, de hogy tudnám ezt megadott címek alapján elvégezni?

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

UP :)

"sewas" :)

igazából nem látom, mit is szeretnél pontosan: a címekre megérkeznek a levelek, tehát van $HOME/Maildir?

Ha igen, akkor .forward-ba valamilyen script, amihez értesz, és az leválogatja a leveleket keresés után, majd vagy egy sendmail bináris, vagy az adott script smtplib-je küldi tovább.

Meddig jutottál el a feladatban pontosan?

Van egy működő levelezés ($HOME/Maildir :) ), több gyűjtő címmel. Például info@, palyazatok@, stb. A szövegtörzsben előforduló kulcsszavak alapján szeretném, hogyha a postfix szétválogatná a leveleket. A .forward is jó, de akkor az eredeti címzett is megkapja, és ezt nem szeretném.
Jelenleg ott tartok, hogy az összes bejövő levél szövegtörzsét átnézi a postfix és hogyha egyezést talál egy kritériummal, akkor végrehajtja az ott megjeleölt utasítást, tehát az átirányítás ezen része működik.
Azzal szeretném kiegészíteni, hogy a kritériumok egy csoportját csak egy adott címzett esetén nézze. A fejléc ellenőrzésére volna szükség, de nem találtam arra módot, hogy a postfix a fejlécben talált információ alapján alkalmazza szövegtörzs szűrését.

Csak kulso programmal oldhato meg. A postfix soronkent vegzi az ellenorzest, ahogy a doksijaban le is van irva.

Gondolom procmail lenne az egyik ilyen lehetőség, azonban ahhoz át kellene állítani a postfixet, hogy a procmail végezze a levelek helyi kézbesítését. Ezt, hogyha lehet, el szeretném kerülni.

Kuldd at pl. egy content_filter-en, az nyugodtan atirhatja a levelet mielott ujra a postfix-hez kerulne.

Lehet olyat is, hogy a kézbesítést ugyan a local(8) végzi, de a user $HOME-jában van .forward, amiben ennyi van:

|/path/to/script

a script pedig az stdin-en kapja majd meg a levelet, amivel azt csinálsz, amit akarsz.

a.

Procmail-lel sikerült részben megoldanom. Úgy vettem észre, hogy az ékezetes karaktetreket nem szereti. A szűrési szabályban próbáltam ékezetekkel, majd "."-tal az ékezetek helyén, de nem működik. Csak akkor ad egyezést, hogyha a levélben az adott mintában nincs ékezetes karakter.

Ezt azert eleg nehez elhinni. Nezd meg a level forrasat, gyanithatoan fogsz ott latni par erdekesseget az ekezetes karakterek kodolasa kapcsan.

Igen, időközben kiderült, hogy az én kliensemmel van a baj. Máshonnan küldtem levelet és azt rendesen szűrte. Köszönöm a segítséget!

Az archivum kedveert leirhatnad a teljes megoldast :) (par soros, esetleg lepesrol lepesre, hogy masnak _segithess_)

start OFF:
en szeretem latni a topik cime elott a [Megoldva] elotagot. Nemtudom mas hogy van ezzel de en "szeret(ne)m"
end OFF

-
budacsik

Jogos. :) Pótoltam.

A végső megoldás a procmail volt.

main.cf:

mailbox_command = procmail -a "$EXTENSION"

/etc/procmailrc:

SHELL=/bin/sh
PATH=/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin
# Maildir format
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR
LOGFILE=/var/log/procmail.log

Az eredeti címzett könyvtárában a .procamilrc tartama:

:0B
* [kulcsszó]
! új címzett

Hogyha szeretnél egy másolatot az eredeti címzettnek is, akkor ":0Bc"-vel kezd a szabályt.