Provided by: manpages-pl_20060617-3_all bug

NAZWA

       procmailex - przyklady plikow rc procmaila

SK/LADNIA

       przyk/lady $HOME/.procmailrc

OPIS

       Dla opisu formatu pliku rc zobacz stron procmailrc(5).

       Technika   punktow   waonych   jest   opisana  szczegolowo  na  stronie
       procmailsc(5).

       Ta strona podrcznika  pokazuje  kilka  przykladowych  regul.  Przyklady
       kompletnych plikow rc znajdziesz w sekcji UWAGI podrcznika procmail(1),
       moesz te zajrze do przykladowych plikow rc, ktore s rozprowadzane  wraz
       ze        rodlami       procmaila       jako       cz       dystrybucji
       (procmail*/examples/?procmailrc).

PRZYK/LADY

       Posortuj poczt przychodzc z listy  dyskusyjnej  scuba-dive  do  folderu
       pocztowego scubafile (uywa lokalnego pliku blokujcego scubafile.lock).

              :0:
              * ^TOscuba
              scubafile

       Forwarduj  poczt o kompilatorach od petera do williama (i zachowaj kopi
       lokalnie, w petcompil).

              :0
              * ^From.*peter
              * ^Subject:.*compilers
              {
                 :0 c
                 ! william@somewhere.edu

                 :0
                 petcompil
              }

       Rownowane rozwizanie, ktore robi to samo:

              :0 c
              * ^From.*peter
              * ^Subject:.*compilers
              ! william@somewhere.edu

                 :0 A
                 petcompil

       Rownowane, lecz troch wolniejsze rozwizanie, robice to samo:

              :0 c
              * ^From.*peter
              * ^Subject:.*compilers
              ! william@somewhere.edu

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

       Jeli  jeste  nowy  jeli  chodzi   o   procmaila   i   planujesz   troch
       poeksperymentowa,  to  dobrze jest mie jaki rodzaj sieci bezpieczestwa.
       Wstawienie nastpujcych dwoch regul ponad  wszystkimi  innymi  regulami,
       zapewni, e ostatnie 32 wiadomoci bd chronione.  Aby dzialalo to zgodnie
       z oczekiwaniami, musisz utworzy w katalogu $MAILDIR katalog `backup'.

              :0 c
              backup

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

       Jeli twoj system nie generuje pocztkowych linii `From ',  lub  generuje
       je  w  nieprawidlowy  sposob, moesz to naprawi wywolujc procmail z opcj
       -f-.   Innym  sposobem  naprawienia  tego  problemu   jest   wstawienie
       nastpujcych dwoch regul powyej wszystkich innych regul pliku rc. Bd one
       filtrowa naglowek dowolnego listu przez formail, ktory obetnie wszelkie
       pocztkowe `From ' i automatycznie je odtworzy.

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

       Dodaj naglowki wszystkich wiadomoci, ktore nie przyszly od postmastera,
       do  prywatnej  kolekcji  naglowkow  (dla  statystyk,  lub  debuggowania
       poczty);  uyj  pliku  blokujcego  `headc.lock'.  Aby  zapewni,  e  plik
       blokujcy nie zostanie usunity przed  zakoczeniem  potoku,  trzeba  poda
       opcj  `w';  w  przeciwnym  wypadku  plik  blokujcy  zostalby  usunity w
       momencie przyjcia przez potok poczty.

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

       Lub jeli chcesz uy efektywniejszego gzip-a zamiast compress-a:

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

       Forwarduj wszystkie wiadomoci krotsze  ni  1000  bajtow  na  moj  adres
       domowy (w tej regule nie potrzebny jest plik blokujcy).

              :0
              * < 1000
              ! myname@home

       Podziel  nadchodzcy  z  listy  dyskusyjnej surfing digest na pojedyncze
       wiadomoci i zachowaj je w surfing,  uywajc  lokalnego  pliku  lokujcego
       surfing.lock.

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

       Zachowaj  w  pliku postm wszystko pochodzce od postmastera, lub mailer-
       deamona. Uyj pliku postm.lock jako lokalnego pliku lokujcego.

              :0:
              * ^FROM_MAILER
              postm

       Prosta regula auto-odpowiadajca. Upewnia si, e nie odpowiada  na  poczt
       od  jakiego  demona (np. odbita poczta lub poczta z list dyskusyjnych),
       ani na listy pochodzce od ciebie samego.  Jeli  zabezpieczenia  te  nie
       zostan  podjte,  to moe si zdarzy katastrofa. Aby regula odpowiadala na
       poczt przychodzc, powiniene wstawi j przed wszystkie inne reguly  pliku
       rc.   Radzi  si  jednak wstawia j za wszelkimi regulami, ktore obsluguj
       poczt pochodzc z list dyskusyjnych; zazwyczaj nie jest dobrym  pomyslem
       generowanie  automatycznych odpowiedzi na listy dyskusyjne (tak, regexp
       !^FROM_DAEMON powinien je wylapa,  jednak  jeli  lista  dyskusyjna  nie
       pracuje zgodnie z konwencjami, to moe to by zbyt malo).

              :0 h c
              * !^FROM_DAEMON
              * !^X-Loop: twoj@wlasny.adres.pocztowy
              | (formail -r -A"Precedence: junk" \
                  -A"X-Loop: twoj@wlasny.adres.pocztowy" ; \
                 echo "Poczta odebrana.") | $SENDMAIL -t

       Bardziej  skomplikowana  regula  auto-odpowiadajca,  ktora implementuje
       funkcjonalno znanego programu vacation(1).  Regula ta  jest  oparta  na
       tych  samych  zasadach co poprzednia. Dodatkowo obsluguje baz vacation,
       wylczajc nazwisko nadawcy i wstawiajc je do pliku vacation.cache, o ile
       bylo  ono  nowe  (plik  vacation.cache  jest obslugiwany przez formail,
       ktory bdzie si upewnial, e zawiera tylko  najnowsze  nazwiska;  rozmiar
       pliku  jest  ograniczony  do  8192  bajtow).  Jeli  nazwisko bylo nowe,
       wyslana zostanie auto-odpowied.

              SHELL=/bin/sh    # dla innych powlok trzeba to poprawi

              :0 Whc: vacation.lock
              * !^FROM_DAEMON
              * !^X-Loop: twoj@wlasny.adres.pocztowy
              | formail -rD 8192 vacation.cache

                :0 ehc         # jeli nazwiska nie bylo w cache
                | (formail -rA"Precedence: junk" \
                     -A"X-Loop: twoj@wlasny.adres.pocztowy" ; \
                   echo "Odebralem twoj list,"; \
                   echo "lecz nie wroc do poniedzialku."; \
                   echo "-- "; cat $HOME/.signature \
                  ) | $SENDMAIL -oi -t

       Wszelkie wiadomoci dotyczce TeX-a zachowaj  w  oddzielnych,  unikalnych
       nazwach  pliku,  w katalogu o nazwie texmail (katalog musi istnie); nie
       ma potrzeby uywa w tym wypadku plikow blokujcych, wic ich nie uywamy.

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

       To samo co powyej, lecz teraz zapisujemy listy w  numerowanych  plikach
       (folder pocztowy MH).

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

       Moesz  te  wprowadzi  list  do  kilku  folderow naraz. Nastpujca regula
       dostarczy poczt do dwoch folderow MH i  jednego  folderu  katalogowego.
       Jest   to   w  rzeczywistoci  tylko  jeden  plik  z  dwoma  dodatkowymi
       dowizaniami twardymi (hardlinks).

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

       Zachowaj wszystkie listy o spotkaniach  (meetings)  w  folderze,  ktory
       jest  w  comiesicznie  zmienianym  katalogu . Np. jeli byl Stycze 1994,
       folder mialby nazw 94-01/meeting, a lokalny plik blokujcy nazywalby  si
       `94-01/meeting.lock'.

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

       To   samo  co  wyej,  lecz  jeli  katalog  `94-01'  nie  istnialby,  to
       automatycznie zostanie utworzony:

              MONTHFOLDER=`date +%y-%m`

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

              :0:
              * meeting
              ${MONTHFOLDER}/meeting

       To samo co powyej, lecz z uyciem innych rodkow:

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

              :0:
              * meeting
              ${MONTHFOLDER}/meeting

       Jeli jeste podlczony do kilku list dyskusyjnych, a  ludzie  crosspostuj
       na  niektore z nich, to moesz otrzymywa zduplikowane listy (po jednym z
       kadej  listy).  Nastpujca  regula  eliminuje  powtorzone  listy.   Mowi
       formailowi by trzymal 8KB plik cache, w ktorym bdzie zapisywal Message-
       ID ostatnio odbieranych listow. Poniewa elementy te  musz  by  unikalne
       dla  kadego nowego listu, to s idealnym rozwizaniem na duplikaty. Wstaw
       zwyczajnie nastpujc regul na pocztek swojego pliku rc i gotowe.

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

       Podczas bezporedniego dostarczania do  folderow  emacsa  (np.  folderow
       pocztowych  obslugiwanych  przez  dowolny pocztowy pakiet emacsowy, np.
       RMAIL  czy  VM),  powiniene  uywa  kompatybilnych  z   emacsem   plikow
       blokujcych.  Mailerom  emacsowe  brakuje  pitej klepki pod tym wzgldem,
       denerwuj si bardzo jeli kto dostarcza poczt do folderow, ktore  znajduj
       si  ju  w  ich  buforach wewntrznych. Nastpujca regula zaklada, e $HOME
       odpowiada /home/john.

              MAILDIR=Mail

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

       Inaczej, moesz kaza procmailowi  dostarcza  poczt  do  swoich  wlasnych
       mailboxow,  a  nastpnie  periodycznie  opronia  je  i kopiowa do plikow
       emacsowych  przy  uyciu  movemail.   Movemail  uywa  lokalnych   plikow
       blokujcych mailbox.lock dla danego mailboxa.

       Aby  wycign  okrelone  naglowki  z  listu  i  wstawi  je  do  zmiennych
       rodowiskowych, moesz uy dowolnej z nastpujcych konstrukcji:

              SUBJECT=`formail -xSubject:`    # pole regularne
              FROM=`formail -rt -xTo:`        # przypadek specjalny

              :0 h                            # metoda alternatywna
              KEYWORDS=| formail -xKeywords:

       Jeli uywasz w pliku procmailrc plikow tymczasowych i chcesz upewni  si,
       e  s  one  usuwane  zaraz  przed  zakoczeniem pracy procmaila, moesz uy
       linijek podobnych do tych:

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

       Slowo kluczowe TRAP moe by take uyte do zmiany kodu  wyjcia  procmaila.
       Np.  jeli  chcesz  by procmail zakoczyl prac z kodem wyjcia `1' zamiast
       standardowego kodu, moesz uy:

              EXITCODE=""
              TRAP="exit 1;"   # Koczcy rednik jest istotny
                               # gdy exit nie jest samodzielnym programem

       Albo te jeli kod wyjcia nie musi zalee  od  programow  uruchamianych  z
       TRAP, moesz uy zwyklego:

              EXITCODE=1

       Nastpujca  regula  drukuje  kady nadchodzcy list, ktory wyglda jak plik
       postscriptowy.

              :0 Bb
              * ^^%!
              | lpr

       Nastpujca regula robi to samo, lecz  jest  troch  bardziej  selektywna.
       Drukuje  tylko  te pliki postscriptowe, ktore pochodz od print-serwera.
       Pierwszy warunek dopasowuje tylko jeli zostanie znaleziony w  naglowku.
       Nastpny dopasowuje tylko na pocztku ciala wiadomoci.

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

       To samo co wyej, lecz z uyciem innych rodkow:

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

       Podobnie:

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

       Zalomy,  e  masz  dwa konta i e uywasz ich obu regularnie, lecz s one w
       ronych miejscach (np. moesz czyta poczt z tylko jednego z dwoch  kont).
       Jeli chcialby forwardowa poczt przybywajc na konto jeden do konta dwa i
       odwrotnie. Pierwsz rzecz, ktora przychodzi na myl jest uycie na  obydwu
       hostach  plikow  .forward;  lecz  to  nie  zadziala  gdy  utworzysz ptl
       pocztow.  Moesz  unikn  ptli  przez  wstawienie  nastpujcej  reguly  na
       pocztku  wszystkich  innych  regul  w  plikach $HOME/.procmailrc obydwu
       hostow. Jeli upewnisz si, e dodale  te  samo  pole  X-Loop:  na  obydwu
       hostach, to poczta moe ju by spokojnie forwardowana na drugie konto.

              :0 c
              * !^X-Loop: twojlogin@twoj.adres.pocztowy
              | formail -A "X-Loop: twojlogin@twoj.adres.pocztowy" | \
                 $SENDMAIL -oi twojlogin@drugie.konto

       Jeli kto przesyla ci poczt ze slowem `retrieve' w temacie, to nastpujca
       regula automatycznie odele z powrotem zawarto pliku info_file.  Jak  we
       wszystkich regulach, uwaamy na ptle pocztowe.

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

       A  teraz przyklad bardzo prostego serwera plikow dostpnego przez poczt.
       Dla bardziej wymagajcych aplikacji, sugeruj rzucenie okiem na SmartList
       (dostpne  w  tym  samym  miejscu co dystrybucja procmaila).  Ten serwer
       plikow  odsyla  najwyej  jeden  plik  na  dane  danie,  ignoruje  cialo
       nadchodzcych  listow, a linia tematu Subject: musi wyglda jak "Subject:
       send file plik_ktorego_chcesz" (spacje s istotne), nie  zwraca  plikow,
       ktore  maj  nazwy  rozpoczynajce  si  od  kropki i nie umoliwia odbioru
       plikow spoza drzewa katalogow serwera plikow.

              :0
              * ^Subject: send file [0-9a-z]
              * !^X-Loop: twojlogin@twoj.adres.pocztowy
              * !^Subject:.*Re:
              * !^FROM_DAEMON
              * !^Subject: send file .*[/.]\.
              {
                MAILDIR=$HOME/fileserver # zmie katalog do katalogu serwera plikow

                :0 fhw                   # odwro naglowek listu i wycignij nazw
                * ^Subject: send file \/[^ ]*
                | formail -rA "X-Loop: twojlogin@twoj.adres.pocztowy"

                FILE="$MATCH"            # dany plik

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

       Nastpujcy przyklad  zamienia  wstpnie  wszystkie  przychodzce  listy  w
       czystym   tekcie,  kodowane  w  formatach  MIME  na  ladniejszy  format
       8-bitowy, ktory moe by uywany i  wywietlany  w  prostszy  sposob  przez
       wikszo  programow.   Program  mimencode(1)  jest  czci pakietu metamail
       Nathaniela Borensteina.

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

       Nastpujcy przyklad jest raczej egzotyczny, lecz sluy  tylko  ilustracji
       wlaciwoci.  Zalomy,  e  masz  w  swoim  katalogu  domowym plik o nazwie
       ".pilne", a osoba wymieniona w tym pliku jest wysylajcym   nadchodzcego
       listu  i  chcialby, by ten list byl zachowany w katalogu $MAILDIR.pilne
       zamiast w dowolnym z  normalnych  folderow  pocztowych.  Moesz  wowczas
       zrobi tak (uwaaj, dlugo $HOME/.pilne powinna by nisza ni $LINEBUF, jeli
       to konieczne, zwiksz warto LINEBUF):

              URGMATCH=`cat $HOME/.pilne`

              :0 B:
              * $^From.*${URGMATCH}
              pilne

       Calkowicie innym zastosowaniem  procmaila  byloby  warunkowe  dolczanie
       filtrow   do  niektorych  (wychodzcych)  tekstow  lub  listow.  Typowym
       przykladem byloby filtrowanie, w ktorym uywasz potokow  dla  wszystkich
       wychodzcych  list  aby  upewni si czy bdziemy kodowa w MIME tylko wtedy
       gdy to konieczne.  Np. w tym wypadku moesz uruchomi  procmaila  wewntrz
       potoku rodzaju:

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

       Plik  rc  mimeconvert  powinien  zawiera  co w rodzaju (=0x80= i =0xff=
       powinny by zamienione prawdziwymi 8-bitowymi znakami):

              DEFAULT=|     # potok na stdout zamiast
                            # dostarczania poczt jak zwykle
              :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'

ZOBACZ TAKE

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

AUTOR

       Stephen R. van den Berg z RWTH-Aachen, Germany
              berg@pool.informatik.rwth-aachen.de

INFORMACJE O T/LUMACZENIU

       Powysze tlumaczenie pochodzi z nieistniejcego ju  Projektu  Tlumaczenia
       Manuali  i  moe nie by aktualne. W razie zauwaenia ronic midzy powyszym
       opisem a rzeczywistym zachowaniem  opisywanego  programu  lub  funkcji,
       prosimy o zapoznanie si z oryginaln (angielsk) wersj strony podrcznika.