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

NUME

       procmailex - exemple de fișier de configurare al «procmail»

SINOPSIS

       exemple de $HOME/.procmailrc

DESCRIERE

       Pentru o descriere a formatului fișierului de configurare, consultați procmailrc(5).

       Tehnica de punctare ponderată este descrisă în detaliu în pagina de manual procmailsc(5).

       Această  pagină  de  manual  prezintă  câteva exemple de rețete. Pentru exemple de fișiere de configurare
       complete, puteți consulta secțiunea NOTE din procmail(1) sau fișierele  de  configurare  de  exemplu  din
       „/usr/share/doc/procmail/examples”.

EXEMPLE

       Sortează  toate  mesajele  primite  de  la  lista  de  discuții scuba-dive în dosarul de e-mail scubafile
       (utilizează fișierul de blocare locală scubafile.lock).

              :0: * ^TOscuba scubafile

       Transmite toate mesajele de la Peter despre compilatoare lui William (și păstrează  o  copie  a  acestora
       aici în petcompil).

              :0
              * ^From.*peter
              * ^Subject:.*compilatoare
              {
                 :0 c
                 ! william@adresă-oarecare.edu

                 :0
                 petcompil
              }

       O soluție echivalentă care realizează același lucru:

              :0 c * ^From.*peter * ^Subject:.*compilatoare ! william@adresă-oarecare.edu

                 :0 A
                 petcompil

       O soluție echivalentă, dar puțin mai lentă, care realizează același lucru:

              :0 c * ^From.*peter * ^Subject:.*compilatoare ! william@adresă-oarecare.edu

              :0 * ^From.*peter * ^Subject:.*compilatoare petcompil

       Dacă sunteți destul de nou la procmail și intenționați să experimentați un pic, de multe ori este util să
       aveți un fel de rețea de siguranță. Inserarea următoarelor două rețete deasupra tuturor celorlalte rețete
       va  asigura  păstrarea ultimelor 32 de mesaje din toate mesajele primite. Pentru a funcționa așa cum este
       prevăzut, trebuie să creați un director numit `backup' în  $MAILDIR  înainte  de  a  insera  aceste  două
       rețete.

              :0 c backup

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

       Dacă  sistemul  dvs.  nu  generează  sau  generează linii `From ' de început incorecte la fiecare e-mail,
       puteți rezolva acest lucru apelând procmail cu opțiunea -f-.  Pentru  a  rezolva  aceeași  problemă  prin
       mijloace  diferite, ați fi putut introduce următoarele două rețete deasupra tuturor celorlalte rețete din
       rcfile. Acestea vor filtra antetul oricărui mesaj prin formail, care va  elimina  orice  `From  '  de  la
       început și îl va regenera automat ulterior.

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

       Adaugă  antetele  tuturor  mesajelor  care  nu  provin  de la postmaster la colecția ta privată de antete
       (pentru statistici sau depanarea corespondenței); și folosește fișierul de blocare `headc.lock'. Pentru a
       vă asigura că fișierul de blocare nu  este  eliminat  până  când  conducta  nu  se  termină,  trebuie  să
       specificați  opțiunea  `w';  în caz contrar, fișierul de blocare ar fi eliminat imediat ce conducta ar fi
       acceptat mesajul.

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

       Sau, dacă ați folosi mai degrabă gzip în loc de compress:

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

       Transmiteți toate mesajele mai scurte de 1000 de octeți la adresa mea personală (home); această rețetă nu
       necesită fișier de blocare.

              :0 * < 1000 ! numelemeu@home

       Separă pachetele primite de la lista de discuții surfing în mesajele lor individuale și le  stochează  în
       surfing, folosind surfing.lock ca fișier de blocare locală.

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

       Stochează  tot  ce  vine  de  la postmaster sau de la mailer-daemon (cum ar fi corespondența respinsă) în
       fișierul postm, folosind postm.lock ca fișier de blocare locală.

              :0: * ^FROM_MAILER postm

       O rețetă simplă de răspuns automat. Aceasta se asigură că nu se va  răspunde  automat  nici  la  mesajele
       primite  de  la  vreun demon (cum ar fi mesajele de tip „bouncing” sau mesajele din listele de difuzare),
       nici la răspunsurile automate primite de la dvs. În cazul în care nu se ia această măsură  de  precauție,
       ar  putea  rezulta  un dezastru (e-mail „ineling”). Pentru ca această rețetă să răspundă automat la toate
       mesajele primite, trebuie, desigur, să o introduceți înaintea tuturor celorlalte rețete  din  rcfile.  Cu
       toate  acestea, este recomandabil să o introduceți după orice rețetă care procesează mesajele din listele
       de corespondență abonate; în general, nu este o idee bună să generați răspunsuri automate la  listele  de
       corespondență  (da,  expresia-regulată  !^FROM_DAEMON  ar  trebui  să  le  prindă deja, dar dacă lista de
       corespondență nu respectă convențiile acceptate, acest lucru ar putea să nu fie suficient).

              :0 h c
              * !^FROM_DAEMON
              * !^X-Loop: propria_ta@adresă.de.poștă
              | (formail -r -I"Precedence: junk" \
                  -A"X-Loop: propria_ta@adresă.de.poștă" ; \
                 echo "Corespondență primită.") | $SENDMAIL -t

       O rețetă mai complicată de răspuns automat care implementează echivalentul funcțional al binecunoscutului
       program vacation(1). Această rețetă se bazează pe aceleași principii ca și ultima (prevenirea  „inelării”
       corespondenței).  Cu toate acestea, în plus, ea menține o bază de date de vacanță prin extragerea numelui
       expeditorului  și  inserarea  acestuia  în  fișierul  vacation.cache  dacă  numele  era   nou   (fișierul
       vacation.cache  este  menținut  de  formail,  care  se  va asigura că acesta conține întotdeauna cele mai
       recente nume, dimensiunea fișierului fiind limitată la un maxim de aproximativ 8192 octeți). Dacă  numele
       a fost nou, se va trimite un răspuns automat.

       După  cum puteți vedea, următoarea rețetă are comentarii între condiții. Acest lucru este permis. Totuși,
       nu puneți comentarii pe aceeași linie cu o condiție.

              SHELL=/bin/sh # pentru alte shell-uri, acest lucru ar putea necesita
              ajustări

              :0 Whc: vacation.lock
               # Efectuează o verificare rapidă pentru a vedea dacă corespondența ne-a fost adresată
              * $^To:.*\<$\LOGNAME\>
               # Nu răspunde demonilor și listelor de corespondență
              * !^FROM_DAEMON
               # Buclele poștale sunt malefice
              * !^X-Loop: propria_ta@adresă.de.poștă
              | formail -rD 8192 vacation.cache

                :0 ehc         # dacă numele nu era în cache
                | (formail -rI"Precedence: junk" \
                     -A"X-Loop: propria_ta@adresă.de.poștă" ; \
                   echo "Am primit mesajul dvs,"; \
                   echo "dar nu mă voi întoarce până luni."; \
                   echo "-- "; cat $HOME/.signature \
                  ) | $SENDMAIL -oi -t

       Stochează toate mesajele referitoare la TeX în nume de fișiere separate, unice,  într-un  director  numit
       texmail  (acest  director  trebuie să existe); nu este nevoie să se utilizeze fișiere de blocare în acest
       caz, deci nu o vom face.

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

       La fel ca mai sus, doar că acum stocăm mesajele în fișiere numerotate (dosarul de poștă electronică MH).

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

       Sau ați putea depune corespondența în mai multe dosare de directoare în același timp.  Următoarea  rețetă
       va  trimite  e-mailul  în  două  dosare  MH și într-un dosar de directoare. De fapt, este vorba despre un
       singur fișier cu două legături dure suplimentare.

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

       Stochează toate mesajele despre reuniuni într-un dosar care se află într-un director care se  schimbă  în
       fiecare  lună.  De exemplu, dacă ar fi ianuarie 1994, dosarul ar avea numele „94-01/reuniuni” și fișierul
       de blocare locală ar fi „94-01/reuniuni.lock”.

              :0: * reuniune `date +%y-%m`/reuniuni

       La fel ca mai sus, dar, dacă directorul „94-01” nu ar fi existat, acesta este creat automat:

              DOSARLUNAR=`date +%y-%m`

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

              :0: * reuniune ${DOSARLUNAR}/reuniuni

       La fel ca mai sus, dar acum prin metode ușor diferite:

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

              :0: * reuniune ${DOSARLUNAR}/reuniuni

       Dacă sunteți abonat la  mai  multe  liste  de  corespondență  și  există  persoane  care  publică  mesaje
       încrucișate  pe  unele  dintre  ele, de obicei primiți mai multe mesaje duplicat (câte unul de la fiecare
       listă). Următoarea rețetă simplă elimină mailurile duplicat. Aceasta îi spune lui formail să păstreze  un
       fișier  cache  de 8KB în care va stoca ID-urile mesajelor celor mai recente mesaje pe care le-ați primit.
       Deoarece ID-urile mesajelor sunt garantate a fi unice pentru  fiecare  mesaj  nou,  acestea  sunt  ideale
       pentru  a elimina mesajele duplicat. Pur și simplu puneți următoarea rețetă în partea de sus a fișierului
       dvs. rc și niciun mesaj duplicat nu va trece de ea.

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

       Atenție dacă aveți probleme de  livrare  în  rețetele  de  mai  jos  și  procmail  încearcă  să  solicite
       corespondența, atunci la următoarea execuție a cozii, această corespondență va fi considerată un duplicat
       și  va  fi  aruncată.  Pentru  cei care nu sunt atât de încrezători în propriile capacități de scriere de
       scripturi, puteți utiliza în schimb următoarea rețetă. Aceasta pune dublurile într-un  dosar  separat  în
       loc să le arunce. Desigur, depinde de dvs. să goliți periodic dosarul.

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

              :0 a: duplicates

       Procmail  poate  livra  direct  către  dosarele  MH,  dar, nu actualizează secvențele nevăzute pe care le
       gestionează MH real. Dacă doriți ca procmail să le actualizeze și pe acestea, utilizați o rețetă  ca  cea
       de  mai  jos, care va arhiva tot ceea ce conține cuvântul spam în corpul mesajului într-un dosar MH numit
       spamfold. Observați fișierul de blocare local, care este necesar  deoarece  programele  MH  nu  blochează
       fișierul  de  secvențe.  Prin  urmare,  invocările asincrone ale programelor MH care modifică fișierul de
       secvențe îl pot corupe sau pot pierde în mod silențios modificările. Din păcate, fișierul de  blocare  nu
       rezolvă  complet  problema, deoarece rcvstore ar putea fi invocat în timp ce `show' sau `mark' sau un alt
       program MH rulează. Se așteaptă ca această problemă să fie rezolvată într-o versiune viitoare a  MH,  dar
       până  atunci, va trebui să puneți în balanță riscul pierderii sau al coruperii secvențelor cu beneficiile
       secvenței nevăzute.

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

       Atunci când livrați direct dosare emacs (de exemplu, dosare de  e-mail  gestionate  de  orice  pachet  de
       e-mail  emacs, de exemplu, RMAIL sau VM), ar trebui să utilizați fișiere de blocare compatibile cu emacs.
       Agenții de poștă electronică emacs sunt un pic „creierul deteriorat” în această privință, ei devin foarte
       supărați dacă cineva livrează la dosarele de poștă electronică pe care  le  au  deja  în  tampoanele  lor
       interne. Următoarea rețetă presupune că $HOME este egal cu /home/john.

              MAILDIR=Mail

              :0:/usr/local/lib/emacs/lock/!home!john!Mail!mailbox *
              ^Subject:.*orice-lucru mailbox

       Alternativ,  puteți face ca procmail să livreze în propriul set de căsuțe poștale, pe care apoi le goliți
       periodic și le copiați în fișierele dvs. emacs  utilizând  movemail.  «movemail»  utilizează  fișiere  de
       blocare  locale  mailbox.lock  pentru  fiecare  căsuță  poștală.  Acesta este, de fapt, modul preferat de
       operare împreună cu procmail.

       Pentru a extrage anumite antete dintr-un mesaj și a le pune în variabile de mediu, puteți utiliza oricare
       dintre următoarele construcții:

              SUBJECT=`formail -xSubject:` # câmp normal FROM=`formail -rt -xTo:` # caz
              special

              :0 h # metodă alternativă KEYWORDS=| formail -xKeywords:

       Dacă utilizați fișiere temporare într-un fișier procmailrc și doriți să  vă  asigurați  că  acestea  sunt
       eliminate chiar înainte ca procmail să iasă, ați putea utiliza ceva de felul:

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

       Cuvântul  cheie  TRAP poate fi utilizat și pentru a schimba codul de ieșire al procmail. De exemplu, dacă
       doriți ca procmail să returneze un cod de ieșire „1” în loc de codurile sale de ieșire obișnuite,  puteți
       utiliza:

              EXITCODE=""
              TRAP="exit 1;"   # Punctul și virgula din urmă este important
                               # deoarece exit nu este un program de sine stătător

       Sau, dacă codul de ieșire nu trebuie să depindă de programele rulate din TRAP, puteți utiliza un simplu:

              EXITCODE=1

       Următoarea rețetă imprimă fiecare mesaj primit care arată ca un fișier postscript.

              :0 Bb * ^^%! | lpr

       Următoarea  rețetă face același lucru, dar este un pic mai selectivă. Aceasta imprimă fișierul postscript
       numai dacă acesta provine de la serverul de imprimare. Prima  condiție  se  potrivește  numai  dacă  este
       găsită în antet. A doua condiție se potrivește numai la începutul corpului.

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

       La fel ca mai sus, dar acum prin metode ușor diferite:

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

       De asemenea:

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

       Să presupunem că aveți două conturi, le folosiți pe amândouă în mod regulat, dar se află în locuri foarte
       diferite  (de  exemplu,  puteți citi doar corespondența care a ajuns la unul dintre conturi). Ați dori să
       redirecționați corespondența sosită la contul unu către contul doi, și invers. Primul lucru care vă  vine
       în  minte  este  utilizarea  fișierelor  .forward la ambele situri; desigur, acest lucru nu va funcționa,
       deoarece veți crea o buclă de poștă electronică. Această buclă poate fi evitată prin inserarea următoarei
       rețete în fața tuturor celorlalte rețete din fișierele $HOME/.procmailrc de pe  ambele  situri.  Dacă  vă
       asigurați că adăugați același câmp X-Loop: pe ambele situri, e-mailul poate fi redirecționat în siguranță
       către celălalt cont din oricare dintre acestea.

              :0 c
              * !^X-Loop: numeletău@adresa.ta.principală.de.poștă
              | formail -A "X-Loop: numeletău@adresa.ta.principală.de.poștă" | \
                 $SENDMAIL -oi numeletăue@altă.adresă.a.ta.de.poștă

       Dacă  cineva vă trimite un mesaj cu cuvântul „recuperare” în câmpul „subject”, următorul mesaj va trimite
       automat înapoi expeditorului conținutul fișierului info_file. Ca  în  toate  rețetele  în  care  trimitem
       mesaje, trebuie să fim atenți la buclele de poștă electronică.

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

       Acum  urmează  un  exemplu  pentru  un  server de fișiere foarte simplu accesibil prin poștă electronică.
       Pentru aplicații mai pretențioase, vă sugerez să aruncați o privire la SmartList (disponibil din  același
       loc  ca  și  distribuția procmail). Conform listei, acest server de fișiere trimite cel mult un fișier pe
       cerere, ignoră corpul mesajelor primite, linia Subject: trebuie să arate ca  „Subject:  trimite  fișierul
       fișierul_ce_doriți” (spațiile goale sunt semnificative), nu returnează fișiere care au nume care încep cu
       un  punct  și  nici  nu  permite  recuperarea fișierelor care se află în afara arborelui de directoare al
       serverului de fișiere (dacă decideți să modificați acest exemplu, asigurați-vă că nu slăbiți din greșeală
       această ultimă restricție).

              :0
              * ^Subject: send file [0-9a-z]
              * !^X-Loop: numele-tău@adresa.ta.principală.de email
              * !^Subject:.*Re:
              * !^FROM_DAEMON
              * !^Subject: trimite fișierul .*[/.]\.
              {
                MAILDIR=$HOME/server-fișierer # schimbă la directorul serverului de fișiere

                :0 fhw                   # inversează antetul e-mailului și extrage numele
                * ^Subject: trimite fișierul \/[^ ]*
                | formail -rA "X-Loop: numele-tău@adresa.ta.principală.de email"

                FILE="$MATCH"            # numele fișierului solicitat

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

       Următorul exemplu preconvertește toate mesajele în text  simplu  care  sosesc  în  anumite  formate  MIME
       codificate  într-un format mai compact pe 8 biți care poate fi utilizat și afișat mai ușor de majoritatea
       programelor. Programul mimencode(1) face parte din pachetul metamail al lui Nathaniel Borenstein.

              :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"
              }

       Următorul este destul de exotic, dar servește doar pentru a demonstra o caracteristică. Să presupunem  că
       aveți  un  fișier  în  directorul HOME numit „.urgent”, iar (singura) persoană numită în acel fișier este
       expeditorul unui mesaj primit, ați dori ca acel mesaj să fie stocat în $MAILDIR/urgent în loc să  fie  în
       oricare  dintre  dosarele  de  e-mail  normale  în  care ar fi fost sortat. Atunci iată ce ați putea face
       (atenție, lungimea fișierului $HOME/.urgent ar trebui să fie mult sub $LINEBUF, măriți LINEBUF dacă  este
       necesar):

              URGMATCH=`cat $HOME/.urgent`

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

       O  aplicație  complet diferită pentru procmail ar fi aplicarea condițională a filtrelor la un anumit text
       sau mesaj (de ieșire). Un exemplu tipic ar fi un filtru prin  care  treceți  toate  mesajele  de  ieșire,
       pentru  a  vă asigura că acestea vor fi codificate MIME numai dacă este necesar. Adică, în acest caz, ați
       putea porni procmail în mijlocul unei conducte cum ar fi:

              cat newtext | procmail ./mimeconvert | mail chris@where.ever

       Fișierul rc mimeconvert ar putea conține ceva de genul (=0x80= și =0xff= ar trebui înlocuite cu caractere
       reale pe 8 biți):

              DEFAULT=|     # conductă la stdout în loc să livreze
                            # corespondența ca de obicei
              :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'

CONSULTAȚI ȘI

       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)

AUTORI

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

TRADUCERE

       Traducerea   în   limba   română   a   acestui   manual   a   fost   făcută   de   Remus-Gabriel    Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3 sau o
       versiune  ulterioară  cu  privire  la  condiții  privind  drepturile  de  autor.   NU  se   asumă   NICIO
       RESPONSABILITATE.

       Dacă  găsiți  erori  în  traducerea  acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
       ro@lists.sourceforge.net.

BuGless                                            2001/08/04                                      PROCMAILEX(5)