| PROCMAIL(1) | General Commands Manual | PROCMAIL(1) |
procmail - procesator de corespondență electronică autonom
procmail [-ptoY] [-f de-la-cine]
[parametru=valoare |fișier-configurare]
...
procmail [-toY] [-f de-la-cine] [-a
argument] ... -d destinatar ...
procmail [-ptY] -m
[parametru=valoare] ...
fișier-configurare [argument] ...
procmail -v
Pentru un ghid rapid, consultați secțiunea NOTE de la sfârșit.
procmail ar trebui să fie invocat automat prin intermediul mecanismului de fișier .forward imediat ce sosește corespondența. Alternativ, atunci când este instalat de către un administrator de sistem, poate fi invocat imediat din interiorul agentului de poștă. Atunci când este invocat, acesta stabilește mai întâi unele variabile de mediu la valorile implicite, citește mesajul de poștă electronică de la intrarea standard până la un sfârșit de fișier (EOF), separă corpul mesajului de antet și apoi, dacă nu sunt prezente argumente în linia de comandă, începe să caute un fișier numit $HOME/.procmailrc. În conformitate cu rețetele de procesare din acest fișier, mesajul de poștă electronică care tocmai a sosit este distribuit în dosarul potrivit (și altele). Dacă nu se găsește nici un fișier-configurare sau dacă procesarea fișierului-de-configurare ajunge la final, procmail va stoca corespondența în căsuța poștală implicită a sistemului.
Dacă nu a fost specificat niciun fișier de configurare și nici opțiunea -p nu a fost specificată în linia de comandă, procmail, înainte de a citi fișierul $HOME/.procmailrc, va interpreta comenzile din fișierul /etc/procmailrc (dacă este prezent). Trebuie să se acorde atenție la crearea fișierului „/etc/procmailrc”, deoarece, dacă circumstanțele permit, acesta va fi executat cu privilegii de root (spre deosebire de fișierul „$HOME/.procmailrc”, bineînțeles).
Dacă rulează cu suid root sau cu privilegii de root, procmail va putea funcționa ca un agent de livrare a corespondenței îmbunătățit din punct de vedere funcțional și compatibil cu trecutul.
procmail poate fi, de asemenea, utilizat ca un filtru de poștă electronică de uz general, adică au fost luate măsuri pentru a permite ca procmail să fie invocat într-o regulă «sendmail» specială.
Formatul fișierului de configurare este descris în detaliu în pagina de manual procmailrc(5).
Tehnica de punctare ponderată este descrisă în detaliu în pagina de manual procmailsc(5).
Exemple de rețete pentru fișierul de configurare pot
fi consultate în pagina de manual procmailex(5).
Toate argumentele care conțin un „=” sunt considerate a fi atribuiri de variabile de mediu, acestea vor fi evaluate după ce valorile implicite au fost atribuite și înainte de deschiderea primului fișier de configurare.
Orice alte argumente sunt presupuse a fi rute către un fișier de configurare (fie absolute, fie, dacă încep cu „./”, relative la directorul curent; orice altă rută relativă este relativă la directorul $HOME, cu excepția cazului în care a fost dată opțiunea -m, caz în care toate rutele relative sunt relative la directorul curent); procmail va începe cu prima pe care o găsește în linia de comandă. Următoarele vor fi analizate numai dacă cele precedente au o intrare de directivă HOST care nu se potrivește, sau în cazul în care nu ar trebui să existe.
Dacă nu se specifică niciun fișier de
configurare, se caută $HOME/.procmailrc. Dacă nici
măcar acesta nu poate fi găsit, procesarea va continua
în conformitate cu valorile implicite ale variabilelor de mediu
și cu cele specificate în linia de comandă.
Exemple de rețete pentru fișierul de configurare pot fi consultate în pagina de manual procmailex(5). Un mic eșantion de fișier de configurare poate fi găsit în secțiunea NOTE de mai jos.
Săriți peste restul acestei secțiuni EXEMPLE, cu excepția cazului în care sunteți un administrator de sistem care este vag familiarizat cu sintaxa sendmail.cf.
Opțiunea -m este utilizată de obicei atunci când procmail este apelat din cadrul unei reguli din fișierul sendmail.cf. Pentru a putea face acest lucru, este convenabil să creați un mailer suplimentar „procmail” în fișierul sendmail.cf (în plus față de mailerul „local”, probabil deja prezent, care pornește procmail). Pentru a crea un astfel de mailer „procmail” aș sugera ceva precum:
Mprocmail, P=/usr/bin/procmail, F=mSDFMhun, S=11, R=21,
A=procmail -m $h $g $u
Acest lucru vă permite să utilizați reguli cum ar fi următoarele (cel mai probabil în setul de reguli 0) pentru a filtra corespondența prin intermediul agentului poștal „mailer” procmail (vă rugăm să rețineți tabularea de început pentru a continua regula și tabularea pentru a separa comentariile):
R$*<@some.where>$*
$#procmail $@/etc/procmailrcs/some.rc $:$1@some.where.procmail$2 R$*<@$*.procmail>$*
$1<@$2>$3 Deja filtrată, înapoi la lista de corespondență
Și „/etc/procmailrcs/some.rc” ar putea fi la fel de simplu ca:
SENDER = "<$1>" # remediere pentru adresele de expeditor goale SHIFT = 1 # o elimină din $@ :0 # elimină toate mesajele nedorite * ^Subject:.*mesaje-nedorit /dev/null :0 w # transmite toate celelalte mesaje ! -oi -f "$SENDER" "$@"
Aveți grijă când trimiteți mesaje din
fișierul /etc/procmailrcs/some.rc, dacă
trimiteți mesaje la adrese care corespund din nou primei reguli,
ați putea crea o buclă de mesaje fără
sfârșit.
procmailrc(5), procmailsc(5), procmailex(5), sh(1), csh(1), mail(1), mailx(1), uucp(1), aliases(5), sendmail(8), egrep(1), grep(1), biff(1), comsat(8), lockfile(1), formail(1), cron(1)
Diagnosticarea extinsă poate fi activată și
dezactivată prin definirea variabilei VERBOSE.
Ar trebui să creați un script shell care utilizează lockfile(1) înainte de a invoca shell-ul dvs. de poștă electronică pe orice fișier de căsuță poștală, altul decât căsuța poștală de sistem (cu excepția cazului în care, desigur, shell-ul dvs. de poștă electronică utilizează aceleași fișiere de blocare (locale sau globale) specificate în fișierul-de-configurare).
În cazul puțin probabil în care trebuie neapărat să opriți procmail înainte ca acesta să se termine, încercați mai întâi să folosiți comanda obișnuită kill (adică nu «kill -9», consultați subsecțiunea Semnale pentru sugestii), altfel unele fișiere-de-blocare ar putea să nu fie eliminate.
Atenție la utilizarea opțiunii -t, dacă procmail nu poate livra în mod repetat corespondența (de exemplu, din cauza unui fișier-de-configurare incorect), coada de corespondență a sistemului s-ar putea umple. Acest lucru ar putea deranja atât agentul-de poștă-local, cât și alți utilizatori.
Fișierul /etc/procmailrc ar putea fi executat cu privilegii de root, deci fiți foarte atenți la ce puneți în el. SHELL va fi egal cu cel al destinatarului curent, deci dacă procmail trebuie să invoce shell-ul, ar fi bine să îl configurați mai întâi la o valoare sigură. A se vedea de asemenea : DROPPRIVS.
Rețineți că, dacă chown(1) este permis pentru fișierele din /etc/procmailrcs/, acestea pot fi schimbate de proprietar, către root (sau oricine altcineva) de către proprietarii lor actuali. Pentru securitate maximă, asigurați-vă că acest director este executabil numai pentru root.
procmail nu este instrumentul potrivit pentru partajarea
unei căsuțe poștale între mai mulți
utilizatori, cum ar fi atunci când aveți un cont POP pentru
toate mesajele către domeniul dvs. Acest lucru se poate face
dacă reușiți să vă configurați
MTA-ul pentru a adăuga niște antete cu datele destinatarului
plicului, pentru a-i indica lui procmail cui îi este destinat
un mesaj, dar, de obicei, acest lucru nu este cel mai potrivit. Poate
doriți să verificați dacă MTA-ul dvs.
oferă „tabele virtuale de utilizatori” sau să
verificați facilitatea „multitidrop” a
fetchmail.
După eliminarea forțată a unui fișier de blocare, procmail așteaptă $SUSPEND secunde înainte de a crea un nou fișier de blocare, astfel încât un alt proces care decide să elimine fișierul de blocare vechi să nu elimine din greșeală fișierul de blocare nou creat.
procmail utilizează semnalul obișnuit TERMINATE pentru a termina orice filtru scăpat de sub control, dar nu verifică dacă filtrul răspunde la acest semnal și îl trimite doar filtrului în sine, nu și copiilor-filtrului.
Un câmp Content-Length: continuat nu este gestionat corect.
Noile linii încorporate într-un antet continuat ar
trebui să fie ignorate la potrivire, în loc să fie
tratate ca un singur spațiu, așa cum se
întâmplă acum.
Dacă există un câmp Content-Length: în antetul mesajului și opțiunea -Y nu este specificată, procmail va ajusta câmpul pentru a raporta dimensiunea corectă. procmail nu modifică lățimea câmpului.
Dacă nu există câmpul Content-Length: sau dacă a fost specificată opțiunea -Y și procmail se atașează la dosarele de corespondență obișnuite, orice linii din corpul mesajului care par a fi mărci poștale sunt precedate de `>' (dezarmează anteturile de corespondență false). Expresia regulată care este utilizată pentru căutarea acestor mărci poștale este:
`\nFrom '
Dacă numele destinatarului utilizat în modul explicit de livrare nu se află în „/etc/passwd”, procmail va proceda ca și cum modul explicit de livrare nu ar fi în vigoare. În cazul în care nu se utilizează modul de livrare explicit și uid-ul sub care rulează procmail nu are o intrare corespunzătoare în „/etc/passwd”, atunci HOME va fi implicit /, LOGNAME va fi implicit #uid, SHELL va fi implicit „/bin/sh,” iar ORGMAIL va fi implicit „/tmp/dead.letter”.
Atunci când este în modul de livrare explicită, procmail va genera o linie `From ' dacă nu este prezentă. Dacă există deja una, procmail o lasă intactă. În cazul în care procmail nu este invocat cu unul dintre următoarele id-uri de utilizator sau de grup: root, daemon, uucp, mail, x400, network, list, slist, lists sau news, dar trebuie totuși să genereze sau să accepte o nouă linie `From ', acesta va genera o linie suplimentară `>From ' pentru a ajuta la distingerea mesajelor false.
Din motive de securitate, procmail va utiliza un fișier-de-configurare absolut sau $HOME-relativ numai dacă acesta este deținut de destinatar sau de root, nu poate fi scris de toată lumea, iar directorul în care este conținut nu poate fi scris de toată lumea. Fișierul $HOME/.procmailrc are constrângerea suplimentară de a nu fi inscriptibil de grup sau într-un director inscriptibil de grup.
Dacă „/var/mail/$LOGNAME” este o căsuță poștală falsă (de exemplu, nu aparține destinatarului, nu poate fi scrisă, este o legătură simbolică sau este o legătură dură), procmail va încerca la pornire să o redenumească într-un fișier care începe cu „BOGUS.$LOGNAME.” și se termină cu un cod de secvență de nod-i. Dacă acest lucru se dovedește a fi imposibil, ORGMAIL va avea valoarea inițială no și, prin urmare, va inhiba livrarea fără un fișier-de-configurare corespunzător.
Dacă „/var/mail/$LOGNAME” este deja o căsuță poștală validă, dar are permisiuni prea puține pe ea, procmail va corecta acest lucru. Pentru a împiedica procmail să facă acest lucru, asigurați-vă că bitul u+x este activat.
Atunci când livrați în directoare, dosare MH sau dosare maildir, nu trebuie să utilizați fișiere de blocare pentru a preveni interferențele dintre mai multe programe procmail care rulează simultan.
Livrarea către dosarele MH consumă puțin mai mult timp decât livrarea către directoare sau căsuțe poștale normale, deoarece procmail trebuie să caute următorul număr disponibil (în loc să aibă numele fișierului imediat disponibil).
În caz de eșec general, procmail va returna EX_CANTCREAT, cu excepția cazului în care este specificată opțiunea -t, caz în care va returna EX_TEMPFAIL.
Pentru a face „separarea” antetelor mai consecventă, procmail concatenează toate câmpurile continue ale antetului; dar numai intern. La livrarea mesajului, întreruperile de linie vor apărea ca înainte.
Dacă procmail este apelat sub un nume care nu începe cu „procmail” (de exemplu, dacă este legat de un alt nume și apelat ca atare), acesta apare în modul de livrare explicit și așteaptă numele destinatarilor ca argumente ale liniei de comandă (ca și cum ar fi fost specificată opțiunea „-d”).
Notificările Comsat/biff sunt efectuate utilizând udp. Acestea sunt trimise o dată când procmail generează intrarea obișnuită în fișierul jurnal. Mesajele de notificare au următorul format extins (sau cât de aproape se poate obține atunci când livrarea finală nu a fost într-un fișier):
$LOGNAME@poziția_mesajului_în_căsuța-poștală :ruta_absolută_către_căsuța-poștală
Ori de câte ori procmail deschide el însuși un fișier pe care să îl livreze, utilizează în mod consecvent următoarele strategii de blocare a nucleului : fcntl(2).
procmail este rezistent la NFS și optimizat pe opt
biți.
Apelul la procmail cu opțiunile -h sau -? va face ca acesta să afișeze o pagină de ajutor în linie de comandă și o pagină de referință rapidă pentru fanionul de rețetă.
Există o excelentă pagină de întrebări și răspunsuri frecvente (FAQ) pentru începători despre filtrele de mail (și procmail în special); este întreținută de Nancy McGough <nancym@ii.com> și poate fi obținută trimițând un mesaj la mail-server@rtfm.mit.edu cu următoarele în corp:
send usenet/news.answers/mail/filtering-faq
Dacă procmail nu este instalat la nivel global ca agent implicit de livrare a corespondenței (întrebați administratorul de sistem), trebuie să vă asigurați că este invocat atunci când ajunge corespondența. În acest caz, fișierul dvs. $HOME/.forward (atenție, acesta trebuie să aibă permisiunea de citire pentru toată lumea) trebuie să conțină linia de mai jos. Asigurați-vă că includeți ghilimelele simple și duble și, cu excepția cazului că situl dvs. rulează smrsh (SendMail Restricted SHell), aceasta trebuie să fie o rută absolută.
" |exec /usr/bin/procmail"
Unele programe de poștă electronică (în special exim) nu acceptă în prezent sintaxa de mai sus. În acest caz, folosiți în schimb următoarea linie:
|/usr/bin/procmail
procmail poate fi, de asemenea, invocat pentru a postprocesa o căsuță poștală de sistem deja plină. Acest lucru poate fi util dacă nu doriți sau nu puteți utiliza un fișier „$HOME/.forward” (caz în care următorul script ar putea fi apelat periodic din cadrul cron(1), sau ori de câte ori începeți să citiți corespondența):
#!/bin/sh ORGMAIL=/var/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=/usr/local/bin:/usr/bin:/bin MAILDIR=$HOME/Mail #ar fi bine să vă asigurați că există DEFAULT=$MAILDIR/mbox #complet opțional LOGFILE=$MAILDIR/from #recomandat :0: * ^From.*berg from_me :0 * ^Subject:.*Flame /dev/null
Alte exemple de rețete pentru fișierul de configurare pot fi consultate în pagina de manual procmailex(5).
Acest program face parte din pachetul procmail mail-processing-package (v3.23pre) disponibil la http://www.procmail.org/ sau ftp.procmail.org în pub/procmail/.
Există o listă de corespondență pentru întrebări legate de orice program din pachetul procmail:
<procmail-users@procmail.org>
pentru a trimite întrebări/răspunsuri.
pentru cererile de abonare.
Dacă doriți să fiți informat cu privire la noile
versiuni și corecțiile oficiale, trimiteți o cerere de
abonament la adresa
procmail-announce-request@procmail.org
Stephen R. van den Berg
<srb@cuci.nl>
Philip A. Guenther
<guenther@sendmail.com>
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.
| 2001/08/27 | BuGless |