procmail

Autres langues

Langue: pl

Autres versions - même langue

Version: \*(Dt (openSuse - 09/10/07)

Section: 1 (Commandes utilisateur)

NAZWA

procmail - autonomiczny procesor poczty

SK£ADNIA

procmail [-ptoY] [-f fromwhom] [parameter=value | rcfile] ...
procmail [-toY] [-f fromwhom] [-a argument] -d recipient ...
procmail [-ptY] -m [parameter=value] ... rcfile
      [argument] ...
procmail -v

OPIS

Szybk± orientacjê w temacie mo¿na uzyskaæ czytaj±c umieszczone na koñcu UWAGI.

Procmail powinien byæ wywo³ywany automatycznie, korzystaj±c z mechanizmu .forward w momencie przybycia listu. Alternatywnie, gdy jest zainstalowany przez administratora systemu, mo¿e byæ wywo³ywany bezpo¶rednio przez program pocztowy (mailer). Po wywo³aniu, najpierw ustawia na warto¶ci domy¶lne pewne zmienne ¶rodowiskowe, odczytuje wiadomo¶æ pocztow± ze stdin (do EOF), oddziela jej tre¶æ od nag³ówka, a nastêpnie, je¶li nie podano argumentów wiersza poleceñ, zaczyna szukaæ pliku o nazwie $HOME/.procmailrc. Stosownie do regu³ przetwarzania zawartych w tym pliku ¶wie¿o otrzymana wiadomo¶æ pocztowa zostaje umieszczona we w³a¶ciwym katalogu. Je¶li nie istnieje plik rc, lub jego przetwarzanie dojdzie do koñca, procmail zapisze wiadomo¶æ w domy¶lnej skrzynce pocztowej (mailbox) systemu.

Je¶li nie podano ani pliku rc, ani opcji -p w wierszu poleceñ, to program przed odczytaniem $HOME/.procmailrc zinterpretuje polecenia zawarte w /etc/procmailrc (o ile istniej±). Podczas tworzenia /etc/procmailrc trzeba uwa¿aæ, poniewa¿ je¶li warunki na to pozwol±, zostanie on uruchomiony z prawami roota (w przeciwieñstwie do pliku $HOME/.procmailrc).

Je¶li procmail zostanie uruchomiony z uprawnieniami roota lub jako suid root, to mo¿e pracowaæ jako agent dostarczania poczty (mail delivery agent), z poszerzonymi mo¿liwo¶ciami, wstecznie zgodny.

Mo¿na go te¿ wykorzystywaæ jako uniwersalny filtr pocztowy, tzn. poczyniono pewne kroki, by procmail móg³ byæ wywo³ywany w specjalnej regule sendmaila.

Format pliku rc jest opisany szczegó³owo na stronie podrêcznika procmailrc(5).

Technika punktowania wa¿onego jest szczegó³owo opisana na stronie procmailsc(5).

Przyk³ady plików rc mo¿na obejrzeæ na stronie procmailex(5).

Sygna³y

TERMINATE
Koñczy przedwcze¶nie i ponownie kolejkuje wiadomo¶æ.
HANGUP
Koñczy przedwcze¶nie i odbija wiadomo¶æ do nadawcy.
INTERRUPT
Koñczy przedwcze¶nie i odbija wiadomo¶æ do nadawcy.
QUIT
Koñczy przedwcze¶nie i milcz±co traci wiadomo¶æ.
ALARM
Wymusza przekroczenie limitu czasu (zobacz TIMEOUT).
USR1
Równowa¿nik VERBOSE=off.
USR2
Równowa¿nik VERBOSE=on.

OPCJE

-v
Procmail wypisuje swój numer wersji, wy¶wietla wkompilowan± konfiguracjê i koñczy dzia³anie.
-p
Zachowuje stare ¶rodowisko. Normalnie procmail czy¶ci ¶rodowisko podczas startu, poza warto¶ci± TZ. Jednak w ka¿dym wypadku: wszelkie warto¶ci domy¶lne przes³oni± uprzednio istniej±ce zmienne ¶rodowiskowe, tzn. procmail nie bêdzie zwraca³ uwagi na ¿adne predefiniowane zmienne ¶rodowiskowe, lecz szczê¶liwie nadpisze je swoimi warto¶ciami domy¶lnymi. Listê zmiennych ¶rodowiskowych procmaila mo¿na znale¼æ na stronie podrêcznika procmailrc(5). Je¶li podano zarówno -p jak i -m, lista preustawianych zmiennych ogranicza siê do zaledwie: LOGNAME, HOME, SHELL, ORGMAIL i MAILDIR.
-t
Powoduje, ¿e procmail zawodzi ³agodnie, np. je¶li nie mo¿e dostarczyæ przesy³ki do ¿adnego podanych mu celów, wiadomo¶æ nie zostanie odbita, lecz powróci do kolejki poczty. W przysz³o¶ci zostanie dokonana ponowna próba dostarczenia.
-f fromwhom
Powoduje, ¿e procmail ponownie generuje pocz±tkow± liniê `From ' z warto¶ci± fromwhom jako wysy³aj±cym (zamiast -f mo¿na u¿yæ alternatywnego i przedawnionego -r). Je¶li fromwhom sk³ada siê z pojedynczego `-', to program tylko od¶wie¿y znacznik czasu w linii `From ' (o ile jest obecny, je¶li nie, to utworzy nowy).
-o
Zamiast pozwoliæ komukolwiek na generowanie linii `From ', po prostu przes³oni fa³szywki.
-Y
Zak³ada, ¿e do mamy czynienia z tradycyjnym Berkeley'owskim formatem mailboxa, ignoruje wszelkie pola Content-Length:.
-a argument
Ustawia $1 na warto¶æ argumentu. Mo¿e byæ u¿ywane do przekazywania metainformacji do procmaila. Zazwyczaj wykonuje siê to przez przesy³anie informacji $@x z regu³y sendmaila.
-d recipient ...
W³±cza jawny tryb dostarczania. Dostarczenie nast±pi do lokalnego odbiorcy, oznaczonego jako recipient. Jest to oczywi¶cie mo¿liwe tylko je¶li procmail ma prawa roota (lub efektywne prawa euid i egid odbiorcy). Procmail bêdzie siê suidowa³ do podanych odbiorców i dostarcza³ pocztê tak, jakby zosta³ wywo³any przez danego odbiorcê bez argumentów (tzn. je¶li nie znaleziono pliku rc, dostarczanie zachodzi jak w zwyczajnej poczcie). Opcja ta jest niezgodna z -p.
-m
Zmienia procmail w filtr pocztowy ogólnego przeznaczenia. W tym trybie trzeba przekazaæ jeden plik rc w wierszu poleceñ. Po pliku rc procmail przyjmie nieograniczon± liczbê argumentów. Je¶li plik rc jest nazw± ze ¶cie¿k± absolutn±, zaczynaj±c± siê od /etc/procmailrcs/, bez odwo³añ wstecznych (np. katalog rodzicielski nie mo¿e byæ wymieniony), to procmail spróbuje, je¿eli nie napotka naruszeñ bezpieczeñstwa, zidentyfikowaæ w³a¶ciciela tego pliku (lub dowi±zania symbolicznego). Zaawansowane zastosowania tej opcji mo¿na znale¼æ w sekcji PRZYK£ADY poni¿ej.

ARGUMENTY

Wszelkie argumenty zawieraj±ce '=' s± uwa¿ane za przypisania warto¶ci zmiennym ¶rodowiskowym. Wszystkie one zostan± obliczone po przypisaniu warto¶ci domy¶lnych, a przed otwarciem pierwszego pliku rc.

Wszelkie inne argumenty s± uwa¿ane za ¶cie¿ki pliku rc: albo absolutne, albo, je¶li zaczynaj± siê od `./', wzglêdne, w odniesieniu do bie¿±cego katalogu. Wszelkie inne ¶cie¿ki wzglêdne s± uwa¿ane za podane wzglêdem katalogu $HOME, chyba ¿e u¿yto opcji -m. Wówczas wszystkie ¶cie¿ki wzglêdne odnosz± siê do bie¿±cego katalogu. Procmail zacznie od pierwszej ¶cie¿ki, któr± znajdzie w wierszu poleceñ. Nastêpne zostan± przetworzone tylko wtedy, je¶li poprzednie nie maj± odpowiadaj±cego wpisu HOST-directive, lub w wypadku gdy nie istniej±.

Je¶li nie poda siê plików rc, procmail zagl±da do $HOME/.procmailrc. Je¶li nawet tego nie da³o siê znale¼æ, przetwarzanie bêdzie kontynuowane zgodnie z domy¶lnymi ustawieniami zmiennych ¶rodowiskowych i zmiennych podanych w wierszu poleceñ.

PRZYK£ADY

Przyk³ady plików rc mo¿na obejrzeæ na stronie procmailex(5). Ma³y fragment pliku rc mo¿na znale¼æ w sekcji UWAGI, poni¿ej.

Pomiñ resztê tej sekcji, chyba ¿e jeste¶ administratorem, który ma jakie¶ pojêcie o sk³adni sendmail.cf.

Opcja -m jest zazwyczaj u¿ywana gdy procmail jest wywo³ywany przez regu³ê pliku sendmail.cf. Aby móc tego dokonaæ, dobrze jest utworzyæ dodatkowy wpis o programie dostarczaj±cym pocztê `procmail' w pliku sendmail.cf (poza ju¿ obecnym mailerem `local', który uruchamia procmaila). Aby utworzyæ taki wpis, sugerujê co¶ takiego:

Mprocmail, P=/usr/bin/procmail, F=mSDFMhun, S=11, R=21,
        A=procmail -m $h $f $u

Umo¿liwi to wykorzystanie do filtrowania poczty poprzez mailer procmail regu³ podobnych do poni¿szej (prawdopodobnie w zestawie regu³ (ruleset) 0). Zwróæ uwagê na poczatkow± tabulacjê oznaczaj±c± kontynuacjê regu³y i tabulacjê s³u¿±c± do oddzielenia komentarzy:

R$*<@some.where>$*
        $#procmail $@/etc/procmailrcs/some.rc $:$1@some.where.procmail$2 R$*<@$*.procmail>$*
        $1<@$2>$3       Ju¿ przefiltrowane, odwzoruj z powrotem

A plik etc/procmailrcs/some.rc mo¿e byæ taki:

:0 # spu¶æ do muszli pocztê ¶mieciow± ;) * ^Subject:.*junk /dev/null
:0 # przeka¿ resztê przesy³ek dalej ! -oi -f "$@"

Uwa¿aj gdy z wnêtrza pliku /etc/procmailrcs/some.rc wysy³asz listy: je¶li wy¶lesz je na adresy, które odpowiadaj± znowu pierwszej regule, mo¿esz utworzyæ nieskoñczon± pêtlê.

PLIKI

/etc/passwd
do ustawiania domy¶lnych warto¶ci zmiennych LOGNAME, HOME i SHELL odbiorcy
/var/spool/mail/$LOGNAME
systemowa skrzynka pocztowa; zarówno skrzynka systemowa jak i katalog, w którym siê ona znajduje, bêd± tworzone za ka¿dym razem gdy procmail startuje a które¶ z nich nie istnieje
/etc/procmailrc
pocz±tkowy ogólnosystemowy plik rc
/etc/procmailrcs/
¶cie¿ka specjalnych uprawnieñ do plików rc
$HOME/.procmailrc
domy¶lny plik rc
/var/spool/mail/$LOGNAME.lock
plik blokuj±cy systemowej skrzynki pocztowej (nie jest automatycznie u¿ywany przez procmail, chyba ¿e $DEFAULT jest równe /var/spool/mail/$LOGNAME, a procmail dostarcza co¶ do $DEFAULT)
/usr/sbin/sendmail
domy¶lny program ekspedycji poczty (forwarder)
_????`hostname`
tymczasowe `unikalne' pliki zerowej d³ugo¶ci tworzone przez procmail

ZOBACZ TAK¯E

procmailrc(5), procmailsc(5), procmailex(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), lockfile(1), formail(1), cron(1)

DIAGNOSTYKA

Autoforwarding mailbox found
(Znaleziono skrzynkê auto-przekazuj±c±) Skrzynka systemowa mia³a ustawiony bit suid lub sgid, procmail koñczy z EX_NOUSER, zak³adaj±c ¿e do tej skrzynki nie wolno dostarczaæ poczty.
Bad substitution of "x"
(Z³e podstawienie "x") Nie podano prawid³owej nazwy zmiennej ¶rodowiskowej.
Closing brace unexpected
(Niespodziewane zamkniêcie nawiasu) Nie by³o odpowiadaj±cego nawiasu otwieraj±cego (zagni¿d¿enie bloku).
Conflicting options
(Koliduj±ce opcje) Nie wszystkie kombinacje opcji s± u¿yteczne.
Conflicting x suppressed
(Zlikwidowane koliduj±ce x) Flaga x nie da siê pogodziæ z innymi flagami tej regu³y.
Couldn't create "x"
(Nieudane utworzenie "x") Brakowa³o skrzynki systemowej i nie da³o siê jej by³o utworzyæ.
Couldn't create maildir part "x"
(Nieudane utworzenie czê¶ci "x" katalogu poczty) W katalogu pocztowym "x" brakuje jednego lub wiêcej koniecznych podkatalogów a procmail nie móg³ ich utworzyæ.
Couldn't create or rename temp file "x"
(Nieudane utworzenie lub przemianowanie tymczasowego pliku "x") W mechanice dostarczania wiadomo¶ci do katalogu pocztowego "x" wyst±pi³ b³±d.
Couldn't determine implicit lockfile from "x"
(Nie mo¿na okre¶liæ jawnego pliku blokady z "x") Nie znaleziono przekierowañ `>>', u¿ywa zwyczajnie `$LOCKEXT' jako lokalnego pliku blokuj±cego (locallockfile).
Couldn't read "x"
(Nieudany odczyt "x") Procmail nie by³ w stanie otworzyæ pliku rc albo nie by³ to zwyczajny plik lub te¿ program nie móg³ otworzyæ katalogu MH, by znale¼æ plik o najwy¿szym numerze.
Couldn't unlock "x"
(Nieudane odblokowanie "x") Plik blokuj±cy ju¿ znikn±³ lub odebrano prawa zapisu do jego katalogu.
Deadlock attempted on "x"
(Próba zakleszczenia na "x") Lokalny plik blokuj±cy (locallockfile) podany w tej regule jest równy nadal aktywnemu $LOCKFILE.
Denying special privileges for "x"
(Odmowa specjalnych uprawnieñ dla "x") Procmail nie przybierze to¿samo¶ci narzucanej mu plikiem rc, poniewa¿ wykryto pogwa³cenie bezpieczeñstwa (np. -p lub przypisania zmiennych w wierszu poleceñ) albo program mia³ zbyt ma³e uprawnienia by móc to zrobiæ.
Descriptor "x" was not open
(Deskryptor "x" nie by³ otwarty) Podczas startu procmaila nie by³y przy³±czone stdin, stdout lub stderr (prawdopodobnie próba z³amania bezpieczeñstwa).
Enforcing stricter permissions on "x"
(Wymuszenie bardziej restrykcyjnych uprawnieñ do "x") Systemowa skrzynka pocztowa odbiorcy by³a niezabezpieczona, procmail j± zabezpieczy³.
Error while writing to "x"
(B³±d podczas zapisu do "x") Nieistniej±cy katalog, brak praw zapisu, pad³ potok lub przepe³niony dysk.
Exceeded LINEBUF
(Przekroczone LINEBUF) Wykryto przepe³nienie bufora, LINEBUF by³ zbyt ma³y, ustawiono PROCMAIL_OVERFLOW.
Excessive output quenched from "x"
(St³umiono nadmierne wyj¶cie z "x") Program lub filtr "x" próbowa³ wyprodukowaæ zbyt wiele wyj¶cia dla bie¿±cego bufora LINEBUF, reszta zosta³a pominiêta.
Extraneous x ignored
(Nie zwi±zane x zignorowane) Linia akcji lub inne flagi tej regu³y odbieraj± fladze x znaczenie.
Failed forking "x"
(Nieudane rozwidlenie "x") Tabela procesów jest pe³na (i wykorzystano RORESRETRY).
Failed to execute "x"
(Nieudane wykonanie "x") Program nie znajduje siê w ¶cie¿ce lub nie jest wykonywalny.
Forced unlock denied on "x"
Brak praw zapisu do katalogu, w którym znajduje siê plik blokuj±cy lockfile "x", albo w tym samym czasie próbuje wymusiæ blokowanie wiêcej ni¿ jeden procmail.
Forcing lock on "x"
Plik Lockfile "x" zostanie usuniêty si³±, poniewa¿ nast±pi³o przekroczenie limitu czasu (zobacz tak¿e: LOCKTIMEOUT).
Incomplete recipe
Znaleziono pocz±tek regu³y, lecz nie zosta³a zakoñczona przed EOF.
Insufficient privileges
Procmail wymaga uprawnieñ roota lub musi mieæ okre¶lony (e)udi, (e)gid w trybie dostarczania. Wiadomo¶ci bêd± odbijane (zwracane nadawcy).
Invalid regexp "x"
Wyra¿enie regularne "x" zawiera b³êdy (najprawdopodobniej brakuj±ce lub nadmiarowe nawiasy).
Kernel-lock failed
Podczas próby u¿ycia obs³ugiwanych przez j±dro wywo³añ blokuj±cych, które¶ z nich nie powiod³o siê (zwykle wskazuje to na b³±d systemu), procmail ignoruje ten b³±d i dzia³a dalej.
Kernel-unlock failed
Zawiod³a próba odblokowania za po¶rednictwem funkcji j±dra. Zobacz wy¿ej.
Lock failure on "x"
Mo¿e siê pojawiæ tylko je¶li podasz jakie¶ naprawdê dziwne (i niedozwolone) nazwy plików blokuj±cych, lub je¶li nie mo¿na by³o utworzyæ pliku lockfile z powodu braku uprawnieñ lub nieistniej±cych podkatalogów.
Lost "x"
Procmail próbowa³ sklonowaæ siê, lecz nie móg³ znale¼æ pliku rc "x" (zosta³ przeniesiony lub by³ ¶cie¿k± wzglêdn±, a zmieni³e¶ katalog od ostatniego otwarcia go przez procmaila).
Missing action
(Brak akcji) Bie¿±ca regu³a nie jest kompletna.
Missing closing brace
(Brak nawiasu zamykaj±cego) Rozpoczêto zagnie¿d¿ony blok, ale go nie zakoñczono.
Missing name
(Brak nazwy) Opcja -f wymaga dodatkowego argumentu.
Missing argument
(Brak argumentu) Poda³e¶ opcjê -a, lecz zapomnia³e¶ argumentu.
Missing rcfile
(Brak pliku rc) Poda³e¶ opcjê -m, procmail oczekuje nazwy pliku rc jako argumentu.
Missing recipient
(Brak odbiorcy) Poda³e¶ opcjê -d lub wywo³a³e¶ procmail pod inn± nazw±, program oczekuje przynajmniej jednego odbiorcy jako argumentu.
No space left to finish writing "x"
System plików zawieraj±cy "x" nie ma do¶æ wolnego miejsca, aby umo¿liwi¶æ dostarczenie wiadomo¶ci do pliku.
Out of memory
Systemowi brakuje swapu (a wyczerpano NORESRETRY).
Processing continued
Nierozpoznane opcje wierszu poleceñ s± ignorowane, kontynuowanie jak zwykle.
Program failure (nnn) of "x"
Program uruchomiony przez procmaila zwróci³ nnn zamiast EXIT_SUCCESS (=0); Je¶li nnn jest ujemne, to jest to sygna³em, ¿e program umar³.
Quota exceeded while writing "x"
(Podczas zapisu "x" przekroczono ograniczenie udzia³u dyskowego) Ograniczenie wielko¶ci pliku (quota) w systemie plików odbiorcy zawieraj±cym "x" nie pozwala na dostarczenie danej wiadomo¶ci do pliku.
Renaming bogus "x" into "x"
Systemowa skrzynka pocztowa odbiorcy okaza³a siê byæ zmy¶lona, procmail wykona³ dzia³ania wymijaj±ce.
Rescue of unfiltered data succeeded/failed
(Ratowanie nieprzefiltrowanych danych pomy¶lne/nieudane) Filtr zakoñczy³ pracê niepomy¶lnie, procmail próbowa³ odzyskaæ oryginalny tekst.
Skipped: "x"
(Pominiêto: "x") Program nie móg³ nic zrobiæ z "x" w pliku rc (b³±d sk³adni), ignoruje to.
Suspicious rcfile "x"
(Podejrzany plik rc "x") W³a¶ciciel pliku rc nie by³ odbiorc± ani rootem, plik by³ dostêpny do zapisu dla wszystkich, lub zawieraj±cy go katalog by³ zapisywalny dla wszystkich, lub by³ to domy¶lny plik rc ($HOME/.procmailrc) i albo ten plik, albo zawieraj±cy go katalog by³y zapisywalne przez grupê. (Plik rc nie zosta³ u¿yty).
Terminating prematurely whilst waiting for ...
(Przedwczesne zakoñczenie podczas oczekiwania na ...) Procmail otrzyma³ sygna³ podczas oczekiwania na ...
Timeout, terminating "x"
W filtrze lub programie "x" nast±pi³o przekroczenie limitu czasu.
Timeout, was waiting for "x"
W programie, filtrze lub pliku "x" nast±pi³o przekroczenie limitu czasu. Je¶li by³ to program lub filtr, to wygl±da na to, ¿e ju¿ nie dzia³a.
Truncated file to former size
Plik nie móg³ byæ szczê¶liwie dostarczony, wiêc zosta³ skrócony do poprzedniej wielko¶ci.
Truncating "x" and retrying lock
"x" nie wydaje siê byæ prawid³ow± nazw± pliku lub plik nie jest pusty.
Unable to treat as directory "x"
(Niemo¿liwe traktowanie jako katalogu "x") Albo przyrostek katalogu "x" wskazuje na to, ¿e powinien to byæ MH lub katalog wiadomo¶ci pocztowych (maildir), albo zosta³ on wymieniony jako drugi katalog, do którego nale¿y wykonaæ dowi±zanie, ale ju¿ istnieje i nie jest to katalog.
Unexpected EOL
(Niespodziewany EOL) Brak zamykaj±cego cytatu lub próba ucieczki EOF.
Unknown user "x"
(Nieznany u¿ytkownik "x") Podany odbiorca nie ma odpowiadaj±cego mu uid.

ROZSZERZONA DIAGNOSTYKA

Rozszerzon± diagnostykê mo¿na w³±czaæ i wy³±czaæ ustawieniem zmiennej VERBOSE.
[pid] time & date
Pid i timestamp procmaila. Generowane za ka¿dym razem gdy procmail loguje diagnostykê, gdy up³ynê³a chocia¿ sekunda od ostatniego timestampu.
Acquiring kernel-lock
Procmail próbuje zablokowaæ przez j±dro ostatnio otwarty plik (deskryptor).
Assigning "x"
Przyznanie warto¶ci zmiennej ¶rodowiskowej.
Assuming identity of the recipient, VERBOSE=off
Porzucenie wszystkich uprawnieñ (je¶li jakie¶ by³y), bezwarunkowo wy³±cza rozszerzon± diagnostykê.
Bypassed locking "x"
Katalog spool poczty nie by³ dostêpny procmailowi, bazowa³ wy³±cznie na blokadach j±dra.
Executing "x"
Uruchamianie programu "x"; je¶li jest on uruchamiany bezpo¶rednio przez procmaila (bez po¶redniej pow³oki), procmail poka¿e gdzie oddzieli³ argumenty poprzez wstawienie przecinków.
HOST mismatched "x"
Ten host by³ nazwany "x", HOST zawiera³o co¶ innego.
Locking "x"
Tworzenie pliku blokuj±cego "x".
Linking to "x"
Tworzenie dowi±zania twardego pomiêdzy folderami katalogów.
Match on "x"
Trafiony warunek.
Matched "x"
Przyznano "x" warto¶æ MATCH.
No match on "x"
Warunek nie pasowa³, regu³a pominiêta.
Non-zero exitcode (nnn) by "x"
Niezerowy kod zakoñczenia "x". Program uruchomiony przez procmaila jako warunek lub akcja przepisu z flag± `W' zwróci³ nnn zamiast EXIT_SUCCESS (=0); sposób u¿ycia wskazuje na to, ¿e nie jest to niespodziewana okoliczno¶æ.
Notified comsat: "$LOGNAME@offset:file"
Wys³ano informacjê do comsat/biff, ¿e pojawi³a siê poczta dla u¿ytkownika $LOGNAME pod `offsetem' w pliku `file'.
Opening "x"
Otwieranie pliku "x" dla dopisywania.
Rcfile: "x"
Plik rc zmieniony na "x".
Reiterating kernel-lock
Podczas próbowania ró¿nych metod blokowania, jedna z nich siê nie powiod³a. Procmail bêdzie iterowa³ od nowa, a¿ wszystkie siê nie powiod±.
Score: added newtotal "x"
Ten warunek do³o¿y³ `dodatkowe' punkty, co da³o w wyniku `now± sumê' punktacji.
Unlocking "x"
Ponowne usuwanie pliku blokuj±cego (lockfile) "x".

OSTRZE¯ENIA

Powiniene¶ utworzyæ skrypt pow³oki, który u¿ywa lockfile(1) zanim wywo³asz swoj± pow³okê pocztow± na którymkolwiek pliku skrzynki pocztowej, innym ni¿ skrzynka systemowa (chyba, ¿e twoja pow³oka pocztowa u¿ywa tych samych plików blokuj±cych (lokalnych lub globalnych), które poda³e¶ w pliku rc).

W rzadkich przypadkach, gdy musisz ubiæ procmaila zanim zakoñczy dzia³anie, u¿yj zwyk³ego polecenia kill (np. nie kill -9, zobacz podsekcjê Sygna³y dla sugestii), inaczej niektóre pliki blokuj±ce (lockfiles) mog± nie zostaæ usuniête.

Strze¿ siê gdy u¿ywasz opcji -t , je¶li procmail jest ci±gle niezdolny do dostarczenia poczty (np. przez nieprawid³owy plik rc), kolejka poczty systemu mo¿e siê przepe³niæ. Mo¿e to zgorszyæ zarówno postmastera, jak i innych u¿ytkowników.

Plik /etc/procmailrc mo¿e byæ uruchamiany z prawami roota, wiêc b±d¼ bardzo ostro¿ny z tym, co tam wstawiasz. SHELL bêdzie zgodny z pow³ok± bie¿±cego odbiorcy, wiêc je¶li procmail ma wywo³ywaæ pow³okê, lepiej ustaw to wpierw na bezpieczn± warto¶æ. Zobacz tak¿e : DROPPRIVS.

Pamiêtaj, ¿e je¶li na plikach w /etc/procmailrcs/ dozwolony jest chown(1), to mog± one byæ chown-owane na roota (lub kogokolwiek innego) przez ich obecnych w³a¶cicieli. Dla maksymalnego bezpieczeñstwa upewnij siê, ¿e katalog ten jest wykonywalny tylko dla roota.

Procmail nie jest w³a¶ciwym narzêdziem do wspólnego u¿ytkowania jednej skrzynki pocztowej przez wielu u¿ytkowników, jak to wystêpuje w przypadku, gdy masz jedno konto POP dla ca³ej poczty w swojej domenie. Da siê to zrobiæ, je¶li uda ci siê skonfigurowaæ MTA tak, by dodawa³ nag³ówki z danymi odbiorcy kopertowego, dziêki którym procmail bêdzie wiedzia³, dla kogo jest dana wiadomo¶æ, jednak zwykle nie jest to dobre rozwi±zanie. Byæ mo¿e lepiej zbadaæ czy u¿ywany MTA oferuje 'tabele u¿ytkowników wirtualnych' (`virtual user tables') lub poszukaæ np. funkcji `multidrop' (wielopunktowo¶ci) Fetchmaila.

B£ÊDY

Po usuniêciu si³± pliku blokuj±cego, procmail czeka $SUSPEND sekund zanim utworzy nowy plik blokuj±cy, tak by inny proces, który chce usun±æ stary plik blokuj±cy nie usun±³ przypadkiem nowego.

Procmail u¿ywa zwyk³ego sygna³u TERMINATE do zakoñczenia filtrów, które uciek³y, lecz nie sprawdza czy filtr odpowiada na sygna³. Poza tym wysy³a sygna³ tylko do filtra, nie do jego dzieci.

Kontynuowane pole Content-Length: nie jest prawid³owo obs³ugiwane.

RÓ¯NE

Je¶li w nag³ówku istnieje pole Content-Length: a nie podano flagi -Y, procmail wykorzysta to pole do zg³oszenia w³a¶ciwego rozmiaru. Procmail nie zmienia szeroko¶ci pola.

Je¶li nie ma pola Content-Length: lub je¶li podano flagê -Y, a procmail dopisuje do zwyk³ych folderów pocztowych, to wszelkie linie cia³a wiadomo¶ci, które wygl±daj± jak znaki pocztowe, s± poprzedzane `>' (rozbraja nieprawdziwe nag³ówki pocztowe). Wyra¿enie regularne u¿ywane do wyszukiwania tych znaków pocztowych to:

`\nFrom '

Je¶li nazwa celu u¿yta w jawnym trybie dostarczania nie figuruje w /etc/passwd, procmail zadzia³a tak, jakby tryb ten nie by³ w³±czony. Je¶li nie jest w jawnym trybie dostarczania, a uid, pod którym dzia³a nie ma odpowiadaj±cego wpisu /etc/passwd, to HOME bêdzie odpowiadaæ /, LOGNAME bêdzie odpowiadaæ #uid, a SHELL bêdzie odpowiadaæ /bin/sh.

Gdy procmail jest w jawnym trybie dostarczania, to bêdzie generowa³ pocz±tkowe linie `From ', je¶li brak takowych. Je¶li linia taka ju¿ istnieje, procmail pozostawi j± bez zmian. Je¶li procmail nie jest wywo³any z jednym z nastêpuj±cych id u¿ytkownika lub grupy : root, daemon, uucp, mail, x400, network, list, lists lub news, lecz wci±¿ musi generowaæ lub przyjmowaæ now± liniê `From ', to bêdzie generowa³ dodatkow± liniê `>From ', pomagaj±c± odró¿niæ fa³szywe listy. (?)

Ze wzglêdów bezpieczeñstwa, w wypadkach gdy w³a¶cicielem pliku rc jest odbiorca lub root, a plik nie jest ogólnie zapisywalny, lub gdy katalog, w którym on siê znajduje nie jest ogólnie zapisywalny, procmail bêdzie u¿ywa³ tylko plików rc o nazwach bezwzglêdnych lub wyznaczonych wzglêdem $HOME. Plik $HOME/.procmailrc ma dodatkowe ograniczenie: ani on, ani katalog, w którym siê znajduje, nie mog± byæ zapisywalne przez grupê.

Je¶li /var/spool/mail/$LOGNAME jest zmy¶lon± skrzynk± (np. nie nale¿y do odbiorcy, jest niezapisywalny, jest dowi±zaniem), procmail podczas startu spróbuje zmieniæ jego nazwê na zaczynaj±c± siê od `BOGUS.$LOGNAME.' i koñcz±c± siê numerem sekwencyjnym i-wêz³a. Je¶li oka¿e siê to niemo¿liwe, ORGMAIL nie bêdzie mieæ warto¶ci pocz±tkowej i wskutek tego bêdzie zakazywaæ dostarczania bez nale¿ytego pliku rc.

Je¶li /var/spool/mail/$LOGNAME jest ju¿ prawid³ow± skrzynk±, lecz ma zbyt s³abe prawa, procmail to poprawi. Aby zapobiec temu, ustaw bity u+x.

Podczas dostarczania do katalogów (lub folderów MH), nie musisz u¿ywaæ plików blokuj±cych w celu zapobie¿enia zamieszaniu powodowanemu przez kilka pracuj±cych naraz procmaili.

Dostarczanie do folderów MH jest trochê bardziej czasoch³onne ni¿ dostarczanie do normalnych katalogów lub mailboxów, poniewa¿ procmail musi poszukaæ nastêpnego dostêpnego numeru (zamiast korzystywania od razu z gotowej nazwy pliku).

Przy ogólnym niepowodzeniu, procmail zwróci EX_CANTCREAT, chyba ¿e podana zostanie opcja -t- wówczas zwróci EX_TEMPFAIL.

Procmail skleja wszystkie kontynuowane pola nag³ówkowe, ¿eby mo¿na by³o w spójniejszy sposób je `egrepowaæ'. Robi to jednak tylko wewnêtrznie - podczas dostarczania poczty, ³amania linii pojawi± siê w postaci pierwotnej.

Je¶li procmail jest wywo³ywany pod nazw± nie zaczynaj±c± siê od `procmail' (np. je¶li jest dowi±zany do innej nazwy i wywo³any pod tamt± nazw±), to w³±cza siê w jawnym trybie dostarczania i oczekuje nazw odbiorców jako argumentów wiersza poleceñ(tak, jakby by³o podane -d).

Powiadomienia comstat/biff s± dokonywane za pomoc± udp. S± one wysy³ane gdy procmail generuje wpis pliku z logiem. Komunikaty powiadamiania maj± nastêpuj±cy rozszerzony format (lub tak zbli¿ony, jaki tylko mo¿na uzyskaæ, gdy ostateczne dostarczenie nie by³o do pliku):

$LOGNAME@offset_wiadomo¶ci_w_mailboksie :absolutna_¶cie¿ka_do_mboxa

Kiedy tylko procmail otwiera plik, do którego dostarcza, u¿ywa konsystentnie nastêpuj±cych j±drowych strategii blokowania : fcntl(2) i lockf(3).

Procmail jest odporny na NFS i czysty na ósmym bicie.

UWAGI

Wywo³ywanie procmaila z opcj± -h lub -? spowoduje wy¶wietlenie pomocy wiersza poleceñ oraz strony skróconej instrukcji flag regu³.

Istnieje doskona³e FAQ dla pocz±tkuj±cych dotycz±ce filtrów pocztowych (w szczególno¶ci procmaila). Jest prowadzone przez Nancy McGough <nancym@ii.com>, a mo¿na je otrzymaæ wysy³aj±c na adres mail-server@rtfm.mit.edu list z tre¶ci±:

send usenet/news.answers/mail/filtering-faq

Je¶li procnail nie jest zainstalowany w systemie jako domy¶lny program dostarczania poczty (zapytaj administratora), musisz siê upewniæ, ¿e jest wywo³ywany, gdy przybywa poczta. W tym wypadku twój $HOME/.forward (uwaga, musi byæ dostêpny ogó³owi do odczytu) powinien zawieraæ poni¿sz± liniê. Upewnij siê, ¿e wstawi³e¶ pojedyncze i podwójne znaki cytowania i musi to byæ absolutna ¶cie¿ka. #YOUR_USERNAME nie jest w³a¶ciwie parametrem wymaganym przez procmaila, a w rzeczywisto¶ci procmail nawet go nie ujrzy; jest to jednak niezbêdny fortel przeciw nadoptymalizuj±cym programom sendmail:


" |IFS=' '&&exec /usr/local/bin/procmail -f- | |exit 75 #YOUR_USERNAME"

Procmail mo¿e byæ te¿ wywo³ywany do przetworzenia ju¿ wype³nionej skrzynki systemowej. Mo¿e to byæ u¿yteczne je¶li nie chcesz lub nie mo¿esz u¿ywaæ pliku $HOME/.forward (wówczas mo¿na by wywo³ywaæ poni¿szy skrypt albo periodycznie z crona(1) albo ka¿dorazowo gdy zaczynasz czytaæ pocztê):

#!/bin/sh
ORGMAIL=/var/spool/mail/$LOGNAME
if cd $HOME &&
 test -s $ORGMAIL &&
 lockfile -r0 -l3600 .newmail.lock 2>/dev/null then
  trap "rm -f .newmail.lock" 1 2 3 15
  umask 077
  lockfile -l3600 -ml
  cat $ORGMAIL >>.newmail &&
   cat /dev/null >$ORGMAIL
  lockfile -mu
  formail -s procmail <.newmail &&
   rm -f .newmail
  rm -f .newmail.lock fi exit 0

Przyk³adowy ma³y $HOME/.procmailrc:


PATH=/bin:/usr/bin:/usr/bin

MAILDIR=$HOME/Mail      #upewnij siê, ¿e istnieje

DEFAULT=$MAILDIR/mbox   #kompletnie opcjonalne

LOGFILE=$MAILDIR/from   #zalecane



:0:

* ^From.*berg

from_me



:0

* ^Subject:.*Flame

/dev/null

Inne przyk³ady regu³ plików rc mo¿na obejrzeæ na stronie procmailex(5).

¬RÓD£O

Program ten jest czê¶ci± pakietu procmail mail-processing-package (v3.10 1994/10/31) dostêpnego w najbli¿szym archiwum USENET comp.sources.misc lub na ftp ftp.informatik.rwth-aachen.de jako pub/packages/procmail/procmail.tar.gz.

LISTA DYSKUSYJNA

Istnieje lista dyskusyjna dla pytañ zwi±zanych z programami pakietu procmail:
procmail@informatik.rwth-aachen.de
do wysy³ania pytañ/odpowiedzi.
procmail-request@informatik.rwth-aachen.de
do za¿±dania zapisania siê.

AUTOR

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