procmail - automatikus levélfeldolgozó/kezelő
program
procmail [-ptoY] [-f fromwhom]
[paraméter=érték|konfigállomány]
...
procmail [-toY] [-f fromwhom] [-a
érték] -d címzett ...
procmail [-ptY] -m
[paraméter=érték] ...
konfigállomány [érték] ...
procmail -v
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.
- -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
érték
- A $1 változó értékét az
értékben 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 címzett
...
- Közvetlen levéltovábbítás. Ebben az
esetben a címzettben 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.
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
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)
(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 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.
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
záróállomány 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
belépni
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.
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é.
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.
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
ugyanúgy vigyük be a sort a fájlba (aminek
mindenki számára olvashatónak kell lennie). A
procmail helyét abszolút ú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
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
levélefeldolgozó-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ó).
Stephen R. van den Berg
<srb@cuci.nl>
Vizi Szilárd <vizisz@freemail.hu>