Procmail

linux_pas V pre­doš­lej čas­ti sme si nas­ta­vi­li náš po­što­vý server na prí­jem a trie­de­nie po­šty z do­mé­no­vé­ho ko­ša. Uká­za­li sme si, ako nas­ta­viť prog­ram fet­chmail na vý­ber po­šty, a už vie­me, ako vy­tvá­rať alia­sy, pres­me­ro­vá­vať po­štu ale­bo za­chy­tá­vať po­štu pre neexis­tu­jú­ce­ho po­uží­va­te­ľa. To všet­ko sme ro­bi­li na stra­ne prog­ra­mu po­stfix. Aj keď je po­stfix veľ­mi dob­rý a sil­ný nás­troj, pred­sa len ne­má pred­pok­la­dy, ako jed­no­duc­ho vy­ko­ná­vať trie­de­nie po­dľa ur­či­tých za­da­ných kri­té­rií. Na to slú­žia iné, jed­noú­če­lo­vé prog­ra­my, kto­rým sa ho­vo­rí aj do­ru­čo­va­cie prog­ra­my, v an­glič­ti­ne Mail De­li­ve­ry Agent, jed­no­duc­ho MDA. Prík­la­dom ta­ké­ho agen­ta je aj prog­ram proc­mail. A to­mu sa te­raz bu­de­me ve­no­vať.

proc­mail
Proc­mail (mail pro­ces­sor and mail de­li­ve­ry agent) je prog­ram, kto­rý do­ká­že trie­diť pri­ja­tú po­štu po­dľa sta­no­ve­ných po­dmie­nok. Do­ká­že po­štu ko­pí­ro­vať, pre­po­sie­lať, ma­zať, trie­diť do rôz­nych prie­čin­kov po­dľa kri­té­rií, ako je nap­rík­lad po­dľa od­osie­la­te­ľa, sub­jek­tu, te­la sprá­vy a pod., od­osie­lať na anti­ví­ru­so­vú ale­bo anti­spa­mo­vú kon­tro­lu, a to bez zá­sa­hu po­uží­va­te­ľa. Do­kon­ca mô­že sprá­vu od­ov­zdať iné­mu prog­ra­mu či skrip­tu na ďal­šie spra­co­va­nie.

Proc­mail ne­do­ká­že po­štu vy­be­rať, pre­to mu mu­sí byť ne­ja­kým spô­so­bom dop­ra­ve­ná. A na to mô­že­me po­užiť už zná­my prog­ram fet­chmail.

Po­zri­me sa na ob­rá­zok č. 1.

obr.č.1- 25.jpg
Obr. 1

Prog­ram fet­chmail vy­zdvih­ne po­štu z do­mé­no­vé­ho ko­ša (ale­bo z nor­mál­nej po­što­vej schrán­ky), ulo­že­nej u po­sky­to­va­te­ľa po­što­vých slu­žieb, v na­šom prí­pa­de na server­i po­sky­to­va­tel.sk. Len­že ju neo­dov­zdá prog­ra­mu po­stfix (MTA), ako sme to ro­bi­li v pre­doš­lých čas­tiach, ale ju od­ov­zdá prog­ra­mu proc­mail. To do­siah­ne­me úp­ra­vou kon­fi­gu­rač­né­ho sú­bo­ru prog­ra­mu fet­chmail.

Keď na vstup prog­ra­mu proc­mail prí­de sprá­va, ten sa spus­tí a sprá­vu si pre­čí­ta až po pred­pos­led­ný znak (po­sled­ným zna­kom je znak EOF, naz­na­ču­jú­ci ko­niec sú­bo­ru). Od­de­lí hla­vič­ku (obál­ku) sprá­vy od te­la sprá­vy a po­tom, ak na prí­ka­zo­vom riad­ku v sys­té­me ne­bo­li za­da­né žiad­ne prí­ka­zo­vé ar­gu­men­ty, vy­hľa­dá sú­bor s náz­vom .proc­mailrc (aj s bod­kou!) v do­mov­skom ad­re­sá­ri po­uží­va­te­ľa – ad­re­sá­ta sprá­vy. V tom­to sú­bo­re sa nac­hád­za­jú prí­ka­zy, čo sa má s akou sprá­vou uro­biť (vy­svet­lí­me ďa­lej). Ak neexis­tu­je sú­bor .proc­mailrc ale­bo sa ne­naš­lo prís­luš­né kri­té­rium na ma­ni­pu­lá­ciu so sprá­vou, bu­de sprá­va ulo­že­ná do kla­sic­ké­ho po­što­vé­ho prie­čin­ka po­uží­va­te­ľa – ad­re­sá­ta. Ur­či­té nas­ta­ve­nia, plat­né pre všet­kých po­uží­va­te­ľov, mô­že­me nas­ta­viť aj v sú­bo­re /etc/proc­mailrc (už bez bod­ky).

Kon­fi­gu­rá­cia prog­ra­mu fet­chmail
Ako sme si už spo­me­nu­li, prog­ram proc­mail ne­vie vy­be­rať sprá­vy sám, to mu mu­sí niek­to sprá­vu do­ru­čiť. V na­šom prí­pa­de je to prog­ram fet­chmail. Up­ra­ví­me kon­fi­gu­rač­ný sú­bor .fet­chmailrc tak, ako je to na vý­pi­se č. 2.

po­ll mail.po­sky­to­va­tel.sk aka fir­ma.sk no dns no en­ve­lo­pe
pro­to­col PO­P3
user fixma password fi97m45 to * he­re
mda “/usr/bin/proc­mail –d %T”

Všim­ni­me si, že sme po­uži­li kon­fi­gu­rač­ný sú­bor z pre­doš­lej čas­ti se­riá­lu, len sme vy­nec­ha­li pa­ra­me­ter smtphost a dopl­ni­li sme ria­dok mda “/usr/bin/proc­mail –d %T”. Ten za­bez­pe­čí, že sprá­va bu­de po vy­bra­tí z do­mé­no­vé­ho ko­ša od­ov­zda­ná prog­ra­mu proc­mail.

Kon­fi­gu­rá­cia proc­mai­lu
Kon­fi­gu­rá­cia prog­ra­mu proc­mail sa vy­ko­ná­va v kon­fi­gu­rač­ných sú­bo­roch /etc/proc­mailrc ale­bo .proc­mailrc, ulo­že­ných v do­mov­ských ad­re­sá­roch jed­not­li­vých po­uží­va­te­ľov – prí­jem­cov po­šty. Kon­fi­gu­rač­ný sú­bor sa skla­dá z dvoch čas­tí. Na za­čiat­ku mô­žu (ale ne­mu­sia) byť na­de­fi­no­va­né rôz­ne pre­men­né pros­tre­dia. V dru­hej – hlav­nej čas­ti sa nac­hád­za­jú jed­not­li­vé kri­té­riá – pred­pi­sy pra­vi­diel. Kri­té­riá mô­žu ob­sa­ho­vať jed­no- ale­bo viac­riad­ko­vé re­gu­lár­ne vý­ra­zy. Kri­té­riá sú ra­de­né za se­bou a pr­vé kri­té­rium, v kto­rom sa náj­de zho­da s re­gu­lár­nym vý­ra­zom, ur­čí, čo sa so sprá­vou vy­ko­ná.

Exis­tu­jú dva dru­hy kri­té­rií:
  - do­ru­ču­jú­ce
  - ne­do­ru­ču­jú­ce

Ak je náj­de­ná zho­da v do­ru­ču­jú­com kri­té­riu, proc­mail bu­de po­va­žo­vať sprá­vu za do­ru­če­nú (ako­že ináč!) a po ús­peš­nom vy­ko­na­ní ak­cie pri da­nom kri­té­riu ukon­čí spra­cú­va­nie kon­fi­gu­rač­né­ho sú­bo­ru. Ak je náj­de­ná zho­da v ne­do­ru­ču­jú­com kri­té­riu, spra­cú­va­nie kon­fi­gu­rač­né­ho sú­bo­ru bu­de po­kra­čo­vať aj po vy­ko­na­ní ak­cie. Do­ru­ču­jú­ce kri­té­riá sú tie, kto­ré spô­so­bia, že hla­vič­ka ale­bo te­lo sprá­vy sú nap­rík­lad za­pí­sa­né do sú­bo­ru, po­uži­té iným prog­ra­mom ale­bo sú pres­me­ro­va­né na inú po­što­vú ad­re­su. Ne­do­ru­ču­jú­ce kri­té­riá sú tie, kto­ré spô­so­bia, že vý­stup ur­či­té­ho prog­ra­mu ale­bo filtra je zno­vu za­chy­te­ný proc­mai­lom, ale­bo kri­té­riá, kto­ré ot­vá­ra­jú vno­re­ný blok.

Proc­mai­lu mô­že­me po­ve­dať, že má spra­cú­vať do­ru­ču­jú­ce kri­té­rium ako ne­do­ru­ču­jú­ce, a to po­uži­tím príz­na­ku „c“ v hla­vič­ke kri­té­ria. To pri­nú­ti proc­mail vy­tvo­riť kó­piu prá­ve spra­cú­va­nej sprá­vy, a te­da sprá­va je do­ru­če­ná po­dľa kri­té­ria a zá­ro­veň sa s jej kó­piou po­kra­ču­je v spra­cú­va­ní kon­fi­gu­rač­né­ho sú­bo­ru.

Kri­té­riá
Kri­té­riá – pred­pi­sy sa za­čí­na­jú zna­kom : (dvoj­bod­ka), nas­le­do­va­ným nu­lou (nie veľ­ké O!), a ma­jú ten­to for­mát:

              :0 [príz­na­ky] [:[lo­kál­ny zá­mok]]
	
	

Dvoj­bod­ka za nu­lou sym­bo­li­zu­je po­uži­tie lo­kál­ne­ho zá­mku, prí­pad­ne aj s me­nom zá­mku. (V tej­to fá­ze to ber­te ako fakt, v jed­no­du­chých kri­té­riách po­uži­tie lo­kál­ne­ho zá­mku nie je po­treb­né, ale za­to bež­né...)

Príz­na­kom mô­že byť je­den z týc­hto naj­čas­tej­šie po­uží­va­ných zna­kov (tab. č. 3).

Príz­nak Opis
H spra­cú­va sa hla­vič­ka sprá­vy
B spra­cú­va sa te­lo sprá­vy
D za­pí­na roz­li­šo­va­nie ma­lých a veľ­kých pís­men
h hla­vič­ka sprá­vy sa po­šle na vstup rú­ry
b te­lo sprá­vy sa po­šle na vstup rú­ry
c vy­tvo­rí kó­piu spra­cú­va­nej sprá­vy
! ne­gá­cia po­dmien­ky
< otes­tu­je, či dĺžka sprá­vy je men­šia ako čís­lo
> otes­tu­je, či dĺžka sprá­vy je väč­šia ako čís­lo

Po­dmien­ka sa za­čí­na zna­kom * (hviez­dič­ka). Med­zi via­ce­rý­mi po­dmien­ka­mi v jed­nom kri­té­riu pla­tí lo­gic­ký sú­čin AND, čo zna­me­ná, že všet­ky po­dmien­ky kri­té­ria mu­sia byť spl­ne­né, aby doš­lo k ak­cii. Ak kri­té­rium neob­sa­hu­je ni­ja­kú po­dmien­ku, ak­cia bu­de vy­ko­na­ná vždy.

Ak­cia sa mô­že za­čí­nať jed­ným z nas­le­du­jú­cich zna­kov:
! – pres­me­ru­je po­štu na nas­le­du­jú­ce e-mai­lo­vé ad­re­sy
| – spus­tí iný prog­ram, kto­rý sprá­vu spra­cu­je
{ }– ozna­ču­je za­čia­tok a ko­niec vno­re­né­ho blo­ku
všet­ko os­tat­né sa po­va­žu­je za me­no po­što­vej ad­re­sy ale­bo me­no sú­bo­ru, prí­pad­ne ad­re­sá­ra

Prík­la­dy
Na lep­šie po­cho­pe­nie si te­raz uká­že­me pár prík­la­dov kon­fi­gu­rač­né­ho sú­bo­ru.

a) Pres­me­ro­va­nie všet­kých mai­lov na inú ad­re­su

:O H:
* ^To:.*mior@fir­ma.sk
! inaad­re­sa@ina­fir­ma.sk

Vy­ze­rá to straš­ne, však? No ne­boj­te sa, o chví­ľu sa to­mu nau­čí­me po­ro­zu­mieť. Ten­to zá­pis je vlas­tne kri­té­riom pre do­ru­če­nie sprá­vy. Kri­té­rium ur­ču­je, že sa bu­de spra­cú­vať hla­vič­ka sprá­vy (H). Dru­hý ria­dok je po­dmien­ka – ak sa po preh­ľa­da­ní hla­vič­ky v po­li ad­re­sá­ta (To:) bu­de nac­hád­zať na­ša ad­re­sa mior@fir­ma.sk, pris­tú­pi sa k vy­ko­na­niu ak­cie – tá­to sprá­va sa od­oš­le na inú mai­lo­vú ad­re­su inaad­re­sa@ina­fir­ma.sk. Ide v po­dsta­te o kla­sic­ké pres­me­ro­va­nie, ako sme to mi­nu­le uro­bi­li v sú­bo­re .forward!

b) Od­osie­la­nie kó­pie sprá­vy na inú ad­re­su

:O Hc:
* ^To:.*mior@fir­ma.sk
! inaad­re­sa@ina­fir­ma.sk

Pri­da­ním príz­na­ku c na za­čiat­ku de­fi­ní­cie kri­té­ria do­siah­ne­me to­ho, že sa sprá­va ulo­ží do náš­ho po­što­vé­ho prie­čin­ka a zá­ro­veň sa jej kó­pia od­oš­le na inaad­re­sa@ina­fir­ma.sk. Roz­diel je zjav­ný – v pred­chád­za­jú­com prík­la­de iš­lo o pres­me­ro­va­nie (forwar­ding), te­da v na­šom prie­čin­ku sa neu­lo­ži­la žiad­na sprá­va, le­bo bo­la pre­pos­la­ná. V tom­to prík­la­de bu­de­me mať aj sprá­vu.

c) Trie­de­nie po­dľa pred­me­tu sprá­vy na inú ad­re­su

:O H:
* ^Sub­ject:.*error
! 0903123456@sms.sk

Ten­to prík­lad uka­zu­je, že ak sa v hla­vič­ke sprá­vy v po­li Sub­ject (pred­met) nac­hád­za slo­vo error, ce­lá sprá­va bu­de od­os­la­ná ne­ja­kej SMS brá­ne, kto­rá do­ru­čí tú­to sprá­vu ako SMS-ku na náš mo­bil­ný te­le­fón. Tak­to mô­že­me byť in­for­mo­va­ní o sta­ve náš­ho server­a a po­dob­ne.

d) Trie­de­nie po­dľa pred­me­tu sprá­vy do iné­ho prie­čin­ka

:O H:
* ^Sub­ject:.*SPAM
~/spam

V prí­pa­de, že po­uží­va­me pro­to­kol IMAP, ten­to prí­kaz bu­de trie­diť po­štu tak, že ak sa v pred­me­te sprá­vy bu­de nac­hád­zať slo­vo SPAM, čo zvyk­nú ro­biť anti­spa­mo­vé prog­ra­my, ce­lá sprá­va sa pre­su­nie do prie­čin­ka spam.

e) Trie­de­nie po­dľa ob­sa­hu sprá­vy do iné­ho prie­čin­ka

:O B:
* hlá­se­nie
~/hla­se­nie

Ten­to prík­lad kon­tro­lu­je te­lo sprá­vy (B). V prí­pa­de, že po­uží­va­me pro­to­kol IMAP, ten­to prí­kaz bu­de trie­diť po­štu tak, že ak sa v te­le sprá­vy bu­de nac­hád­zať slo­vo hla­se­nie, ce­lá sprá­va sa pre­su­nie do prie­čin­ka hla­se­nie. A to rov­no na server­i, te­da ne­bu­de­me to mu­sieť ro­biť my po­mo­cou klien­tske­ho prog­ra­mu MUA!

f) Trie­de­nie po­dľa dvoch po­dmie­nok v jed­nom kri­té­riu

:O H:
* ^From: .*ju­raj
* ^Sub­ject:.*li­nux
~/li­nuxod­ju­ra­ja

Ten­to prík­lad kon­tro­lu­je hla­vič­ku sprá­vy. Ak sa v po­li od­osie­la­te­ľa sprá­vy (From) náj­de slo­vo ju­raj a ZÁRO­VEŇ sa v po­li pred­me­tu (Sub­ject) nac­hád­za slo­vo li­nux, bu­de sprá­va ulo­že­ná do prie­čin­ka li­nuxod­ju­ra­ja.

g) Trie­de­nie po­dľa veľ­kos­ti sprá­vy

:O 
* > 100000
! kos@do­ma.sk

V tom­to prí­pa­de bu­dú všet­ky sprá­vy väč­šie ako 100 kB pre­po­sie­la­né na ad­re­su kos@do­ma.sk

h) Trie­de­nie s vno­re­ným blo­kom

:O
* ^From: .*ju­raj
{
    :0 c
    ! mior@do­ma.sk

    :0
    ~/li­nux
 }

V tom­to prí­pa­de sprá­vy od Ju­ra­ja bu­dú ulo­že­né do prie­čin­ka li­nux a ich kó­pie za­sla­né na ad­re­su mior@do­ma.sk. Všim­ni­me si, že vo vno­re­nom blo­ku, kto­rý je uve­de­ný a ukon­če­ný zlo­že­ný­mi zá­tvor­ka­mi { a }, sa zno­va po­uží­va kri­té­rium, te­da za­čí­na sa znak­mi :0!

Is­to nás na zá­kla­de týc­hto nie­koľ­kých prík­la­dov na­pad­nú nes­ko­na­lé mož­nos­ti vy­uži­tia. Pre­to tre­ba len skú­šať a skú­šať.... Mu­sí­me si pri­po­me­núť, že kon­fi­gu­rač­ný sú­bor proc­mailrc ale­bo .proc­mailrc mô­že ob­sa­ho­vať (a spra­vid­la pri zlo­ži­tej­ších trie­de­niach aj ob­sa­hu­je) aj viac kri­té­rií, za­pí­sa­ných pod se­bou.

Iný va­riant
Pre ob­jek­tív­nosť tre­ba uviesť, že proc­mail nie je je­di­ný prog­ram svoj­ho dru­hu. Má váž­ne­ho kon­ku­ren­ta, kto­rý sa na­zý­va maildrop. Ich fi­lo­zo­fia a prin­cíp čin­nos­ti sú to­tož­né, lí­šia sa však v zá­pi­se kon­fi­gu­rač­ných sú­bo­rov. Keď­že proc­mail je roz­ší­re­nej­ší, po­uží­vam ten.

Naš­tu­duj­te si proc­mail! Žiaľ, veľ­mi jed­no­duc­hú „kuc­hár­ku“, ako som ju tu opí­sal, na je­ho inter­ne­to­vej strán­ke ne­náj­de­te. Ja som ju zbie­ral po čriep­koch po ce­lom inter­ne­te. Na na­šu prá­cu spo­čiat­ku bu­de úpl­ne po­sta­čo­vať. Os­tat­né in­for­má­cie hľa­daj­me pria­mo v po­čí­ta­či... Kde? No pred­sa man proc­mail, man proc­mailrc a man proc­mai­lex.

Čos­ko­ro prog­ram proc­mail vy­uži­je­me na spo­je­nie s anti­ví­ru­so­vý­mi a anti­spa­mo­vý­mi prog­ra­ma­mi. Sa­mi dob­re vie­me, že efek­tív­na a bez­peč­ná poš­ta sa bez týc­hto dvoch sú­čas­tí pre­vád­zko­vať ne­dá. Zos­tá­va nám preb­rať po­sled­ný va­riant s pria­mym do­ru­čo­va­ním po­šty. Aj tu si uká­že­me spo­je­nie s proc­mai­lom. Ale to už na­bu­dú­ce.

Ďal­šie čas­ti >>

Zdroj: Infoware 9/2005



Ohodnoťte článok:
   
 

24 hodín

týždeň

mesiac

Najnovšie články

Li­nux prak­tic­ky ako server úvod
Linux ako server je pomerne zložitá technológia. Jej výhodou je určitá modularita, keď sa nemusí nastaviť celý server naraz, ale postupne. čítať »
 
Syn­chro­ni­zá­cia ča­su v Li­nuxe
V predchádzajúcich dvoch častiach sme si ukázali, že Linux a všeobecne open source softvér sa nenachádza iba v serveroch a počítačových sieťach, ale aj v iných zariadeniach bežnej domácej potreby a v oblasti hobby. čítať »
 
Za­ria­de­nia za­lo­že­né na Li­nuxe
V predchádzajúcej časti sme si spomenuli definície nie - ktorých pojmov z oblasti nášho záujmu, teda Linuxu. Vysvetlili sme si, čo je to Open Source, Public Domain, proprietárny softvér a GNU GPL. Tentoraz ukážeme, ako sa tieto pojmy využívajú v praxi. čítať »
 
Po­jmy z ob­las­ti
Tentoraz na chvíľu trochu odbočíme od bezpečnosti Linuxu a jeho siete. V tejto neštandardnej časti seriálu sa mu budeme venovať len okrajovo. čítať »
 
Bez­peč­nosť bez­drô­to­vých sie­tí II.
V predchádzajúcej časti sme sa začali zaoberať bezpečnosťou bezdrôtových sietí. Poukázali sme na rôzne faktory zneužitia siete, podstatu rizika a vysvetlili sme základné prvky bezpečnosti. čítať »
 
Bez­peč­nosť bez­drô­to­vých sie­tí I.
V predchádzajúcich častiach sme sa venovali bezpečnosti linuxového servera. Riešili sme firewall, bezpečnosť prístupu na internet, zaoberali sme sa demilitarizovanou zónou a podobne. čítať »
 
Údr­žba lo­gov – kon­fi­gu­rá­cia log­ro­ta­te
V predchádzajúcej časti sme sa venovali rotácii logov. Vysvetlili sme princíp ukladania logov, spôsob, ako sa rotujú, a uviedli sme niečo o tom, čo a ako treba nastaviť čítať »
 
Údr­žba lo­gov – ro­tá­cia
V predošlej časti sme sa zaoberali spôsobom logovania informácií na iný alebo vzdialený počítač a ukázali sme, ako riešiť problém s logovaním uzavretých procesov pomocou chroot. čítať »
 
 
 
  Zdieľaj cez Facebook Zdieľaj cez Google+ Zdieľaj cez Twitter Zdieľaj cez LinkedIn Správy z RSS Správy na smartfóne Správy cez newsletter