Provided by:
manpages-hu_20010119-5_all 
NÉV
procmail - automatikus levélfeldolgozó/kezelő program
VÁZLAT
procmail [-ptoY] [-f fromwhom]
[paramter=rtk|konfigllomny] ...
procmail [-toY] [-f fromwhom] [-a rtk]
-d cmzett ...
procmail [-ptY] -m [paramter=rtk] ... konfigllomny
[rtk] ...
procmail -v
LEÍRÁS
Rövid ismertető a súgó végén található a MEGJEGYZÉS részben.
Alapesetben a procmail a .forward levélátirányításkor lép működésbe.
Ettől eltérően, ha a rendszer üzemeltetője beállította, a
levelezőprogrammal együtt is használható. Indításkor mindig az
alapértékekkel tölt fel bizonyos környezeti változókat, a szabványos
bemenetről olvassa be sorvége jelig a levelet, majd a fejléc alapján,
ha nincs megadva semmilyen parancssori kapcsoló, akkor a
$HOME/.procmailrc-ben található szűrést végzi el, ha szükséges. Ha nem
található ilyen konfigurációs állomány, vagy feldolgozáskor hiba merül
fel, akkor a levelet az alapértelmezett postafiókba (mailbox)
továbbítja.
Konfigurációs állomány (rcfile) és -p parancssori kapcsoló hiányában a
procmail először a /etc/procmailrc állományt dolgozza fel (ha van
ilyen). Az /etc/procmailrc állomány létrehozásakor figyelni kell arra,
hogy a benne megadott műveletek root jogosultsággal hajtódnak végre,
szemben a $HOME/.procmailrc -ben megadottakkal.
Suid root vagy root jogokkal egy komplett levéltovábbító programként
lehet használni a procmailt.
Procmailt a levelek általános szűrésére is lehet használni, pl. a
sendmailben speciális bejegyzéssel lehet futtatni.
A konfigurációs állomány felépítéséről részletesen a procmailrc(5)
súgóban lehet olvasni.
A súlyozott pontozási módszerről a procmailsc(5) súgó ad bővebb
felvilágosítást.
Néhány konfigurációs példát pedig a procmailex(5) súgóban lehet
megtalálni.
Jelzések (Signals)
TERMINATE (Befejezés)
Idő előtt befejezi a működést, a levelet nem dolgozza fel.
HANGUP (Megszakítás)
Idő előtt befejezi a feldolgozást, a levelet visszaküldi
(bounce the mail).
INTERRUPT (Megszakítás)
Idő előtt befejezi a feldolgozást, a levelet visszaküldi
(bounce the mail).
QUIT (Kilépés)
Idő előtt befejezi a feldolgozást, a levelet törli (lose
the mail).
ALARM (Figyelmeztetés)
Időtúllépést idéz elő (ld. IDŐTÚLLÉPÉS).
USR1 Megfelel a VERBOSE=off-nak.
USR2 Megfelel a VERBOSE=on-nak.
KAPCSOLÓK
-v A procmailt kiírja a verziószámát, valamint a fordításkor megadott
beállításokat és kilép.
-p Megtartja az eredeti környezeti változókat. Alapesetben a procmail
indulásakor a TZ változó kivételével törli a beállított környezeti
változókat. Máshogy mondva a procmail a már beállított környezeti
változókat saját értékeivel felülírja indulásakor. A módosításra
kerülő környezeti változókról bővebben a procmailrc(5) súgójában
lehet olvasni. Ha a -p és -m kapcsolókat együtt használjuk, akkor
csak a következő környezeti változókat írja felül a procmail:
LOGNAME, HOME, SHELL, ORGMAIL és MAILDIR.
-t Csökkentett feldolgozás, pl. ha a procmail nem tudja a szűrési
feltételben megadott parancs(oka)t végrehajtani, akkor nem törli a
levelet, hanem meghagyja későbbi feldolgozásra.
-f fromwhom
A procmail a `From ' sort a fromwhom -ban megadottra cseréli,
ezzel eléri, hogy mintha az lett volna az eredeti feladó (az -f
kapcsoló helyett használható az -r kapcsoló is). Ha fromwhom -nak
csak egy `-' jelet adunk meg, akkor a procmail mindössze a `From '
sorban található idő értékét frissíti (ha nincs ilyen rész, akkor
létrehozza azt).
-o Megakadályozza, hogy bárki módosíthassa a `From ' sor tartalmát.
-Y A hagyományos Berkeley postafiók formátumot használja, figyelmen
kívül hagyva a Content-Length: mezőket.
-a rtk
A $1 változó értékét az rtkben megadottra állítja be. A procmail
működése alatt bizonyos értékek tárolására, használatára
alkalmazható. Ugyanígy történik a $@x -en keresztül
információátadás a sendmail programból.
-d cmzett ...
Közvetlen levéltovábbítás. Ebben az esetben a cmzettben megadott
helyi felhasználókhoz lesznek továbbítva a levelek. Ez
természetesen csak akkor lehetséges, ha a procmail root jogokkal
(vagy ha már a címzett euid és egid jogaival) fut. Ebben az
esetben a -p kapcsolót nem lehet használni.
-m A procmail egy általános levélfeldolgozóként fog működni. Ebben az
esetben egy konfigurációs állományt is meg kell adni a
parancssorban. A konfigurációs állomány neve után bármilyen
kapcsoló megadható. Ha a konfigfájl az /etc/procmailrcs/ résszel
kezdődő abszolút elérési úttal lett megadva (vagy ennek
alkönyvtárában van), akkor a megadott állomány vagy szimbolikus
kötés (symbolic link) tulajdonjogával fog futni, hacsak nem az
biztonsági problémát nem okozna. A kapcsoló használatáról a súgó
PÉLDÁK részében további információ található.
ÉRTÉKEK
Minden és az alapértékek beállítása után, de még a konfigurációs
állomány megnyitása előtt kiértékeli azokat.
Minden más értéket konfigfájl megadásának minősít, legyen az abszolút
vagy relatív útvonal hivatkozás (pl. ./) A relatív útvonalak esetén a
kiindulási könyvtárnak a $HOME-ot veszi, hacsak nem az -m kapcsolót nem
használtuk. Ebben az esetben az aktuális könyvtár a relatív hivatkozás
kiindulási pontja. A procmail mindig az első megadott értékkel próbál
meg dolgozni, de ha az nem ad meg alkalmas állománybejegyzést, akkor
sorra veszi a többi értéket is, amíg szükséges.
Konfigurációs fájl megadása nélkül a $HOME/.procmailrc állományt
próbálja megnyitni. Ha ez nem lehetséges, akkor a környezeti változók
és a parancssorban megadott értékek szerint fog futni.
PÉLDÁK
Szűrési feltételekre minta példákat a procmailex(5) súgóban lehet
találni. Egy egyszerű példa ezen súgó MEGJEGYZÉS részében is
található.
A következőkben a rendszer adminisztrátorok és a sendmail.cf
szerkesztésében járatosak számára következnek hasznos tanácsok, akit
nem érdekel az nyugodtan átugorhatja ezt a részt.
Az -m kapcsolót leginkább akkor használhatjuk, ha a procmailt a
sendmail.cf állomány egyik beállításaként hívjuk meg. Ehhez szükséges a
sendmail.cf fájlban egy külön procmail-levélküldő részt megadni
(hasonlót, mint a valószínűleg már létező `helyi' levélküldőhöz (local
mailer)). Ehhez a következőt célszerű a fájlban elhelyezni.
Mprocmail, P=/usr/bin/procmail, F=mSDFMhun, S=11, R=21,
A=procmail -m $h $g $u
Ezzel lehetséges különböző szűrési módokat elvégezni (hasonlókat, mint
a 0-val kezdődően beállítottakkal) a procmail-el (a feltételben
megadott tabulátorok fontosak, mind a feltétel előtt, mind a
megjegyzések előtt):
R$*<@some.where>$*
$#procmail $@/etc/procmailrcs/valami.rc
$:$1@vala.hol.procmail$2 R$*<@$*.procmail>$*
$1<@$2>$3 szűrt levelek továbbengedése
Az /etc/procmailrcs/valami.rc tartalma pedig:
:0 # levélszemét (junk mail) szűrése *
^Subject:.*junk /dev/null
:0 # többi levél továbbengedése ! -oi -f
"$@"
Vigyázzunk arra, hogy csak olyan levelet küldjünk el, amely az elsőként
megadott feltételnek NEM felel meg, mert különben a levél nem jutna el
a címzetthez.
ÁLLOMÁNYOK
/etc/passwd a címzettek LOGNAME, HOME és SHELL változóinak
megállapításához
/var/spool/mail/$LOGNAME
rendszerszintű postafiók; a rendszerszintű
postafiók és a könyvtár létre hozásra kerül a
procmail indításakor, ha valamelyik nem létezne
/etc/procmailrc rendszerszintű konfigurációs állomány
/etc/procmailrcs/ speciális könyvtár az eltérő jogosultságú
konfigurációs állományoknak
$HOME/.procmailrc alapértelmezett konfigfájl
/var/spool/mail/$LOGNAME.lock
záróállomány a felhasználó rendszerszintű
postafiókjához (a procmail csak akkor használja,
ha a $DEFAULT értéke /var/spool/mail/$LOGNAME és
a procmail a $DEFAULT-ba továbbítja a leveleket)
/usr/sbin/sendmail alapértelmezett levéltovábbító
_????`hostname` a procmail által átmenetileg létrehozott
nullahosszúságú állomány
LÁSD MÉG
procmailrc(5), 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)
DIAGNOSZTIKA, HIBAELLENŐRZÉS
(Fordító megjegyzése: A hibaüzenetek angolul olvashatók azok könnyebb
azonosítása végett, de alattuk szögletes [] zárójelben magyar
fordításuk is megtalálható.)
Autoforwarding mailbox found
[Automatikus levéltovábbküldés a postafiókból]
A rendszeren található az adott suid és sgid-es postafiók, a
procmail EX_NOUSER üzenettel leáll, a levelet nem továbbítja.
Bad substitution of "x"
["x" hibás megadása]
A környezeti változó hibásan lett megadva.
Closing brace unexpected
[Hiányzó záró idézőjel]
Nem található nyitó idézőjel, az idézőjelek közötti szöveg nem
azonosítható.
Conflicting options
[Ellentétes kapcsolók]
Nem mindegyik kapcsolót lehet másikkal egyidejűleg megadni.
Conflicting x suppressed
[Ellentétes x figyelmen kívül hagyása]
A szűrésnél megadottak egyikével ütközik az x.
Couldn't create "x"
[Nem hozható létre az "x"]
A postafiók a rendszeren nem hozható létre.
Couldn't create maildir part "x"
[A postafiók könyvtárának "x" része nem hozható létre]
A postafiókot tartalmazó könyvtár "x" része nem létezik, a
procmail nem tudja létrehozni.
Couldn't create or rename temp file "x"
[Az "x" átmeneti állomány nem hozható létre, vagy nem nevezhető át]
Az "x" könyvtárba történő továbbításkor hiba merült fel.
Couldn't determine implicit lockfile from "x"
[Nem határozható meg az "x" záróállomány közvetlenül]
Hiányoznak a `>>' átirányítók, helyettük a `$LOCKEXT'
záróállomány használata történik.
Couldn't read "x"
[Olvasási hiba "x"-nél]
A procmail nem tudja megnyitni a konfigurációs állományt, vagy
az nem a megfelelő formátumban van, vagy a procmail nem tudta MH
könyvtár esetén a legnagyobb sorszámú levelet megtalálni.
Couldn't unlock "x"
[Hiba "x" zárolásának megszüntetésekor]
A záróállomány vagy le lett törölve, vagy a jogosultságok a
törlésre meg lettek szüntetve.
Deadlock attempted on "x"
[Létező zárolás "x"-en]
A szűrésnél megadott záróállomány egy jelenleg működő
záróállománnyal azonos nevű.
Denying special privileges for "x"
[Különleges jogosultságok figyelmen kívül hagyása "x"-en]
A konfigfájl jogaival a procmail biztonsági okokból nem fog
futni (okozhatja azt pl. a -p kapcsoló vagy adott környezeti
változó); a jogok a működéséhez rosszul lettek megadva.
Descriptor "x" was not open
[Az azonosító "x"-et nem lehet megnyitni]
A procmail indításakor a stdin, stdout vagy stderr -hoz nem
tudott kapcsolódni (valószínű biztonsági beállítások
következtében).
Enforcing stricter permissions on "x"
["x" jogosultságai nem elég biztonságosak]
A felhasználó rendszerszintű postafiókja nem rendelkezik a
megfelelő jogosultságokkal, a procmail kijavította a hibát.
Error while writing to "x"
[Hiba az "x" írásakor]
Nem létező alkönyvtár, vagy írási jogosultság hiánya, esetleg
megtelt a lemez.
Exceeded LINEBUF
[LINEBUF túllépése]
Puffer túlcsordulás. A LINEBUF értéke túl kicsi, a
PROCMAIL_OVERFLOW be lett állítva.
Excessive output quenched from "x"
[Túl sok kimenet "x"-nél]
Az "x" program vagy szűrő túl sok kimenetet hozott létre az
aktív LINEBUF-ba, a felesleges kimenet figyelmen kívül lett
hagyva.
Extraneous x ignored
[Felesleges x]
A szűrési feltételben lévő x felesleges.
Failed forking "x"
[Hiba "x" ágaztatásakor]
A folyamattábla (process table) megtelt (és a NORESRETRY nem
lett felhasználva).
Failed to execute "x"
[Hiba "x" futtatásakor]
A program nem található, vagy nem futtatható.
Forced unlock denied on "x"
[Nem lehet a zárolást az "x"-en erőszakkal sem megszüntetni]
Írási jogosultság hiánya az "x" záróállományt tartalmazó
könyvtárra, vagy egyszerre több procmail próbálta megszüntetni a
zárolást.
Forcing lock on "x"
["x" zárolása erőszakkal]
Az "x" záróállomány erőszakkal lett törölve időtúllépés miatt
(ld. IDŐTÚLLÉPÉS részt).
Incomplete recipe
[Hiányos/nem teljes szűrési feltétel]
A szűrési feltétel EOF-al végződik.
Insufficient privileges
[Nem megfelelő jogosultságok]
A procmail működéséhez vagy root, vagy a szükséges (e)uid és
(e)gid jogok szükségesek. A levelet nem lehet feldolgozni.
Invalid regexp "x"
[Érvénytelen "x" kifejezés]
Hibás "x" kifejezés (legvalószínűbb hogy hiányzó vagy túl sok
idézőjel van).
Kernel-lock failed
[Hiba a kernel-zárolásnál]
A kernel által támogatott zárolások meghívásakor hiba lépett fel
(általában OP hibát jelent ez), a procmail a hibát figyelmen
kívül hagyva folytatja működését.
Kernel-unlock failed
[Hiba a kernel-zárolás megszüntetésekor]
Ld. fent.
Lock failure on "x"
[Hiba az "x" zárolásakor]
Nem megfelelő vagy nagyon furcsa záróállomány-név lett megadva,
vagy hiányoznak a szükséges jogok, esetleg a záróállományt
tartalmazó alkönyvtár.
Lost "x"
[Hiányzó "x"]
A procmail másolatot indított volna magáról, de nem találja a
szükséges "x" konfigurációs állományt (az vagy át lett helyezve,
vagy a relatív útvonal megadása esetén könyvtárváltás történt).
Missing action
[Hiányzó cél]
Az aktuális szűrés nem teljes, nem tartalmazza a célt.
Missing closing brace
[Hiányzó záró zárójel]
A kifejezésből hiányzik a záró zárójel.
Missing name
[Hiányzó név]
Az -f kapcsolóhoz nem lett megadva a szükséges érték.
Missing argument
[Hiányzó érték]
Az -a kapcsoló után nem lett érték megadva.
Missing rcfile
[Hiányzó konfigfájl]
Az -m kapcsoló után a konfigurációs állomány helyét kell
megadni.
Missing recipient
[Hiányzó címzett]
A -d kapcsolóval vagy másik felhasználó neve alatt lett
elindítva a procmail, ekkor egy vagy több címzettet kell
felsorolni a parancssorban.
No space left to finish writing "x"
[Nincs elég üres hely az "x" írásakor]
Az "x"-et tartalmazó fájlrendszeren nincs elég üres hely a
továbbküldéshez.
Out of memory
[Nincs elég memória]
A lapozó (swap space) teljes mértékben fel lett használva (és a
NORESRETRY nem lett felhasználva).
Processing continued
[Feldolgozás folytatása]
A parancssorban megadott ismeretlen kapcsoló figyelmen kívül
lett hagyva, a feldolgozás tovább folyik.
Program failure (nnn) of "x"
["x" program hiba, hibakód (nnn)]
A procmail-lel meghívott program az EXIT_SUCCESS (=0) helyett
(nnn) értékkel tért vissza. Negatív nnn a program befejezését
előidéző szignál értékét jelenti.
Quota exceeded while writing "x"
[Kvóta túllépése "x" írásakor]
Az "x"-et tartalmazó fájlrendszeren a címzettnek megadott kvóta
túl lett lépve, az üzenetet nem lehet továbbítani.
Renaming bogus "x" into "x"
[Hibás "x" átnevezése "x"-re]
A címzett postafiókjának hibáját a procmail kijavította.
Rescue of unfiltered data succeeded/failed
[Sikerült/nem sikerült visszaállítani a nem vizsgált adatot]
Sikertelen szűrés esetén a procmail az eredeti szövegből próbál
meg újra kiindulni.
Skipped: "x"
["x" kihagyása]
A konfigállományban az "x" figyelmen kívül hagyva (szintaxis
hiba).
Suspicious rcfile "x"
[Gyanú "x" konfigurációs fájl]
A címzett, és a root sem tulajdonosa az állománynak, vagy az azt
tartalmazó könyvtár mindenki számára írható, vagy az
alapértelmezett konfigurációs állomány ($HOME/.procmailrc) vagy
az azt tartalmazó könyvtár a csoport minden tagjának írható (a
konfigfájl nem kerül felhasználásra).
Terminating prematurely whilst waiting for ...
[Kilépés ...-ra várva]
A procmail kilépett a ... várása közben.
Timeout, terminating "x"
[Időtúllépés, "x" bezárása]
"x" programnál vagy szűrőnél időtúllépés következett be.
Timeout, was waiting for "x"
[Időtúllépés az "x"-re várás közben]
"x" program, szűrő vagy fájl esetén időtúllépés történt. Ha az
egy program vagy szűrő volt, akkor valószínűleg már befejezte
működését.
Truncated file to former size
[Állomány eredeti méretének visszaállítása]
A fájlt nem lehetett sikeresen továbbküldeni, így vissza lett
állítva eredeti állapotára.
Truncating "x" and retrying lock
["x" elvetése és zárolás megszüntetése]
"x" névvel nem található állomány, vagy az állomány üres.
Unable to treat as directory "x"
[Az "x" nem könyvtár]
Az "x" után megadott résznek egy MH-ra vagy egy levélmappára,
esetleg egy másik könyvtárra kéne mutatnia, de az nem egy
könyvtár.
Unexpected EOL
[Nem várt EOL]
Hiányzó záró aposztróf, vagy EOF.
Unknown user "x"
[Ismeretlen "x" felhasználó]
A megadott címzett nem rendelkezik uid-val.
RÉSZLETES HIBAELLENŐRZÉS
Részletes hibakereséshez a VERBOSE változót kell ki/bekapcsolni.
[pid] idő & dátum A procmail pid-je és működési ideje. Minden
olyan esetben létrehozásra kerül, amikor a
procmail naplózza az üzeneteket és legalább 1
másodperc eltelt a működési időből.
Acquiring kernel-lock
[Kernel-zárolás meghívása]
A procmail a legutoljára megnyitott állományt
(descriptor) próbálja meg kernel-zárolni.
Assigning "x"
["x" megadása] Környezeti változó megadása.
Assuming identity of the recipient, VERBOSE=off
[A címzett elfogadása, VERBOSE=off]
Jogok (ha vannak) figyelmen kívül hagyása,
részletes kijelezés kikapcsolása.
Bypassed locking "x"
[Hozzáférés "x"-hez annak zárolása nélkül]
A leveleket tartalmazó könyvtár nem hozzáférhető
a procmail számára, kizárólag kernel-zárolással
érhető el.
Executing "x"
["x" futtatása] "x" program elindítása. Ha közvetlenül a
procmailből (nem egy átmeneti burokból)
futtatjuk, akkor a procmail az értékeket
vesszővel elválasztva írja ki.
HOST mismatched "x"
[Eltérés "x" és HOST között]
A rendszert "x"-nek hívják, azonban a HOST-ban
más van megadva.
Locking "x"
["x" zárolása] "x" záróállomány létrehozása.
Linking to "x"
[Hivatkozás "x"-re] Különböző mappák közötti keménykötés (hardlink)
létrehozva.
Match on "x"
[Azonosság "x"-el] A vizsgált feltétel igaz.
Matched "x"
[Megadott "x"] Az "x" értéke hozzá lett rendelve a MATCH-hoz.
No match on "x"
[Nem azonos "x"-el] A vizsgált feltétel nem igaz, szűrés átugorva.
Non-zero exitcode (nnn) by "x"
[Nem nulla kilépési kód "x"-nél]
Feltételként vagy a szűrés egyik céljaként
`W'-jelzéssel indított program az EXIT_SUCCESS
=(0) kilépési kód helyett nnn-kóddal fejezete be
működését, a futás nem várt eredményre vezetett.
Notified comsat: "$LOGNAME@offset:file"
[Comsat megjegyzés: "$LOGNAME@hely:fájl"]
Comsat/biff üzenet küldése levél érkezéséről a
$LOGNAME felhasználónak a "fájlba" a megadott
"helyre".
Opening "x"
["x" megnyitása] "x" állomány megnyitása hozzáfűzésre.
Rcfile: "x"
[Konfigurációs állomány: "x"]
A konfigurációs állomány neve "x".
Reiterating kernel-lock
[Visszatérő kernel-zárolás]
Különböző zárolási módszerek közül az egyik nem
volt sikeres. A procmail addig próbálja a
zárolást újra, amíg mindegyik sikeres nem lesz.
Score: added newtotal "x"
[Pont hozzáadva, összesen: "x"]
A megadott pontokat hozzáadja a már meglévőkhöz,
majd kiírja az összeget.
Unlocking "x"
["x" zárolásának megszüntetése]
"x" záróállomány eltávolítása.
FIGYELMEZTETÉSEK
A rendszeren lévő postafiókon történő módosítások előtt egy
záróállományt létrehozó szkriptet célszerű elindítani (hacsaknem a
levelező programok ugyanazt a záróállományt használják, mint amely a
konfigurációs állományban meg lett adva.
Ha valamilyen okból a procmail programot idő előtt be szeretnénk zárni,
akkor először a kill parancsot (de nem a 'kill -9'-et, az eltérő értékű
JELZÉS miatt) használjuk, különben néhány zrllomny nem kerül
törlésre.
Óvatosan használjuk a -t kapcsolót, mivel ebben az esetben a procmail
hamar megtöltheti a postafiókot továbbküldési hiba (pl. rosszul
beállított, hibás konfigurációs állomány) esetén. Ez gondot okozhat
mind a postmaster-nél és a helyi felhasználóknál.
Az /etc/procmailrc állomány root jogokkal is futhat, így jól gondoljuk
meg, hogy mit helyezünk el benne, mit hajtatunk végre vele. A SHELL a
címzettével azonos, így ha szükséges a burok elindítása, akkor a
hibalehetőségek csökkentéséért először valamilyen jól működő értékre
állítsuk be azt. Lásd : DROPPRIVS kapcsolók.
Ügyeljünk arra, hogy az /etc/procmailrcs/ állományok tulajdonosát meg
lehet változtatni chown(1)-val root-ra vagy bármi másra. Biztonsági
szempontból ezért célszerű, hogy ebbe a könyvtárba csak a root tudjon
belpni
A procmail nem a legjobb eszköz egy postafiók több felhasználó közötti
megosztására, mint ahogy több felhasználót kiszolgáló egy darab POP3
-as levelesládák esetében néha előfordul. Az MTA beállításával egyéni
fejlécekkel lehet ellátni a leveleket, amelyek segítségével a címzett
később egyértelműen azonosítható, de ezt csak átmeneti megoldásként
használjuk. Célszerűbb inkább az MTA-ban `virtuális felhasználó
adattáblát' (`virtual user table') beállítani, vagy a Fetchmail
`multidrop' képességét kihasználni.
HIBÁK
A záróállomány erőszakkal történő törlése után a procmail a $SUSPEND-
ben megadott másodpercig várakozik, mielőtt egy új záróállományt hoz
létre, így egy másik program amely törölné a régi záróállományt nem
fogja az újonnan létrehozott záróállományt törölni.
A procmail hagyományos BEZÁR (TERMINATE) jelzéssel szakítja meg a nem-
megfelelően működő szűrőket, azonban nem figyeli azok válaszát a
jelzésre, és mindössze a szűrőnek küldi a jelzést el, a gyerek-
folyamatoknak (filter's children).
A folytatott Content-Length: mezőket nem kezeli megfelelően a procmail.
A folytatott fejlécbe beszúrt újsorokat átlépi ahelyett, hogy egy
egyszerű szóköznek tekintené.
EGYÉB
Ha a levél fejlécében Content-Length: mező van, valamint az -Y kapcsoló
nincs megadva, a procmail a mezőt figyelmen kívül hagyja. A
mezőszélességét a procmail nem változtatja meg.
Ha hiányzik a Content-Length: mező és az -Y kapcsoló meg lett adva,
valamint a procmail a hagyományos postafiókba továbbítja a levelet,
akkor a levél törzsében a postmarks-hoz hasonló sorok elé egy `>' jelet
szúr be (a furcsa fejlécek megkülönböztetéséhez). Az ajánlott forma
az ilyen postmark-ok kereséséhez az alábbi:
`\nFrom '
Ha közvetlen továbbításánál a címzett neve nem található az /etc/passwd
állományban, akkor a procmail közvetett módon továbbítja a leveleket.
Ha nem közvetlen módon és ismeretlen (az /etc/passwd -ban nem létező)
uid alatt próbál meg a procmail futni, akkor a HOME alapesetben a /
lesz, a LOGNAME pedig #uid értéket veszi fel, a SHELL pedig /bin/sh
lesz.
Közvetlen továbbításánál a hiányzó `From ' mezőt a procmail
automatikusan létrehozza, ha már létezik, akkor azt nem változtatja
meg. Ha a procmail nem a következő felhasználói vagy csoport nevek
valamelyikével fut: root, daemon, uucp, mail, x400, network, list,
slist, lists vagy news, és meg lett adva a `From ' mező újragenerálása
akkor az `>From' -ként lesz létrehozva, ezzel segítve a levelek
megkülönböztetését.
Biztonsági megfontolásokból a procmail csak abszolútan vagy a HOME-hoz
viszonyított relatívan, root vagy a címzett tulajdonában lévő
konfigurációs állományokkal működik. A fájl és/vagy az azt tartalmazó
könyvtár nem lehet mindenki által írható. A $HOME/.procmailrc esetén
fontos még, hogy az állomány vagy könyvtára nem lehet a csoport számára
sem írható.
Ha különböző hibák fordulnak elő a /var/spool/mail/$LOGNAME
postafióknál (pl. nem a címzett annak a tulajdonosa, nem írható,
szimbólikus vagy kemény kötés) ,akkor a procmail hozzáféréskor
megpróbálja `BOGUS.$LOGNAME'-re azt átnevezni, és külön node-számmal
ellátni. Ha ez nem lehetséges, akkor az ORGMAIL változó nem kap
megfelelő értéket, ezáltal még megfelelő konfigurációs állomány esetén
sem történik levélfeldolgozás.
Létező, de hibás jogosultságokkal rendelkező /var/spool/mail/$LOGNAME
postafiók esetén a procmail megpróbálja a hibát kijavítani. Ha nem
szeretnénk, hogy a procmail kijavítsa az ilyen hibát, akkor u+x jelzést
kell az állományra helyezni.
Könyvtárakba, MH-fiókokba vagy levélmappákba történő
levélátirányításhoz nem szükséges az esetlegesen párhuzamosan futó
procmail programoknak a várt/megfelelő működésük érdekében
záróállományt megadni.
MH-fiókba kicsit lassabban történik , mint egy sima könyvtárba vagy
levélmappába a levéltovábbítás. A procmailnak ekkor meg kell keresni a
legnagyobb sorszámú levelet a fiókban (a többi esetben nem kell ilyet
elvégezni).
Általános hibát a procmail az EX_CANTCREAT -el jelzi, kivéve ha a -t
kapcsoló meg lett adva. Ebben az esetben EX_TEMPFAIL -el történik a
hibajelzés.
A fejlécek pontosabb kereséséhez (egrepping) a procmail összefűzi
azokat a levélen belül. Továbbításkor azonban a fejléceket
visszaállítja eredeti állapotukba.
Ha a procmailt nem `procmail'-el kezdődő programnév alatt indítjuk el
(pl. egy másiknévvel hivatkozunk rá kötéssel), akkor közvetlen módban
fog működni. Ekkor/ehhez viszont a parancssorban a címzetteket fel kell
sorolni (úgy mint a -d kapcsoló esetén).
udp-vel történik a comsat/biff értesítés. A naplóállomány (logfile)
lezárása után értesíti a programokat az új levélről a procmail. Az
értesítés az alábbi részletes formátumban (vagy valami hasonlóban)
történik:
$LOGNAME@üzenet_helye_a_postafiókban:postafiók_abszolút_útvonala
Procmail minden állományba történő levéltovábbításkor a következő
kernel- zárolási metódust használja: fcntl(2).
A procmail képes NFS-en és 8-bittel működni.
MEGJEGYZÉSEK
A -h vagy -? kapcsolókkal indított procmail a parancssori súgót és a
lehetséges szűrőfeltételek rövid leírását jeleníti meg.
Kezdőknek a Nancy McGough <nancym@ii.com> által összeállított
levélszűrőkről (így a procmailről is) szóló GYIK-ot (FAQ) ajánljuk.
Beszerezhető a mail-server@rtfm.mit.edu címre küldött
send usenet/news.answers/mail/filtering-faq
tartalmú levéllel.
Nem csak a levelek érkezésekor a rendszeren beállított módon lehet a
procmailt futtatni, hanem a felhasználó egyedi igényei alapján is.
Ehhez a $HOME/.forward állományban kell elhelyezni a lentebb látható
sort. Ügyeljünk arra, hogy ugyangy vigyük be a sort a fájlba (aminek
mindenki számára olvashatónak kell lennie). A procmail helyét abszolt
útvonallal adjuk meg. A #YOUR_USERNAME valójában nem szükséges a
procmail működéséhez, a burok nem is adja át ezt az értéket a procmail-
nak, azonban a biztonság kedvéért a sendmail számára van ez megadva.
"|exec /usr/bin/procmail"
A procmailt egy már létező postafiók szűrésére is fel lehet használni.
Ez akkor lehet hasznos, ha a $HOME/.forward -ot nem lehet/nem tudjuk
használni (ekkor a következő szkriptet célszerű bizonyos időközönként
elindítatni a cron(1) -al vagy a levelek olvasásának megkezdése előtt):
#!/bin/sh
ORGMAIL=/var/spool/mail/$LOGNAME
if cd $HOME &&
test -s $ORGMAIL &&
lockfile -r0 -l1024 .newmail.lock 2>/dev/null then
trap "rm -f .newmail.lock" 1 2 3 13 15
umask 077
lockfile -l1024 -ml
cat $ORGMAIL >>.newmail &&
cat /dev/null >$ORGMAIL
lockfile -mu
formail -s procmail <.newmail &&
rm -f .newmail
rm -f .newmail.lock fi exit 0
Egy rövid $HOME/.procmailrc mintapélda:
PATH=/bin:/usr/bin:/usr/bin
MAILDIR=$HOME/Mail #ellenőrizzük, hogy létezik-e
DEFAULT=$MAILDIR/mbox #nem kötelező megadni
LOGFILE=$MAILDIR/from #ajánlott megadni
:0:
* ^From.*miki
from_miki
:0
* ^Subject:.*Flame
/dev/null
A procmailex(5) súgóban további példák találhatók. Ez a program a
http://www.procmail.org/ vagy a ftp.procmail.org/pub/procmail/ címen
található procmail levlefeldolgoz-csomag (3.14-es verzió) része. A
procmail csomaggal kapcsolatos kérdéseidet/észrevételeidet a
<procmail-users@procmail.org>
címen működő levelezőlistán teheted fel.
<procmail-users-request@procmail.org>
címre kell írni a feliratkozáshoz.
Ha érdekelnek a legfrissebb verziók, hibajavítások akkor a következő
listára kell feliratkoznod:
procmail-announce-request@procmail.org
(a lista csak olvasható).
SZERZŐ
Stephen R. van den Berg
<srb@cuci.nl>
MAGYAR FORDÍTÁS
Vizi Szilárd <vizisz@freemail.hu>
BuGless PROCMAIL(1)