Provided by: manpages-hu_4.27.0-1_all bug

NÉV

       procmailex - procmail konfigurációs állomány példák

ÖSSZEGZÉS

       $HOME/.procmailrc példák

LEÍRÁS

       A konfigurációs állomány felépítéséről bővebben a procmailrc(5).  súgóban lehet olvasni.

       A súlyozott értékelési módszerről részletes információ a procmailsc(5) súgóban található.

       This  man  page  shows several example recipes.  For examples of complete rcfiles you can check the NOTES
       section in procmail(1), or look at the example rcfiles in /usr/share/doc/procmail/examples.

PÉLDÁK

       Búvárkodással foglalkozó levelező listáról  érkező  leveleket  a  buvarkodas  nevű  mappába  irányításhoz
       (buvarkodas.lock záróállomány [locallockfile] használatával)  a következő megoldás használható:

              :0: * ^TObuvarkodas buvarkodas

       Pétertől  érkező  programozásról  szóló  leveleket  Istvánnak az alábbi módon lehet továbbítani, miközben
       ezekről a levelekről egy másolat a peterprog mappába kerül.

              :0
              * ^From.*peter
              * ^Subject:.*programozas
              {
                 :0 c
                 ! istvan@gepe.hu

                 :0
                 peterprog
              }

       Ugyanez egy kicsit másként:

              :0 c * ^From.*peter * ^Subject:.*programozas ! istvan@gepe.hu

                 :0 A
                 peterprog

       Ugyanez, de egy kicsit lassabb módszerrel:

              :0 c * ^From.*peter * ^Subject:.*programozas ! istvan@gepe.hu

              :0 * ^From.*peter * ^Subject:.*programozás peterprog

       Procmailben kevésbé járatosak és kísérletezgetőknek jól jöhet néhány tanács.  A következő két feltételt a
       szűrőfeltételek elé beszúrva az utolsó 32 levelünkről mindig készül egy biztonsági másolat.  Ahhoz,  hogy
       működjön ez a mentés, el ne felejtsük a $MAILDIR könyvtárban létrehozni egy 'mentes' könyvtárat.

              :0 c mentes

              :0 ic | cd mentes && rm -f dummy `ls -t msg.* | sed -e 1,32d`

       A  levelekben  a  `From  ' mező nem mindig megfelelő, ezt egy procmail -f paranccsal lehet kijavítani. Az
       ilyen típusú hibák javításához az alábbi két feltételt érdemes beszúrni. Ezekkel az összes  bejövő  levél
       fejlécében javíthatjuk a `From ' mezőt.

              :0 fhw | formail -I "From " -a "From "

       Másik  hasznos  dolog  lehet,  ha  egy saját fejlécet szúrunk be (statisztikai vagy egyéb indok miatt) az
       összes olyan levélbe, amely nem a postmaster-től jött  (itt  fejlec.lock  záróállományt  is  használunk).
       Annak  érdekében,  hogy  a  záróállomány  a szűrés befejezésig aktív maradjon a `w' kapcsolót is meg kell
       adni, különben ahogy a szűrési feltételhez ér a levél a zárolás megszűnne.

              :0 hwc: * !^FROM_MAILER | uncompress fejlec.Z; cat >>fejlec;
              compress fejlec

       Vagy a hatékonyabb gzip-es tömörítővel az alábbi módon:

              :0 hwc: * !^FROM_MAILER | gzip >>fejlec.gz

       Az összes 1000 bájtnál kisebb levelek otthoni címünkre irányításához (záróállomány használata nélkül)  az
       alábbira lehet szükségünk:

              :0 * < 1000 ! nevem@otthon

       A  szörfölés  levelezési listáról érkező digest (összefűzött) levelek szétdarabolásához és azok szorfoles
       mappába irányításához, szorfoles.lock záróállomány használatával a következő szűrőre van szükségünk.

              :0: * ^Subject:.*szorfing.*Digest | formail +1 -ds >>szorfoles

       A postmastertől vagy a  mailer-daemontól  érkező  összes  levél  postm  mappába  gyűjtéséhez,  postm.lock
       záróállomány használatával az alábbi szükséges:

              :0: * ^FROM_MAILER postm

       Egy egyszerű megoldás automatikus válaszadásra. A saját és a levéltovábbító programoktól érkező levelekre
       automatikus  válaszadásnak  nem szabad történnie. Ha nem figyelnénk erre, akkor galibába kerülhetünk (pl.
       körkörös levéltovábbküldés [`ringing' mail]).  Hogy hatékonyan működjön ez a szűrő, ezért az összes többi
       elé célszerű beszúrni.  Azonban ajánlatos lehet, a levelezőlistákról érkező levelek szűrése után betenni,
       mivel levelezőlisták leveleire automatikus választ  küldeni  nem  ildomos.  Elméletileg  a  !^FROM_DAEMON
       feltétel kiszűri a levelezőlistákat, de ne kísértsük a sorsot , ha mégsem tenné azt.

              :0 h c
              * !^FROM_DAEMON
              * !^X-Loop: sajat@emilcimed
              | (formail -r -I"Precedence: junk" \
                  -A"X-Loop: sajat@emilcimed" ; \
                 echo "Leveled érkezett.") | $SENDMAIL -t

       A  vacation(1)  programot akár helyettesítő, összetettebb automatikus válaszadást a következő módon lehet
       létrehozni. Ez a szűrő az előzőekben ismertetet módszert azzal egészíti ki, hogy egy  szünidő  adatbázist
       készít  a  szunido.cache állományba a levelek feladóiból; ha azok ott még nem szerepeltek, akkor felveszi
       azokat az állományba.  (A szunido.cache állományt a formail hozza  létre  ügyelve  arra,  hogy  mindig  a
       legfrissebb  feladók  neveit  rátolja  maximum  8192  bájt  méretben.)  Ha  a feladó még nem szerepelt az
       adatbázisban, akkor automatikusan választ kap.

       Ahogy látható a szűrési feltételek sorában megjegyzések is elhelyezhetők. soha se tegyünk megjegyzést  az
       összehasonlítást végző sorokba.

              SHELL=/bin/sh # shelltől függően adjuk meg

              :0 Whc: szunido.lock
               # Ellenőrizzük, hogy a levél nekünk lett-e címezve
              * $^To:.*\<$\LOGNAME\>
               # Levelezőlistákra és felügyelő programoknak nem küldünk választ
              * !^FROM_DAEMON
               # Körkörös levélküldés megakadályozása
              * !^X-Loop: sajat@emailcimed
              | formail -rD 8192 szunido.cache

                :0 ehc         # ha a feladó még nem szerepelt az adatbázisban
                | (formail -rI"Precedence: junk" \
                     -A"X-Loop: sajat@emailcimed" ; \
                   echo "Megkaptam az üzenetedet,"; \
                   echo "de csak HÉTFŐN vagyok legközelebb."; \
                   echo "-- "; cat $HOME/.signature \
                  ) | $SENDMAIL -oi -t

       TeX-el  foglalkozó  levelek texmail könyvtárban (a könyvtárat külön létre kell hozni)  tárolásához egyedi
       állománynevekkel a következőképen oldható meg:

              :0 * (^TO|^Subject:.*)TeX[^t] texmail

       Ugyanezt, de nem egyedi, hanem számozott névvel (MH mappa) elmentett levelekhez ezt kell használni:

              :0 * (^TO|^Subject:.*)TeX[^t] texmail/.

       Mindezek mellett egyszerre több helyre is lehet irányítani a leveleket.  A következőkben két  MH  mappába
       és  egy  könyvtárba  kerül  a  levél és másolatai. Ez majdnem olyan mintha egy állományba mentenénk, de a
       másikkal "keménykötéssel" (hardlink)  összekapcsolnánk.

              :0 * (^TO|^Subject:.*)TeX[^t] texmail/. szovegszerkesztes dtp/.

       Az összes megbeszélésről szóló levelet egy olyan mappába irányíthatjuk, amely mondjuk havonta változik  a
       következő   megoldással.   Pl.   1994.  januárban  a  könyvtár  neve  94-01  lenne,  a  levelek  pedig  a
       94-01/megbeszeles mappába kerülnének, a záróállomány neve pedig `94-01/megbeszeles.lock' lenne.

              :0: * megbeszeles `date +%y-%m`/megbeszeles

       Mint fenn, de ha még nem létezne a `94-01' könyvtár, akkor automatikusan létre lesz hozva.

              MONTHFOLDER=`date +%y-%m`

              :0 Wic * ? test ! -d $MONTHFOLDER | mkdir $MONTHFOLDER

              :0: * megbeszeles ${MONTHFOLDER}/megbeszeles

       Egy kicsit másként kivitelezve ugyanaz:

              MONTHFOLDER=`date +%y-%m` DUMMY=`test -d $MONTHFOLDER || mkdir $MONTHFOLDER`

              :0: * megbeszeles ${MONTHFOLDER}/megbeszeles

       Azok, akik több levelezőlista tagjai és ahol  a  tagok  üzeneteiket  több  helyre  is  elküldik,  sokszor
       szeretnének  ezektől  a  duplikált levelektől megszabadulni automatikusan. A következő szűrővel ezeket az
       ismétlődő leveleket lehet kitöröltetni. A trükk, hogy egy 8  KB-os  állományban  tároljuk  a  legfrissebb
       levelek  Message-ID-it  (levélazonosítóit).  Mivel  a  Message-ID-k  egyediek , ezért ezek alapján könnyű
       megkeresni az ismétlődő leveleket. Hogy egyetlen ismétlődő levél se  jusson  át  a  szűrésen,  érdemes  a
       konfigurációs állomány legelejére tenni azt.

              :0 Wh: msgid.lock | formail -D 8192 msgid.cache

       Azonban levéltovábbítási hibák esetén ezzel a szűrővel törlődhetnek olyan levelek, amelyeket nem akartunk
       töröltetni, mivel a procmail újra megpróbálja továbbítani a levelet a hiba esetén, azonban a Message-ID-k
       alapján  ekkor  már duplikált leveleknek fogja tekinteni a leveleket, s törli azokat.  Így azok, akik még
       nem biztosak magukban a következő szűrőt használják.  Ez a szűrő a duplikált leveleket nem  törli,  hanem
       egy külön mappába helyezi. Természetesen ezt a mappát időnként majd üríteni szükséges.

              :0 Whc: msgid.lock | formail -D 8192 msgid.cache

              :0 a: duplikaltak

       Procmail  can  deliver  to  MH folders directly, but, it does not update the unseen sequences the real MH
       manages.  If you want procmail to update those as well, use a recipe like the following which  will  file
       everything  that  contains the word spam in the body of the mail into an MH folder called spamfold.  Note
       the local lockfile, which is needed because MH programs do not lock  the  sequences  file.   Asynchronous
       invocations  of  MH  programs  that  change  the sequences file may therefore corrupt it or silently lose
       changes.  Unfortunately, the lockfile doesn't completely solve the problem as rcvstore could  be  invoked
       while `show' or `mark' or some other MH program is running.  This problem is expected to be fixed in some
       future  version  of  MH,  but  until  then,  you'll have to balance the risk of lost or corrupt sequences
       against the benefits of the unseen sequence.

              :0 :spamfold/$LOCKEXT * B ?? spam | rcvstore +spamfold

       Emacs mappák használata (pl. emacs-on alapuló  levelezőprogramok  --  RMAIL,  VM,  stb.  --  levélmappái)
       esetén  ügyelni  kell  arra,  hogy  emacs kompatíbilis záróállományt hozzunk létre. Az emacs-os programok
       érzékenyek arra, ha nem megfelelőek a záróállományok.  Legyen a $HOME pl. /home/jani , ekkor a  következő
       szűrőt érdemes használunk:

              MAILDIR=Mail

              :0:/usr/local/lib/emacs/lock/!home!jani!Mail!mailbox * ^Subject:.*valami
              mailbox

       Emellett  azt  is  meg  lehet tenni, hogy a procmail-lel egy külön levélmappába válogatjuk a leveleket és
       időközönként a movemail programmal másoltatjuk a megfelelő emacs állományba.   A  movemail  minden  egyes
       levélmappán záróállományt helyez el, mint a procmail működése közben.

       Levél bizonyos részeinek környezeti változóba tárolásához a következő módszert lehet használni:

              SUBJECT=`formail -xSubject:` # általános módi FROM=`formail -rt -xTo:` #
              speckó eset

              :0 h # harmadik módszer KEYWORDS=| formail -xKeywords:

       A  konfigurációs  állományban  megadott  ideiglenes  fileoktól a procmailből való kilépés előtt az alábbi
       módon szabadulhatunk meg biztosan:

              TEMPORARY=$HOME/tmp/pmail.$$ TRAP="/bin/rm -f $TEMPORARY"

       A TRAP kulcsszóval a procmail kilépéskódját (exitcode) is meg lehet változtatni.  Pl. ha azt  szeretnénk,
       hogy a kilépéskód 1 legyen a valós kód helyett, akkor a következőre van szükségünk:

              EXITCODE=""
              TRAP="exit 1;"   # fontos a pontosvessző
                               # mivel az exit nem egy önálló program

       Vagy ha nem szükséges TRAP-on keresztül átadni a kilépéskódot, akkor használjuk egyszerűen csak ezt:

              EXITCODE=1

       A következő szűrővel az összes postscript formájú levelet automatikusan kinyomtathatjuk.

              :0 Bb * ^^%! | lpr

       A  következő  szűrő  kicsit intelligensebb, mert csak a nyomtatószerverről érkező postscript állományokat
       próbálja meg kinyomtatni. Az első feltétel csak a megfelelő fejléc esetén érvényesül, míg a második  csak
       akkor, ha a levél törzse a megfelelő kódot tartalmazza.

              :0 b * ^From[ :].*print-server * B ?? ^^%! | lpr

       Egy kicsit másként kivitelezve ugyanaz:

              :0
              * ^From[ :].*print-server
              {
                :0 B b
                * ^^%!
                | lpr
              }

       Vagy így:

              :0 HB b * ^^(.+$)*From[ :].*print-server * ^^(.+$)*^%! | lpr

       Ha  két különböző helyen van felhasználói azonosítód (account), és szeretnéd, ha mindkét helyen ugyanazok
       a leveleket olvashatnád, akkor egy egyszerű levél átirányítás (forward) nem lenne nyerő,  mivel  ezzel  a
       leveleket  a  két  cím  között  végtelenségig  küldözgetnéd  (mail  loop).  Ennek elkerülésére alkalmas a
       $HOME/.procmailrc elejére beszúrni az alábbi szűrőt. A  lényeg,  hogy  mindkét  helyen  az  X-Loop:  -nak
       ugyanazt  az  értéket  kell  megadni,  mert  ekkor csak a szükséges levelek kerülnek továbbításra a másik
       címre.

              :0 c
              * !^X-Loop: neved@emailcimed
              | formail -A "X-Loop: neved@emailcimed" | \
                 $SENDMAIL -oi neved@emailcimed

       A levél tárgyában elhelyezett `retrieve' (küldés) parancsra az alábbi szűrő  egy  kiválasztott  állományt
       fog  automatikusan  visszaküldeni. Itt is ügyelni kell, hogy a szűrő csak a megfelelő esetben válaszoljon
       (levelezőlistáknak, saját magunknak ne válaszoljon!).

              :0 * !^From +YOUR_USERNAME * !^Subject:.*Re: * !^FROM_DAEMON *
              ^Subject:.*retrieve | (formail -r ; cat info_file) | $SENDMAIL -oi -t

       A  következőkben  egy  egyszerű  emaillel  működtethető  fileszervert  mutatunk  be.  Azonban,  ha  ilyen
       kiszolgálót  szeretnénk  működtetni,  akkor  inkább  ajánljuk  a  SmartList  programot  (amely ugyanonnan
       beszerezhető ahonnan a  procmail  csomag).   A  fileszerver  maximum  1  állományt  küld  el  a  kérésnek
       megfelelően, a levél tartalmát nem veszi figyelembe, mivel csak az alábbi felépítésű levéltárgyát fogadja
       el; "Subject: send file amitszeretnenek" (a szóközök fontosak).  (Mg. A magyarosított levelezőprogramok a
       Subject:  mező  helyett  Tárgy:  mezőt  használhatnak,  ez  esetben  a  szűrőt  értelemszerűen módosítani
       szükséges.)  Rejtett állományokat és a megadott könyvtáron kívül

              :0
              * ^Subject: send file [0-9a-z]
              * !^X-Loop: neved@emailcimed
              * !^Subject:.*Re:
              * !^FROM_DAEMON
              * !^Subject: send file .*[/.]\.
              {
                MAILDIR=$HOME/fileserver # lekérhető állományok helye

                :0 fhw                   # válaszlevél létrehozása
                * ^Subject: send file \/[^ ]*
                | formail -rA "X-Loop: neved@emailcimed"

                FILE="$MATCH"            # az elküldendő állomány neve

                :0 ah
                | cat - ./$FILE 2>&1 | $SENDMAIL -oi -t
              }

       A következő szűrővel a megadott MIME kódolású leveleket a sokkal  kezelhetőbb  8-bites  formátumra  lehet
       átalakítani. A szükséges mimencode(1)  program Nathaniel Borenstein metamail csomagjában található.

              :0
              * ^Content-Type: *text/plain
              {
                :0 fbw
                * ^Content-Transfer-Encoding: *quoted-printable
                | mimencode -u -q

                   :0 Afhw
                   | formail -I "Content-Transfer-Encoding: 8bit"

                :0 fbw
                * ^Content-Transfer-Encoding: *base64
                | mimencode -u -b

                   :0 Afhw
                   | formail -I "Content-Transfer-Encoding: 8bit"
              }

       A  következő  példa  a  procmail  egyik  alkalmazhatóságát  mutatja  be.  Ha  mondjuk  egy ".surgos" nevű
       állományban elhelyezzünk egy személynek a címét, akkor a szűrő a tőle érkező leveleket a  $MAILDIR/surgos
       mappába irányítja át. Az ehhez szükséges szűrő így néz ki (fontos megjegyezni hogy a $LINEBUF értékét meg
       kell növelni, ha a $LINEBUF-nál hosszabb az .surgos állomány tartalma):

              URGMATCH=`cat $HOME/.surgos`

              :0: * $^From.*${URGMATCH} surgos

       An  entirely  different  application  for  procmail  would be to conditionally apply filters to a certain
       (outgoing) text or mail.  A typical example would be a filter through which you pipe all  outgoing  mail,
       in  order  to make sure that it will be MIME encoded only if it needs to be.  I.e. in this case you could
       start procmail in the middle of a pipe like:

              cat newtext | procmail ./mimeconvert | mail kriszta@cime

       A mimeconvert konfigurációs állománya pedig valami hasonlót tartalmazhat (a =0x80= és =0xff= kell 8-bites
       karakterekkel helyettesíteni):

              DEFAULT=|     # a kimenetet a hagyományos kimenetre
                            # irányítjuk a levélküldés helyett
              :0 Bfbw
              * [=0x80=-=0xff=]
              | mimencode -q

                :0 Afhw
                | formail -I 'MIME-Version: 1.0' \
                   -I 'Content-Type: text/plain; charset=ISO-8859-1' \
                   -I 'Content-Transfer-Encoding: quoted-printable'

LÁSD MÉG

       procmail(1), procmailrc(5), procmailsc(5), sh(1), csh(1), mail(1), mailx(1), uucp(1), aliases(5),
       sendmail(8), egrep(1), grep(1), biff(1), comsat(8), mimencode(1), lockfile(1), formail(1)

SZERZŐI

       Stephen R. van den Berg
              <srb@cuci.nl>
       Philip A. Guenther
              <guenther@sendmail.com>

FORDÍTÁS

       A kézikönyv magyar fordítását a Vizi Szilárd <vizisz@freemail.hu> készítette.

       Ez a fordítás ingyenes  dokumentáció;  lásd  a  GNU General Public License 3.   Feltételezzük,  hogy  NEM
       FELELŐSSÉG.

       Ha hibát talál a kézikönyv oldal fordításában, küldje el a e-mail cím: TODO..

BuGless                                            2001/08/04                                      PROCMAILEX(5)