Provided by:
manpages-fi_0.2-2_all 
NIMI
procmail - automaattinen sähköpostin käsittelijä
YLEISKATSAUS
procmail [-ptoY] [-f keneltä] [parametri=arvo | ohjetiedosto] ...
procmail [-toY] [-f keneltä] [-a argumentti] -d vastaanottaja ...
procmail [-ptY] -m [parametri=arvo] ... ohjetiedosto
[argumentti] ...
procmail -v
KUVAUS
Päästäksesi suoraan asiaan, katso MERKINNÄT manuaalitiedoston lopussa.
Yleensä Procmail käynnistetään automaattisesti tiedoston .forward
kautta heti, kun sähköposti saapuu. Vaihtoehtoisesti, jos toiminnan
asentaa systeemin ylläpitäjä, se voidaan käynnistää heti sähköpostin
välittäjäohjelmasta. Käynnistyessään ohjelma asettaa joitain
ympäristömuuttujia oletusarvoihinsa, lukee sähköpostiviestin
vakiosyötteestä tiedoston loppumerkkiin saakka, erottaa viestinrungon
sen otsikkotiedoista ja lopulta, jos mitään komentoriviargumentteja ei
ole annettu, etsii tiedostoa nimeltään $HOME/.procmailrc. Tässä
tiedostossa olevien käsittelyohjeiden mukaan juuri saapunut
sähköpostiviesti mm. siirretään oikeaan kansioon. Jos ohjetiedostoa ei
löydy tai ohjetiedoston käsittely epäonnistuu, procmail tallettaa
viestin systeemin oletuspostilaatikkoon.
Jos ohjetiedostoja eikä optiota -p ole asetettu komentorivillä,
procmail käy läpi ennen tiedoston $HOME/.procmailrc lukemista komennot
tiedostosta /etc/procmailrc (jos se on olemassa). Tiedoston
/etc/procmailrc luonnissa täytyy olla varovainen, sillä olosuhteiden
sen salliessa se ajetaan pääkäyttäjän (root) oikeuksilla (tietenkin
päin vastoin kuin tiedosto $HOME/.procmailrc).
Jos procmail ajetaan pääkäyttäjän oikeuksilla, procmailia voidaan
käyttää toiminnallisesti kehittyneenä, taaksepäin yhteensopivana
sähköpostin välittäjäohjelmana.
Procmailia voidaan käyttää myöskin yleiskäyttöisenä sähköpostin
suodattimena, eli on pyritty huolehtimaan siitä, että se voidaan
käynnistää erityisenä sendmailin konfiguraatiosääntönä.
Ohjetiedoston muotoa kuvataan yksityiskohtaisesti procmailrc(5)
-manuaalitiedostossa.
Arvotettua pisteytystekniikkaa kuvataan yksityiskohtaisesti
procmailsc(5) -manuaalitiedostossa.
Esimerkkejä ohjetiedoston muodostamiseen voi katsoa procmailex(5)
-manuaalisivuilta.
Signaalit
TERMINATE Keskeytä toiminta ja ohjaa sähköpostiviesti uudelleen
jonoon.
HANGUP Keskeytä toiminto ja palauta viesti takaisin lähettäjälle.
INTERRUPT Keskeytä toiminto ja palauta viesti takaisin lähettäjälle.
QUIT Keskeytä toiminto ja hukkaa viesti äänettömästi.
ALARM Pidä tauko ajossa (katso TIMEOUT).
USR1 Sama kuin VERBOSE=off.
USR2 Sama kuin VERBOSE=on.
OPTIOT
-v Procmail tulostaa versionumeronsa, näyttää käännösaikaisen
konfiguraationsa ja lopettaa.
-p Säilytä kaikki tieto ajoa edeltävästä ympäristöstä. Tavallisesti
procmail tyhjentää ympäristön käynnistyessään, paitsi
aikavyöhykeasetukset. Kuitenkin joka tapauksessa: kaikki
oletusarvot kumoavat olemassaolevien ympäristömuuttujien
vaikutuksen, esim. procmail ei lainkaan huomioi mitään etukäteen
määriteltyjä ympäristömuuttujia, vaan iloisesti korvaa ne omilla
oletuksillaan. Listan procmailin valmiiksi asettamista
ympäristömuuttujista näet tiedoston procmailrc(5)
manuaalisivuilla. Jos sekä -p että -m on annettu komentorivillä,
näitä valmiiksi asetettuja ympäristömuuttujia ovat vain LOGNAME,
HOME, SHELL, ORGMAIL ja MAILDIR.
-t Aseta procmail epäonnistumaan mahdollisimman pehmeästi, eli jos
procmail ei voi jakaa sähköpostiviestiä mihinkään antamaasi
määränpäähän, postia ei palauteta lähettäjälle, vaan se palaa
sähköpostijonoon. Seuraava jakeluyritys tehdään sitten joskus
hamassa tulevaisuudessa.
-f keneltä
Panee procmailin muuttamaan alussa olevan ‘From ’-rivillä olevan
lähettäjänimen nimeksi keneltä (-f:n sijaan voisi käyttää
vaihtoehtoista, mutta vanhentunutta optiota -r). Jos keneltä
muodostuu vain yksinkertaisesti viivasta ‘-’, procmail päivittää
vain ‘From ’-rivillä olevan aikamerkinnän (jos se löytyy, muussa
tapauksessa se tuottaa uuden).
-o Sen sijaan että sallittaisiin kuka tahansa tuottamaan ’From
’-rivejä, kumoa tekaistut nimet.
-Y Oleta perinteinen Berkeleyn postilaatikkomuoto, jätä huomiotta
kaikki Content-Length: -kentät.
-a argumentti
Tämä asettaa $1:n muotoon argumentti. Sen avulla voidaan välittää
lisätietoa procmailille. Näin tehdään tyypillisesti välitettäessä
muodon $@x avulla tietoa sendmailin sähköpostinvälittäjälle.
-d vastaanottaja ...
Tämä käynnistää eksplisiittisen jakelutilan, posti välitetään
paikalliselle käyttäjälle vastaanottaja. Tämä tietenkin on
mahdollista vain, jos procmaililla on pääkäyttäjän oikeudet (tai
jos procmailia jo ajetaan vastaanottajan euid:lla ja egid:lla).
Procmail muuttaa uid:tään aiotuille vastaanottajille ja lukee vain
vastaanottajan $HOME/.procmailrc-tiedoston (jos se on olemassa,
muutoin jakelu tapahtuu samoin kuin tavallisen sähköpostin
jakelu). Tämä optio ei sovi yhteen option -p kanssa.
-m Muuttaa procmailin yleiskäyttöiseksi sähköpostisuodattimeksi.
Tässä tilassa yksi ohjetiedosto täytyy määrittää komentorivillä.
Ohjetiedoston jälkeen procmail hyväksyy rajoittamattoman määrän
argumentteja. Jos ohjetiedosto on absoluuttinen polku alkaen
hakemistosta /etc/procmailrcs/ ilman viittauksia takaisinpäin (eli
yläpuolella oleviin hakemistoihin ei voi viitata), procmail
muuttaa käyttäjäid:nsä ohjetiedoston (tai symbolisen linkin)
omistajan uid:ksi. Tämä tapahtuu siis vain, jos mitään
turvallisuusrikkomuuksia ei löydy. Tämän option käyttöesimerkkejä
löytyy allaolevasta kappaleesta ESIMERKKEJÄ.
ARGUMENTIT
Mitä tahansa argumenttia, jossa on ’=’, pidetään
ympäristömuuttujamäärittelynä. Ne kaikki asetetaan sen jälkeen, kun
oletusarvot on annettu ja ennen kuin avataan ensimmäinen ohjetiedosto.
Mitkä tahansa muut argumentit oletetaan ohjetiedostojen poluiksi. (Joko
absoluuttisiksi, tai jos ne alkavat merkeillä ’./’, lähtien nykyisestä
hakemistosta, tai muutoin miksi tahansa muuksi $HOME:sta lähteväksi
hakemistoksi, jollei optiota -m ole asetettu. Jälkimmäisessä
tapauksessa kaikki suhteelliset polut lähtevät nykyisestä
hakemistosta.) Procmail aloittaa ensimmäisestä komentoriviltä
löytämästään ohjetiedostosta. Jälkimmäiset käydään läpi vain, jos
edellisissä on väärä HOST-direktiivi, tai siinä tapauksessa, että sitä
ei ole lainkaan.
Jos yhtäkään ohjetiedostoa ei anneta, ohjelma etsii tiedostoa
$HOME/.procmailrc. Jos tätäkään ei löydetä, käsittely jatkuu
ympäristömuuttujien oletusasetusten ja komentorivimääritysten mukaan.
ESIMERKKEJÄ
Ohjetiedoston ohjeisiin voi katsoa esimerkkejä manuaalisivulta
procmailex(5). Pieni näyte ohjetiedostoksi löytyy allaolevasta
kappaleesta MERKINNÄT.
Hyppää vapaasti yli loput tästä ESIMERKKEJÄ-kappaleesta, jollet ole
ylläpitäjä, jolla on jonkin verran tietoa sendmail.cf:n syntaksista.
Optiota -m käytetään yleensä, kun procmailia kutsutaan sendmailin
konfiguraatiotiedostosta sendmail.cf. Tehdäksesi tämän on kätevää luoda
ylimääräinen ’procmail’ postinvälittäjä sendmail.cf-tiedostossa (jo
siellä mahdollisesti olevan paikallisen procmailin käynnistävän
postinvälittäjän lisäksi). Luodaksesi tällaisen postinvälittäjän, käytä
esim. seuraavaa riviä:
Mprocmail, P=/usr/bin/procmail, F=mSDFMhun, S=11, R=21,
A=procmail -m $h $f $u
Tämä mahdollistaa seuraavanlaisten konfiguraatiosääntöjen käytön
(todennäköisimmin sääntöjoukossa 0) postin suodatukseen procmailin
kautta (huomaa sääntöä jatkavan rivin alussa oleva tabulaattori ja
tabulaattori, joka erottaa kommentit):
R$*<@jossain.muualla>$*
$#procmail $@/etc/procmailrcs/jossain.rc $:$1@jossain.muualla.procmail$2
R$*<@$*.procmail>$*
$1<@$2>$3 Jo suodatettu, vie takaisin
Ja /etc/procmailrcs/jossain.rc voisi näyttää suunnilleen seuraavalta:
:0 # hylkää kaikki roskaposti
* ^Subject:.*junk
/dev/null
:0 # ota mukaan kaikki muu posti
! -oi -f "$@"
Ole tarkkana, kun lähetät postia tiedoston /etc/procmailrcs/jossain.rc
kautta - jos lähetät postia osoitteisiin, jotka taas sopivat
ensimmäiseen sääntöön, voit vahingossa luoda loppumattoman
postisilmukan.
TIEDOSTOT
/etc/passwd asettaa oletukset vastaanottajaa koskeviin
ympäristömuuttujiin LOGNAME, HOME ja SHELL
/var/spool/mail/$LOGNAME
systeemin postilaatikko; sekä systeemin
postilaatikko että sen sijaintihakemisto luodaan
aina, kun procmail käynnistyy ja jompi kumpi
näistä ei ole olemassa
/etc/procmailrc ensin läpikäytävä koko systeemin kattava
ohjetiedosto
/etc/procmailrcs/ polku ohjetiedostoille, joissa tarvitaan
erityisiä käyttöoikeuksia
$HOME/.procmailrc oletusohjetiedosto
/var/spool/mail/$LOGNAME.lock
systeemin postilaatikon lukkotiedosto (procmail
ei käytä tätä automaattisesti, jollei $DEFAULT
ole sama kuin /var/spool/mail/$LOGNAME ja
procmail ole välittämässä postia $DEFAULT:iin)
/usr/sbin/sendmail oletuksena oleva postin forwardoija
(eteenpäinviejä)
_????â€â€˜isäntäkoneâ€â€˜ procmailin luomia nollapituisia
väliaikaistiedostoja (nimet muodostuvat siten,
ettei olemassaolevien tiedostojen päälle
kirjoiteta)
DIAGNOSTIIKKA
Autoforwarding mailbox found
(Löytyi automaattisesti forwardoiva
postilaatikko): Systeemin postilaatikossa oli
asetettu suid- tai sgid-bitti; procmail
keskeyttää ajon signaaliin EX_NOUSER olettaen,
että tähän postilaatikkoon ei saa postia
välittää.
Bad substitution of "x"
("x":n asettaminen ei onnistu): Määritetty
ympäristömuuttujan nimi ei kelpaa.
Closing brace unexpected
(Odottamaton lopettava aaltosulku): Vastaavaa
aloittavaa aaltosulkua ei ollut (sisäkkäinen
blokki).
Conflicting options (Yhteensopimattomia optioita): Kaikki
optioyhdistelmät eivät toimi.
Conflicting "x" suppressed
(Yhteensopimaton "x" ohitettu): Valinta x ei
sovi yhteen jonkin toisen tässä ohjeessa olevan
valinnan kanssa.
Couldn’t create "x" ("x":n luominen epäonnistui): Systeemin
postilaatikkoa ei ollut olemassa eikä sitä voida
luoda/tulla luomaan.
Couldn’t determine implicit lockfile from "x"
("x":stä ei pystynyt päättelemään
lukkotiedostoa): Yhtäkään ’>>’
uudelleenohjausmerkkiä ei löytynyt, paikallisena
lukkotiedostona käytetään yksinkertaisesti
muuttujan ’$LOCKEXT’ sisältöä.
Couldn’t unlock "x" (Lukkotiedostoa "x" ei pystytty avaamaan):
Lukkotiedosto on jo tuhottu, tai
kirjoitusoikeudet lukkotiedoston sisältävään
hakemistoon on poistettu.
Deadlock attempted on "x"
("x":ssä ajauduttu umpikujaan): Paikallinen
tässä säännössä määritetty lukkotiedosto on sama
kuin edelleen aktiivinen $LOCKFILE.
Denying special privileges for "x"
(Erityisoikeudet estetty "x":ltä): Procmail ei
käytä ohjetiedoston käyttäjätunnusta (uid:tä),
sillä se löysi turvallisuusrikkeen (esim. -p
tai komentorivillä tehdyt muuttujamäärittelyt)
tai sillä ei ole tarpeeksi oikeuksia tehdä niin.
Enforcing stricter permissions on "x"
(Asetan tiukempia oikeuksia "x":lle):
Vastaanottajan postilaatikko oli näemmä
turvaton, procmail turvasi sen.
Error while writing to "x"
("x":ään kirjoitettaessa tuli virhe):
Alihakemistoa ei ole, ei kirjoitusoikeuksia,
putki katkesi tai levy on täynnä.
Exceeded LINEBUF (LINEBUF ylitettiin): Havaittiin puskurin
ylivuoto, LINEBUF oli liian pieni, muistissa
saattaa olla vikaa.
Excessive output quenched from "x"
(Liiallinen tulostus "x":stä katkaistu): Ohjelma
tai suodatin "x" yritti tuottaa liian paljon
tulostusta nykyiseen LINEBUF:iin
(rivipuskuriin), loppu heitettiin menemään.
Extraneous x ignored (Epäolennainen x jätettiin huomiotta): Tämän
ohjeen toimintarivi tekee option x
merkityksettömäksi.
Failed forking "x" ("x":n haarautuminen epäonnistui): Prosessitaulu
on täynnä (ja NORESRETRY käytetty loppuun).
Failed to execute "x" ("x":n ajaminen epäonnistui): Ohjelma ei ole
polussa, tai sillä ei ole ajo-oikeuksia.
Forced unlock denied on "x"
("x":n avaaminen kielletty): Lukkotiedoston "x"
sisältävään hakemistoon ei ole
kirjoitusoikeuksia, tai useampi kuin yksi
procmail yrittää lukita sitä täsmälleen samaan
aikaan.
Forcing lock on "x" ("x":n lukitus pakotetaan): Lukkotiedostoa "x"
ollaan poistamassa yliajan vuoksi (katso myös:
LOCKTIMEOUT).
Incomplete recipe (Epätäydellinen ohje): Ohjeen alku löydettiin,
mutta loppua ei näkynyt ennen EOFia (tiedoston
loppumerkkiä).
Insufficient privileges
(Riittämättömät oikeudet): Procmail joko
tarvitsee pääkäyttäjän oikeuksia tai sillä
täytyy olla oikea (e)uid ja (e)gid, jotta sitä
voitaisiin ajaa jakelutilassa. Jakelua yritetään
alkuperäisellä procmailin käynnistäjällä.
Invalid regexp "x" (Epäkelpo säännöllinen lauseke "x"):
Säännöllisessä lausekkeessa "x" on virheitä
(todennäköisesti puuttuvia tai liiallisia
sulkumerkkejä).
Kernel-lock failed (Kernelin lukitus epäonnistui): Kun yritettiin
käyttää kernelin tukemia lukituskutsuja, yksi
niistä epäonnistui (yleensä tämä viittaa
käyttöjärjestelmävirheeseen). Procmail jättää
tämän virheen huomiotta ja jatkaa.
Kernel-unlock failed (Kernelin lukituksen avaaminen epäonnistui):
Katso yllä.
Lock failure on "x" (Lukitusvirhe "x":ssä): Tämä voi tapahtua vain,
jos käytät ihan outoja (tai virheellisiä)
lukkotiedostojen nimiä tai jos lukkotiedostoa ei
voitu luoda riittämättömien oikeuksien vuoksi
tai koska määritettyä alihakemistoa ei ollut
olemassa.
Lost "x" ("x" katosi): Procmail yritti kloonata itsensä,
muttei enää löytänyt ohjetiedostoa "x" (se joko
oli poistettu tai siihen viitattiin
suhteellisella polulla ja muutit hakemistoa sen
jälkeen, kun procmail avasi sen viimeksi).
Missing closing brace (Sulkeva aaltosulku puuttuu): Sisäkkäinen blokki
aloitettiin aaltosululla, muttei koskaan
lopetettu.
Missing name (Nimi puuttuu): Optio -f tarvitsee
lisäargumentin.
Missing argument (Argumentti puuttuu): Käytit optiota -a, mutta
unohdit argumentin.
Missing rcfile (Ohjetiedosto puuttuu): Käytit optiota -m, joten
procmail odottaa ohjetiedoston nimeä
argumenttina.
Missing recipient (Vastaanottaja puuttuu): Käytit optiota -d tai
kutsuit procmailia toisella nimellä. Tällöin se
odottaa yhtä tai useampaa vastaanottajan
määrittävää argumenttia.
No space left to finish writing "x"
("x":n kirjoittamisen viimeistelyyn ei ole
tilaa): "x":n sisältävässä
tiedostojärjestelmässä ei ole tarpeeksi vapaata
tilaa, jotta viesti voitaisiin viedä tiedostoon.
Out of memory (Muisti loppui): Järjestelmästä loppui
sivutusmuistitila (ja NORESRETRY on käytetty
loppuun).
Processing continued (Käsittely jatkuu): Komentorivin tuntemattomat
optiot jätettiin huomiotta, procmail jatkaa
kuten tavallisesti.
Program failure (nnn) of "x"
(Ohjelmavirhe (nnn) "x":ssä): Procmailin
käynnistämä ohjelma palautti arvon nnn
EXIT_SUCCESSin (=0) asemesta (EXIT_SUCCESS =
onnistunut lopetus); jos nnn on negatiivinen,
tämä on signaali, johon ohjelma kuoli.
Renaming bogus "x" into "y"
(Muutan vääränlaisen "x":n nimen "y":ksi):
Systeemin vastaanottajaa varten tarkoittama
postilaatikko huomattiin vääränlaiseksi,
procmail pyrki toimimaan väärennöksiä vältellen.
Skipped: "x" (Ohitettu: "x"): Procmail ei voinut tehdä mitään
ohjetiedostossa olevalla "x":llä, joten se
jättää sen huomiotta.
Suspicious rcfile "x" (Epäilyttävä ohjetiedosto "x"): Tämän
ohjetiedoston omistaja ei ollut vastaanottaja
eikä pääkäyttäjä, tai sitten sen sisältävä
hakemisto oli kaikkien kirjoitettavissa
(ohjetiedostoa ei käytetty).
Terminating prematurely whilst waiting for ...
(Ennenaikainen keskeytys odotettaessa...):
Procmail vastaanotti tapposignaalin
odottaessaan...
Quota exceeded while writing "x"
(Käyttäjäkohtainen levykiintiö ylittyi "x":ää
kirjoitettaessa): Vastaanottajan levykiintiö
"x":n sisältävässä tiedostojärjestelmässä ei
salli viestin siirtoa tiedostoon.
Timeout, terminating "x"
(Keskeytys, "x" lopetetaan): Ohjelmassa tai
suodattimessa "x" ylitettiin määritetty
odotusaika.
Timeout, was waiting for "x"
(Keskeytys, odotin "x":ää): Ohjelmassa,
suodattimessa tai tiedostossa "x" ylitettiin
määritetty odotusaika. Jos se oli ohjelma tai
suodatin, se ei näyttänyt olevan ajossa enää.
Truncated file to former size
(Tiedosto lyhennetty aikaisempaan kokoonsa):
Postinjakelu tiedostoon ei onnistunut, joten
tiedosto lyhennettiin aikaisempaan kokoonsa.
Truncating "x" and retrying lock
("x" lyhennetään ja lukitusta yritetään
uudelleen): "x" ei näytä olevan kelvollinen
tiedostonimi tai tiedosto ei ole tyhjä.
Rescue of unfiltered data succeeded/failed
(Ei-suodatetun datan pelastaminen
onnistui/epäonnistui): Suodatin antoi
epäonnistumisesta kertovan paluuarvon, procmail
yritti palata takaisin alkuperäiseen tekstiin.
Unexpected EOL (Ei-odotettu EOL (=rivin loppu)): Puuttuvat
sulkevat lainausmerkit, tai EOFia (tiedoston
loppumerkkiä) yritetään välttää.
Unknown user "x" (Tuntematon käyttäjä "x"): Määritetyllä
vastaanottajalla ei ole vastaavaa uid:tä
(käyttäjän identifioivaa numeroa).
LAAJENNETTU DIAGNOSTIIKKA
Laajennettu diagnostiikka voidaan asettaa päälle tai pois määrittämällä
muuttuja VERBOSE.
[pid] aika & päivämäärä
Procmailin pid (prosessi-identifikaationumero)
ja aikamerkintä. Tuotetaan aina, kun procmail
kirjoittaa lokitiedostoon diagnostiikkaa ja
ainakin sekunti on kulunut edellisestä
aikamerkinnästä.
Acquiring kernel-lock (Kernel-lukitusta ollaan tekemässä): Procmail
yrittää nyt kernel-lukita viimeksi avatun
tiedoston (-kuvauksen).
Assigning "x" (Asettamassa "x":ää): Ympäristömuuttujan asetus.
Assuming identity of the recipient, VERBOSE=off
(Oletetaan vastaanottajan identiteetti,
VERBOSE=off (VERBOSE=monisanaisuus)): Kaikki
etuoikeudet (jos niitä on) unohdetaan, asettaa
epäsuorasti laajennetun diagnostiikan pois
päältä.
Bypassed locking "x" (Ohittamassa "x":n lukitusta): Procmaililla ei
ollut pääsyä sähköpostin spool-hakemistoon, se
luotti pelkästään kernelin lukkoihin.
Executing "x" (Ajamassa "x":ää): Aloittamassa ohjelmaa "x".
Jos se aloitetaan procmailista suoraan (ilman
välissä olevaa komentotulkkia), procmail näyttää
missä kohdin se erotti argumentit lisäämällä
pilkkuja.
HOST mismatched "x" (ISÄNTÄKONE ei ole sama kuiin "x"): Tämän
isäntäkoneen nimi oli "x", ISÄNTÄKONE (HOST)
näytti joltain muulta.
Locking "x" (Lukitsemassa "x":ää): Luomassa lukkotiedostoa
"x".
Linking to "x" (Linkkaamassa "x":ään): Luomassa kovaa linkkiä
hakemistokansioiden välille.
Match on "x" (Sopii "x":ään): Ehto sopi.
Matched "x" (Sovitettiin "x"): Asetettiin "x" SOPIMAAN.
No match on "x" ("x":ään ei löytynyt sopivaa): Ehtoon sopivaa
tietoa ei löytynyt, ohje ohitettiin.
Notified comsat: "$LOGNAME@offset:file"
(Ilmoitettiin comsatille:
"$LOGNAME@alkukohta:tiedosto"): Lähetettiin
comsatille/biffille (sähköpostin saapumisesta
ilmoittavia ohjelmia) ilmoitus, että postia
saapui käyttäjälle $LOGNAME ’tiedoston’ kohtaan
’alkukohta’.
Opening "x" (Avataan "x":ää): Avataan tiedosto "x"
lisäämistä varten.
Rcfile: "x" (Ohjetiedosto: "x"): Ohjetiedosto muuttui
"x":ksi.
Reiterating kernel-lock
(Toistetaan kernel-lukkoa): Montaa
lukitusmenetelmää yritettäessä yksi epäonnistui.
Procmail toistaa niitä kunnes ne kaikki
onnistuvat nopeasti peräjälkeen.
Score: added newtotal "x"
(Pistemäärä: lisättiin uusi kokonaissumma "x"):
Tämä ohje aiheutti ‘lisäpisteitä’, jotka
tuottivat pistemäärän "x".
Unlocking "x" (Avaamassa "x":ää): Poistamassa taas
lukkotiedostoa "x".
VAROITUKSET
Olisi hyvä luoda komentojono, joka käyttää ohjelmaa lockfile(1) ennen
kuin antaa sähköpostin komentotulkkisi käsitellä mitään muuta
postilaatikkotiedostoa kuin systeemin postilaatikkoa (jollei tietenkin
sähköpostin komentotulkkisi käytä samoja lukkotiedostoja (paikallisia
tai koko systeemin kattavia) kuin, jotka määritit ohjetiedostossa).
Siinä epätodennäköisessä tapauksessa, että procmail on ehdottomasti
tapettava ennen kuin se lopettaa ajonsa, yritä ensin käyttää tavallista
kill-komentoa (eli ei kill -9, katso ehdotuksia alaotsikon Signaalit
alta) - muutoin jotkin lukkotiedostot voivat tuhoutua.
Ole varovainen käyttäessäsi optiota -t, sillä jos procmail ei
toistuneiden yritysten jälkeenkään pysty jakelemaan postia (esim.
väärän ohjetiedoston vuoksi), systeemin postijono voi täyttyä. Tämä
voisi suututtaa niin paikallista sähköpostiylläpitäjää kuin muitakin
käyttäjiä.
Tiedosto /etc/procmailrc saatetaan ajaa pääkäyttäjän oikeuksilla, joten
katso tarkkaan, mitä siihen laitat. SHELL on sama kuin kyseisellä
vastaanottajalla, joten jos procmailin on kutsuttava komentotulkkia, se
olisi parasta asettaa ensin joksikin turvalliseksi. Katso myös:
DROPPRIVS.
Pidä mielessäsi, että jos chown(1) on sallittu hakemiston
/etc/procmailrcs/ sisältämille tiedostoille, niiden omistaja voidaan
muuttaa pääkäyttäjäksi (root) (tai miksi tahansa muuksi) niiden
edellisten omistajien toimesta. Turvallisinta olisi varmistaa, että
tästä hakemistosta ainoastaan pääkäyttäjä voi käynnistää ohjelmia.
BUGIT
Poistettuaan voimatoimin lukkotiedoston procmail odottaa $SUSPEND
sekuntia ennen kuin luo uuden lukkotiedoston, jotta toinen prosessi,
joka päättää tuhota vanhan lukkotiedoston, ei vahingossa tuhoa juuri
luotua lukkoa.
Procmail käyttää säännöllistä TERMINATE (keskeytä)-signaalia
keskeyttääkseen villiintyneen suodattimen, mutta se ei tarkista
vastaako suodatin tuohon signaaliin, ja se lähettää signaalin
suodattimelle itselleen, ei tämän aliprosesseille.
Jatkettua Content-Length: -kenttää ei osata käsitellä oikein.
SEKALAISTA
Jos postin otsikossa on kenttä Content-Length: ja optiota -Y ei ole
asetettu, procmail poistaa kentästä ylimääräiset välilyönnit
löytääkseen oikean koon. Procmail ei muuta kentän leveyttä.
Jos kenttää Content-Length: ei ole olemassa tai optiota -Y ei ole
asetettu ja procmail lisää posteja tavallisiin postikansioihin,
kaikkiin viestin rungossa oleviin välitystiedoilta näyttäviin riveihin
lisätään alkuun ’>’ (tämä estää väärennetyt postiotsikot). Näitä
etsitään seuraavalla säännöllisellä lausekkeella:
‘\nFrom ’
Jos itse jakelutilassa käytetty kohteen nimi ei löydy /etc/passwd:stä,
procmail jatkaa kuin jakelutila ei olisi päällä. Jollei procmail ole
jakelutilassa ja jos procmailin käyttämä uid ei löydy /etc/passwd:stä,
oletus HOMElle on /, LOGNAMElle #uid ja SHELLille /bin/sh.
Jakelutilassa procmail luo alkuun ‘From ’-rivin, jos sellaista ei ole
olemassa. Jos sellainen jo on, procmail ei koske siihen. Jos procmailia
ei ole kutsuttu millään seuraavilla käyttäjä- tai ryhmä-id:illä: root,
daemon, uucp, mail, x400, network, list, lists tai news, mutta sen
silti täytyy tuottaa tai hyväksyä uusi ‘From ’-rivi, se tuottaa myös
lisärivin ’>From ’ auttaakseen erottamaan väärennetyt viestit.
Turvallisuussyistä procmail käyttää vain absoluuttista tai $HOME:een
suhteellista ohjetiedoston polkua, jos sen omistaa joko vastaanottaja
tai pääkäyttäjä ja se ei ole kaikkien kirjoitettavissa tai jos sen
sisältävä hakemisto ei ole kaikkien kirjoitettavissa.
Jos /var/spool/mail/$LOGNAME on vääränlainen postilaatikko (eli se ei
kuulu vastaanottajalle, siihen ei voi kirjoittaa tai se on symbolinen
tai kova linkki), procmail yrittää käynnistyessään muuttaa sen nimen
tiedostoksi, joka alkaa sanalla ’BOGUS.’ ja loppuu inode-jonokoodiin.
Jos tämä havaitaan mahdottomaksi, muuttuja ORGMAIL ei saa alkuarvoa ja
siten se estää postinjakelun ilman kunnollista ohjetiedostoa.
Jos /var/spool/mail/$LOGNAME on jo oikeanlainen postilaatikko, mutta
sillä on heikot oikeusmääritykset, procmail korjaa asian. Estääksesi
procmailin tekemästä tätä varmista, että u+x-bitti on asetettu.
Jakaessasi postia alihakemistoihin (tai MH-kansioihin), lukkotiedostoja
ei tarvita estämään useiden päällekkäin ajavien procmail-prosessien
sotkeentumista toisiinsa.
MH-kansioihin jakelu vie hiukan enemmän aikaa kuin jakelu tavallisiin
alihakemistoihin tai kansioihin, sillä procmailin täytyy etsiä
seuraavaa tarjolla olevaa numeroa (sen sijaan, että tiedostonimi olisi
heti tiedossa).
Yleiseen virheeseen kaatuessaan procmail palauttaa arvon EX_CANTCREAT,
jollei optiota -t ole määritetty. Tämän option määrityksen jälkeen se
palauttaisi arvon EX_TEMPFAIL.
Jotta otsikoiden ’egreppaus’ olisi johdonmukaisempaa, procmail yhdistää
kaikki otsikoiden jatkorivit (useammalle riville jakautuvat); mutta
vain sisäisesti. Sähköpostin jakelussa rivinvaihdot näkyvät kuten
ennenkin.
Jos procmailia kutsutaan nimellä, joka ei ala ‘procmail’ (esim. jos se
on linkattu toiselle nimelle ja kutsuttu sillä), se siirtyy
jakelutilaan ja olettaa vastaanottajan nimien olevan
komentoriviargumentteina (aivan kuten jos olisi määritetty -d).
Ilmoitukset comsatille/biffille tehdään käyttämällä udp:tä. Ne
lähetetään kerran, kun procmail tuottaa tavallisen merkinnän
lokitiedostoon. Ilmoitusviesteillä on seuraava laajennettu muoto (tai
niin lähelle kuin pystyy pääsemään, kun lopullista jakelua ei
suoritettu tiedostoon)
$LOGNAME@viestin_alkukohta_kansiossa:kansion_absol_polku
Kun procmail itse avaa tiedoston jakelua varten, se käyttää
johdonmukaisesti seuraavia kernelin lukitsemisstrategioita: fcntl(2) ja
lockf(3).
Procmail käyttäytyy hyvin NFS:n (verkkotiedostojärjestelmän) kanssa ja
käsittelee oikein kahdeksannen bitin.
MERKINNÄT
Kun procmailia kutsutaan -h tai -? optiolla, se näyttää komentorivin
aputekstin ja tiiviin listan ohjetiedoston ohjeista.
Sen sijaan, että käyttäisit järjestelmän tarjoamaa procmailin kutsua
sähköpostin saapuessa, voit hallita procmailin kutsua myös itse. Tässä
tapauksessa tiedostosi $HOME/.forward (ole varovainen, sen nimittäin
täytyy olla kaikkien luettavissa) täytyisi sisältää allaoleva rivi.
Varmista, että käytät oikein yksinkertaisia ja kaksinkertaisia
lainausmerkkejä ja absoluuttista polkua. #KÄYTTÄJÄTUNNUKSESI ei
oikeastaan ole procmailin vaatima parametri, vaan sh hylkää sen ennen
kuin procmail koskaan edes näkee sitä; se on kuitenkin ihan
tarpeellinen kikka ylioptimoivia sendmail-ohjelmia vastaan:
"|IFS=’ ’&&exec /usr/local/bin/procmail -f-||exit 75 #KÄYTTÄJÄTUNNUKSESI"
Procmail voidaan myös kutsua jälkikäsittelemään jo täysi systeemin
postilaatikko. Tämä voi olla hyödyllistä, jos et halua tai voi käyttää
tiedostoa $HOME/.forward (missä tapauksessa seuraava skripti voitaisiin
määräajoin kutsua cron(1) -ohjelmasta tai aina, kun aloitat
postinluvun):
#!/bin/sh
ORGMAIL=/var/spool/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
Esimerkki pienestä $HOME/.procmailrc-tiedostosta:
PATH=/bin:/usr/bin:/usr/bin
MAILDIR=$HOME/Mail #varmista, että tämä tosiaan on olemassa
DEFAULT=$MAILDIR/mbox #täysin vapaaehtoinen
LOGFILE=$MAILDIR/from #suositeltu
:0:
* ^From.*berg
minulta
:0
* ^Subject:.*Liekitys
/dev/null
Muita esimerkkejä ohjetiedoston ohjeisiin voi etsiä manuaalisivulta
procmailex(5).
LÄHDE
Tämä ohjelma on osa pakettia procmail mail-processing-package (postin-
käsittely-paketti) (v3.10 1994/10/31), jonka saa lähimmästä USENETin
comp.sources.misc -arkistosta ftp.informatik.rwth-aachen.de:stä polusta
pub/packages/procmail/procmail.tar.gz.
POSTITUSLISTA
Procmail-paketin mihin tahansa ohjelmaan liittyviä kysymyksiä varten on
olemassa postituslista:
procmail@informatik.rwth-aachen.de
kysymysten/vastausten lähettämiseen.
procmail-request@informatik.rwth-aachen.de
liittymispyyntöihin.
TEKIJÄ
Stephen R. van den Berg at RWTH-Aachen, Germany
berg@pool.informatik.rwth-aachen.de
KATSO MYÖS
procmailsc(5), procmailex(5), sh(1), csh(1), mail(1), mailx(1),
binmail(1), uucp(1), aliases(5), sendmail(8), egrep(1), grep(1),
biff(1), comsat(8), lockfile(1), formail(1), cron(1).
5. Kesäkuuta 1998 PROCMAIL(0)