.\"if n .pl +(135i-\n(.pu) .de Id .ds Rv \\$3 .ds Dt \\$4 .. .Id $Id: procmailsc.man,v 1.10 1994/10/07 15:24:32 berg Exp $ .TH PROCMAILSC 5 \*(Dt BuGless .rn SH Sh .de SH .br .ne 11 .Sh "\\$1" .. .rn SS Ss .de SS .br .ne 10 .Ss "\\$1" .. .rn TP Tp .de TP .br .ne 9 .Tp \\$1 .. .rn RS Rs .de RS .na .nf .Rs .. .rn RE Re .de RE .Re .fi .ad .. .de Sx .PP .ne \\$1 .RS .. .de Ex .RE .PP .. .na .SH NÉV procmailsc \- a procmail súlyozott pontozási módszere .SH ÁTTEKINTÉS .RB [ * ] .B "w^x feltétel" .ad .SH LEÍRÁS A szűrési feltételekben megadott hagyományos igaz/hamis vizsgálat mellett a súlyozott pontozási módszert is lehet használni a feltételek helyességének megállapítására. A szűrési feltételben használt pontozási módszereknél a pozitív értékek az igaz állításnak felelnek meg. A feltételek az alábbi módon kapnak pontokat, `fontosság' .RB ( w ) és `kitevő' .RB ( x ). A feltétel előtt (ugyanabban a sorban) lehet megadni ezt a következőképen: .RS .B w^x .RE Ahol, mind .B w és .B x pozitív valós számok \-2147483647.0 és 2147483647.0 között. .SH "Súlyozás egyszerű feltételnél" A feltétlenek való első megfeleléskor .I w \-vel nő a pontszám. A következő megfeleléskor már .I w*x -el. Harmadik találat esetén .I w*x*x -el. Negyedik megfeleléskor .I w*x*x*x -el. És így tovább. Ezt a következő képlettel lehet kifejezni: .Sx 4 n n k\-1 x \- 1 w * Sum x = w * \-\-\-\-\-\-\- k=1 x \- 1 .Ex A képlet megadja a feltétel .B n számú megfelelésekor az összpontszámot. A következő eseteket lehet .B x \-től függően megkülönböztetni: .TP 8 x=0 Csak az első találat esetén növekszik a pontszám w-vel. Minden más találat figyelmen kívül lesz hagyva. .TP x=1 Minden egyes találat w-vel növeli a pontszámot. Az összpontszám a találatok számával egyenes arányban növekszik. .TP 0 L .Ex esetén a megfelelő pontszám a következőképen számolható: .Sx 4 x / M \e w * | \-\-\- | \e L / .Ex És: .Sx 1 * w^x < L .Ex esetén a pontszám a következőként adódik: .Sx 4 x / L \e w * | \-\-\- | \e M / .Ex .PP Mindkét esetben, ha L=M, akkor az összpontszámhoz csupán w adódik. Az előző példa azonban hosszabb levelekre, míg az utóbbi a rövidebb levelekre használandó. Az x változtatásával a függvény pontosságát lehet 'finomhangolni', de az x=1 többnyire megfelelő. .SH EGYÉB A szűrési feltételben (recipe) szereplő összes pontszámot a .BR $= környezeti változó segítségével lehet kiolvasni. Ezt a változó .I minden szűrés után ellenőrzésre kerül (még ha a szűrés nem is hajtódik végre). .SH PÉLDÁK A következő példával minden a olyan levelet töröltethetünk, amely a törzsében 150 sornál többet tartalmaz. Az első sorban egy üres feltétel talalható, amely minden levélre igaz, ezzel a pontszámnak egy kezdeti (negatív) értéket adtunk meg. A következő feltétel segítségével minden egyes új sor esetén növeltetjük az összpontszámot (soronként egy ponttal). A feltétel pozitív pontszámmal zárul, ha a levél 150 sornál többet tartalmazott. .Sx 5 :0 Bh * \-150^0 * 1^1 ^.*$ /dev/null .Ex Ha van egy külön levelesmappánk, amelyet mindig először olvasunk el, akkor a következő szűrési feltétellel a fontosabb leveleket átirányíthatjuk ebbe a mappába. Az első feltétel nem használ pontozást, mindössze figyeli, hogy a levelek nem tartalmazzák-e a megadott feltételeket. A következő feltételek pedig a következőt fejezik ki: józsi és kati általában hasznos dolgokról írnak; a megbeszélésekről szóló levelek fontosak a számunkra; válaszleveleket is szívesen olvasunk; Elvis-ről szóló leveleket (hátha megtudunk valami újat) mindig elolvassuk (minél többször említik a levélben Elvist, annál több pontot kap a levél, de maximum 4000 pontot); túl sok idézett sort tartalmazó levelet el szeretnénk kerülni; ha smiley-t küldenek nekünk, akkor azt szívesen megnézzük (erre maximum 3500 pontot adunk); három embertől (főnők, timi, péter) általában unalmas leveleket szoktunk kapni; és végül nem szeretjük a hosszú leveleket, jobb, ha a levél csak 2000 bájt hosszú, ha ennél hosszabb, akkor 100 pontot, ha 4000 bájtnál hosszabb akkor pedig 800 pontot vonunk le az összes pontszámából. A pontozási módszer segítségével azonban, még ha egy unalmas levelet is kapunk három emberünk valamelyikétől a levél még bekerülhet a külön mappánkba, ha pl. megbeszélésről szól, vagy tartalmaz legalább 2 darab smileyt. .Sx 11 :0 HB * !^Precedence:.*(junk|bulk) * 2000^0 ^From:.*(jozsi@otthon|kati@munkahely) * 2000^0 ^Subject:.*megbeszeles * 300^0 ^Subject:.*Re: * 1000^.75 elvis|presley * \-100^1 ^> * 350^.9 :\-\e) * \-500^0 ^From:.*(fonok|timi|peter)@munkahely * \-100^3 > 2000 kulon_mappa .Ex Ha a levelezőlistákról érkező levelek közül csak a hasznos leveleket szeretnénk elolvasni, akkor a következő szűrési feltételt használhatjuk. Az első feltétel ellenőrzi, hogy a levél a megadott levelezőlistáról jött-e. Aztán a leveleket ellenőrizzük, hogy olyan személytől jött-e akinek adunk a szavára, vagy olyan témáról szól, amelyről mindent El szeretnénk olvasni. Ha ezeknek megfelel, akkor marad a levél. A többi levélnél megvizsgáljuk, hogy az idézett és az új sorok aránya eléri-e az 1:2-hözt. Ha ennél több, akkor töröljük a levelet. Minden olyan levél, amely átment az előző vizsgálaton mentésre kerül. .Sx 15 :0 ^From levelezőlista@vhol { :0: * ^(From:.*(piroska|bandi)|Subject:.*sieles) levlista :0 Bh * 20^1 ^> * \-10^1 ^[^>] /dev/null :0: levlista } .Ex További mintapéldák a .BR procmailex (5) súgóban lehet találni. .SH FIGYELMEZTETÉS A procmail a gyors keresés érdekében mindig csak a balelső (leftmost) .I legrövidebb egyezésig keres, ha csak nem a .BR MATCH \-be értéket kell átadni, ebben az esetben a balelso .I leghosszabb találatig keres. Pl. A balelső .I legrövidebb találat a következő kifejezésre: .TP .B .* mindig nullahosszúságú találatot eredményez. .TP .B .+ pedig mindig csak egy karaktert (sortörést persze nem) eredményez. .SH "LÁSD MÉG" .na .nh .BR procmail (1), .BR procmailrc (5), .BR procmailex (5), .BR sh (1), .BR csh (1), .BR egrep (1), .BR grep (1), .hy .ad .SH HIBÁK Ha az .B x értéke túlcsorduláshoz vezet, akkor a matematikai függvénytárban lévő .BR pow (3) függvénytől függ a végső eredmény. .PP Lebegő pontos számok mérnöki formátumban (pl. 12e5) nem adhatók meg. .SH EGYÉB A `pozitív végtelen' (2147483647) elérésekor minden .I további súlyozás át lesz ugorva. .PP A `negatív végtelen' (\-2147483647) elérésekor a szűrés megfelelés hiányában befejeződik. .SH MEGJEGYZÉS .BR 0 .\" @MY_ALT_MAIL_ADDR@ .RE .\".if n .pl -(\n(.tu-1i) .SH MAGYAR FORDÍTÁS Vizi Szilárd