Čo je procmail?

Procmail slúži na spracovanie príchodzej pošty. Na FI nie je nutné na jeho fungovanie volanie pomocou súboru .forward, ale stačí existencia konfiguračného súboru .procmailrc. Program procmail sa spustí pre každú správu a podľa pravidiel, ktoré nájde v uvedenom konfiguračnom súbore, vykoná akciu príslušiacu danému pravidlu. Vie napríklad správu uložiť do zadaného mailboxu alebo poslať správu externému programu.

.procmailrc

Súbor .procmailrc sa musí nachádzať v domovskom adresári. Skladá sa z pravidiel, ktoré majú 2 časti. Prvá časť popisuje správu, pre ktorú sa má dané pravidlo uplatniť a druhá je samotná akcia - teda čo robiť so správou, ktorá pravidlu vyhovuje. Napríklad:

:0
* ^From.*peter
peterbox

Toto pravidlo uloží každú správu prichádzajúcu z adresy, ktorá obsahuje podreťazec peter do mailboxu "peterbox". Všetky cesty sú relatívne k adresáru nastavenému v premennej MAILBOX (na FI domovský adresár). Ak chcete čítat poštu cez IMAP, ktorý na FI hľadá mailboxy v adresári mail/, pridajte na začiatok súboru .procmailrc riadok

MAILDIR=$HOME/mail

Pravidlo vždy začína riadkom, kde prvým znakom je ":" a za ním nasleduje zoznam flagov, ktoré popisujú spracovanie správy, teda napríklad či sa má okrem hlavičiek aj kontrolovať telo správy, či sa má správa po spracovaní akciou preposlať ďalším pravidlám a podobne (detaily viď manuálová stránka procmailrc).

V uvedenom príklade teda prvý riadok začína pravidlo. (Číslo 0 je historický pozostatok a nemá žiadnu funkciu, ale je súčasťou začiatku pravidla a treba ho tam nechať.) Neuvedenie žiadnych flagov znamená, že očakávame defaultné chovanie (z toho je nadoležitejšie to, že sa kontrolujú iba hlavičky správy a nie telo). Riadok 2 je podmienka, ktorá popisuje pre ktoré správy pravidlo platí. Každá podmienka sa nachádza na jednom riadku a začína znakom "*" a všetko za ním je interpretované ako regulárný výraz (POSIX 1003.2 RE) kompatibilný s rozšírenými regulárnymi výrazmi programu egrep (viď manuálová stranka egrep a regex). A konečne tretí riadok je akcia. Akcia je vždy jeden riadok na konci pravidla. V tomto prípade to znamená, že správa sa uloží do mailboxu peterbox.

Modifikácia predchádzajúceho jednoduchého príkladu je pravidlo pre procmail, ktoré všetku príchádzajúcu poštu uloží do mailboxu myspool:

:0
myspool
Komplikovanejší príklad:
:0 c
* ^From.*peter
* ^Subject:.*compilers
! william@somewhere.edu
 	
:0
* ^Subject:.*perl compilers
perlcomp

Tento príklad má dve pravidlá. Na riadku 1 sa nachádza flag "c", ktorý hovorí, že správa neskončí u tohoto pravidla, ale jej kópia sa pošle na ďalšie spracovanie. Pravidlo teda pre všetky správy od uživateľa peter so subjectom, ktorý obsahuje podretazec compilers vykoná akciu na riadku 4, to znamená prepošle správu na adresu william@somewhere.edu. Druhé pravidlo uloží všetky správy týkajúce sa kompilátorov Perlu do mailboxu perlcomp.