JMÉNO
procmailrc - konfigurační soubor programu procmailPOUŽITÍ
$HOME/.procmailrcPOPIS
Chcete-li rychle začít, podívejte se na POZNÁMKY na konci manuálové stránky procmail(1). Tento konfigurační soubor může obsahovat směs přiřazení do proměnných prostředí (z nichž některé mohou mít pro procmail zvláštní význam) a předpisů. V nejjednodušší podobě obsahují předpisy jednořádkové regulární výrazy vyhledávané v hlavičce přijaté e-mailové zprávy. První předpis, který nalezne shodu s regulárním výrazem, potom určí kam se zpráva dále přesune (obvykle do souboru). Pokud se zpracování dostane až na konec rc souboru, procmail doručí e-mailovou zprávu na $DEFAULT. Existují dva druhy předpisů: doručující a nedoručující. Pokud je nalezena shoda v doručujícím předpisu, procmail považuje zprávu (ano, uhádli jste) za doručenou a ukončí zpracování konfiguračního souboru po úspěšném provedení akčního řádku předpisu. Pokud je nalezena shoda v nedoručujícím předpisu zpracování bude pokračovat i po provedení akčního řádku tohoto předpisu. Doručující předpisy jsou ty, které způsobí, že hlavičky a/nebo tělo zprávy jsou zapsány do souboru, použity nějakým programem nebo přesměrovány na nějakou poštovní adresu. Nedoručující předpisy jsou ty, které způsobí, že výstup nějakého programu nebo filtru je znovu zachycen procmail-em, nebo předpisy, které otevírají vnořený blok. Procmailu můžete říci, že má zpracovávat doručující předpis jako nedoručující, když uvedete příznak 'c' v hlavičce předpisu. To přinutí procmail vytvořit kopii právě zpracovávané zprávy. Zpráva je tudíž doručena podle předpisu, ale zároveň se s její kopií pokračuje ve zpracování konfiguračního souboru. Použitím libovolného počtu předpisů můžete svou příchozí poštu velmi přímočarým způsobem roztřídit do několika složek. Avšak mějte na paměti, že do těchto složek mohou přicházet současně různé zprávy (jestliže běží více instancí procmailu, což není neobvyklé při větším množství došlých zpráv). Aby v tom případě ve složkách nevznikl zmatek, velmi doporučujeme vhodně používat zámků (angl. "lock files"). V konfiguračním souboru lze libovolně míchat přiřazení do proměnných prostředí a předpisy. Proměnné, které mají v procmailu zvláštní význam, budou použity příslušným způsobem v momentě zpracování řádku kde se vyskytují (tzn. že můžete kdykoliv změnit pracovní adresář zadáním nové hodnoty MAILDIR, přepínat zámky přiřazením do LOCKFILE, kdykoliv změnit umask, atd., možností je nekonečně mnoho :-). Přiřazování a substituce těchto proměnných se provádí přesně stejně jako v sh(1) (včetně všech možností uvozování a escape sekvencí), ale kromě toho ještě poskytuje další výhody v tom, že prázdné znaky obklopující '=' jsou ignorovány. Pokud se objeví jméno proměnné bez koncového '=', bude tato proměnná zrušena. Jakýkoliv program uvedený ve zpětných apostrofech procmail spustí a předá mu celou zprávu na standardní vstup.Komentáře
Slovo začínající znakem # a všechny následující znaky až do konce řádku jsou ignorovány. Toto neplatí pro řádky obsahující podmínku, ty nemohou být komentovány.Předpisy
Řádek začínající znakem ':' označuje začátek předpisu. Má tento formát::0 [ příznaky] [ : [lokální_zámek] ] <jedna nebo více podmínek (jedna na řádek)> <právě jeden akční řádek>
Podmínkový řádek začíná znakem `*'. Zbytek řádku kromě uvozujících a koncových mezer je poslán znak po znaku na vstup vnitřního egrep-u. Regulární výrazy vnitřního egrepu jsou naprosto kompatibilní s rozšířenou syntaxí regulárních výrazů programu egrep(1). Viz též Rozšířená syntaxe regulárních výrazů. Mezi podmínkami v jednom předpisu platí logický součin (AND). Pokud předpis neobsahuje žádnou podmínku, výsledek testu bude vždycky pravdivý. Příznak může být jeden z následujících znaků:
- H
- Do programu egrep se pošle záhlaví
zprávy (standard).
- B
- [přibližně] Do egrepu se pošle
tělo zprávy.
- D
- Sdělí egrepu, že má
rozlišovat malá a velká písmena (standard je
nerozlišovat).
- A
- Tento předpis bude závislý na
posledním předcházejícím
předpisu bez příznaku `A' nebo `a' (na
aktuální úrovni vnoření). To vám
umožňuje řetězit akce, které
závisí na společné podmínce.
- a
- Má tentýž význam jako `A', ale
bude zároveň záviset na
úspěšném dokončení
předchozího předpisu.
- E
- Tento předpis se provede pouze v
případě, že bezprostředně
předcházející předpis nebyl proveden.
Jeho úspěšné provedení
rovněž znemožní provedení
bezprostředně následujících
předpisů s `E'. To vám umožňuje
definovat akce typu `else if'.
- e
- Předpis se provede pouze v
případě, že bezprostředně
předcházející předpis selhal. To
vám umožňuje definovat akce na
zpracování chyb.
- h
- Záhlaví zprávy se pošle na
vstup roury, do souboru nebo na místo určení
zprávy (default).
- b
- Tělo zprávy se pošle na vstup roury,
do souboru nebo na místo určení zprávy
(default).
- f
- S rourou se má zacházet jako s filtrem.
- c
- Vytvoř kopii zpracovávané
zprávy. Tento příznak má význam pouze v
doručujících předpisech. Jediný
druh nedoručujícího předpisu v
němž dojde tento příznak smysluplného
použití je blok (vnoření). Aby mohla
být zpracována kopie, příznak
způsobí rozdvojení právě
běžícího procesu (zámky se
nedědí), přičemž nový proces
pokračuje ve zpracování obvyklým
způsobem, zatímco původní proces
přeskočí blok a pokračuje za ním.
- w
- Čeká na ukončení
spuštěného filtru nebo programu a otestuje
návratovou hodnotu (standardně ji ignoruje). Pokud bude
filtr neúspěšný, text nebude filtrován.
- W
- Stejný význam jako příznak `w',
ale potlačí hlášky `Program failure'.
- i
- Ignoruje chyby zápisu v tomto předpisu
(obvykle nastávají při
předčasném uzavření roury).
- r
- `Hrubý' režim (raw). Nepokouší se ujistit jestli zpráva končí prázdným řádkem, zapíše ji tak jak je.
- !
- Negace podmínky následující po
vykřičníku.
- $
- Zbytek podmínky vyhodnotí podle pravidel pro
substituci uvnitř dvojitých uvozovek v sh(1) ,
přeskočí úvodní mezery a potom znovu
vyhodnotí.
- ?
- Použije návratový kód
uvedeného programu.
- <
- Otestuje, zda je celková délka zprávy
menší než uvedený počet bajtů
(decimálně).
- >
- Obdobně jako '<'.
- jméno_proměnné ??
- Porovná zbytek podmínky s hodnotou
této proměnné (nesmí se jednat o
pseudoproměnnou). Zvláštním
případem jsou `B', `H', `HB' a `BH', které pouze
mění prohledávanou oblast
záhlaví/těla zprávy, definovanou pro
aktuální předpis.
- \
- Použijte, chcete-li použít
kterýkoliv z výše uvedených znaků na
začátku řádku v jeho normálním
významu.
Lokální zámek
Pokud umístíte na konec prvního řádku předpisu druhou dvojtečku, procmail použije lokální_zámek (pouze pro aktuální předpis). Volitelně můžete za dvojtečku zadat jméno zámku, který chcete použít. Pokud tak ovšem neučiníte, procmail použije jméno výstupního souboru (nebo jméno za první '>>'), za které připojí hodnotu $LOCKEXT.Akční řádek předpisu
Akční řádek může začínat jedním z následujících znaků:- !
- Pošle poštu (forward) na všechny
následující e-mailové adresy.
- |
- Spustí určený program; pokud je
nalezen kterýkoliv znak z $SHELLMETAS, pokusí se spustit
program pomocí $SHELL-u. Volitelně můžete
před znak roury umístit proměnná=,
což způsobí, že standardní
výstup spuštěného programu bude uložen
do proměnné prostředí (procmail v tomto
místě neukončí
zpracovávání konfiguračního souboru).
Pokud zadáte pouze znak roury bez žádného
názvu programu, procmail přesměruje obsah
zprávy na standardní výstup.
- {
- Následována alespoň jednou mezerou, tabulátorem nebo znakem nový řádek označuje začátek vnořeného bloku. Všechno uvnitř bloku až po následující uzavírající závorku bude záviset na podmínce aktuálního předpisu. Počet úrovní vnoření není omezen. Uzavírací závorka pouze ukončuje blok; v žádném případě nezpůsobuje ukončení procmailu. Když je dosaženo konce bloku, zpracování pokračuje obvyklým způsobem za blokem. Ve vnořeném bloku mají příznaky `B' a `H' vliv pouze na podmínky předcházející tento blok, příznaky `h' a `b' nemají vůbec žádný vliv.
Implicitní hodnoty proměnných
- LOGNAME, HOME and USER_SHELL
- Vaše (příjemcovy) standardní
hodnoty
- SHELL
- /bin/sh
- PATH
- $HOME/bin :/usr/local/bin :/usr/bin :/bin (Výjimkou
je doba zpracování souboru /etc/procmailrc, kdy je nastavena
na `/usr/local/bin :/usr/bin :/bin'.)
- SHELLMETAS
- & |<>~;?*[
- SHELLFLAGS
- -c
- ORGMAIL
- /var/mail/$LOGNAME
- MAILDIR
- $HOME
- DEFAULT
- $ORGMAIL
- MSGPREFIX
- msg.
- SENDMAIL
- /usr/sbin/sendmail
- SENDMAILFLAGS
- -oi
- HOST
- Aktuální jméno
počítače (hostname)
- COMSAT
- no
- PROCMAIL_VERSION
- 3.24
- LOCKEXT
- .lock
Environment
Dříve než vás zahltí množství proměnných, mějte na paměti, že všechny mají rozumné implicitní hodnoty.- MAILDIR
- Aktuální adresář za běhu
procmailu (což znamená, že všechny cesty jsou
relativní vzhledem k $MAILDIR).
- DEFAULT
- Standardní soubor poštovní
schránky (pokud není určeno jinak, procmail
uloží zprávu do této schránky).
Před zápisem do této schránky použije
procmail automaticky $DEFAULT$LOCKEXT jako zámek. Tuto
proměnnou nemusíte nastavovat, neboť již
obsahuje implicitní systémovou schránku.
- LOGFILE
- Tento soubor bude obsahovat jakákoliv chybová
nebo diagnostická hlášení procmailu (za
normálních okolností žádná :-)
příp. jiných programů
spuštěných procmailem. Jestliže tento soubor
není definován, veškerá diagnostická
nebo chybová hlášení budou zaslána
e-mailem odesilateli zprávy. Viz též
LOGABSTRACT.
- VERBOSE
- Nastavením této proměnné na
`yes' nebo `on' (ano, resp. zapnout; pozn. překl.)
případně `no' či `off' (ne, vypnout)
můžete zapínat respektive vypínat
rozšířenou diagnostiku.
- LOGABSTRACT
- Těsně před svým
ukončením zapíše procmail do souboru $LOGFILE
shrnutí zprávy: záhlaví `From:' a `Subject:',
do jaké složky (schránky) byla zpráva
uložena a jaká byla její délka v bajtech.
Nastavením této proměnné na `no' se
výpis potlačí. Nastavením této
proměnné na `all' (všechno) se zajistí
výpis pro každý úspěšně
dokončený doručující
předpis.
- LOG
- Cokoliv přiřazené této
proměnné bude připojeno do souboru $LOGFILE.
- ORGMAIL
- Obvykle systémová schránka
(ORiGinal MAILbox). Pokud z nějakého
tajemného důvodu (jako ` filesystem full')
nemůže být zpráva doručena, tato
schránka bude poslední možností. Pokud se
procmailu nepodaří zprávu uložit ani sem
(móc, moc špatný :-) vrátí
zprávu odesílateli.
- LOCKFILE
- Globální semafor. Pokud tento soubor
již existuje, procmail před dalším
zpracováním počká až zmizí;
potom jej sám vytvoří (a samozřejmě
také smaže, když skončí). Pokud je
specifikován více než jeden semafor bude ten
předchozí smazán dříve než se
zkusí vytvořit nový.
Užívání globálního semaforu se
nedoporučuje. Tam kde je to možné, použijte
místo toho lokální zámky (na bázi
jednotlivých předpisů).
- LOCKEXT
- Implicitní přípona,
jejímž připojením ke jménu
cílového souboru se získá jméno
lokálního zámku (pokud jsou zapnuty, pro
jednotlivé předpisy).
- LOCKSLEEP
- Počet sekund, které procmail
vyčká než opět zkusí
zámek (pokud již existoval); pokud není
specifikováno, implicitní hodnota je 8 sekund.
- LOCKTIMEOUT
- Počet sekund, které musí uplynout od
času poslední modifikace/vytvoření
zámku aby procmail usoudil, že se to musí
být soubor pozůstalý v důsledku chyby,
který nyní může být nuceně
odstraněn. Pokud je nastavena nula, lhůta se
nepoužije a procmail bude čekat navždy dokud se
soubor neodstraní; pokud není specifikována
žádná hodnota, implicitně 1024 sekund. Tato
proměnná se hodí proti zacyklení
sendmailu/procmailu. Procmail je imunní vůči
odchylkám hodin na různých
počítačích.
- TIMEOUT
- Počet sekund, které musí uplynout
než procmail usoudí, že některý z
dceřiných procesů, které spustil, musel
zamrznout. Dotyčný program obdrží od procmailu
signál TERMINATE a zpracování
konfiguračního souboru bude pokračovat. Pokud je
nula, lhůta se nepoužije a procmail čeká dokud
se neukončí dceřiný process; není-li
hodnota specifikována je implicitní hodnota 960 sekund.
- MSGPREFIX
- Předpona souboru, pokud se zpráva
doručuje do adresáře (nepoužívá
se při doručování do MH
adresáře).
- HOST
- Pokud toto není totožné se
jménem počítače, které vrací
hostname, zpracování aktuálního
konfiguračního souboru se okamžitě
ukončí. Pokud byly na příkazové
řádce uvedeny další konfigurační
soubory, zpracování bude pokračovat
následujícím z nich. Pokud již byly
všechny použity, program se ukončí, ale
nezpůsobí chybu (tzn. že poštovnímu
programu se bude zdát, že pošta byla
doručena).
- UMASK
- Jméno říká vše (pokud
ne, zapomeňte na něj :-). Jakákoliv hodnota
přiřazená UMASK bude interpretována jako
osmičkové číslo. Není-li
specifikováno, maska je implicitně 077. Pokud maska dovoluje
o+x, všechny schránky do nichž procmail
doručuje přímo prodělají změnu
o+x. To se dá použít ke kontrole zda
přišla nová pošta.
- SHELLMETAS
- Pokud se kterýkoliv ze znaků
řetězce SHELLMETAS objeví v řádku
obsahujícím filtr nebo program, řádek bude
poslán do $SHELL namísto přímého
spuštění.
- SHELLFLAGS
- Jakékoliv volání $SHELL-u bude
uskutečněno ve tvaru
- SENDMAIL
- Pokud nepoužíváte
přesměrování (forwarding), nelamte si s
tímhle hlavu. Určuje program, který bude forwardovat
jakoukoliv poštu.
- NORESRETRY
- Počet opakovaných pokusů pokud nastane
některá z chyb ` process table full'
(zaplnění tabulky procesů), ` file table full'
(zaplnění tabulky souborů), ` out of memory'
(nedostatek paměti) nebo ` out of swap space'
(zaplnění odkládacího prostoru). Pokud je toto
číslo záporné, procmail to bude zkoušet
donekonečna; pokud není specifikováno,
implicitní hodnota je 4. Další pokusy o
opakování akce nastávají v intervalu $SUSPEND
sekund. Myšlenka tohoto uspořádání
spočívá v tom, že pokud je např.
vyčerpán swapovací prostor nebo se
zaplnila tabulka procesů, obvykle to zjistí
několik dalších programů, které
buď skončí nebo zkolabují,
čímž uvolní nedostávající
se systémové zdroje procmailu.
- SUSPEND
- Čas v sekundách kdy bude procmail
čekat na něco co momentálně není k
dispozici (paměť, fork, atd.); není-li
specifikováno, implicitní hodnota je 16 sekund. Viz
též: LOCKSLEEP.
- LINEBUF
- Délka interní řádkové
vyrovnávací paměti. Nelze nastavit
menší než 128. Délka
žádného řádku v
konfiguračním souboru by neměla
překročit $LINEBUF znaků před ani po
provedení substitucí. Pokud není
specifikováno, standard je 2048. Toto omezení
samozřejmě neplatí na zprávu samotnou;
ta může mít libovolné délky
řádků nebo může být i
binárním souborem. Viz též PROCMAIL_OVERFLOW.
- DELIVERED
- Pokud je nastavena na `yes', procmail bude
předstírat (MTA), že zpráva byla
doručena. Pokud při takovém nastavení nelze
zprávu doručit, zpráva bude navždy ztracena
(nebude odeslána na postmastera apod.).
- TRAP
- Při ukončení procmailu
(neplatí, pokud bylo způsobeno přijatým
signálem) se provede obsah této proměnné.
Kopie zprávy je k dispozici na standardním vstupu.
Jakýkoliv výstup vytvořený tímto
příkazem bude připojen do souboru $LOGFILE.
Možná použití TRAP-u: odstranění
dočasných souborů, na míru šité
výtahy zpráv, atd. Viz též: EXITCODE a
LOGABSTRACT.
- EXITCODE
- Implicitně je návratová hodnota
procmailu nula (úspěch), pokud
úspěšně doručil zprávu nebo byla
proměnná HOST špatně nastavena a na
příkazové řádce nebyly
žádné další konfigurační
soubory; jinak je vráceno selhání.
Ještě předtím ale procmail prozkoumá
hodnotu této proměnné. Pokud byla této
proměnné přiřazena kladná hodnota,
použije se jako návratová hodnota při
ukončení procmailu. Pokud je tato proměnná
nastavena, ale prázdná, procmail použije
návratovou hodnotu vrácenou programem TRAP Pokud tato
proměnná není nastavena, procmail ji nastaví
krátce před vyvoláním programu TRAP.
- LASTFOLDER
- Tuto proměnnou nastaví procmail, kdykoliv
doručí nějakou zprávu do složky nebo do
programu. Vždy obsahuje jméno souboru (nebo programu) kam
procmail doručil zprávu. Pokud byla zpráva
doručena do více složek najednou, bude $LASTFOLDER
obsahovat hardlinkovaná jména souborů
oddělěná mezerami.
- MATCH
- Procmail přiřadí této
proměnné hodnotu, kdykoliv má uložit text z
úspěšně porovnaného
regulárního výrazu. Obsahuje veškerý
text vyhovující regulárnímu výrazu za
speciálním znakem ` \/'.
- SHIFT
- Přiřazení kladné hodnoty
této proměnné má stejný efekt jako
příkaz `shift' v sh(1). Tento příkaz
má největší využití při
získání dalších argumentů
předaných procmailu, když je použit jako
generický filtr e-mailových zpráv.
- INCLUDERC
- Jméno konfiguračního souboru
(relativní vzhledem k aktuálnímu
adresáři), který bude zařazen do
zpracování, jako by byl součástí
aktuálního konfiguračního souboru.
Vnořování je povoleno a je limitováno pouze
systémovými zdroji (paměť a deskriptory
souborů). Protože nejsou prováděny
žádné kontroly přístupových
práv nebo vlastníka konfiguračního souboru,
měli by se uživatelé INCLUDERC ujistit,
že právo zapisovat do něj nebo do jeho
adresáře mají jen důvěryhodní
uživatelé. Přiřazení INCLUDERC
na příkazové řádce nemá
žádný efekt.
- SWITCHRC
- Určuje konfigurační soubor
(relativně k aktuálnímu adresáři), na
který se při zpracovávání
přejde. Pokud tento soubor neexistuje nebo se nejedná o
normální soubor či /dev/null, zapíše se
do logu chyba a zpracovávání bude pokračovat v
aktuálním konfiguračním souboru. V
opačném případě se
zpracovávání aktuálního
konfiguračního souboru ukončí a začne
se s určeným konfiguračním souborem.
Odnastavení (unsetting) SWITCHRC způsobí
ukončení zpracovávání
aktuálního konfiguračního souboru, jako kdyby
normálně skončil. Stejně jako u
INCLUDERC se ani zde neprovádí
žádné kontroly přístupových
práv a vlastníka konfiguračního souboru a
přiřazení na příkazové
řádce nemají žádný vliv.
- PROCMAIL_VERSION
- Číslo verze spuštěného
programu procmail.
- PROCMAIL_OVERFLOW
- Tato proměnná bude nastavena na
neprázdnou hodnotu pokud procmail zjistí
přetečení bufferu. Viz sekce CHYBY, kde je
uvedeno více o chování při výskytu
přetečení.
- COMSAT
- Implicitně je notifikace
comsat(8)/biff(1) zapnutá. Dá se vypnout
nastavením této proměnné na `no'.
Alternativně lze službu biff upravit nastavením
této proměnné buď na `služba@',
`@hostname' nebo `služba@hostname'. Není-li
specifikováno, použije se biff@localhost.
- DROPPRIVS
- Nastaví-li se na `yes', procmail `shodí'
všechna práva, kterých eventuálně mohl
nabýt (suid, sgid). Toto se hodí pouze v
případě, že chcete, aby se zbylá
část souboru /etc/procmailrc provedla jménem
příjemce.
Rozšířené regulární výrazy
The following tokens are known to both the procmail internal egrep and the standard egrep(1) (beware that some egrep implementations include other non-standard extensions; in particular, the repetition operator { is not supported by procmail's egrep):- ^
- Začátek řádku.
- $
- Konec řádku.
- .
- Jakýkoliv znak kromě konce
řádku.
- a*
- Posloupnost libovolného, i nulového
počtu áček.
- a+
- Posloupnost jednoho nebo více áček.
- a?
- Jedno nebo žádné a.
- [^-a-d]
- Jakýkoliv znak, který není
pomlčka, a, b, c, d nebo konec řádku.
- de|abc
- Buď posloupnost `de' nebo `abc'.
- (abc)*
- Žádný výskyt nebo
libovolný počet opakování posloupnosti `abc'.
- \.
- Jediná tečka; \ se používá k uvození všech znaků se zvláštním významem. Viz také použití $\ u proměnných.
- ^ nebo $
- Odpovídá novému řádku (u
víceřádkových porovnání).
- ^^
- Zakotví výraz na úplném
začátku porovnávané oblasti, resp. na
jejím úplném konci je-li tato kombinace nalezena na
konci výrazu.
- \< nebo \>
- Porovnání se shoduje se znakem před
anebo za slovem. Tyto speciální výrazy jsou
pouhým synonymem pro `[^a-zA-Z0-9_]', ale shoda nastane i pro znak
`nový řádek'. Jelikož tyto symboly se
shodují se skutečnými znaky, lze je
použít pouze k oddělení slov, nikoli pro
odlišení mezer mezi slovy.
- \/
- Rozděluje výraz na dvě
části. Všechno co se shoduje v pravé
části se přiřadí proměnné
MATCH.
PŘÍKLADY
Viz manuálová stránka procmailex(5).NÁSTRAHY
Akční řádek, který pokračuje na dalším řádku musí vždycky končit obráceným lomítkem, dokonce ani kdyby spouštěný shell nepotřeboval nebo nechtěl, aby obrácené lomítko takový řádek označovalo. Důvod spočívá v dvoufázovém procesu analýzy řádku (nejdřív procmail, potom shell (nebo také ne, v závislosti na SHELLMETAS)). Nedávejte na podmínkové řádky s regulárními výrazy žádné komentáře, protože celý řádek je kompletně předán internímu egrepu (kromě pokračovacích obrácených lomítek na konci řádku). Úvodní mezera na řádku na němž pokračuje regulární výraz je obvykle ignorována (takže můžete pokračování odsadit), ale nikoliv na pokračovacích podmínkových řádcích, které jsou vyhodnocovány podle pravidel sh(1) pro substituce uvnitř dvojitých závorek. Dávejte si pozor na zacyklení při provádění nezdravých věcí, jako třeba odeslání zprávy (forward) na svůj vlastní účet. Zacyklení může být přerušeno správným použitím LOCKTIMEOUT. Jakékoliv implicitní (standardní) hodnoty, které má procmail pro některé proměnné vždycky přepíší už definované hodnoty. Pokud chcete implicitní hodnoty s jistotou změnit, musíte nové hodnoty definovat v konfiguračním souboru, nebo jako parametr na příkazovém řádku. Soubor /etc/procmailrc nemůže změnit nastavení PATH v uživatelských konfiguračních souborech, protože když procmail projde soubor /etc/procmailrc, je tato hodnota je resetována. I když v této oblasti dojde v budoucnu ke zlepšení, jediným správným řešením je v současné době překompilování procmailu s požadovanou hodnotou. Proměnné nastavené uvnitř akce typu `|' spouštěné shellem si nezachovávají své hodnoty po ukončení předpisu jelikož jsou nastaveny v podřízeném shellu spuštěném procmailem. Chcete-li mít jistotu, že si proměnná podrží svou hodnotu, musíte provést přiřazení ještě před uvozujícím `|' předpisu. Pokud definujete v doručujícím předpisu příznak `h' nebo `b' a dojde ke shodě podmínky, pak, pokud jste nedefinovali zároveň příznak `c', tělo zprávy resp. záhlaví bude bez varování ztraceno.DALŠÍ INFORMACE
procmail(1), procmailsc(5), procmailex(5), sh(1), csh(1), mail(1), mailx(1), uucp(1), aliases(5), sendmail(8), egrep(1), regexp(5), grep(1), biff(1), comsat(8), lockfile(1), formail(1)CHYBY
[přibližně] Procmail je schopen sám o sobě provádět substituce proměnných pouze tohoto typu: $jméno, ${jméno}, ${jméno:-text}, ${jméno:+text}, ${jméno-text}, ${jméno+text}, $\jméno, $#, $n, $$, $?, $_, $- a $=; přičemž za $\name bude dosazen ekvivalent $jméno bez speciálních významů zvláštních znaků; za $_ bude dosazeno jméno aktuálního konfiguračního souboru, za $- $LASTFOLDER a $= bude obsahovat výsledek posledního předpisu. Výsledek substituce $\jméno navíc nebude rozdělen podle prázdných znaků. Když jsou použity volby -a nebo -m za $# se dosadí počet parametrů a za "$@" (uvozovky jsou povinné) se dosadí příslušné parametry. Ovšem pouze je-li předáván v seznamu parametrů nějakému programu a v tom případě je substituován pouze jeden výskyt "$@". Substituce proměnných neohraničené uvozovkami jsou vždycky rozděleny podle mozer, tabulátorů a znaků konce řádku; proměnná IFS se interně nepoužívá. Procmail nepodporuje substituci `~'. Při zpracovávání konfiguračního souboru se používá řádková vyrovnávací paměť (řádkový buffer) o délce $LINEBUF. Jakékoliv rozšíření zpracovávaného řádku při substitucích nad tento limit bude oříznuto a bude nastavena proměnná PROCMAIL_OVERFLOW. Pokud je řádek, na kterém došlo k přetečení podmínkový nebo akční řádek, bude vyhodnocen jako selhání a procmail bude pokračovat ve zpracovávání. Pokud je to přiřazení proměnné nebo počáteční řádek předpisu, ukončí procmail zpracovávání konfiguračního souboru. Pokud má globální semafor (zámek) relativní cestu, a aktuální adresář není ten, v němž byl semafor vytvořen, potom semafor nebude odstraněn, pokud procmail v tomto místě skončí (řešení: pro globální semafor používejte absolutní cestu). Pokud má konfigurační soubor relativní cestu a v okamžiku jeho prvního otevření obsahuje MAILDIR relativní cestu a pokud je procmail přinucen rozdvojit se a aktuální adresář byl změněn od doby, kdy byl konfigurační soubor otevřen, nebude se procmail moci rozdvojit (řešení: použít absolutní cestu k určení konfiguračního souboru nebo zajistit, aby MAILDIR obsahoval absolutní cestu, když je konfigurační soubor otevírán). Lokální semafor v předpisu, který otevírá neforkující vnořený blok nebude fungovat tak, jak čekáte. Při uložení obsahu standardního výstupu předpisu do proměnné bude odstraněn právě jeden koncový znak `nový řádek'. Some non-optimal and non-obvious regexps set MATCH to an incorrect value. The regexp can be made to work by removing one or more unneeded '*', '+', or '?' operators on the left-hand side of the \/ token.RŮZNÉ
Pokud regulární výraz obsahuje ` ^TO_', bude tento řetězec nahrazen výrazem ` (^((Original-)?(Resent-)?(To |Cc |Bcc) |(X-Envelope |Apparently(-Resent)?)-To) :(.*[^-a-zA-Z0-9_.])?)', což by mělo zachytit všechny možné specifikace adresáta obsahující určitou adresu. Pokud regulární výraz obsahuje ` ^TO', bude tento řetězec nahrazen výrazem ` (^((Original-)?(Resent-)?(To |Cc |Bcc) |(X-Envelope |Apparently(-Resent)?)-To) :(.*[^a-zA-Z])?)', což by mělo zachytit všechny možné specifikace adresáta obsahující určité slovo. Pokud regulární výraz obsahuje ` ^FROM_DAEMON', bude to nahrazeno výrazem [přibližně] ` (^(Mailing-List : |Precedence :.*(junk |bulk |list) |To : Multiple recipients of |(((Resent-)?(From |Sender) |X-Envelope-From) : |>?From )([^>]*[^(.%@a-z0-9])?(Post(ma?(st(e?r)? |n) |office) |(send)?Mail(er)? |daemon |m(mdf |ajordomo) |n?uucp |LIST(SERV |proc) |NETSERV |o(wner |ps) |r(e(quest |sponse) |oot) |b(ounce |bs\.smtp) |echo |mirror |s(erv(ices? |er) |mtp(error)? |ystem) |A(dmin(istrator)? |MMGR |utoanswer))(([^).! :a-z0-9][-_a-z0-9]*)?[%@>\t ][^<)]*(\(.*\).*)?)?$([^>] |$)))', což by mělo zachytit zprávy odeslané většinou démonů. [přibližně] Pokud regulární výraz obsahuje ` ^FROM_MAILER', bude to nahrazeno výrazem [přibližně] ` (^(((Resent-)?(From |Sender) |X-Envelope-From) : |>?From )([^>]*[^(.%@a-z0-9])?(Post(ma(st(er)? |n) |office) |(send)?Mail(er)? |daemon |mmdf |n?uucp |ops |r(esponse |oot) |(bbs\.)?smtp(error)? |s(erv(ices? |er) |ystem) |A(dmin(istrator)? |MMGR))(([^).! :a-z0-9][-_a-z0-9]*)?[%@>\t ][^<)]*(\(.*\).*)?)?$([^>] |$))' (ořezaná verze ` ^FROM_DAEMON'), což by mělo zachytit zprávy od většiny poštovních démonů. [přibližně] Pro přiřazení logických hodnot proměnným jako VERBOSE, DELIVERED nebo COMSAT procmail akceptuje jako logickou jedničku každý řetězec, který začíná: nenulovou hodnotou, slovem `on', `y', `t' nebo `e'. Nepravda (logická 0) je jakýkoliv řetězec začínající nulovou hodnotou, `off', `n', `f' nebo `d'. Pokud akční řádek předpisu specifikuje program, pak řádek skládající se z pouhé dvojice zpětné lomítko-nový řádek na jinak prázdném řádku bude převeden na znak nový řádek. Zpracování regulárních výrazů, zabudované v procmailu, nepodporuje pojmenované třídy znaků (named character classes).POZNÁMKY
Jelikož v konfiguračním souboru se všeobecně ignorují úvodní bílé znaky bez uvozovek, můžete je využít zcela dle své chuti k odsazování textu. Úvodní `|' na začátku akčního řádku, které specifikuje program nebo filtr se odřeže ještě před testováním řádku na přítomnost $SHELLMETAS. Soubory zahrnuté direktivou INCLUDERC a obsahující pouze přiřazení do proměnných mohou být sdíleny s sh. Současné chování přiřazení INCLUDERC a SWITCHRC na příkazovém řádku nemůže být zaručeno. V minulosti se již změnilo a v dalších verzích může být změněno znovu nebo úplně vypuštěno. Chcete-li opravdu komplikované zpracování, můžete zvážit dokonce rekurzivní volání procmailu. Za starých časů muselo být ':0' značící začátek nového předpisu změněno na ':n', kde 'n' představuje počet podmínek, které následují.AUTORI
Stephen R. van den BergPŘEKLAD
Překlad této příručky do španělštiny vytvořili Jindřich Vavruška <[email protected]> a Pavel Heimlich <[email protected]> Tento překlad je bezplatná dokumentace; Přečtěte si GNU General Public License Version 3 nebo novější ohledně podmínek autorských práv. Neexistuje ŽÁDNÁ ODPOVĚDNOST. Pokud narazíte na nějaké chyby v překladu této příručky, pošlete e-mail na adresu [email protected]BuGless |