Erinevus lehekülje "Procmail" redaktsioonide vahel

Allikas: Kuutõrvaja
(Procmail)
(Procmail)
12. rida: 12. rida:
 
või
 
või
  
  "|IFS=' '&&exec /usr/local/bin/procmail -f-||exit 75
+
  "|IFS=' '&&exec /usr/local/bin/procmail -f-||exit 75"
  
 
Võib ka otse alias faili kirjutada stiilis
 
Võib ka otse alias faili kirjutada stiilis

Redaktsioon: 23. veebruar 2009, kell 13:55


Procmail

Procmaili kasutatakse postimasinasse tulnud kirjade kasutajate vahel laialijaotamiseks. Näiteks vaikimisi lisatakse kasutajale priit saabunud e-post juurde faili /var/spool/mail/priit, millele vastab Pine'i kirjakast INBOX.

Kasutajal on võimalik häälestada Procmail nii, et talle saabunud e-post salvestatakse teatud tunnuste alusel kasutaja postikataloogi erinevatesse failidesse. Postikataloogi faile käsitleb Pine kirjakastidena. Lisaks on võimalik käivitada konfiguratsioonis näidatud tingimustel programme, näiteks selleks, et saabunud oluline post edasi saata mobiiltelefonile teatena.

Kui kasutatavas süsteemis Procmail ei ole kohalik meiler, siis saab kasutaja seda enda jaoks käivitada, kirjutades faili ~/.forward näiteks rea

| exec /usr/local/bin/procmail

või

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

Võib ka otse alias faili kirjutada stiilis

ants:            "|/usr/local/bin/procmail -m /etc/mail/reeglid-aadressile"

Kasutaja Procmaili konfiguratsioonifail

Konfiguratsioonifailis ~/.procmailrc on kirjas reeglid, mille järgi saabuva e-postiga tegeldakse. Reegleid kirjutatakse järgmise süntaksi alusel

0: [ võtmed ]
* tingimus
käsu rida

Tingumus esitatakse regulaaravaldisena, milles saab kasutada laiendatud metasümbolite hulka.

Toome näiteks ühe reegli ja selgitame

:0 HB
* Z|zoo
ZOO

Reegli algust märgib :0, mille järele kirjutatakse võtmed. Tingimust alustab tärn, millele järgneb regulaaravaldis. 'Z|zoo' tähendab, et reegel rakendub neile kirjadele, mille sisus (B) või päises (H) leidub regulaaravaldisega klappiv rida. Antud juhul klapivad stringe 'Zoo' või 'zoo' sisaldavad read. Käsu reale kirjutatud stringi tõlgendatakse faili nimena, kuhu kiri salvestatakse. Antud juhul faili ZOO.

Konfiguratsioonifailis võib esitada mitmeid reegleid, mida kontrollitakse järgemisi. Tegutsetakse vastavalt esimesele sobivale, ignoreerides järgnevaid. Konfiguratsioonifaili alguses saab defineerida mõned spetsiifilised keskkonnamuutujad:

MAILDIR=$HOME/mail
DEFAULT=$MAILDIR/allumatud
LOGFILE=$MAILDIR/logi
MAILDIR - kasutaja postikataloog 
DEFAULT - fail, kuhu salvestakse kirjad, millele ühtegi reeglit ei rakendunud 
LOGFILE - veateated Procmaililt või programmidelt, mille Procmail käivitas 

Kirjade jagamine failidesse

Esitame ühe tervikliku näite, kuidas sorteerida saabunud kirju. Failidesse paigutamine toimub Subjecti ja Senderi rea alusel. Kirjad, millele reeglid ei rakendu, salvestatakse faili allumatud ja logi faili logi. Vaikimisi kasutavad reeglid kirja päist.

MAILDIR=$HOME/mail
DEFAULT=$MAILDIR/allumatud
LOGFILE=$MAILDIR/logi

:0
* ^Subject.*\[ZOO
ZOO

:0
* ^Subject.*\[linux\]
LINUX

:0
* ^Sender.*owner-zoo-chat
ZOO-CHAT

Spämmitõrje nagu amavisd-clamav lisab vastavalt kirja päisesse enda antud skoori, selle alusel procmailiga filtreerimine käiks järgnevalt.

:0:
* ^X-Spam-Level: \*\*\*
/home/kasutaja/REOSTUS

:0:
! kasutaja

Faili REOSTUS asemel võib muidugi ka otse /dev/null suunata

Programmi käivitamine

Reegli käsu real saab näidata toru järel üksteisest semikooloniga eraldatud programmide nimed, mis tuleb käivitada reegli rakendumisel. Esimese programmi sisendisse suunatakse kõnealune e-kiri. Näiteks selline reegel riputab presidendilt tulnud e-kirja veebi üles

:0
* ^From.*president
| sed -e '$r /home/priit/algus' -e '1,/^$/d' -e '$r /home/imre/lopp' > \
~/public_html/presidendilt.html; chmod 755 ~/public_html/presidendilt.html

Failides algus ja lopp sisalduvad vastavalt HTML dokumendi alguses ja lõpus olema peavad käsud. Kaalutud kirjade jaotamine

Procmail võimaldab anda kirjale punkte vastavalt sellele, mis kirjas sisaldub. Kui punktide summa ehk skoor on positiivne, siis rakendatakse reeglit.

Punkte antakse geomeetrilise jada n esimese liikme summa valemi alusel

                         n
          n   k-1        x - 1
S  = w * Sum x    = w * -------
 n       k=1             x - 1

Näiteks kolme esimese liikme summa

S  = w + w * x + w * x * x
 3

Kusjuures kogu jada summa arvutatakse sellise valemi järgi

       w
S = -------
     1 - x

w - jada esimene liige x - jada tegur

Kogu jada summa on vajalik maksimaalse võimaliku punktide arvu leidmiseks, mida üks kaalurida saab anda, kui tegur on väiksem ühest.

Näiteks sellise reegli puhul (esimese rea -1000 on w ja 0 on x)

:0 B
* -1000^0
*   100^1     N|normaalne
*   600^0.75  I|ilus
*  1000^0.5   V|vapustav
*  -800^2     P|paha
HeadUudised

saab selline kiri

Tere Priit, 

Kas pingviini ikka läheb? Meil on siin Rica's
suht normaalne ilm. Ilus isegi.
Jõuan koormaga piirile täna õhtul, ilus?
Vapustavalt hästi on läinud seni.

Mart

punkte selliselt Algul saab kätte esimese rea eest 1 000, kuna tühi regulaaravaldis klapib kõigega. Kuna tegur on 0, siis see rida rohkem punkte skoori ei lisa. Iga "normaalne" annab 100 punkti. Esimene "ilus" lisab skoori 600 punkti, teine 600 x 0.75, kolmas lisaks 600 x 0.75 x 0.75 jne. Siiski, see rida ei saa lisada üle 2 400 punkti. Meie puhul lisab ta 1 000 punkti. "vapustav" lisab 1 000 punkti. "paha" ei lisa midagi.

Kiri salvestatakse faili HeadUudised, kuna ta sai punkte kokku 1 100.

skoor = -1000 + 100 + 600 + 600 * 0.75 + 1000 = 1100

Kasulikud lisamaterjalid

Procmaili veebikoht
Regulaaravaldised 

© EENet 2000