Provided by:
manpages-pl_20060617-1_all 
NAZWA
procmail - autonomiczny procesor poczty
SKŁADNIA
procmail [-ptoY] [-f od_kogo]
[parametr=warto | plik_rc] ...
procmail [-toY] [-f fromwhom] [-a argument] ...
-d odbiorca ...
procmail [-ptY] -m [parametr=warto] ... 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 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 ustawianych 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 z 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. Każde następne -a argument
ustawią zmienną o kolejnym numerze ($2, $3 itd.). Może być
używane do przekazywania metainformacji do procmaila. Zazwyczaj
wykonuje się to przez przesyłanie informacji $@x z reguły
sendmaila.
-d odbiorca ...
Włącza jawny tryb dostarczania. Dostarczenie nastąpi do lokalnego
odbiorcy, oznaczonego jako odbiorca. 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:
SENDER = "<$1>" # poprawienie pustego adresu nadawcy
SHIFT = 1 # usunięcie go z $@
:0 # Spuść do muszli całą pocztę śmieciową ;)
* ^Subject:.*junk
/dev/null
:0 w # przekaż resztę przesyłek dalej
! -oi -f "$SENDER" "$@"
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/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/mail/$LOGNAME.lock
plik blokujący systemowej skrzynki pocztowej
(nie jest automatycznie używany przez procmail,
chyba że $DEFAULT jest równe /var/mail/$LOGNAME,
a procmail dostarcza coś do $DEFAULT)
/usr/sbin/sendmail domyślny program ekspedycji poczty (forwarder)
_????`hostname` tymczasowe `unikatowe' 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), 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
(zagnież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")
Wystąpił błąd w mechanizmie dostarczania
wiadomości do katalogu pocztowego "x".
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.
MAILDIR is not an absolute path (MAILDIR nie jest ścieżką absolutną)
MAILDIR path too long (Ścieżka MAILDIR zbyt długa)
ORGMAIL is not an absolute path (ORGMAIL nie jest ścieżką absolutną)
ORGMAIL path too long (Ścieżka ORGMAIL zbyt długa)
default rcfile is not an absolute path (domyślny plik rc nie jest
ścieżką absolutną)
default rcfile path too long (zbyt długa ścieżka do domyślnego pliku
rc)
Pełna ścieżka do podanego elementu, po
rozwinięciu wszystkich linków, ma długość
większą niż LINEBUF lub nie zaczyna się od znaku
separatora plików.
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 i ustawiono zmienną
PROCMAIL_OVERFLOW.
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" (Niepoprawne wyraż. regularne "x")
Wyrażenie regularne "x" zawiera błędy
(najprawdopodobniej brakujące lub nadmiarowe
nawiasy).
Kernel-lock failed (Błąd blokowania za pośrednictwem funkcji jądra)
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 (Błąd odblokowania za pośrednictwem funkcji jądra)
Zobacz wyżej.
Lock failure on "x" (Błąd blokowania "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" (Zgubiono "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" (Brak miejsca na dokończenie zapisu
"x")
System plików zawierający "x" nie ma dość
wolnego miejsca, aby umożliwiść dostarczenie
wiadomości do pliku.
Out of memory (Brak pamięci)
Systemowi brakuje swapu (a wyczerpano
NORESRETRY).
Processing continued (Kontynuowanie przetwarzania)
Nierozpoznane opcje wierszu poleceń są
ignorowane, kontynuowanie jak zwykle.
Program failure (nnn) of "x" (Błąd programu (nnn) na "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 (nn) 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 sekcję
Sygnay 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.
Nowe linie osadzone w kontynuowanym nagłówku powinny być pomijane
podczas dopasowywania zamiast być traktowane jako pojedyncza spacja,
jak to się dzieje obecnie.
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, SHELL będzie odpowiadać /bin/sh, a
ORGMAIL będzie ustawione na /tmp/dead.leather.
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/mail/$LOGNAME jest zmyśloną skrzynką (np. nie należy do
odbiorcy, jest niezapisywalny, jest dowiązaniem symbolicznym lub
twrdym), 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/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
konsekwentnie następujących, dostarczanych przez jądro, strategii
blokowania: fcntl(2).
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 procmail 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 do odczytu dla wszystkich)
powinien zawierać poniższą linię. Upewnij się, że wstawiłeś pojedyncze
i podwójne znaki cytowania i - o ile w Twoim systemie nie działa smrsh
(SendMail Restricted Shell) - musi to być absolutna ścieżka.
"|exec /usr/bin/procmail"
Niektóre serwery pocztowe (np. exim) nie akceptują powyższej składni. W
tym przypadku należy użyć:
|/usr/bin/procmail
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/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=/usr/local/bin:/usr/bin:/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 jest częścią pakietu przetwarzania poczty procmail (v3.22),
dostępnego pod adresem http://www.procmail.org/ lub ftp.procmail.org w
pub/procmail/.
LISTA DYSKUSYJNA
Istnieje lista dyskusyjna dla pytań związanych z programami pakietu
procmail:
<procmail-users@procmail.org>
do wysyłania pytań/odpowiedzi.
<procmail-users-request@procmail.org>
do zażądania zapisania się.
Jeżeli chciałbyś być informowany o nowych wersjach i oficjalnych
łatach, wyślij zgłoszenie zapisania się do
procmail-announce-request@procmail.org
(jest to lista tylko do odczytu).
AUTORZY
Stephen R. van den Berg
<srb@cuci.nl>
Philip A. Guenther
<guenther@sendmail.com>