procmail(1)


NÉV

procmail - automatikus levélfeldolgozó/kezelő program

VÁZLAT

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

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 é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 '=' jelet tartalmazó értéket környezeti változó megadásaként vesz a program, é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.

2 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):

4 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:

6 :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 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

.nH 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) .hY

DIAGNOSZTIKA, HIBAELLENŐRZÉS

.th (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 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 'u' : 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.

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 'u' :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.
.nE 11

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 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.

" 'u' |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): 17 #!/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 .nE 14

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.

FORRÁS

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.

LEVELEZŐLISTA

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> .rM SH