Provided by: manpages-hu_4.15.0-9_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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩.  Vagy  újabb   verzióját   a   szerzői   jogi
       feltételekkel kapcsolatban.  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.  ⟨⟩.