InglesPransesEspanyol

OnWorks favicon

mailagent - Online sa Cloud

Patakbuhin ang mailagent sa OnWorks na libreng hosting provider sa Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

Ito ang command mailagent na maaaring patakbuhin sa OnWorks free hosting provider gamit ang isa sa aming maramihang libreng online na workstation gaya ng Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator

PROGRAMA:

NAME


mailagent - isang awtomatikong tool sa pagproseso ng mail

SINOPSIS


mailagent [ -dhilqtFIVU ] [ -s{umaryt} ] [ -f file ] [ -e mamuno ] [ -c config ] [ -L
antas ng log ] [ -r rulefile ] [ -o pawalang-bisa ] [ mailfile ]

DESCRIPTION


Mailagent nagbibigay-daan sa iyong awtomatikong iproseso ang iyong mail. Nabigyan ng set ng lex-tulad ng mga patakaran,
nagagawa mong punan ang mga mail sa mga partikular na folder, ipasa ang mga mensahe sa ikatlong tao, pipe a
mensahe sa isang command o kahit na i-post ang mensahe sa isang newsgroup. Posible rin na
iproseso ang mga mensahe na naglalaman ng ilang mga utos. Ang mailagent ay hindi karaniwang ginagamit nang manu-mano
ngunit sa halip ay tinatawag sa pamamagitan ng filter programa, na siya namang hinihikayat ng sendmail. Iyon
ibig sabihin dapat meron ka sendmail sa iyong system para magamit ito. Dapat mayroon ka rin perlas tumakbo
ang mailagent na mga script.

Mayroong isang hanay ng mga opsyon na maaaring gamitin kapag nag-invoke ka mailagent iyong sarili. Pakiusap
sumangguni sa Opsyon seksyon para sa kumpletong paglalarawan. Maaari mong gamitin ang -h opsyon na makuha
isang misteryosong paalala sa paggamit.

produkto Pangkalahatang-ideya
Mailagent mayroon talagang apat na natatanging hanay ng mga tampok, na maaaring gamitin nang sabay-sabay o
paisa-isa. Kabilang dito ang:

· Isang @SH command processor, upang manatiling tugma sa unang pagpapatupad. Sa
ang pinakasimpleng paggamit na ito, ang lahat ng mga mensaheng mail ay naiwan sa iyong mailbox (o ang catch all
folder na kinakailangan sa mga Debian system: Pakitingnan /usr/share/doc/mailagent/SECURITY para
mga detalye), na may espesyal na pagproseso na itinaas sa mga mensahe na ang paksa ay Utos.
Mangyaring sumangguni sa seksyong pinamagatang GAMIT ANG DEFAULT MGA ALITUNTUNIN kung nais mong gamitin ito
tampok.

· Isang kumpletong filter ng mail, na tumutulong sa iyong pag-uri-uriin ang iyong mail batay sa iba't ibang pag-uuri
pamantayan at aksyon. Ang pag-filter ay tinukoy sa isang file ng panuntunan at pinapalitan ang
default Utos pagpoproseso ng mail (na maaaring i-on muli sa pamamagitan ng tahasang pagtatakda
gumawa ng isang panuntunan para dito). Ito dapat ang pinakakaraniwang gamit ng mailagent at ganap na
dokumentado sa ilalim ng seksyong pinamagatang GAMIT ANG FILTER. Maaari kang maghatid ng mail sa
payak na Unix-style na mga folder ngunit pati na rin sa mga MMDF at MH.

· Isang kapalit para sa bakasyon program, na awtomatikong sasagot sa iyong mail
habang wala ka. Kailangan mo lamang magbigay ng mensaheng ipapadala pabalik at ang
dalas kung kailan ito mangyayari. Binibigyang-daan ka ng ilang simpleng macro substitutions na muling
gumamit ng ilang bahagi ng header ng mail sa iyong mensahe sa bakasyon, para sa mas personalized
sagot. Tingnan ang BAKASYON MODE seksyon para sa karagdagang detalye.

· Isang generic na mail server, na hahayaan kang magpatupad ng isang tunay na mail server nang walang
abala ng mga alalahanin sa mas mababang antas tulad ng pagbawi ng error, pag-log o pag-parse ng command.
Ang buong dokumentasyon ay matatagpuan sa seksyon PANGKALAHATANG MAIL SERVER sa dulo ng
manwal na pahinang ito.

Posibleng palawigin ang mailagent filtering commands sa pamamagitan ng pagpapatupad ng mga ito sa perlas at
pagkatapos ay awtomatikong na-load ang mga ito kapag ginamit. Ang mga pinalawig na utos ay gagana
eksakto tulad ng mga built in na, tulad ng dokumentado sa PAGPAPALAW PAG-FILTER UTOS seksyon.

Pag-aaral mula sa Mga halimbawa
Ito ay lubos na posible na makikita mo ang manwal na pahinang ito na masyadong kumplikado para sa iyo.
Sa kasamaang palad, hindi talaga ito nilalayong maging isang tutorial ngunit sa halip ay isang reference na materyal. Kung
gusto mo, maaari kang magsimula sa pamamagitan ng pagtingin sa mga halimbawang hawak sa puno ng pinagmumulan ng pamamahagi
sa ilalim ahente/mga halimbawa. Ang direktoryo na ito ay naglalaman ng dalawang halimbawa ng mga file ng panuntunan (tingnan ang
README file muna) at verbosely nagkomento.

PAGKAKITA NAGSIMULA


Una, kailangan mong mag-install ng isang minimum na configuration at tingnan kung paano ito gumagana. Ito ay magiging
walang silbi upang ganap na mai-install ang program at pagkatapos ay matuklasan na hindi ito gumagana bilang
nag-advertise...

Upang simulan ang pag-install, kailangan mong mag-set up ng a ~/.mailagent file na siyang pangunahing
configuration file, at piliin ang tama filter programa.

Pagpili Ang Filter Programa
Ang pamamahagi ay may kasamang dalawang filter na programa. Isang nakasulat sa shell at isa sa C. Ang
Maaaring ang bersyon ng shell ang gagamitin kung matatanggap mo ang iyong mail sa maraming iba't ibang paraan
mga platform kung saan ang iyong home directory ay NFS-mount (ibig sabihin, ibinahagi sa lahat ng iyon
mga platform). Ang bersyon ng C ay mas ligtas at mas mabilis, ngunit kailangan mong i-install ito sa isang nakapirming
lokasyon.

Sa ilang platform, sendmail hindi wastong ni-reset ang UID nito kapag nagpoproseso ng mga mail sa loob nito
sariling pila. Sa kasong iyon, kailangan mong kumuha ng pribadong kopya ng C filter program at gumawa
ito ay setuid sa iyong sarili. Ire-reset nang tama ng filter ang UID nito kung gagamitan ng isang
epektibong UID na iba sa iyo (maaaring mangailangan din ito ng setgid bit upang i-reset ang GID bilang
mabuti). Kung ito nga ang kaso sa iyong system, tiyaking ginagamit mo ang landas
configuration variable upang magtakda ng wastong PATH, dahil ang filter ay magbubunga ng isang proseso ng perl
ang '-S' na opsyon, naghahanap ng a mailagent script.

Kahit na hindi mo kailangang kumuha ng setuid na kopya ng filter programa, matalinong mag-set up ng isang
tamang landas: maaaring may makapasok sa iyong account sa pamamagitan ng paglalagay ng mailagent na Trojan horse
ang angkop na lokasyon. Tiyakin din na ang mailagent program ay protektado laban sa
pagsusulat, pati na rin ang direktoryo na nagtataglay nito, o maaaring palitan ng isang tao ang kanyang sarili
bersyon ng script at masira ang seguridad. Naniniwala ako sa setuid filter programa para maging ligtas,
ngunit laging posible ang overlooking kaya mangyaring iulat sa akin ang anumang butas sa seguridad.

Ang filter ang script ay matatagpuan sa Lib/mailagent direktoryo. Ito ay nangangailangan ng ilang pananahi kaya
dapat mong kopyahin ito sa iyong home directory at i-edit ito upang umangkop sa iyong mga pangangailangan. Hinawakan ang mga komento
sa loob nito ay dapat na paliwanag sa sarili. Mayroon lamang isang maliit na seksyon sa ulo ng script
na kailangang i-edit. Kakailanganin mong tanggalin ang mga komento ng shell sa filter iskrip ni
ang iyong sarili kung ang iyong shell ay hindi makayanan ang mga ito.

Sa bersyon 3.0 PL44, ipinapayo ko sa iyo na mas gusto ang bersyon ng C kung nag-aalala ka
seguridad. Kung ikaw ay nasa isang posisyon kung saan maraming mga arkitektura ang maaaring magproseso ng iyong .pasulong,
pagkatapos ay isang shell wrapper na pumipili ng wastong maipapatupad batay sa arkitektura ay magiging
kinakailangan.

Pag-configure Mailagent
If mailagent ay nasa iyong landas, maaari mong awtomatikong i-configure ang isang default na pag-install sa pamamagitan ng
tumatakbo:

mailagent -I

na lilikha ng a ~/.mailagent file mula sa isang umiiral na template, i-customize ang ilang mahalagang
mga variable para sa iyong site, at gumawa ng ilang mga pangunahing pagsusuri sa katinuan. Lahat ng ginagawa ng utos ay
output sa screen para sa mga layunin ng pagsusuri, at anumang problemang natagpuan ay iniuulat.

Kung hindi, kailangan mong kopyahin ang mailagent.cf file na hawak sa mailagent sub-directory
/usr/share/mailagent (mula rito ay pinangalanang Lib) bilang a .mailagent sa iyong home directory. I-edit ito
upang i-configure ang buong pagproseso. Sa partikular, kailangan mong pumili ng direktoryo ng spool
(mula rito ay pinangalanang Spool) at isang direktoryo ng log (mula rito ay pinangalanang Log).

Tandaan na ang paggamit ng awtomatikong pamamaraan sa pag-install sa itaas ay hindi pumipigil sa iyong pumunta
sa pamamagitan ng file at baguhin ito ayon sa gusto mo. Sa katunayan, lubos kang hinihikayat na gawin
ito, lalo na para sa setting ng home directory, ang antas ng pag-log at ang landas or p_host
mga variable. Kapag tapos ka na, muling patakbuhin ang mailagent -I utos upang matiyak na ang lahat ay
ayos lang. Gayunpaman, kakailanganin mong isaksak ang mailagent sa pamamagitan ng paglikha ng a ~/.pasulong file, bilang
ipinaliwanag sa ilang mga seksyon.

Ang sumusunod ay isang paglalarawan ng bawat isa sa mga patlang na makikita mo sa ~/.mailagent file,
na sinusundan ng isang iminungkahing halaga, kapag naaangkop. Ang mga field na minarkahan bilang opsyonal ay maaaring hindi
naroroon sa configuration file. Ang ilang mga larangan ay may malapit na kaugnayan sa iba, at
binigay din yan.

agemax Panahon pagkatapos kung saan dapat alisin ang isang entry sa database (iminungkahing: 1y)
Opsyonal ang field na ito, ngunit kailangan kung autoclean ay nasa.
authfile Mga awtorisasyon sa malayong pagpapadala (hindi pa ipinapatupad).
autoclean Itakda sa ON (case insensitively), ang mailagent ay magsasagawa ng awtomatikong paglilinis ng
mga entry sa database sa ilalim sumira sa pamamagitan ng pag-alis ng lahat ng mga item na mas luma sa agemax. Ito ay
isang opsyonal na field, kung hindi ito naka-default sa OFF. (iminumungkahi: OFF, maliban kung gagamitin mo
ONCE, UNIQUE o RECORD commands, o i-activate ang vacation mode.)
biff Gusto man o hindi biffing kung kailan mailagent naghahatid ng mail sa isang folder. Itakda
ito sa ON (case insensitively) para payagan ang local biffing kung naka-log in ka.
(opsyonal, default sa: OFF)
biffhead Kapag pinagana ang biffing, inililista ng variable na ito kung aling mga header ang dapat i-print
palabas. Dapat ibigay ang mga header sa kanilang normalized na format at paghiwalayin ng
mga kuwit. (opsyonal, default sa: Mula, Para sa, Paksa, Petsa).
bifflen Ang maximum na haba ng katawan ng mensahe na dapat i-print kapag biffing.
(opsyonal, default sa 560).
mga biffline Ang maximum na bilang ng mga linya ng katawan ng mensahe na dapat i-print kung kailan
biffing. sa totoo lang, mailagent sumusubok na mag-print ng ganoong dami ng mga linya, ibinigay
ang kabuuang halaga ng mga character na naka-print ay mas mababa sa bifflen. (opsyonal,
default sa 7).
biffmh Kapag naka-ON, ang katawan ng mensahe ay siksikin bago i-biff sa pamamagitan ng pag-alis
magkasunod na puwang at pagpapalit ng mga bagong linya ng iisang espasyo. Ang mensahe
mismo ay hindi binago pisikal siyempre, tanging ang output sa screen ay
nag-aalala. Dahil ito ay maaaring magbunga ng isang mahirap na basahin na mensahe, iminumungkahi ko sa iyo
i-on din biffnice kapag ginagamit ang opsyong ito. (opsyonal, default sa: OFF).
biffmsg Ang path sa isang file na naglalarawan sa format na biffing ay dapat gamitin. Kung hindi nakatakda, a
ginagamit ang default na hardwired na format. Timplahan ayon sa panlasa. (iminungkahi: ~/.biffmsg).
biffnice Kung dapat bang i-reformat ang mensahe upang maayos na magkasya sa terminal.
(opsyonal, naka-default sa OFF, iminungkahi: ON kapag biffmh ay NAKA-ON din).
biffnl Kinokontrol kung ang mga "blangko" na linya ng katawan ay dapat na i-print o hindi. Sa pamamagitan ng "blangko" na mga linya,
ang ibig naming sabihin ay mga linyang hindi naglalaman ng mga salita. Itakda ito sa ON para i-print ang mga blangkong linya, sa
OFF kung gusto mong makakuha ng mas compact na view ng katawan sa loob ng mga limitasyon na naayos
by bifflen at mga biffline. (opsyonal, default sa ON).
biffquote Kinokontrol kung ang nangungunang linya ng pagpapatungkol ay nagpapakilala ng na-trim na quotation
dapat bahagi ng biff message o hindi. Kapag naka-OFF, ang linya ng attribution
ay trimmed kasama at ito ay iniulat sa trimming mensahe, kapag bifftrim is
NAKA-ON. (opsyonal, default sa ON).
bifftrim Kinokontrol kung ang mga trimmed na linya sa loob ng biff na mensahe ay dapat palitan ng a
mensaheng nagsasaad kung ilan sa kanila ang na-trim. Ginagamit lamang ng %-T biffing
macro. Kapag naka-OFF, awtomatiko itong na-off biffquote din. (opsyonal,
default sa ON).
bifftrlen Sabihin kung gaano karaming mga linya ang haba ng isang nangungunang sipi bago magsagawa ng anuman
pagbabawas. Ginagamit lang ng %-T biffing macro. (opsyonal, default sa 2).
callout Ang pangalan ng callout queue file kung saan pinananatili ang mga batch na trabaho. Ang parameter na ito
dapat tukuyin kapag ginagamit ang AFTER command. (iminumungkahi: $spool/callout)
cleanlaps Panahon ng paglilinis para sa mga entry sa database. Ang halaga ng huling paglilinis ay nai-save
sa context file. Ito ay opsyonal, ngunit kailangan kung autoclean ay nasa.
(iminungkahing: 1M)
comfile Pangalan ng file na naglalaman ng mga awtorisadong command. Kailangan kapag PROCESS ang ginamit.
(iminungkahing: $spool/commands).
magsiksik Pangalan ng file na naglalaman ng listahan ng mga naka-compress na folder. Tingnan ang seksyon tungkol sa
pag-compress ng folder. Isa itong opsyonal na parameter. (iminungkahi: ~/.compress).
compspecs Pangalan ng file na naglalaman ng mga detalye para sa kung paano pangasiwaan ang iba't ibang uri ng
mga format ng compression. Tingnan ang seksyon tungkol sa pag-compress ng folder. Ito ay isang opsyonal
parameter. (iminungkahing: $spool/compressors).
comptag Ang default na tag ng compression kapag gumagawa ng mga bagong folder. Kung hindi tinukoy, ang
default ay 'gzip'.
comserver Pangalan ng file na naglalaman ng mga awtorisadong utos ng SERVER at ang kanilang kahulugan.
Isa itong opsyonal na parameter kung hindi mo planong gamitin ang generic na mail server.
(iminungkahing: $spool/server).
kaugnay na kahulugan File na may hawak na konteksto ng mailagent. Ang konteksto ay nagse-save ng ilang mga variable na kailangan
na panatilihin sa buong buhay ng proseso. Kailangan kung ang awtomatikong paglilinis ay isinaaktibo.
(iminumungkahi: $spool/context)
distlist Isang listahan ng lahat ng magagamit na mga pamamahagi. Tingnan ang sample na hawak
Lib/mailagent/distribs. Kailangan ng PROCESS lamang. (iminumungkahi: $spool/distribs)
domain Ang iyong domain name, nang walang nangungunang tuldok, tulad ng sa example.com. Ang halaga ay
idinagdag sa halaga ng email kapag ang variable na iyon ay walang anumang '@', to
bumuo ng isang ganap na kwalipikadong e-mail address. Tingnan din ang hidenet variable
(opsyonal, mga default sa pangalan ng domain na tinutukoy sa oras ng pagbuo).
email Ang iyong electronic mail address. Kung hindi matukoy, susubukan ni mailagent na hulaan
ito. Ang address na ito ay ginagamit ng mailagent kapag sinusubukang magpadala ng isang bagay sa user
(ikaw!). (iminumungkahi: tukuyin ang iyong e-mail address).
emergdir Pangalan ng direktoryo na dapat gamitin para sa mga dump, mas mabuti. Ito ay
opsyonal. (iminungkahi: ~/tmp/nawala+mail)
execsafe Kung magiging mahigpit bago gamitin exec() maglunsad ng bagong proseso o hindi. Ang
ang halaga ng variable na ito ay ginagamit bilang kapalit ng hindi makatatakas kapag sinusuri ang executable
mga file. (naka-default sa OFF, iminungkahi: ON kung maaari).
execskip Kung laktawan ang exec() sama-samang mga pagsusuri sa seguridad. Huwag i-ON ito
maliban kung talagang pinagkakatiwalaan mo ang lahat ng mga gumagamit na may access sa iyong makina o file
server. (opsyonal, default sa OFF, iminungkahi: OFF).
mula sa lahat Kung o hindi mailagent dapat takasan ang lahat ng mula sa mga linya sa mensahe, hindi
tanging ang sa tingin nito ay dapat magmukhang mapanganib (ibig sabihin, a mula sa pagkatapos ng isang blangkong linya).
Ang pagpipiliang ito ay makatuwiran lamang kapag fromesc ay naka-activate din. Hindi ito pinapansin
kung hindi, at samakatuwid ay opsyonal. Bilang default, ito ay ipinapalagay na NAKA-OFF.
(iminungkahing: OFF, hanggang sa magkaroon ka ng mga dahilan para maniwala na ang iyong mail user-agent ay
nalilito sa mode na ito: kapag nangyari ito, hahatiin ng iyong user agent ang mail para sa no
maliwanag na dahilan).
fromesc Kung o hindi mailagent dapat makatakas sa potensyal na mapanganib mula sa mga linya sa koreo
mga mensahe. Kung gumagamit ka ng MH o kung hindi ginagamit ng iyong mail reader ang mga linyang iyon
magkahiwalay na mga mensahe, pagkatapos ay maaari mo itong itakda sa OFF. (iminumungkahi: NAKA-ON)
mula sa peke Kung o hindi mailagent dapat pekeng isang Mula: linya sa header ng mensahe kapag
wala ito. Natural, nangangailangan ito ng wastong nangungunang Mula sa linya upang gumana!
(opsyonal, default sa ON, iminungkahing: ON).
groupsafe Kung naka-OFF, ang mga file na maaaring isulat ng pangkat ay pamamahalaan na parang secure ang mga ito,
mula sa isang punto ng seguridad. Iwanan ito sa ON kung maaari, o maaari kang dumaan sa a
malaking butas sa seguridad nang hindi mo napapansin (opsyonal, naka-default sa ON, iminungkahi:
NAKA-ON).
sumira Ang direktoryo na ginamit para sa name hashing ng built-in na database na ginamit ng ONCE,
NATATANGING at RECORD na mga utos. Opsyonal, maliban kung gagamitin mo ang mga utos na iyon o
i-activate ang auto cleaning. Ang direktoryo ay inilalagay sa lugar ng spool. (iminungkahi:
$spool/dbr).
helpdir Direktoryo kung saan pinapanatili ang mga file ng tulong para sa mga utos ng SERVER. (iminungkahi:
$spool/help)
hidenet Kapag nakatakda sa ON, ang halaga ng variable domain ay ang ganap na kwalipikadong pangalan
ginamit. Kapag OFF, ilalagay ang hostname sa domain. Kung ang hostname ay
ganap nang kwalipikado, pagkatapos ay ang halaga ng domain ay hindi pinapansin. Nagpapalagay domain
ay nakatakda sa example.com at ang hostname ay marami, pagkatapos ay ang ganap na kwalipikadong pangalan
ay host.example.com if hidenet ay NAKA-OFF, at example.com kung ON. (opsyonal,
mga default sa anumang natukoy sa oras ng pagbuo)
bahay Tinutukoy kung nasaan ang home directory. Ito ay dapat na tumpak.
antas Log level, tingnan sa ibaba para sa isang kahulugan ng mga available na antas (iminungkahing: 9).
linkdirs Kapag nakatakda sa ON, maingat na suriin ang mga simbolikong link sa mga direktoryo kapag gumaganap
mga pagsusuri sa seguridad sa mga sensitibong file. Susuriin nito (recursively) ang bawat isa
simbolikong antas ng link na ang target na direktoryo ay hindi maaaring isulat sa mundo o pangkat
maisusulat at na ang pangunahing direktoryo ng bawat target na link ay hindi mundo
maisusulat. Kung ang hindi makatatakas ang opsyon ay NAKA-OFF, ang parameter na ito ay hindi papansinin. (opsyonal,
default sa: ON, iminungkahing: ON kapag naka-ON din ang secure).
lockdekay Ang pagkaantala sa mga segundo sa pagitan ng dalawang pagtatangka sa pag-lock. (opsyonal, default sa: 2).
lockhold Ang maximum na pagkaantala sa mga segundo para sa paghawak ng lock. Pagkatapos ng oras na iyon, gagawin ang lock
masira. (opsyonal, default sa: 3600).
lockmax Pinakamataas na bilang ng mga pagtatangka sa pag-lock bago sumuko. (opsyonal, default sa:
20).
locksafe Kapag ni-lock ang isang file, mailagent karaniwang ginagawa lockmax mga pagtatangka na pinaghihiwalay ng
lockdelay segundo, at pagkatapos ay sumuko. Kapag nakaharap sa isang paghahatid sa isang mailbox, ito
maaaring magkaroon ng kahulugan na magpatuloy kahit na walang lock ang nahawakan, o kahit na a
Ang bahagyang pag-lock ay ginawa (hal. isa sa .lock o flock()-style na pag-lock
nagtagumpay). Kinokontrol ng variable na ito kung gaano mo gustong maging ligtas. Itakda ito sa OFF para hayaan
Ipinagpatuloy ni mailagent ang paghahatid ng mailbox nito kahit na walang ginawang pag-lock, sa ON
kung gusto mo ng strict locking, to PARTIAL kung mabubuhay ka ng partial locking.
Ang mga mensaheng hindi na-save sa isang folder ay itatambak sa isang emergency mailbox. (opsyonal,
default sa ON). Sa mga sistema ng Debian, mula noon mailagent hindi maaaring kumuha ng mga kandado, ito ay dapat
laging iwanang NAKA-ON, o kung hindi, maaaring mangyari ang paggulo ng mail. Tingnan mo
/usr/share/doc/mailagent/SECURITY para sa mga detalye.
lockwarn Kinokontrol ng variable na ito ang oras pagkatapos nito mailagent dapat magsimulang maglabas ng a
babala kapag abala sa pagsisikap na kumuha ng lock. Isa itong listahan na pinaghihiwalay ng kuwit ng
mga halaga, sa mga segundo. Kung ang dalawang halaga ay ibinigay, ang una ay ang unang oras
threshold, ang pangalawa ay ang repeat period. Halimbawa, isang halaga ng "15,60"
ay magdudulot ng babala pagkatapos ng 15 segundo, pagkatapos ay bawat 60 segundo hanggang sa ma-lock ang lock
kinuha o ang oras ng pagtatangka sa pag-lock ay nag-expire (tingnan lockmax at lockdelay). Kung
isang value lang ang ibinibigay, ito ay kinuha bilang parehong paunang threshold at ang
panahon. (opsyonal, default sa: 20,300).
mag-log Pangalan ng log file na ilalagay sa Log directory. (iminumungkahi: agentlog).
logdir Direktoryo ng pag-log. (iminungkahi: ~/var/log).
mailbox Ang pangalan ng system mailbox file, na bilang default ay ang halaga ng gumagamit
variable ng pagsasaayos. Isa itong opsyonal na parameter.
pagbagsak ng mail Lokasyon ng system mail spool directory. Kung walang ibinigay, kung gayon ang
gagamitin ng mailagent ang halaga na tinutukoy ng Configure.
mailopt Mga opsyon na ipapasa sa mailer (tingnan sendmail). (opsyonal, iminungkahi: -odq
-i, kapag gumagamit ng sendmail).
maxcmds Pinakamataas na bilang ng mga utos na pinapayagang isagawa ng isang utos ng SERVER
bago i-flush ang natitirang mensahe sa mail. (iminungkahing: 10).
maxerrors Maximum na bilang ng mga error para sa SERVER command bago i-flush ang natitira sa
ang mensaheng mail. (iminungkahing: 10).
maxsize Pinakamataas na laki sa bytes ng mga file bago gamitin kit para sa pagpapadala ng mga file. Ito ay ginagamit
sa pamamagitan ng PROSESO. (iminungkahing: 150000).
mboxlock Ang format na gagamitin para sa pag-lock ng mga mailbox bago ihatid sa kanila. Ito
dumaan ang string sa isang maliit na mekanismo ng pagpapalit ng macro upang gawin itong higit pa
pangkalahatan. Ang pangalan ng file na nakuha pagkatapos ng macro substitution ay ang pangalan ng lock
na gagamitin, ibinigay ang pangalan ng file na i-lock. Available
ang mga macro ay:

%D: ang pangalan ng direktoryo ng file
%f: ang pangalan ng file na mai-lock (buong landas)
%F: ang file base name (huling path component)
%p: ang kasalukuyang numero ng pid ng proseso
%%: isang plain % character

Ang mga karaniwang format ng pag-lock ay "%f.lock" at "%D/.%F.lock". Siyempre, para magawa
gamitin ang feature na ito, ang mailagent ay hindi dapat na-configure na gumamit ng flock() -style
locking lang. (opsyonal, default sa: %f.lock). Ito ay walang epekto sa Debian
mga sistema, dahil mailagent hindi pa rin makakuha ng lock, dahil hindi ito sgid mail.
mhprofile Ang pangalan ng MH profile na gagamitin. Ito ay kinakailangan lamang kapag sinusubukang gawin
i-save sa isang MH folder. Kung hindi nakatakda ang opsyonal na parameter na ito, ang default na halaga
~/.mh_profile Ginagamit.
mmdf Itakda ito sa ON kung gusto mong makapag-save ng mail sa mga mailbox na istilong MMDF.
(iminumungkahi: OFF, maliban kung gumagamit ka ng MMDF o MH). Ito ay hindi wasto sa isang Debian system.
mmdfbox Ang halaga ng variable na ito ay mahalaga lamang kung kailan mmdf ay sa. Kung nakatakda sa ON, bago
ang mga folder ay gagawin bilang mga MMDF. Ang variable na ito ay hindi ginagamit kapag nagse-save sa
isang umiiral na folder, dahil sa kasong iyon ang mailagent Awtomatikong
tukuyin ang uri at i-save ang mensahe nang naaayon. (iminungkahing: OFF, maliban kung
gumagamit ka ng MMDF o nais mong gamitin ang mga MH mshf).
msgprefix Pangalan ng file na ilalagay sa mga folder ng direktoryo, na tumutukoy sa prefix ng mensahe
gamitin. Opsyonal, default sa .msg_prefix.
pangalan Unang pangalan ng user, na ginagamit ng mailagent kapag tinutukoy ka. Itinatakda nito ang
halaga ng %U macro.
newcmd Pangalan ng file na naglalarawan ng mga bagong utos sa pag-filter. Tingnan ang seksyon Pagpapalawak
Pagsasala Command para sa karagdagang detalye. Iwanan ang opsyonal na parameter na ito maliban kung
ikaw ay isang mailagent expert. (iminungkahing: $spool/newcmd).
newsopt Mga opsyon na ipapasa sa programa sa pag-post ng balita (tingnan magpadala ng balita). (opsyonal,
iminungkahi: iwanang walang laman kapag gumagamit ng inews).
nfslock Itakda ito sa ON para matiyak na naka-lock ang NFS-secure. Ang pagkakaiba ay ang hostname ay
ginagamit kasabay ng PID para makakuha ng lock. Gayunpaman, ang mailagent ay kailangang
fork/exec para makuha ang impormasyong iyon. Isa itong opsyonal na parameter na nakatakda
sa OFF bilang default. (iminungkahing: OFF kung maghahatid ka ng mail mula sa isang makina lang,
kahit na ito ay sa pamamagitan ng NFS).
passwd File kung saan pinapanatili ang mga password ng SERVER power -- karaniwang naka-encrypt. (iminungkahi:
$powers/passwd).
landas Minimum na landas na gagamitin ng C filter program. Upang magtakda ng isang tiyak na landas para sa a
makina marami, set up a p_host variable. Ito ay magiging nag-prepend sa default
PATH variable na ibinibigay ng iba pang mga programa. (iminungkahi: / bin:/ usr / bin:/usr/ucb).
Tandaan na ang pangalan ng host ay dapat na tinukoy nang walang anumang domain name na nakadugtong dito
(hal para sa isang host name ng lyon.eiffel.com, gumamit ng variable p_lyon). Kung ang iyong host
Ang pangalan ay naglalaman ng isang '-' dito, dapat mong isulat ito bilang isang '_', dahil ang '-' ay hindi wasto
karakter para sa a perlas variable na pangalan.
perlib Maaaring gamitin ang variable na ito upang baguhin ang perl search path para sa mga kinakailangang file.
Dapat paghiwalayin ang mga direktoryo gamit ang isang ':' na character, tulad ng isang shell PATH.
Ang path na ito ay prepended sa default na perl search path. Anumang direktoryo ay hindi
nagsisimula sa isang '/' (pagkatapos ng ~pangalan substitution) ay kinuha relatibong sa
Natukoy ang direktoryo ng mailagent pribadong lib sa oras ng pagsasaayos.
plsave Pangalan ng file na ginamit upang i-save ang mga patchlevel para sa mga naka-archive na distribusyon. Ito
ay ginagamit lamang ng mga utos na hinihingi sa pamamagitan ng PROCESS. (iminungkahing: $spool/plsave).
powerdir Direktoryo na naglilista ng mga clearance ng user para sa mga kapangyarihan ng SERVER. (iminungkahi:
$powers/clearance)
listahan ng kapangyarihan Pangalan ng file na naglalaman ng mga SERVER power alias. Dahil ang mga pangalan ng kapangyarihan ay maaaring maging arbitrary
mahaba ngunit ang ilang mga filesystem ay mayroon pa ring 14 na limitasyon ng character sa filename
haba, ang mga panloob na alias ay nilikha at pinapanatili ng mailagent. (iminungkahi:
$powers/aliases).
powerlog File kung saan naka-log ang mga kahilingan sa kapangyarihan ng SERVER, bilang karagdagan sa agentlog. Since
iyon ay isang alalahanin sa seguridad, magandang ideya na i-log ang mga ito nang hiwalay. Kung hindi
tinukoy, i-log ang mga ito sa agentlog lamang. (iminungkahing: $logdir/powerlog).
kapangyarihan Direktoryo para sa pangangasiwa ng kapangyarihan ng SERVER. (iminumungkahi: $spool/powers)
proglist Isang maliit na paglalarawan para sa mga magagamit na pamamahagi. Tingnan ang sample na hawak
Lib/mailagent/proglist. Ito ay ginagamit ng PROCESS lamang. (iminungkahi:
$spool/proglist)
pila Direktoryo ng pila (mga mensaheng naghihintay na maproseso). Kinakailangan, siyempre.
(iminumungkahi: $spool/queue)
queuehold Pinakamataas na bilang ng mga segundo na maaaring ilagay ng mail sa mailagent queue bago maging
pinoproseso talaga. Sa panahong iyon, mailagent hindi susubukan na iproseso ang
mensahe kahit kailan -q Ginagamit. (opsyonal, default sa: 1800).
queuelost Pinakamataas na bilang ng mga segundo pagkatapos nito mailagent dapat pa ring i-flag ang mga mensahe
ang pila nito bilang luma. (opsyonal, default sa: 86400, ibig sabihin, isang araw).
queuewait Oras sa mga segundo na nagsasabi sa C filter program kung gaano katagal ito dapat maghintay bago
paglulunsad mailagent. (opsyonal, default sa: 60, ngunit maaaring ibaba sa 0 kung ikaw
ayaw maghintay na maantala ang pagkuha ng mga bagong mensahe).
rulecache Ang pangalan ng file na ginamit upang i-cache ang pinakabagong pinagsama-samang mga panuntunan. Dahil kadalasan
mailagent pangunahing gumagana sa isang parehong file ng panuntunan, ito ay nagse-save ng overhead ng
muling pagsasama-sama ng lahat ng mga patakaran sa bawat oras. (opsyonal, iminungkahi: $spool/rulecache).
rulemac Itakda ito sa NAKA-ON para paganahin ang mga macro substitution sa mga pattern ng panuntunan. (opsyonal,
default sa: OFF).
patakaran Ang pangalan ng file na may hawak na mga panuntunan sa pag-filter (opsyonal sa hindi Debian
system, iminungkahi: ~/.rules). Sa mga sistema ng Debian, ang isa ay dapat magkaroon ng kaunting mga panuntunan
file upang maiwasan mailagent mula sa pagsubok na maglagay ng mga mensahe
/var/spool/mail/$USER, dahil hindi ma-lock ni mailagent ang direktoryo na iyon upang maiwasan ang mail
mula sa pagiging magulo. Ito ay dahil ang Debian policy ay nangangailangan ng lahat ng entity
sinusubukang i-lock ang direktoryo na iyon magpadulas mail, at paggawa mailagent magpadulas
anumang bagay ay magiging isang butas sa seguridad.
{ I-SAVE ang papasok };
ay ang iminungkahing minimal rules file.
runmax Timeout para sa RUN command at mga kaibigan. (opsyonal, default sa: 3600).
scriptcc I-flag na nagsasaad kung ang isang kopya ng transcript ng session ng SERVER ay dapat ipadala
sa gumagamit na nagpapatakbo ng mailagent. (iminungkahing: OFF).
hindi makatatakas Kapag nakatakda sa ON, ang mailagent at ang C filter ay magsasagawa ng malawak na seguridad
sinusuri ang mga sensitibong file. Kabilang dito ang mga pagsusuri para sa pagkakasulat ng grupo,
pagmamay-ari at pagsubok sa proteksyon sa direktoryo kung saan naninirahan ang file, at
sumusuri sa mga simbolikong link sa mga direktoryo (mailagent lang, kapag naka-ON ang linkdirs
masyadong). Tandaan na ang secure ay ipinapalagay na ON, anuman ang tunay na setting nito, kung kailan
tumatakbo bilang super-user. (iminungkahing: ON).
sendmail Ang pangalan ng program na ginamit upang magpadala ng mail. Dapat tanggapin ng program na iyon ang mail
mensahe na may mga header sa karaniwang input nito at isang listahan ng mga tatanggap sa
command line. Kung hindi tinukoy, gagamitin ang mailer na pinili sa oras ng pagsasaayos
(karaniwang magpadala ng mail). Ang command line na ginagamit sa pagpapadala ng mensahe ay sendmail
mailopt (mga) address. (opsyonal, iminungkahi: /usr/lib/sendmail).
magpadala ng balita Ang pangalan ng programa na ginamit upang mag-post ng balita. Dapat tanggapin ng programang iyon ang balita
artikulo na may mga header sa karaniwang input nito. Kung hindi tinukoy, gagamitin ang balita
Pinili ang programa sa pag-post sa oras ng pagsasaayos (karaniwang inews). Ang command line
ginagamit upang mag-post ng isang artikulo ay magpadala ng balita -h newsopt. (opsyonal, iminungkahi:
/usr/local/bin/inews).
seq File na ginamit sa pagkalkula ng mga numero ng trabaho (iminungkahing: .seq).
servdir Ang pangalan ng direktoryo kung saan naka-imbak ang mga command ng shell at perl server. Ito ang
default na lugar ng paghahanap. Opsyonal na parameter maliban kung SERVER ang ginagamit. (iminungkahi:
$spool/cmds).
servshell Ito ang pangalan ng shell na ginamit upang ilunsad ang SERVER shell command (talaga sa
iproseso ang wrapper file na sa huli ay magpapatupad ng command). Sa ilan
mga system tulad ng HPUX 10.x, dapat itong itakda sa /usr/old/bin/sh para makuha ang plain
lumang Bourne shell, dahil / Bin / SH ay isang braindead POSIX shell na nagsasara ng file
descriptor na higit sa 2 sa exec(), samantalang ang Bourne shell ay hindi.
(opsyonal, iminungkahi: / Bin / SH maliban kung nasa HPUX 10.x ka, gaya ng ipinaliwanag dati).
spool Direktoryo ng spool, kinakailangan (iminungkahing: ~/var/mailagent).
statfile Mag-file kung saan dapat ipunin ang mga istatistika. Kung walang ganoong file, walang mga istatistika
ay itatala (iminumungkahi: $spool/mailagent.st).
pekeng Kung o hindi mailagent dapat pekeng isang To: linya sa header ng mensahe kapag ito
ay wala, na gagamitin para sa mga layunin ng pag-filter (walang pisikal na pagbabago ng
nangyayari ang header). Gumagamit ito ng Alternate-To: na mga header kung natagpuan, kung hindi, ipinapalagay nito
ang mensahe ay ipinadala sa user at kinukuha ang halaga mula sa gumagamit configuration
variable. (opsyonal, naka-default sa NAKA-ON, iminungkahi: NAKA-ON; I-OFF lang ito kung ikaw
gustong tukuyin ang nawawalang To: mga linya para makita ang SPAM).
tome Ang opsyonal na variable na ito ay maaaring maglaman ng comma separated list ng mga alternatibong logins
na may bisa din para sa gumagamit (mga mail alias). Ito ay ginagamit sa vacation mode
upang suriin kung ang mail ay ipinadala sa user o sa isang mailing list. Pagtutugma
ay naka-angkla sa pangalan ng pag-log in, kaya ang pagsasabi ng "ro*" ay magkatugma sa pareho ugat at ROM.
subaybayan Itakda sa on (case insensitively), ino-on nito ang -t opsyon na sumusubaybay sa lahat ng
mga tugma ng panuntunan at ang mga aksyon sa karaniwang output. Ito ay opsyonal (iminungkahing:
NAKA-OFF).
timezone Ang halaga ng time zone para sa environment variable na TZ (opsyonal).
tmpdir Direktoryo para sa pansamantalang mga file. Kinakailangan (iminungkahing: / Tmp).
umask Default na umask na ni-reset ni mailagent bago magproseso ng mensahe. Ipinagpalagay
maging decimal maliban kung nagsisimula sa '0' (para sa octal) o '0x' (para sa hexadecimal).
Ang octal na format ay ang pinakamadaling paraan upang tukuyin ito gayunpaman. (opsyonal,
default sa: 077).
gumagamit Pangalan sa pag-login ng user na nagpapatakbo ng mailagent. Itinatakda nito ang halaga ng %u macro.
bakasyon Isang flag na nakatakda sa ON o OFF upang ilipat ang vacation mode nang naaayon.
vacfile Ang pangalan ng file na ipapadala pabalik sa vacation mode (iminungkahing: ~/.bakasyon).
nabakunahan Kapag NAKA-ON, lahat ay nagbabago sa vacation file (kahit na lokal) sa pamamagitan ng
Bawal ang VACATION command. Ito ay kapaki-pakinabang kung karaniwan kang marami
naka-customize na mga mensahe sa bakasyon para sa iba't ibang tao ngunit pansamantalang gustong pilitin
isang natatanging mensahe (opsyonal, default sa: OFF).
vacperiod Ang pinakamababang oras na lumipas sa pagitan ng dalawang mensahe sa bakasyon sa isang ibinigay na address
(iminungkahing: 1d).

Magagamit Pagtotroso Antas
Maaaring gamitin ang mga sumusunod na antas ng log habang tumatakbo ang mailagent:

0 Walang pag-log
1 Mga pangunahing problema lamang
2 Nabigong paghahatid
3 Matagumpay na paghahatid
4 Mga ipinagpaliban na mensahe
5 Matagumpay na filter na mga aksyon
6 Hindi pangkaraniwan ngunit hindi magandang pangyayari
7 Mga mensaheng nagbibigay-kaalaman
8 Mga pagkilos na filter na hindi paghahatid
9 Pagtanggap ng koreo
12 Pag-debug
19 Verbose
20 Marami pang verbose

Pag-plug Mailagent
Kapag na-configure mo na ang mailagent sa a ~/.mailagent (kung saan ~ nakatayo para sa iyong tahanan
direktoryo), dapat mong sabihin sendmail paano ito i-invoke. Ginagawa ito sa pamamagitan ng pagtatakda ng a ~/.pasulong
file na ganito ang hitsura (nangunguna at sumusunod na mga double quote ay isang mandatoryong bahagi ng
ito):

"| exec /users/ram/mail/filter >>/users/ram/.bak 2>&1"

Ipi-pipe nito ang lahat ng iyong mail sa filter program, nire-redirect ang lahat ng hindi pangkaraniwang mensahe sa
~/.bak. Maaaring makita ang isang sample na script ng shell ng filter sa Lib/mailagent, pati na rin ang isang C filter
programa. Sa ilang system, maaaring kailanganin na ilipat ang '|' karakter bago ang nangunguna
quote, ngunit huwag subukan ito maliban kung wala kang ibang pagpipilian (ibig sabihin, bilang isang huling paraan lamang).
Gayundin, tila Exim tumatagal ng exemption sa exec, at kahit na marahil sa pag-redirect --
na sayang naman.

Ito ay napaka mahalagang i-redirect ang mga mensahe ng error sa ilang file sa loob ng iyong home directory.
Sa isang bagay, maaalis ka niyan sa problema kung magsisimulang mangyari ang mga kakaibang bagay, ngunit
more to the point, it makes your .pasulong natatangi ang file. Mas matanda sendmail programa, sa isang
magiting na pagtatangka na "i-optimize" ang paghahatid, tahimik na aalisin ang mga duplicate na tatanggap, at kung a
ang tatanggap ay may a .pasulong, ang literal na nilalaman nito ay ginagamit bilang kapalit ng kanyang e-mail address.
Samakatuwid, dalawang lokal na tatanggap na may parehong filtering string ay ituturing na isa
natatanging tatanggap at isa lamang sa kanila ang makakatanggap ng mensahe...

Kung hindi pinapayagan ng iyong system ang pag-redirect ng shell mula sa loob ng .forward, magagamit mo ito
sa halip (sinusuportahan lamang ng C filter):

"| exec /users/ram/mail/filter -o /users/ram/.bak"

na kung saan ay nagre-redirect stdout at stderr sa tinukoy na file para sa iyo, nagdaragdag ng data
sa dulo ng file. Kung ang filter ay tumatakbo sa setuid o setgid, hindi ka papayagan
lumikha ng file, o magdagdag dito maliban kung ang may-ari ng file ay ang tunay uid invoking
ang programa (para sa mga kadahilanang pangseguridad).

Tandaan na ang .pasulong Ang file ay nagpi-pipe lamang ng mail sa filter programa at hindi umaalis
anumang kopya sa mailbox. Nasa sa iyo na magpasya sa file ng panuntunan kung gusto mo
itapon ang mail o iwanan ito sa mailbox.(Tandaan na sa mga Debian system mailagent maaari
hindi i-lock ang direktoryo ng spool, at ang pagpapaalam dito na mag-iwan ng mail sa mailbox ay maaaring maging sanhi ng pagkuha nito
magulo). Kung wala kang rule file (ibig sabihin, nag-iwan ka ng blangko na entry sa iyong
~/.mailagent, o pinangalanan mo ang isang hindi umiiral na file, o ang iyong file ay walang laman), ang
Ang default na aksyon ay ang pag-iwan ng mail sa mailbox, na hindi magandang ideya para sa Debian
mga makina. Mangyaring mag-onstall ng kaunting file ng mga panuntunan sa anumang kaso,
{ I-SAVE ang papasok };
ay ang iminungkahing minimal rules file.

Pinayagan Command
Ang pinahihintulutang command file (tulad ng tinukoy ng comfile variable sa iyong ~/.mailagent)
naglalaman ng lahat ng kinikilala at pinapayagang mga utos. Ang file utos gaganapin sa direktoryo
Lib/mailagent dapat na kopyahin kung ano-ano sa iyong direktoryo ng Spool.

Pagsubok Iyong instalasyon
Ngayon, sa pag-aakalang nagtakda ka ng tamang ~/.mailagent file at na-edit ang seksyon ng pagsasaayos
ng filter, oras na upang subukan ang iyong pag-install. Siguraduhin na ang iyong .pasulong ay mundo
nababasa at na ang filter ay may nakatakdang execution bits (walang dahilan para gawin ang
filter nababasa ng mundo). Magtakda ng log-level na 20 at huwag paganahin ang vacation mode (ang bakasyon
pagpasok sa ~/.mailagent dapat ay OFF). Itakda ang pangalan ng rule file sa isang file
naglalaman ng isang catch-all na panuntunan:
{ I-SAVE ang papasok };
Handa ka nang magpatuloy...

Magpadala ng mail sa iyong sarili at bigyan ng oras ang mailagent para iproseso ang iyong mail. Ang paksa ng
ang mensahe ay dapat na 'pagsubok' (sa katunayan, kahit ano maliban sa 'Command'). Baka gusto mong magpatakbo ng "buntot
-f logfile" upang makita kung ano ang nangyayari. Sa pagtatapos ng pagproseso, ang logfile ay dapat
naglalaman ng isang bagay tulad ng sumusunod (mga pangalan ng mga pansamantalang maaaring -at kalooban- siyempre
magkaiba; ang mga timestamp ay tinanggal):

nakakuha ng karapatang magproseso ng mail
pagbuo ng mga default na panuntunan
pag-parse ng mail
pagsusuri ng mail
nasa mode na 'INITIAL' para sa LAHAT
selector 'Lahat' sa '<1,->', pattern '/^Subject: [Cc]ommand/'
tumutugma sa '/^Subject: [Cc]ommand/' sa 'Lahat' (<1,->) ay mali
selector 'Lahat' sa '<1,->'
tugma . sa 'Lahat' (<1,->) ay totoo
nagse-save sa folder na papasok
XEQ (Umalis)
simula ng LEAVE
simula SAVE /home/ram/mail/incoming
NA-SAVE [qm7831] sa papasok na folder
NA-FILTERED [qm7831] mula sa ram (Raphael Manfredi)
nagpatuloy ang mailagent
paglabas ng mailagent

Kung hindi mo makuha iyon, may problema sa isang lugar. Magsimula sa pamamagitan ng pagtingin sa ~/.bak file
(o kahit anong file ang .pasulong ginagamit upang i-redirect ang output ng filter). Kung nakikita mo
isang bagay tulad ng:

FATAL walang wastong queue directory
DUMPED in ~/mbox.filter

tapos ang ibig sabihin nito ay ang pila parameter sa iyong ~/.mailagent hindi tumuturo sa isang wasto
direktoryo. Ang iyong mail ay itinapon sa isang emergency na mailbox.

Ang ~/.bak Ang file ay maaari ding maglaman ng mga mensahe ng error na nagsasabi na perlas ay hindi natagpuan. Sa ganyan
kaso, dapat mayroong mensahe ng error sa logfile:

ERROR mailagent ang nabigo, [qm7886] ang naiwan sa pila

Sa ganoong sitwasyon, tiyaking tama ang pagkaka-queue ng mail sa isang file qm7886. Ang pila
ipoproseso muli kapag dumating ang isa pang mail o kapag ang mailagent ay tinatawagan ng -q
(gayunpaman, upang maiwasan ang mga kundisyon ng lahi, ang mga mail lamang na nanatili sa loob ng ilang sandali ang magiging
naproseso).

Nangyayari din ang pagpila ng mail kapag isa pa mailagent ay tumatakbo. Kung ang logfile ay nagsasabing:

tinanggihan ang karapatang magproseso ng mail

pagkatapos alisin ang perl.lock file sa direktoryo ng Spool. Ang mga lumang lock file ay awtomatikong
itinapon ng mailagent gayon pa man (pagkatapos ng isang oras).

Kung wala sa mga ito ang nangyari, kung gayon marahil sendmail hindi naproseso ang iyong ~/.pasulong sa lahat o sa
may syntax error ang file. Suriin ang iyong mailbox, at kung ang iyong mail ay naroroon, ang iyong .pasulong
ay hindi naproseso. Kung hindi, hilingin sa iyong system administrator na suriin sendmail's
logfile. Ang isang tamang entry ay lilitaw bilang (na may mga nangungunang timestamp at syslog stamp
inalis):

message-id=[protektado ng email]>
mula sa=ram, laki=395, klase=0, natanggap mula sa lokal
to="| /york/ram/mail/filter >>/york/ram/.bak 2>&1", delay=00:00:05, stat=Sent

Kung hindi mo pa rin mahanap kung bakit hindi naproseso nang tama ang mail, dapat mong tiyakin
karaniwan kang tumatanggap ng mail sa pamamagitan ng pag-alis (o pagpapalit ng pangalan) sa iyong ~/.pasulong at ipinadala ang iyong sarili
isa pang test mail. Tiyakin din na ang iyong home directory ay world readable at "executable".

Kung gumagamit ka ng C filter, tiyaking tumatakbo ito sa tamang platform. May maaaring
maging isang mababang antas na pagruruta ng lahat ng iyong mail sa a mailhost machine, responsable para sa pangwakas
paghahatid, at ang filter program ay tatakbo sa machine na iyon, na maaaring iba
platform kaysa sa iyong pinagsama-samang filter. Tiyakin din na ang iyong home directory ay
naka-mount sa makina na iyon, o hindi mahahanap ng mail transport agent ang iyong
.pasulong file, mas kaunting proseso ito.

Ang ganitong uri ng sentralisadong paghahatid ng mail ay mabuti lamang kapag may ilang tao na may pagproseso ng mail
mga kawit (hal .pasulong mga file ng piping mail sa isang programa); kung hindi, mas mahusay na iruta ang mail
sa workstation o machine ng bawat user, para sa lokal na pagproseso, upang maiwasan ang labis
workload sa mailhost machine, lalo na kung ito ay isang dedikadong NFS server. Kung ikaw ay isang
pag-install ng system administrator mailagent at asahan na maraming tao ang gagamit nito, panatilihin ito
isip.

Opsyon


Mayroong limitadong hanay ng mga opsyon na maaaring gamitin kapag direktang tumatawag sa mailagent.
Isang espesyal na opsyon lamang sa isang pagkakataon ang maaaring tukuyin. Invoking mailagent bilang mailqueue is
katumbas ng paggamit ng -l pagpipilian.

-c file Tumukoy ng kahaliling configuration file (~ nagaganap ang pagpapalit). Ang
ang default ay ~/.mailagent.

-d Pina-parse ng mailagent ang file ng panuntunan, kino-compile ang mga panuntunan at itinatapon ang mga ito
ang karaniwang output. Ang pagpipiliang ito ay pangunahing ginagamit upang suriin ang syntax ng
file ng panuntunan at tiyaking ang mga panuntunan ay kung ano talaga ang iniisip ng user.

-e mamuno Hinahayaan ka ng opsyong ito na tukuyin ang ilang panuntunan sa command line, na gagawin
i-override ang mga tinukoy sa pamamagitan ng ~/.mailagent, kung mayroon man. Maaaring marami rin
-e kung kinakailangan, ang lahat ng mga patakaran ay pinagsama-sama bilang isang masaya
array, na pagkatapos ay na-parse sa parehong paraan ng isang file ng panuntunan. Kung pwede lang isa mamuno
ay ibinigay at walang aksyon na tinukoy sa pagitan ng {...} braces, pagkatapos ay ang
ang buong linya ay nakapaloob sa pagitan ng mga braces. Kaya naman sinasabi -e 'I-save foo' ay
naiintindihan bilang -e '{I-save foo}', na palaging tutugma at isasagawa.
Paggamit ng -d opsyon kasabay ng isang ito ay isang maginhawang paraan upang
i-debug ang isang hanay ng mga panuntunan.

-f mailfile paggamit mailfile bilang isang UNIX-style mailbox (ibig sabihin, isa kung saan ang bawat mail ay
pinangungunahan ng isang espesyal na linyang Mula na nagsasaad ng nagpadala at ang petsa ng mensahe
ay inisyu), i-extract ang lahat ng mensahe nito sa pila at iproseso ang mga ito na parang
sila ay bagong dating mula sa mail delivery subsystem.

-F Pilitin ang pagproseso sa mga nakita nang mensahe. kadalasan, mailagent pumapasok sa
espesyal _LAKES_ estado kapag natukoy ang isang X-Filter: linyang inilabas mismo,
ngunit ang pagpipiliang ito ay ipagpapatuloy ito gaya ng dati (bagaman ang mga mensahe sa bakasyon
ay may kapansanan). Gamitin ang opsyong ito kapag na-filter na ang post-processing mail.
Tingnan din ang -U lumipat kung ginagamit mo ang RECORD o NATATANGING mga aksyon sa
ilang mga tuntunin.

-h Mag-print ng mensahe ng paggamit sa karaniwang error at lumabas.

-i Interactive mode, nagdidirekta sa mailagent na mag-print ng kopya ng lahat ng log messages
on stderr.

-I I-install ang isang ~/.mailagent file mula sa template, o pagsamahin ang bagong configuration
mga variable sa isang umiiral na file; pagkatapos ay magsagawa ng mga pagsusuri sa katinuan at lumikha
mga mandatoryong file o direktoryo. Ang pagpipiliang ito ay maaaring tingnan bilang isang tulong sa
Inaayos mailagentkapaligiran ni. Sa anumang kaso, ang nilikha/pinagsama
~/.mailagent dapat manu-manong i-verify ang file bago ipaalam mailagent makitungo
gamit ang iyong mail sa pamamagitan ng pagkabit nito ~/.pasulong.

-l Ilista ang mailagent queue. Kamakailang nakapila na mga mail na hinihintay ng
filter ay nilaktawan para sa halos kalahating oras, upang maiwasan ang mga kondisyon ng lahi. Ito
maaaring i-configure sa pamamagitan ng queuehold variable. Talagang mga lumang mensahe (more
kaysa queuelost seconds old) ay na-flag na may '#' na character. Naglabas ng mga mensahe
ng pila (pila variable) ay na-flag ng '*', habang ang mga lumang mensahe
sa labas ng pila ay sinenyasan ng '@'. Ang mga naka-lock na mensahe ay may '*'
idinagdag sa kanilang katayuan.

-L antas I-override ang antas ng log na tinukoy sa configuration file.

-o pawalang-bisa Hinahayaan ka ng opsyong ito na i-override ang isang partikular na opsyon sa configuration. Ang pagpipilian
dapat na sundan ng isang wastong linya ng pagsasaayos, na ipapa-parse pagkatapos
ang configuration file mismo. Halimbawa, ang -L 4 ang pagpipilian ay ganap
katumbas ng -o 'level: 4'. Tandaan na ang anumang puting espasyo ay dapat protektahan
laban sa interpretasyon ng shell sa pamamagitan ng paggamit ng naaangkop na mekanismo ng pagsipi.
Maaaring marami rin -o mga opsyon sa command line kung kinakailangan.

-q Sapilitang pagpoproseso ng pila ng mailagent. Tanging ang mga mail ay hindi naka-tag bilang nilaktawan
sa pamamagitan ng -l ang opsyon ay ipoproseso.

-r file Tumukoy ng kahaliling file ng panuntunan.

-s {umaryt} Bumuo ng buod ng lahat ng mga istatistikang nakalap sa ngayon. Ang output ay maaaring
kinokontrol sa pamamagitan ng pagdaragdag ng isa o higit pang mga titik mula sa hanay na {umaryt}. Gamit
-buod ay isang maginhawang paraan upang makuha ang buong kasaysayan ng filter
mga aksyon. Ang u Ang modifier ay magpi-print lamang ng mga ginamit na panuntunan. Ang m pagsasamahin ang lahat
ang mga istatistika sa dulo habang a iniulat ang mode kung kailan ang filter
ang utos ay naisakatuparan. Ang r humihingi ng mga istatistikang nakabatay sa panuntunan at ang y is
medyo walang silbi at narito lamang upang makakuha ng magandang opsyon sa mnemonic. Tandaan na
ang pagtukoy ng opsyon nang higit sa isang beses ay walang epekto sa opsyon
mismo (ibig sabihin, maaari kang maglagay ng tatlo Uu at isa lang m, ngunit makukuha mo pa rin ang
buod!). Ang t letra ay maaaring sundan ng mga digit na tumutukoy kung gaano karaming panuntunan
mga bersyon ng file na nauugnay sa pinakamataas (pinakabagong) file ng panuntunan na dapat namin
kunin mula sa mga istatistika, ang halagang iyon ay nagde-default sa 1: gamit -surat habilin
mag-print ng kumpletong ulat ng istatistika para sa huling bersyon ng iyong mga panuntunan,
habang -surt12a ay gagawin ang parehong para sa huling labindalawang bersyon ng pareho
panuntunan.

-t Ilagay ang mailagent sa isang espesyal na mode ng pagsubaybay kung saan tumutugma ang lahat ng panuntunan at
ang mga naisagawang aksyon ay naka-print sa karaniwang output. Ito ay higit na kapaki-pakinabang
para sa pag-debug ng isang file ng panuntunan. Tingnan din ang subaybayan parameter sa
configuration file.

-V I-print ang numero ng bersyon at lumabas.

-U Pigilan ang UNIQUE at RECORD command na tanggihan ang isang naproseso na
Message-ID sa unang pagkakataon na tumakbo ang mga ito sa isang ibinigay na mensahe. Ito ay kapaki-pakinabang
kapag pinoproseso ang mga mensaheng na-drop sa emergdir direktoryo
dahil sa ilang abnormal (ngunit lumilipas) na kondisyon at nais mong muling iproseso
ang mensahe. Tingnan din ang -F lumipat kung muli mong pinoproseso ang mga mensahe.

Kung nag-invoke ka ng mailagent nang walang mga pagpipilian at walang anumang mga argumento, ang programa ay naghihintay para sa a
mail sa karaniwang input nito. Kung ang isang argumento ay ibinigay, ito ay ang pangalan ng isang file holding
isang mail na ipoproseso. Ito ang normal na pamamaraan ng pagtawag mula sa filter, ang
argument na ang lokasyon ng nakapila na mail.

GAMIT ANG DEFAULT MGA ALITUNTUNIN


Kung ayaw mong gamitin ang tampok na pag-filter ng mailagent, (TANDAAN: Ito ay maaaring magdulot ng mail
na magulo sa mga sistema ng Debian, dahil mailagent hindi ma-lock ang direktoryo ng spol sa ilalim
Mga paghihigpit sa patakaran ng Debian) pagkatapos ay gagamitin ang mga default na built-in na panuntunan. Ang mga iyon ay
talagang simple: lahat ng mga mail ay naiwan sa iyong mailbox at mga mail na may linyang "Subject:
Command" kahit saan sa mensahe ay ipoproseso. Hinahanap ang mga command sa mga linya
nagsisimula sa "@SH". Ang natitirang linya ay ibibigay sa isang shell para sa pagpapatupad.

Ang mga magagamit na command ay binabasa mula sa isang file (entry comfile sa iyong configuration file), isa
pangalan ng command bawat linya. Ang mga nakalista lang doon ang ipapatupad, ang iba ay maglalabas ng isang
maling mensahe. Na-trap ng mailagent ang exit status at magpapadala ng ulat ng error kung a
nabigo ang utos (sa kondisyon na ang utos ay hindi naglalabas ng isang mensahe sa kanyang sarili, kung saan
dapat itong magbalik ng zero exit status).

Kung hindi mo gustong gamitin ang mga default na panuntunan, maaari mong laktawan ang natitirang bahagi ng seksyong ito.

Pag-configure Tulong
Kailangang kopyahin ang help text mailagent na ipapadala sa mga tao Lib/mailagent/agenthelp
sa iyong sariling direktoryo ng spool, tulad ng tinukoy sa iyong ~/.mailagent. Dalawang macro ang maaaring gamitin:

=DEST= Mapapalawak ito sa address ng nagpadala (ang nagpadala sa iyo ng mail
kasalukuyang pinoproseso ng mailagent).

=MAXSIZE= Ito ay kumakatawan sa maximum na laki na itinakda dati kit ay ginagamit upang magpadala ng mga file pabalik
(parameter maxsize sa iyong ~/.mailagent file)

Maaari mong gamitin ang default na file ng tulong o disenyo ng isa na magbibigay ng higit pang mga detalye sa
kawawang gumagamit.

pamamahagi File
Ang dalawang file proglist at mga pamamahagi gaganapin sa Lib/mailagent ilarawan ang iyong mga pamamahagi
maipamahagi ni mailagent. Ang mga sample na ibinigay ay nagpapakita ng inaasahang syntax. Sa
upang linawin ang mga bagay, narito ang dapat na format:

talaksan proglist naglalaman ng isang maliit na paglalarawan para sa mga programa. Lumilitaw ang pangalan ng programa
pagkatapos ng isang bituin. Sinusundan ito ng mga linya sa libreng format. Isang opsyonal na tatlong gitling na linya
naghihiwalay sa paglalarawan ng bawat programa. Tandaan na ang isang nangungunang tab ay idaragdag sa bawat linya
ng paglalarawan.

Ang mga pamamahagi Ang file ay nagtataglay ng mga linya ng sumusunod na form:

progname bersyon landas naka-archive compressed patch

kung saan:

progname ay ang pangalan ng programa (kapareho ng binanggit sa proglist).

bersyon ay ang kasalukuyang numero ng bersyon. Kung wala, maaaring gumamit ng three-dashed na linya.

landas ay ang landas kung saan iniimbak ang pamamahagi. Ang ~ ay mapapalawak sa iyong
direktoryo ng tahanan. Tandaan na kung ang pamamahagi ay nakaimbak sa naka-archive na anyo, ang
Ang pangalan ng path ay ang isa sa archive na walang nagtatapos na extension (na maaaring
.cpio.Z or .tar.Z).

naka-archive ay alinman y or n depende sa kung ang pamamahagi ay naka-archive o hindi.

compressed
ay alinman y or n depende sa kung ang pamamahagi ay naka-compress o hindi.
Ito ay maaaring hulaan mula sa pangalan ng extension, ngunit dapat nating isipin ang file
mga sistemang may maikling pangalan.

patch is y or n depende sa kung ang pamamahagi ay pinananatili mo o hindi. Kung
maglagay ka ng a p, nangangahulugan ito na available ang mga opisyal na patch, bagama't wala ka
panatilihin ang pamamahagi. Sa wakas, isang o nangangahulugan na ito ay isang lumang bersyon,
kung saan mga patch lang ang available, ngunit hindi gagana ang maildist. Kung ganoon,
sa pag-aakalang ang numero ng bersyon ay 1.0, ang mga lumang patch ay inaasahan sa a mga bug-1.0
direktoryo.

Maaari mong isama ang mga komento sa parehong mga file: ang lahat ng mga linya na nagsisimula sa isang nangungunang # ay magiging
hindi pinansin

Pagsubok Iyong koreo ahente
Oras na para tiyaking gumagana ang iyong mailagent. Ipadala sa iyong sarili ang sumusunod na mail:

Paksa: Utos
@SH mailhelp

Dapat kang makatanggap ng mail mula sa iyong sarili na may nakatakdang paksa sa: "Paano gamitin ang aking
mailagent". Kung hindi, suriin ang file ~/.bak (o anumang file na itinakda mo sa iyong
.pasulong). Kung ito ay walang laman, tingnan ang log file. Kung ang log file ay walang laman, kung gayon
marahil ang mail ay nakapila. Suriin ang sendmail pila. Siguraduhin mo rin na ikaw
inalis ang mga komentong '#' sa filter iskrip. Sa ilang mga sistema, nagdudulot sila ng ilang problema.
Kung gumagamit ka ng C filter, baka sira ang iyong sendmail at kailangan mong gumawa ng sarili mo
setuid copy (o maaaring magreklamo ang perl na mayroon kang kernel bug, atbp...).

Kung nagawa mo na ang lahat ng tama ngunit hindi pa rin ito gumagana ng maayos, taasan ang antas ng log
hanggang 20 at muling ipadala ang iyong command mail. Pagkatapos suriin ang log file. Ang diagnosis ay dapat na
mas madali.

Kapag ito ay gumagana, dapat mong suriin ang iyong mga pamamahagi at proglist mga file sa pamamagitan ng pagpapadala sa iyong sarili ng
sumusunod na mail:

Paksa: Utos
@SH maillist

Kung mali ang listahan na mayroon ka bilang kapalit, mali ang iyong mga file sa pamamahagi
nakasulat. Kung hindi mo makuha ang listahan, may problema sa iyong mailagent
pagsasaayos. Subukang muli gamit ang antas ng log na nakatakda sa 20 at tingnan ang mga inilabas na log messages in
iyong Log directory. Tiyaking nakalista ang file sa plsave pagpasok ng iyong
~/.mailagent ay wastong na-update pagkatapos ng a maillist ay tinakbo na.

GAMIT ANG FILTER


Ang mailagent ay maaari ding gamitin bilang isang filter: ang mail ay na-parse at ang ilang mga aksyon ay ginawa
batay sa simple lex-tulad ng mga patakaran. Ang mga aksyon ay mula sa isang simpleng pag-save sa isang folder, a
pagpapasa sa ibang tao, o kahit na pangingitlog ng isang shell command. Bago magpatuloy,
narito ang isang maliit na halimbawa ng isang wastong file ng panuntunan:

Mula sa: ugat { FORWARD postmaster };
Sa: [protektado ng email] { POST mail.gue };
Paksa: /metaconfig/ { SAVE dist };
{ I-SAVE ang papasok };

Mayroong tatlong natatanging mga patakaran. Ang mga panuntunan ay inilalapat sa pagkakasunud-sunod, hanggang ang isa ay tumugma (kaya ang
ang pagkakasunud-sunod ay mahalaga). Anumang mail na nanggagaling ugat ipapasa sa user postmaster. Ang
mail addressed sa [protektado ng email] ay isang mail na nagmumula sa isang mailing list. Ang mail ay nai-post
sa isang lokal na newsgroup mail.gue. Ang mga mail na ang paksa ay naglalaman ng salitang "metaconfig."
naka-save sa isang folder dist para sa naantalang pagbabasa at hindi lalabas sa pangunahing mailbox. Kung hindi
tumugma sa panuntunan, ang mail ay naiwan sa papasok na folder.

Patakaran talaksan palaugnayan
Narito ang isang hindi pormal na paglalarawan ng file ng panuntunan. Ang pag-parse ng file ay ginagawa nang leksikal,
kaya ang pagpili ng mga hindi malabo na token tulad ng '{' o ';' na madaling ma-parse. Ito
nagpapakilala ng ilang limitasyon na tahimik na inilalapat: halimbawa, walang '{' na maaaring gamitin
bilang bahagi ng isang address.

Ang mga komento ay ipinakilala ng isang nangungunang '#' , na dapat nasa kaliwang margin. Hindi tulad ng shell
mga komento, ang isang '#' na hindi naiwang makatwiran ay hindi mauunawaan bilang isang komento. gayunpaman,
pinapayagan ang mga puwang o tab sa harap ng '#'.

Ang lahat ng mga pahayag sa file ng panuntunan ay dapat magtapos sa isang ';'. Mayroong pangunahing apat na bahagi sa
bawat linya. Isang listahan ng mga comma separated mode, sa pagitan ng '<' at '>', na nagbibigay ng set ng
mga mode kung saan nalalapat ang panuntunan. Ang espesyal na mode ALL ay tutugma sa lahat. Ang filter
nagsisimula sa mode na INITIAL. Ang pag-alis sa mode ay magiging default sa " ". Pwedeng bantayan
isang panuntunan laban sa ilang partikular na mode sa pamamagitan ng pagtanggi dito, na ginagawa sa pamamagitan ng paglalagay ng prefix sa mode na may
'!'. Ang mga negated mode ay nangunguna sa iba pang plain mode, ibig sabihin ay " "hindi magiging
tugma, kailanman, at iyon" " ay katumbas ng " ".

Pagkatapos ay darating ang isang listahan ng mga pumipili. Ang mga pumipili na iyon ay dapat na pinaghihiwalay ng espasyo at nagtatapos sa ':'.
Kinakatawan nila ang mga pangalan ng mga field ng header na dapat tingnan ng paparating
pattern. Ang isang walang laman na listahan ng tagapili ay nagde-default sa "Subject:". Mga espesyal na tagapili "Lahat:", "Katawan:"
at "Head:" ilapat sa buong mensahe, katawan nito o header nito. Isang karaniwang ginagamit na tagapili
list ay "To Cc:" na sumusubok sa mga field ng tatanggap ng header. Kung ang pangalan ng tagapili ay
na sinusundan ng tandang padamdam na '!', pagkatapos ay ang lohikal na halaga ng pagsubok para sa tagapili na iyon
ay tinatanggihan.

Ang listahan ng mga tagapili ay maaaring magtapos sa isang opsyonal na detalye ng hanay, na ibinigay bilang <min, max>,
bago ang panghuling karakter na ':' na nagmamarka sa dulo ng listahan ng tagapili. Ang pinakamababa o ang
maximum ay maaaring ibigay bilang '-', kung saan ito ay papalitan ng minimal o pinakamalaki
posibleng halaga. Ang mga indeks para sa pagpili ay nagsisimula sa 1 (hindi 0), halimbawa: <3, 7>. Kung hindi
Ang pagpili ng hanay ay ibinigay, pagkatapos ay ang default <1, -> Ginagamit. Ang mga hanay ay karaniwang pumipili ng mga linya
sa loob ng katugmang buffer, maliban kung ang tagapili ay umaasa ng isang listahan kung saan ito mangyayari
gumagana sa listahan ng mga item. Halimbawa, katawan <3, 5>: pipili ng mga linya #3 hanggang #5
(kasama) mula sa katawan ng mail, samantalang Upang Cc <1,3>: ay tumutok sa unang tatlo
mga address sa bawat To: o Cc: mga linya ng header. Ang mga negatibong halaga ay tumutukoy sa napakaraming linya o
mga address pabalik mula sa dulo, ibig sabihin Cc <-2,->: pinipili ang huling dalawang address sa Cc:
linya. Isang solong numero tulad ng <2> ay nauunawaan bilang <2, 2>, ibig sabihin pumili lamang ito ng isang item
sa listahan, <-> ibig sabihin ang lahat (at samakatuwid ay kalabisan).

Ang tagapili ay sinusundan ng isang pattern sa loob ng '/' o ng isang solong pangalan. Nang sa gayon
madali ang pagsulat ng mga patakaran, ang semantiko ng isang solong pangalan ay nag-iiba depende sa
ginamit na tagapili. Para sa mga espesyal na tagapili na "Mula kay:", "Kay:", "Cc:", "Nagpadala:", kanilang
nauugnay na mga field na "Resent-", "Reply-To:", "Envelope:" at "Apparently-To:", isang solong pangalan
ay nauunawaan bilang isang tugma sa login pangalan ng address. Tandaan na kung walang field na "Para kay:."
naroroon sa header, ang isa ay mape-peke mula sa "Apparently-To:" para sa layunin ng
pag-filter lamang (ibig sabihin, walang pisikal na pagbabago sa header ay tapos na). Kung ang login name ng
ang address ay isang buong pangalan ng form na Una. Huli, tanging ang apelyido ang itinatago, at ay
lower-cased. Kung iisang pangalan lang ang ibibigay, shell metacharacter lang * at ? ay
pinapayagan, pati na rin ang mga pagitan [].

Kung ang pattern ay nauunahan ng isang tandang padamdam na '!', kung gayon ang katugmang katayuan ay
negated (ibig sabihin, ito ay magtatagumpay kung ang pattern ay hindi natagpuan). Kung ang isang salita ay ginagamit para sa
hindi espesyal na mga pumipili, ang parehong mga patakaran ay nalalapat ngunit ang pattern ay naka-angkla sa simula
at ang dulo para sa isang eksaktong tugma. Sa isang pattern na nagsisimula sa '/', anumang regular na expression
naiintindihan ni perlas maaaring gamitin at ang iyong pattern ay hindi mababago sa anumang paraan. Yung isa
ang espesyal na tagapili na "Newsgroups:" ay gumagana bilang "To:", maliban na ang mga pangalan ng newsgroup ay inaasahan
at sinubukan ang isang tugma sa bawat item sa listahan. Ang bawat pattern ay tumutugma sa isang pangalan
para sa isang field na uri ng address (ibig sabihin, "Mga Newsgroup:" na hindi kasama), ay ginawa sa case-insensitive
mode. Kung hindi, maaari mong pilitin ang isang case-insensitive na tugma sa pamamagitan ng pagdaragdag ng trailing i pagpipilian,
tulad ng sa /pattern/i.

Mayroon ding kaunting magic na kasangkot kapag tumutugma sa isang field ng address. Ibig sabihin, kung ang
pattern ay hindi isang salita at ay iniduong at ang simula, pagkatapos lamang ang bahagi ng address
ng patlang ay itatago. Halimbawa, kung mayroon tayong From: field na ang halaga ay Raphael
Manfredi <[protektado ng email]>, pagkatapos ay ang pattern /Raphael/ magkatugma, ngunit hindi /^Raphael/.
Sa halip, /^ram@.*$/ magkatugma, ngunit ito ay mas madaling gawin gamit ang isang pattern ng salita
iumpog, dahil nakatutok lang ito sa login name ng address at tutugma din kung ang
isinulat ang address bilang eiffel.com!ram. Isang address sa Internet form, tulad ng sa
[protektado ng email] ay tahasang tumutugma sa bahagi ng address ng field, at hindi mo dapat
takasan ang '.' tulad ng kailangan mong gawin sa isang regular na expression.

Ito ay maaaring mukhang medyo kumplikado, ngunit ang disenyo na ito ay sinadya upang gawing mas madali ang mga bagay para sa
gumagamit. Narito ang ilang iba pang mga halimbawa:

# Tugma [protektado ng email] at [protektado ng email].
Mula sa: ram

# Tugma [protektado ng email], iumpog ngunit hindi [protektado ng email]
Mula sa: r[oa]*

# Tugma [protektado ng email] ngunit hindi [protektado ng email]
Sa Cc: /^gue@eiffel\.fr/

# Magtutugma ito [protektado ng email] at [protektado ng email]
Sa Cc: /gue@eiffel/

# Tugma comp.lang.perl ngunit hindi comp.lang.perl.poetry (?)
Mga Newsgroup: comp.lang.perl

# Tanggapin ang anuman maliban sa mga mensaheng nanggagaling ugat
Mula sa: !ugat

Kapag sinusubukang tumugma sa "Kay:", "Cc:" o "Apparently-To:", isang listahan ng mga address na pinaghihiwalay
sa pamamagitan ng kuwit ay inaasahan, samantalang isang address lang ang inaasahan pagkatapos ng "Mula kay:". Kung aalisin mo
ang pattern, mauunawaan ito bilang * (tandaan na ang isang salita ay gumagamit ng shell meta-
character), na tutugma sa kahit ano.

Pagkatapos ay darating ang aksyon na gagawin kapag may naganap na laban. Mayroon lamang isang limitadong hanay ng
mga wastong aksyon na ilalarawan nang detalyado sa lalong madaling panahon. Ang aksyon ay nakapaloob sa kulot
braces '{' at '}' at ang mga aksyon ay pinaghihiwalay o tinatapos (depende sa iyong panlasa) ng isang
';'. Ang mga pangalan ng aksyon ay binabaybay sa malalaking titik para sa pagiging madaling mabasa, ngunit ang kaso ay hindi nauugnay. Kung
gusto mong maglagay ng ';' sa loob ng tuntunin, dapat itong takasan sa pamamagitan ng pag-uunahan nito ng a
backslash. Ang dobleng backslash ay isinalin sa isa, at anumang iba pang pagtakas
Ang pagkakasunud-sunod na kinasasangkutan ng backslash na character ay binabalewala (ibig sabihin, ang \n ay pananatiling verbatim).

Tandaan na ang isang panuntunan ay dapat tapusin ng isang ';' pagkatapos ng huling '}'. Ito ay posible na
tanggalin ang panghuling ';' na ito, ngunit ang nag-iisang token na iyon ay ang muling pag-synchronize para sa error
pagbawi. Ang isa ay maaaring magtaltalan gayunpaman na dapat walang syntax error, at sa gayon ay ang ';'
dapat na ligtas na alisin. Sa tuwing may pagdududa, suriin ang iyong file ng panuntunan gamit ang -d pagpipilian.

Narito ang isang prototypical na panuntunan (gamit ang perlas regular na mga expression; mangyaring sumangguni sa
subsection regular expression para sa karagdagang impormasyon):

Mula kay: /^\[protektado ng email]$/ { SAVE eiffel };

Ang panuntunang iyon ay isasaalang-alang lamang kapag ang filter ay nasa mode na ROOT (tandaan iyon
magsisimula ang pagproseso sa mode na INITIAL; gamitin ang BEGIN upang baguhin ang mode, tulad ng sa lex). Kaya sa
mode ROOT, anumang bagay na nagmumula sa isang user na matatagpuan sa eiffel.com naka-save ang site sa
folder eiffel para sa ipinagpaliban na pagbabasa. Hindi lalabas ang mail sa mailbox.

Posibleng magkaroon ng higit sa isang pagpipilian para sa isang panuntunan. Magkapareho ang mga tagapili
lohikal or' ed habang ang iba ay at'ed. Ang mga pagpipilian ay pinaghihiwalay ng kuwit. Para sa
halimbawa,

From: root, To: ram, From: ram, Subject: /\btest\b/ { DELETE };

ay magtatanggal ng mail mula sa ugat or iumpog kung ito ay ipinadala sa iumpog at may salita pagsusulit sa kanyang
paksa. Posible ring isulat ang nakaraang tuntunin bilang:

From: root, ram, To: ram, Subject: /\btest\b/ { DELETE };

dahil kung walang ibibigay na tagapili, ang nauna ay ginagamit (na ang unang pumipili ay
"Paksa:" bilang default).

Saanman sa file ng panuntunan, posibleng tukuyin ang ilang variable. Ang listahan ng mga kinikilala
Ang mga variable ay ibinibigay sa ibang pagkakataon. Sa ngayon, sabihin na natin maildir ay ang default na direktoryo ng folder.
Ang variable na ito ay ginagamit ng utos na SAVE kapag ang argumento ay hindi isang ganap na landas.
Pagtatakda ng

maildir = ~/mail;

ididirekta ang filter na gamitin ~/mail bilang direktoryo ng folder (default ay ~/Mail). Pansinin ang
~ pagpapalit at ang pangwakas na ';'. Hindi posible (sa kasalukuyan) na baguhin ang kapaligiran
sa pamamagitan ng pagtatakda ng PATH halimbawa.

Sa wakas, mayroong isang espesyal na konstruksyon upang mag-load ng mga pattern mula sa isang file. Isang pattern na nakapaloob
double quotes ay nangangahulugan na ang mga pattern na ilalapat ay dapat na kinuha mula sa tinukoy
file. Ang file ay inaasahang nasa direktoryo mailfilter kung ito ay hindi isang ganap na landas
(~ nagaganap ang pagpapalit). Kung ang variable ay hindi nakatakda maildir gagamitin. Kung nagkataon (!)
maildir ay hindi rin nakatakda, ang home directory ay ginagamit. Ang file ay dapat maglaman ng isang pattern
bawat linya, pinahihintulutan ang mga komento ng shell (#) sa simula ng bawat linya.

Ang isang aksyon ay maaaring sundin ng iba pang mga patakaran. Kaya ang sumusunod ay ganap na wasto:

Mula sa:
ram { SAVE ram }
/plc/i { SAVE plc }
ugat { I-SAVE ~/admin }
/xyz/ { TANGGALIN }
"mga gumagamit" { UMALIS }
;

Tandaan ang paggamit ng pagsasama ng file: lahat ng mga user na nakalista sa file gumagamit magkakaroon ng kanilang
mail na natitira sa mailbox ng system. Nalalapat ang mga karaniwang panuntunan para sa mga na-load na pattern na ito.

Ang pumipili Kombinasyon
Ang isang panuntunan ay maaaring may iba't ibang hanay ng mga tagapili. Halimbawa, sa sumusunod na panuntunan:

From: ram, To Cc: root, !Subject: /test/, From: raphael

mayroon kaming sumusunod na set { From, To Cc, !Subject }. Tinatawag ang unang dalawang tagapili
tuwiran mga pumipili, !Paksa: ay tinatawag na a tinatanggihan tagapili. Ang To Cc: selector ay a grupo
selector decomposing sa dalawa tuwiran mga tagapili, habang Mula sa: ay isang atomiko tagapili.
Panghuli, Mula sa: ay isa ring tagapili na may maramihang mga pangyayari. Ang halaga ng isang tagapili ay
ang katumbas nitong lohikal na halaga ng katayuan.

Pabayaan D maging ang hanay ng mga direktang tagapili at N ang set ng mga negated selector, na bumubuo ng a
pagkahati ng R, ang hanay ng lahat ng mga tagapili sa panuntunan. Na ibig sabihin, R ay ang unyon
of D at N, at D nagsalubong sa N ay ang walang laman na set (trivial proof: ang isang selector ay alinman
direkta o tinanggihan). Kung alinman D or N ay walang laman, pagkatapos ito ay hindi isang partition ngunit sa kasong iyon
meron din tayo D = R kung hindi N = R.

Tukuyin natin ang lohikal na halaga ng isang set S bilang lohikal na halaga na gagawin ng filter
ibalik kung ang mga panuntunang iyon ay talagang isinulat. Pagkatapos ay ang lohikal na halaga ng D ay ang lohikal
halaga ng bawat item nito kasama ang AND logical operator na ipinamahagi sa kanila, ibig sabihin, ang
lohikal na halaga ng { a, b, c } ay ang halaga ng (a AT b AT c). Isulat natin ito AT(D). Ang
Ang lohikal na halaga ng bawat isa sa mga item ay ang lohikal na halaga ng tagapili mismo kung ito ay
hindi maramihan, o ito ay ang lohikal na halaga ng lahat ng mga paglitaw ng maramihang tagapili
sa loob ng panuntunan, na may lohikal na O operasyon na ipinamahagi sa kanila. Ibig sabihin, sa
ang halimbawa sa itaas, ang halaga ng Mula ay totoo kung ang Mula sa: mga patlang ay naglalaman iumpog OR raphael.
Isulat natin iyan OR[From].

Upang maging maayos, kailangan nating ilapat ang Batas ni De Morgan sa N, kaya ang mga sumusunod na panuntunan: ang lohikal
halaga ng N ay O(N) at binigyan ng negadong tagapili s, ang lohikal na halaga nito ay AND[s]. At
panghuli, ang lohikal na halaga ng R ay iyon ng D AT N, na may by convention na may lohikal
halaga ng walang laman na hanay ay totoo.

Para sa mga hindi nakakaalam ng Batas ni De Morgan, narito: binigyan ng dalawang lohikal na proposisyon p
at q, pagkatapos ay magaganap ang mga sumusunod na pagkakakilanlan:

HINDI (p AT q) <=> (HINDI p) O (HINDI q)
HINDI (p O q) <=> (HINDI p) AT (HINDI q)

Habang tayo ay nasa lohika ng mga proposisyon, tandaan din na ang OR at AT ay magkapareho
distributive, ibig sabihin, binigyan ng tatlong lohikal na proposisyon p, q at r, meron kami:

p AT (q O r) <=> (p AT q) O (p AT r)
p O (q AT r) <=> (p O q) AT (p O r)

Upang maging kumpleto, ang O at AT ay nauugnay sa kanilang mga sarili at commutative. At ang B itakda
Ang { 0, 1 } na nilagyan ng hanay ng mga operasyon (HINDI, O, AT) ay isang alhebra (isang Boolean).
Ililibre ko sa iyo ang kahulugan ng isang algebra, na talagang walang kinalaman dito
manual page (na para sa isang mail agent, kung sakaling hindi mo maalala :-).

Ang matulungin na mambabasa ay tiyak na mapapansin na hindi ko tinukoy ang lohikal na halaga
ng isang tagapili ng pangkat. Well, binigyan ng tagapili ng grupo G, nabubulok namin ito sa isang DG at NG
pagkahati, DG pagiging subset ng (atomic) na direktang mga tagapili ng G at NG pagiging subset
ng (atomic) negated selectors. Pagkatapos ay ang lohikal na halaga ng DG ay O(DG) at ang lohikal
halaga ng NG ay at(NG); ang pandaigdigang lohikal na halaga ng G pagiging na ng DG OR NG. Kung sakali
alinman sa DG or NG ay walang laman, pagkatapos ay wala kaming partition, ngunit sa pamamagitan ng convention ang halaga ng
ang walang laman na set ay hindi totoo, at ang isa sa mga set ay katumbas ng G. Tandaan na sa loob ng isang grupo
selector, ang mga panuntunan ay eksaktong dalawahan ng mga panuntunan sa loob R.

Ngayon ang tanging tuntunin na hindi lohiko ay kung kabilang ang isang tagapili ng pangkat D or N. ako na
pinili, para sa mga kadahilanang pagkakatulad, upang mapabilang ang tagapili ng grupo D kung hindi magsisimula
ni '!' at sa N kung hindi. Ibig sabihin, !To Cc: belongs to N habang ang Cc !To: ay kay D.
Bukod doon, ang pagkakasunud-sunod sa loob ng tagapili ng pangkat ay walang kaugnayan: Sa Cc: ay katumbas ng Cc
Upang:, kaya ang pag-uugali sa quotient set ay maayos.

Narito ang ilang mga halimbawa:

# Itugma ang anumang bagay: (hindi mula sa ram O hindi mula sa ugat) ay palaging totoo.
Mula sa: !ram, !ugat

# Itugma ang anumang bagay ngunit tanggihan ang mga mail na nagmumula sa ram O ugat
!Mula sa: ram, ugat

# Tanggihan ang mga mail na ang mga header ay tumutugma sa /^Re.*/ naglalaman ng word test
!^Re.*: /\btest\b/

# Panatilihin ang mga mail na naglalaman ng paksa pagsusulit AT marami
!Paksa: !/test/, !/host/

# Tugma kung iumpog ay nakalista sa Upang O ang Cc linya
Sa Cc: ram

Napakaliit Ulo
Ang isang minimal na hanay ng mga tagapili ay garantisadong itatakda, anuman ang aktwal na header ng
ang mensahe. Ito ay para sa layunin ng pag-filter lamang, walang pisikal na pagbabago
gumanap.

Sobre: Ito ang address na makikita sa mail envelope, ibig sabihin, ang address kung saan ang mail
parang nagmula sa. Ito ay maaaring iba sa Mula sa: address field kung
ang sulat ay nagmula sa a pinagkakatiwalaan user, sa terminolohiya ng sendmail. Kung hindi mo gagawin
alam kung ano iyon, huwag pansinin ito.
Mula sa: User na nagsulat ng mail. Kung nawawala ang linyang ito, gamitin ang address na makikita sa
una Mula sa linya.
Haba: Ang pisikal na haba ng katawan, sa mga byte, isang beses na content-transfer-encoding (kung
anuman) ay tinanggal.
Mga linya: Ang dami ng mga linya sa katawan (na-decode, kung kinakailangan).
Sa: Ang pangunahing (mga) tatanggap ng mensahe. Kung ang linyang ito ay nawawala ngunit isang set ng
Tila-Kay: ang mga linya ay matatagpuan, pagkatapos ay ang mga address na iyon ay ginagamit sa halip. Kung walang ganyan
linya, pagkatapos ay ipagpalagay na ang mail ay nakadirekta sa user (na tila a
makatwirang palagay :-).
Nagpadala: User na nagpadala ng mail. Maaaring iba ito sa Mula sa: linya. Kung walang ganoong larangan
umiiral, pagkatapos ay ang address sa unang Mula sa linya ay ginagamit (mail envelope).
Ipinadala: Ang computed header na ito ay isang comma-separated list ng lahat ng mga host kung saan ang
ipinadala ang mensahe, sa wastong pagkakasunud-sunod ng paghahatid. Ang bawat item sa listahang ito
ay maaaring isang pangalan ng makina tulad ng mail.hp.com o isang IP address tulad ng
[15.125.38.12]. Ang listahan ay nagmula sa Natanggap: mga linyang naroroon sa
mensahe.
Tumugon sa: Kung saan dapat ipadala ang anumang tugon. Kung hindi Tumugon sa: field ay naroroon, pagkatapos ay ang
Bumalik-Landas ay ginagamit (na may <> hinubad), o ang Mula sa: linya ay na-parse sa
kunin ang e-mail address ng may-akda.

Variable
Sinusuportahan ng mailagent ang mga variable na tinukoy ng gumagamit, na mga global. Ang mga ito ay itinakda sa pamamagitan ng
ASSIGN command at tinutukoy gamit ang %# macro. Ipagpalagay na nagtakda kami ng isang variable marami, Pagkatapos
%#marami ay papalitan ng aktwal na halaga ng variable. Nagbibigay-daan ito sa ilang variable
pagpapalaganap sa mga tuntunin.

Halimbawa, sabihin nating tumatanggap ang user ng mga cron na output mula sa iba't ibang machine at ninanais
i-save ang mga ito sa isang per-machine na batayan, na nag-iiba sa pagitan ng mga pang-araw-araw na output at lingguhan.
Narito ang isang solusyon:

Paksa: /output para sa host (\w+)/ { ASSIGN host '%1'; TANGGIHAN };
Paksa: /^Daily output/ { SAVE %#host/dayly.%D };
Paksa: /^Lingguhang output/ { SAVE %#host/weekly.%m-%d };

Bukod sa variable na interpolation sa pamamagitan ng %# escape, posible rin itong gumanap
mga pagpapalit at pagsasalin sa nilalaman ng isang variable (o isang back-reference, ibig sabihin, a
numero sa pagitan ng 1 at 99). Ang dalawang command na SUBST at TR ay magkakasunod na gaganap sa lugar
pagpapalit at pagsasalin. Gayunpaman, sa kasong iyon, ang pangalan ng variable ay dapat na
pinangungunahan ng isang solong #. Naiiba nito ang back-reference 1 mula sa variable #1,
bagaman 1 ay isang nakakatawang pangalan para sa isang variable. Pinipigilan din ng pangangailangan para sa # ang karaniwang pagkakamali
ng pagsulat ng %#, bilang mailagent ay malakas na magrereklamo kung ang unang parameter ng SUBST o TR ay
hindi isang digit sa pagitan ng 1 at 99 o hindi nagsisimula sa isang #.

Narito ang ilang mga aksyon upang gawing kanonikal ang pangalan ng host sa maliit na titik at alisin ang
domain name, kung mayroon man:

{ TR #host /AZ/az/; SUBST #host /^([^.]*)\..*/$1/ };

Ang mga pagkilos na iyon ay direktang isinalin sa kanilang perlas katumbas, at anumang pagkakamali sa
iuulat ang detalye ng regular na expression.

Kung ang pangalan ng variable ay nagsisimula sa isang colon ':', kung gayon ang variable ay gagawing persistent. yun
ang ibig sabihin ay pananatilihin nito ang halaga nito sa iba't ibang mailagent invocations. Ang variable ay
naka-imbak lamang (na inalis ang nangungunang ':') sa database ng mailagent at sa gayon ay napapailalim
sa patakaran sa pagtanda na itinakda sa ~/.mailagent.

Sa loob ng PERL command o mail hooks gamit ang perl (tingnan ang MAIL HOOKS section), magagawa mo
manipulahin ang mga (tinatawag na) panlabas na mga variable sa pamamagitan ng isang hanay ng mga function ng interface na matatagpuan
nasa panlabas package (ibig sabihin, dapat mong lagyan ng prefix ang bawat pangalan ng function kasama ang package nito
pangalan, itakda pagiging extern'set). Ang sumusunod na tatlong mga function ng interface ay ibinigay:

val(name) Ibalik ang halaga ng variable pangalan (ang nangungunang ':' ay hindi bahagi ng pangalan,
sa alinman sa tatlong mga function ng interface na ito).

set(pangalan, halaga)
Itakda ang panlabas na variable pangalan hawakan halaga. Walang interpretasyon ang ginagawa ng
function sa aktwal na nilalaman ng halaga binibigay mo.

age(name) Ibinabalik ang edad ng variable, ibig sabihin, ang lumipas na oras sa mga segundo mula noong huli
pagbabagong ginawa ng itakda.

Sa kasalukuyan ay walang paraan para burahin ang isang variable mula sa database. Pero kung hindi mo gagamitin
ang variable, ito ay aalisin kapag ang edad nito ay naging mas malaki kaysa sa maximum
edad na tinukoy ng agemax variable ng pagsasaayos.

regular expression
Ang lahat ng mga regular na expression ay sumusunod sa V8 syntax, tulad ng sa perlas, kasama ang lahat ng perlas
mga extension. Kung ang isang bracketing construct (...) ay ginagamit sa loob ng isang panuntunan, ang %tambilang macro
tumutugma sa tambilangHawak ang substring ni sa loob ng bracket. Ang lahat ng mga back-reference ay
kabisado ayon sa bawat panuntunan, na binibilang mula kaliwa hanggang kanan. Gayunpaman, dapat na mag-ingat
kinuha kapag gumagamit ng back-reference sa multiply present selector, gaya ng gagawin ng lahat ng tugma
isagawa hanggang sa unang tugma, at ang mga back-reference ay kinukuwenta sa mabilisang habang
paggawa ng pattern matching.

Halimbawa:

Para kay: /(.*)/, Paksa: /Output mula sa (\w+)/ { ASSIGN to '%1'; I-SAVE %2 };

ay i-save ang To: field sa variable na 'to' at i-save ang mail sa isang folder na nagmula sa
pangalan ng host na tinukoy sa paksa. Gayunpaman, kung sasabihin natin:

Paksa: /host (\w+)/, /from (\w+)/ { ASSIGN match '%1' };

pagkatapos ay magkakaroon lamang ng isang back-reference set, at ito ay magmumula sa unang pattern
tumutugma kung ito ay magtagumpay, o mula sa pangalawa. Dapat mayroon ang pangalawa o unang pattern
walang bracketing construct at tumutugma pa rin, kung gayon ang back-reference ay hindi maitatala sa
lahat, na nangangahulugang ang sumusunod ay malamang na hindi ang gusto mo:

Paksa: /from/, /host (\w+)/, To: /(.*)/ { SAVE %1; TANGGIHAN };

na parang ang /from/ pattern ay tumutugma pagkatapos /host (\w+)/ ay hindi susuriin (magkapareho
ang mga pumipili ay or'ed at iyon ay na-optimize), pagkatapos ay ang %1 ay magre-refer sa To: field samantalang
kung ang /host (\w+)/ ay tumutugma, %1 ang magiging host name.

Gayunpaman, ang pag-uugaling ito ay maaaring gamitin upang piliing mag-imbak ng isang artikulo ng balita na naging
ipinadala sa iyo sa isang folder na ang pangalan ay ang pangalan ng newsgroup sa dot form. Assuming gusto namin
para bigyan ng priyoridad ang comp.lang.perl, masasabi nating:

Mga Newsgroup:
/(comp.lang.perl)/,
/(comp.mail.mh)/,
/(comp.compilers)/,
/([^,]*)/ { SAVE %1 };

Ang isang artikulong naka-cross-post sa comp.lang.perl at comp.mail.mh ay mase-save sa a
comp.lang.perl folder, dahil ito ang unang tumutugma. Ang mga huling tuntunin ang nag-aalaga
ibang mga artikulo: ang ginamit na folder ay kung ano man ang unang lumabas na newsgroup.

Mayroon ding espesyal na macro %&, na naglilista (ito ay isang listahan na pinaghihiwalay ng kuwit) ang lahat ng
mga tagapili na tinukoy sa pamamagitan ng isang regular na expression na talagang tumugma. Halimbawa:

Re.*: /york/ { ASSIGN which '%&' };

itatalaga sa alin ang listahan ng lahat ng mga field na tumutugma sa /Re.*/ pattern na
naglalaman ng 'york', maging field na Received: o Resent-From: field (bilang parehong tumutugma sa
detalye ng tagapili). Ipagpalagay na ang parehong mga patlang ay naglalaman ng salita york, ang halaga ng
%& ay magiging 'Received, Resent-From;' (ang mga patlang ay nakaayos ayon sa alpabeto).

Kung mayroon kang higit sa isang tinukoy na tagapili sa loob ng iisang panuntunan, maaaring ito
sulit na malaman na ang lahat ng hanay ng mga tumutugmang tagapili ay naitala sa loob ng %&, bawat hanay
winakasan ng ';'. Kung ginamit ang isang negadong tagapili, ire-record ng %& ang lahat ng field
na hindi naglalaman ng pattern, sa pag-aakalang nagtagumpay ang pagpili (kung hindi, wala
naitala).

Magagamit Aksyon
Ang mga sumusunod na aksyon ay magagamit bilang mga utos sa pag-filter. Kaso ay walang kaugnayan bagaman ang
Ang inirerekomendang istilo ay ang baybayin ang mga ito sa upper-case. Tulad ng ipinaliwanag sa ibang pagkakataon, karamihan sa mga aksyon
itala ang kanilang katayuan sa paglabas sa isang espesyal na variable na maaaring masuri sa pamamagitan ng -t at -f
mga opsyon ng ABORT, REJECT at RESTART. Para sa bawat command na nagbabalik ng naturang exit status, ang
Ang mga kondisyon ng pagkabigo o tagumpay ay ibinibigay sa dulo ng bawat paglalarawan. Kung wala naman
tinukoy, kung gayon ang utos ay hindi nagbabalik ng isang makabuluhang katayuan.

I-Abort [-tf] [paraan]
Itigil kaagad ang paglalapat ng mga panuntunan sa pag-filter. Tingnan ang TANGGILAN para sa kahulugan ng
ang mga opsyonal na parameter. (Hindi binabago ang kasalukuyang katayuan)

PAGKATAPOS [-sanc] (oras) aksyon
Nagre-record ng callback pagkatapos ng tinukoy oras, Kung saan aksyon isasagawa.
Bilang default, ipinapalagay ang isang mailagent filtering action (-a opsyon), sa kasalukuyang
mensaheng mail. Isang shell command (-c) ay maaaring ibigay sa halip, na tinatanggap ang kasalukuyang
mensaheng mail bilang karaniwang input. Sa wakas, ang isang simpleng utos ng shell ay maaaring patakbuhin (na may
walang input) gamit ang -s opsyon. Ang pagpipilian -n maaaring gamitin kapag ang kasalukuyang mail
ang mensahe ay hindi kailangang itago para sa input. Halimbawa:

PAGKATAPOS -taon (1 araw) GAWIN ~/proseso:proc'run(%u)

tatawag proc'run tinukoy sa ~/proseso file sa isang araw mula ngayon, wala
pagbibigay ng anumang input (ang aksyon dito ay hindi nangangailangan ng anuman).

Kapag nagpapatakbo ng mailagent command, ang paunang working mode ay nakatakda sa _CALLOUT_.
Maaaring mahalaga ito kung tatawagan mo ang APPLY halimbawa. Kung ang naitala na oras ay mas kaunti o
katumbas ng kasalukuyang oras (na ngayon), magaganap ang callback kapag
Ang mailagent ay tapos na sa mga mensahe sa pila nito, bago lumabas. Ito ay nagpapahintulot
para sa sumusunod na cute na trick, nalaman ni Randal Schwartz:

PAGKATAPOS (ngayon) # tinidor ang isang kopya ay maaari ko nang mangle
STRIP Reply-To \; RESYNC \;
ANNOTATE -du Reply-To %2 \; RESYNC \;
NOTIFY mensahe %r \; TANGGALIN \;
;

Tandaan na ang utos ay hindi tinatawag AT dahil gagawin lang ang tawag
sa susunod na mailagent invocation pagkalipas ng tinukoy na oras. Ang mga petsa ay
tinukoy gamit ang parehong format tulad ng sa SELECT. (Mabibigo kung ang aksyon ay hindi maaaring
naitala sa callout queue).

I-ANNOTATE [-mula sa] parang halaga
I-annotate ang mensahe sa pamamagitan ng pagdaragdag parang sa header ng mail, kasama ang ibinigay halaga.
Ito ay tulad ng utos ng MH anno, ngunit ginagawa ang anotasyon sa dulo ng
ang header, samantalang ginagawa ito ng MH sa itaas. Karaniwan, isang dagdag parang Ay dinagdag,
na may kasalukuyang petsa bilang halaga ng field.

Ito ay maaaring sugpuin sa pamamagitan ng paggamit ng -d pagpipilian Kung halaga ay tinanggal, tanging ang
nabuo ang field ng petsa (kaya ito ay isang error na gamitin ang -d opsyon na wala
pagbibigay ng a halaga). Tulad ng lahat ng mga utos na nagbabago sa header, ang RESYNC ay
kinakailangan para makita ng bahagi ng filter ang bagong header.

Ang -u Ang opsyon ay nangangahulugang "natatangi", at pinipigilan ang ANNOTATE na isagawa kung ang
tinukoy parang ay naroroon na sa header. Huwag kalimutang i-RESYNC sa pagitan
sunud-sunod na ANNOTATE command gamit ang opsyong ito kung ang parang ay tumutukoy sa isang nakaraan
I-ANNOTATE ang target. (Mabibigo kapag walang anotasyon na naganap)

APPLY rulefile
Kunin ang mga panuntunang hawak rulefile at ilapat ang mga ito sa kasalukuyang mensahe. Ang
magsisimula ang filter sa kahit anong mode ka noong ginagamit ang command na ito, ngunit walang feed
pabalik ay magaganap, ibig sabihin, ang anumang pagbabago sa mode ay mawawala kapag bumalik mula sa
utos.

Ang mga variable (tingnan ang %# macro) ay pinapalaganap nang pabalik-balik sa pamamagitan ng APPLY,
ibig sabihin nakikita mo ang mga variable na itinakda ng tumatawag, at maaari mong baguhin ang kanilang mga halaga o
lumikha ng mga bagong variable para magamit ng tumatawag sa ibang pagkakataon.

Kung ang mail ay nai-save sa panahon ng aplikasyon ng mga patakaran, pagkatapos ay ang kaukulang
flag ay nakatakda sa pangunahing filter (ang isa na nagsimula sa APPLY command). Maaari mong
pugad sila, siyempre. (Mabibigo kung ang mail ay hindi nai-save sa pamamagitan ng mga panuntunang hawak
rulefile)

TAKDANG ARALIN ay halaga
Italaga ang value sa variable na tinukoy ng user ay, na maaaring higit pang ma-access
as '%#var' para sa macro substitution o #var sa TR at SUBST na mga utos sa lugar
ng variable na pangalan. Tandaan na walang nangunguna # sa harap ng variable
pangalan Ang halaga ang iyong ibinigay ay unang tumakbo perlas upang makita kung naglalaman ito ng ilan
mga operasyon sa aritmetika. Kung matagumpay ang pagsusuri, ang resultang halaga ay
ginamit sa halip. Kung ang isang error ay nangyari sa proseso ng pagsusuri na ito, pagkatapos ay ang literal
ginagamit ang halagang ibinigay. Upang maiwasan ang pagsusuri, maaari mong ilakip ang kabuuan
halaga sa mga simpleng panipi. Ang mga iyon ay puputulin bago maganap ang pagtatalaga.
Kung gusto mo talaga ng mga simpleng quotes sa una AT huling posisyon, kailangan mo
doblehin ang bawat isa sa kanila. (Hindi binabago ang kasalukuyang katayuan)

BACK utos
Isakatuparan utos at gawin ang output nito bilang mga bagong aksyon na isasagawa sa mail
(samakatuwid gumaganap ng isang bagay na kahalintulad sa `utos` sa shell). Kung wala
output, walang ginagawa. Ang mga BACK command ay maaaring ma-nest, bagama't maaari itong humantong sa
mga sorpresa na hindi isisiwalat ng manpage na ito (ngunit tinitiyak ko sa iyo na ito ay magiging nakakatawa,
assuming pareho tayo ng sense of humor... :-). Tandaan na pareho ang pamantayan
output at ang karaniwang error mula sa command ay ginagamit.

Kung nabigo ang command, ang output ay ipapadala pabalik sa user at walang aksyon
gumanap. Higit pa rito, hindi nangyayari ang normal na feedback dito: anumang output mula sa
Ang command ay kinuha bilang mga filter na aksyon, na nangangahulugang ang semantics ng PASS, para sa
halimbawa, ay binago: hindi namin binabawi ang katawan ngunit nag-uutos. (Ang pagpapatupad
ang katayuan ay ang sa utos)

BEEP [-l] bilangin
Maaaring gamitin ang command na ito upang ibagay ang dami ng mga beep na ibinubuga kapag nagbiff sa
terminal, para sa bawat isa %a pagpapalawak. Bilang default, ang halagang iyon ay nakatakda sa 1. Gamit ang
-l Binabago ng opsyon ang bilang ng beep nang lokal para sa panuntunan. Kung hindi, ang default
binago ang halaga.

Tandaan na pinapalawak lang nito ang %a sa angkop na dami ng mga character na Ctrl-G.
Dapat pahintulutan ang iyong terminal na mag-isyu ng magkakasunod na mga kampana para gumana ito. napaka
madalas, ang mga terminal ay na-configure upang ang unang bell na natanggap ay lalong hindi pinapagana
mga beep nang ilang panahon, upang maiwasan ang mga kaskad ng mga kampana. Kung gagamit ka xterm para
halimbawa, dapat mong gamitin ang:

xterm -xrm "XTerm*BellSuppressTime: 0"

upang paganahin ang magkakasunod na kampana. kung hindi, xterm lalamunin sila sa loob ng 200 ms,
kaya hindi epektibo ang BEEP command, tila. (Hindi binabago
kasalukuyang katayuan)

SIMULAN [-ft] ay
Maglagay ng bagong estado. Ang isang tahasang REJECT o RESTART ay kinakailangan upang i-abort ang
pagproseso ng kasalukuyang tuntunin. Ang pagpoproseso ay nagsisimula sa estadong INITIAL. Kung
ang -f (resp. -t) flag ay tinukoy, pagkatapos ay ang pagbabago ng estado ay nangyayari lamang kung ang
ang huling katayuan ng command ay nagpahiwatig ng isang pagkabigo (resp. isang tagumpay). Ang isang pangalan ng estado ay maaari
naglalaman ng mga alphanumeric na character at underscore. (Hindi binabago ang umiiral na
katayuan)

BIFF [-l] on|off|path
Payagan o huwag payagan ang biffing nang pabago-bago. Kapag ang biffing ay naka-on sa pamamagitan ng
configuration file o sa pamamagitan ng command na ito, isang mensahe ang naka-print sa ilan sa
mga terminal kung saan naka-log ang user kapag natanggap ang mail, gaya ng ipinaliwanag sa ilalim ng
seksyon MAIL BIFFING.

Sa halip ng on or off, maaari mong tukuyin ang isang pangalan ng file (~ pinahihintulutan ang pagpapalit).
ang bagong landas na gagamitin para sa template ng biffing format.

Kung gagamitin mo ang -l opsyon, lokal na ginagawa ang mga pagbabago, para sa tagal ng panuntunan
lamang. Kung TANGGILAN mong pumunta sa ibang panuntunan, mawawala ang iyong mga pagbabago. Ang
ang pandaigdigang halaga ng mga binagong parameter ay binago sa unang lokal na paggamit at
naibalik kapag may ipinasok na bagong panuntunan. (Hindi binabago ang katayuan ng pagpapatupad)

LUPA (mga) address
I-bounce ang mensahe sa tinukoy na (mga) address at kumikilos na parang may nai-save
tapos na. Ang pagkakaiba lang sa FORWARD ay walang idinaragdag na linyang parang Resent
ang header. Kung ang isang address ay tinukoy sa double quote, ito ay kinuha bilang ang pangalan
ng isang file na ilo-load upang makakuha ng mga address (isang address sa bawat linya, mga komento sa shell
(#) pinapayagan). Ang paglutas ng pangalan ng file ay kapareho ng ginamit para sa pattern
naglo-load. (Mabibigo kung hindi maipadala muli ang mail)

DO karaniwan [(arg1, arg2, ... , argn)]
Tinatawag ang perl karaniwan, kasama ang mga ibinigay na argumento kung mayroon man. Ito ay isang napakababa
antas hook sa mailagent's panloob. Ang gawain ay maaaring tukuyin nang mag-isa
(Pangalan ng package, pakete pagkatao pangunahin bilang default), o kinilala ng isang nangungunang mga tag,
sinusundan ng isang ':', pagkatapos ay ang karaniwang pangalan tulad ng dati. Ang mga tag maaaring maging daan patungo sa a
file kung saan tinukoy ang routine, o isang command name (para sa mga command na tinukoy ng user
na dynamic na na-load). Halimbawa

DO UNKIT:newcmd'unkit('true')

hahanapin ang tinukoy ng gumagamit UNKIT command, i-load ang file kung saan ito tinukoy
(nasa newcmd package), pagkatapos ay tawagan ang routine na may 'totoo' bilang argumento. Ang
pakete tinutukoy kung saan ang paglo-load ay tapos na, kaya siguraduhin na ito ay
pare-pareho sa kahulugan sa file kung saan tinukoy ang routine. (Nabigo
kung ang gawain ay hindi matatagpuan at maisakatuparan)

DELETE Tanggalin ang kasalukuyang mensahe. Sa totoo lang, wala itong ginagawa, nagmamarka lang ito
ang mail bilang na-save. Kung walang karagdagang aksyon na may kinalaman sa pag-save ay ginawa, pagkatapos ay ang mail
hindi kailanman lalabas sa mailbox. (Hindi kailanman nabigo)

MAGPAKAIN [-maging] programa
Ipakain ang buong mensahe sa isang programa at ibalik ang output bilang bagong mensahe.
Samakatuwid ang programa ay lilitaw bilang isang filter para sa buong mensahe. Hindi ito naka-tag
ang mensahe bilang na-save na. Awtomatikong ginagawa ang RESYNC sa pagbabalik.
(Ibinabalik ang katayuan ng programa)

BABALA: Ang iyong programa ay dapat na maayos na mai-parse ang isang MIME na mensahe at dapat
makitungo sa mga katawan na naka-encode sa paglipat nang mag-isa. Upang gawing mas simple ang gawain ng programa,
maaari mong ibigay ang -b switch na kung saan ay hahayaan mailagent decode ang buong katawan para sa
ikaw, na pinipigilan ang anumang Content-Transfer-Encoding header (nagpapahiwatig ng "binary"). Ito
ay isang di-wastong format ng mensahe para sa pagpapadala ng mensahe, ngunit ito ay gumagawa ng pagproseso
mas madali. Kailangan mo pa ring i-parse ang mga bahagi ng MIME mismo.

paggamit -b ay hindi pumipigil sa iyong programa mula sa paglabas ng wastong mensahe pabalik, isa
na posibleng maipadala sa network upang mayroon kang dalawang pagpipilian: alinman ay gagawin mo
hindi nagbibigay ng anumang Content-Transfer-Encoding sa mga header, at gagawin ng mailagent
i-recode ang katawan para sa iyo gamit ang paunang paglilipat na encoding na nasa
mensahe (isang medyo ligtas na opsyon kung gagawa ka lamang ng mga pagbabago sa katawan nang maayos-
tinukoy na mga spot nang hindi nagpapakilala ng 8-bit na mga character), o maaari mong ibigay ang Nilalaman-
Transfer-Encoding ang iyong sarili at isagawa ang body encoding nang manu-mano.

Upang maging ganap na ligtas at mabawasan ang gawain sa iyong programa, ang -e switch ay
hayaan ang mailagent na suriin ang katawan ng mensahe na iyong ibinabalik at piliin ang nararapat
awtomatikong ilipat ang encoding. Dahil ito ang magiging sanhi ng buong katawan
nasuri, at maaari itong maging napakalaki, ang pag-uugali na iyon ay dapat na tahasan
hiningi. Kung kailangan mo -e tapos malamang gusto mo -b pati na rin (maaari mong ibigay ang pareho
sa pamamagitan ng pagsasabi -maging natural).

Kung hindi ka magbibigay ng anumang switch, ibibigay sa iyo ng mailagent ang mensahe bilang-ay at
ay makukuha ang iyong mensahe nang walang anumang karagdagang magic.

FORWARD (mga) address
Ipasa ang mail sa tinukoy na (mga) address. Ito ay kumikilos na parang may ginawang pag-save,
para maiwasan ang DELETE. Kadalasan kapag nagpasa ka ng mail, hindi mo gusto
para panatilihin ito. Ang utos ay nagdaragdag ng mga linyang parang Resent sa header. Tungkol naman sa BUNCE,
Posible ang pagsasama ng file (ibig sabihin, gumamit ng address "forward_list" para magpasa ng mail
sa lahat ng mga user na nakalista sa file forward_list). (Mabibigo kung ang mail ay hindi
sama ng loob)

GIVE programa
Ibigay ang katawan ng mensahe sa tinukoy na programa sa pamamagitan ng pagpapakain sa pamantayan nito
input. Ang anumang output ay ipinapadala sa user na nagpapatakbo ng mailagent. Tandaan na ang
ang mensahe ay hindi na-tag bilang na-save. (Ibinabalik ang katayuan ng programa)

TANDAAN: Kung ang mensahe ay may katawan na naka-encode para sa transportasyon (gamit ang isa sa
base64 o quoted-printable transfer encoding), ang mailagent ay malinaw
i-decode ito at magbigay ng isang bersyon na maaaring maayos na pangasiwaan. Sa ibang salita,
hindi kailangang pakialaman ng programa ang katawan na naka-encode sa mensahe,
dahil ito ay makakakuha ng isang payak. (Dahil walang ibinigay na mga header, ito lang
posibleng opsyon).

Gayunpaman, mag-ingat para sa mga mensahe ng MIME: dapat mong gamitin ang PIPE para mabigyan sila ng pagkakataon
sa programa upang maayos na pangasiwaan ang katawan, ngunit pagkatapos ay kailangan itong ganap na MIME-
may kamalayan

PANATILIHING header_fields_list
Pinapanatili lamang ang mga kaukulang linya sa header ng mail. Halimbawa, a
Itatago lamang ng "KEEP From To Cc Subject" ang mga pangunahing field mula sa mail
mensahe. Ito ay angkop para sa pag-archive ng mga mensahe sa mga mailing list. Maaari kang magdagdag ng a
':' pagkatapos ng bawat pangalan ng field ng header kung gusto mo, ngunit hindi iyon mahigpit
kailangan. Maaaring tukuyin ang mga header gamit ang mga regular na expression na istilo ng shell, at
Ang pagsasama ng file ay pinapayagan upang makakuha ng mga header mula sa isang file. (Hindi binabago ang umiiral na
katayuan)

LEAVE Mag-iwan ng papasok na mail sa system mailbox. Ito ang default na aksyon kung walang panuntunan
tumugma o kung walang naganap na pag-save. Hindi ito inirerekomenda sa mga Debian system.
(Mabibigo kung hindi mai-save ang mail)

MACRO [-rdp] pangalan [= (halaga, uri)]
Hinahayaan kang tumukoy ng mga macro na tinukoy ng gumagamit, sa anyo na %-(pangalan). Tingnan ang talata sa
mga macro na tinukoy ng gumagamit para sa paliwanag tungkol sa mga available na uri (SCALAR, EXPR,
CONST, FN, PROG, PROGC). Ang isang perl interface sa pinagbabatayan na mga macro ng user ay
magagamit para sa iyong mga perl command. Ang -r Ang opsyon ay ginagamit upang palitan ang isang umiiral na
macro (sa halip na itulak ang isang bagong instance sa stack), ang -d ay tanggalin ang lahat
ang mga pagkakataon ng isang pinangalanang macro (sa kasong iyon, kailangan lamang ang unang argumento),
at -p nagpa-pop ang huling instance ng macro mula sa stack at babalik sa
nakaraang kahulugan, kung mayroon man (kung hindi, ito ay gumaganap bilang -d). Kung nais mong tukuyin ang a
simpleng SCALAR macro, maaari mong alisin ang = (halaga, uri) bahagi at magpatuloy lamang
na may macro value. (Hindi binabago ang kasalukuyang katayuan)

MESSAGE file
Magpadala ng mensahe file pabalik sa nagpadala ng mensahe (bilang nagmula sa header
ng mensahe). Ang text ng mensahe ay pinapatakbo sa pamamagitan ng macro substitution
mekanismo (inilarawan sa ibang pagkakataon). (Mabibigo kung hindi maipadala ang mensahe)

HINDI [-ft] Walang operasyon. Kung ito ay tila medyo kakaiba, isipin ito sa mga tuntunin ng isang ONCE na utos.
(Hindi binabago ang kasalukuyang katayuan maliban kung -f or -t ay ginagamit, kung saan ito ay pumipilit
a hindi totoo --kabiguan-- o totoo katayuan ng tagumpay)

TANDAAN file (mga) address
Magpadala ng notification message file sa isang ibinigay na listahan ng address. Ang teksto ng
Ang mensahe ay pinapatakbo sa pamamagitan ng mekanismo ng pagpapalit ng macro (inilarawan sa bandang huli).
Tulad ng FORWARD, ang pagsasama ng file para sa detalye ng address ay posible. (Nabigo
kung hindi maipadala ang mensahe)

ON (araw listahan) utos
Isagawa ang tinukoy na utos ng filter lamang sa tinukoy na listahan ng araw. Yung listahan
ay isang listahan ng mga araw na pinaghihiwalay ng espasyo, na tinukoy gamit ang mga pangalang Ingles. Tanging ang
unang tatlong character ay isinasaalang-alang, case-insensitively. Samakatuwid,
ang pinakamaikling valid na mga detalye ng araw ay Lun, Martes, Ikasal, Huwebes, Biyernes, Sat at araw.

Ang utos na ito ay maaaring gamitin kasabay ng SELECT para gawin ang time-based selective
pagtalbog ng mga mensahe sa, halimbawa, ang address ng iyong tahanan:

SA (Lun Mar Miy Hue) PUMILI (18:30 .. 23:00) BUNCE [protektado ng email];
SA (Biyer) SELECT (18:30 .. 23:59) BUNCE [protektado ng email];
SA (Sab Sun) BUNCE [protektado ng email];

Magba-bounce lang iyon ng mga mensahe sa katapusan ng linggo at sa buong linggo, pagkatapos ng 18:30,
at hanggang 23:00 (ipagpalagay na iyon ay oras ng pagtulog, iba pang mga mensahe ang makikita sa trabaho
sa susunod na araw). Tandaan na tuwing Biyernes, umabot tayo sa 23:59. (Nagpapalaganap ng katayuan
mula utos. Kung ang utos ay hindi naisakatuparan, palaging ibalik ang tagumpay)

Minsan (pangalan, araw, panahon) utos
Isagawa ang tinukoy na utos ng filter nang isang beses bawat panahon. ang pangalan at mga tag patlang
ay ginagamit upang itala ang mga timestamp ng huling ONCE na utos. Higit pa tungkol dito mamaya.
(Nagpapalaganap ng katayuan mula sa utos. Kung ang utos ay hindi naisakatuparan, palaging bumalik
tagumpay)

Pumasa programa
Ipakain ang katawan ng mensahe sa tinukoy na programa at makakuha ng bagong katawan pabalik
mula sa output ng programa. Tandaan na ang mensahe ay hindi naka-tag bilang mayroon
nailigtas. (Ibinabalik ang katayuan ng programa)

TANDAAN: Kung ang mensahe ay may katawan na naka-encode para sa transportasyon (gamit ang isa sa
base64 o quoted-printable transfer encoding), ang mailagent ay malinaw
i-decode ito at magbigay ng isang bersyon na maaaring maayos na pangasiwaan. Ang katawan ay nabuo
ng programa ay awtomatikong mai-encode pabalik gamit ang parehong paglipat
encoding.

Gayunpaman, mag-ingat para sa mga mensahe ng MIME: dapat mong gamitin ang FEED para mabigyan sila ng pagkakataon
sa programa upang maayos na pangasiwaan ang katawan, ngunit pagkatapos ay kailangan itong ganap na MIME-
may kamalayan

perlas script [argumento]
Tumakas sa isang perl script upang magsagawa ng ilang mga aksyon sa mensahe. Ito ay ganap
inilarawan pa sa manpage, at ibang-iba sa a RUN perlas script
utos. (Ibinabalik ang pagkabigo kung ang script ay hindi nag-compile o nagbalik ng hindi zero
katayuan).

PIPE [-b] programa
Pipe ang buong mensahe sa tinukoy na programa, ngunit huwag makakuha ng anumang bagay pabalik.
Ang anumang output ay ipinapadala sa user na nagpapatakbo ng mailagent. Ang mensahe ay hindi
na-tag bilang nai-save sa anumang kaso, kaya dapat mong tahasan itong TANGGALIN kung
sapat na ang piping at hindi ito nabigo: "REJECT -f" ang kaibigan mo dito para umiwas
hindi gustong pagtanggal. (Ibinabalik ang katayuan ng programa)

BABALA: Ang iyong programa ay dapat na maayos na mai-parse ang isang MIME na mensahe at dapat
makitungo sa mga katawan na naka-encode sa paglipat nang mag-isa. Upang gawing mas simple ang gawain ng programa,
maaari mong ibigay ang -b switch na kung saan ay hahayaan mailagent decode ang buong katawan para sa
ikaw, na pinipigilan ang anumang Content-Transfer-Encoding header (nagpapahiwatig ng "binary"). Ito
ay isang di-wastong format ng mensahe para sa pagpapadala ng mensahe, ngunit ito ay gumagawa ng pagproseso
mas madali. Kailangan mo pa ring i-parse ang mga bahagi ng MIME mismo.

POST [-lb] (mga) newsgroup
I-post ang mensahe sa tinukoy na (mga) newsgroup pagkatapos linisin ang
header: ang mga field na nauugnay sa mail tulad ng Natanggap: o In-Reply-To: ay inalis, isang wastong
Mula sa: linya ay nabuo, ang orihinal na To: at Cc: ay pinalitan ng pangalan na may X- prefix,
ang Mga Sanggunian: linya ay ina-update/nabubuo kung kinakailangan batay sa umiiral na In-
Ang Reply-To, at ang mga field na partikular sa NNTP ay tinanggal para maidagdag ito ng server
Ari.

Ang pagpapatakbo ng POST ay matagumpay na gumaganap bilang isang pag-save.

Kung ang unang pangalan ay -l tulad ng sa "POST -l comp.mail.mh", pagkatapos ay isang "Pamamahagi:
local" na header ay idinagdag upang pilitin ang isang lokal na paghahatid. Kung hindi, ang default inews
pamamahagi ang gagamitin (mundo, kadalasan).

Kapag ang -b switch ay ibinigay, ang isang matagumpay na POST ay magreresulta sa biffing pagiging
isinaaktibo (tingnan ang seksyon MAIL BIFFING) para sa resultang artikulo ng balita.

Kung higit sa isang newsgroup ang tinukoy, dapat silang magkahiwalay ng espasyo. Ito ay
posibleng makakuha ng listahan ng newsgroup sa pamamagitan ng pagsasama ng file. (Mabibigo kung ang mensahe ay hindi
mai-post)

PROSESO Patakbuhin ang mailagent processing na naghahanap ng @SH na mga utos at isinasagawa ang mga ito.
Ito ay inilarawan dati sa seksyong tumatalakay sa mga default na panuntunan. Ang aksyon
na nauugnay bilang default sa isang mail na mayroong [Cc]utos bilang paksa nito ay PROCESS.
(Palaging nagbabalik ng tagumpay)

PROTEKTAHAN [-lu] paraan
Itinatakda ang default na mode ng proteksyon na dapat itakda sa mga nilikhang folder (o
lumikha ng mga file kapag nagse-save sa isang MH folder o isang direktoryo). Bilang default,
ang mga pahintulot ay pinamamahalaan ng utos ng UMASK, ngunit hinahayaan ka nitong i-override ang
default. Ang tinukoy paraan dapat unahan ng a 0 tulad ng sa 0644 ibigay ang
pamilyar na mga pahintulot ng octal. Kung hindi, ito ay binibigyang kahulugan bilang isang decimal na numero, kaya
mag-ingat!

Ang -l Maaaring gamitin ang opsyon upang tukuyin ang isang mode nang lokal para sa isang panuntunan. kung hindi,
ang mode ng proteksyon ay nakatakda sa buong mundo. Ang -u inaalis ng opsyon ang global (o local
kapag pinagsama sa -l) mode, na bumabalik sa default na gawi kung saan ang
ang umask ay isinasaalang-alang ng system.

Tandaan na kapag nagse-save sa isang MH folder, ang utos ng PROTECT ay nangunguna
sa ibabaw ng Msg-Protect patlang mula sa iyong ~/.mh_profile file. (Hindi nagbabago
katayuan ng pagpapatupad)

DALISIN programa
I-feed ang header sa isang program at ibalik ang bagong header. Tapos na ang RESYNC
awtomatiko sa pagbabalik. Ito ay maaaring gamitin upang talagang linisin ang header sa pamamagitan ng
pag-aalis ng lahat ng verbose na bagay na idinagdag ng napakaraming mail transport agent (X-400
tulad ng mga linya halimbawa). Malinaw, hindi nito i-flag ang mensahe bilang mayroon
nailigtas. (Ibinabalik ang katayuan ng programa)

Kung aalisin ng iyong programa ang header ng Content-Transfer-Encoding sa isang mensahe ng MIME,
Ang mailagent ay maayos na magbabago ng mensahe upang magkaroon ng isang hindi naka-encode na katawan. Kung
babaguhin mo ang halaga ng header ng Content-Transfer-Encoding, gagawin ni mailagent
tama ring i-recode ang katawan para sa iyo. Ang tanging sinusuportahang pag-encode ay base64
at sinipi-napi-print.

QUEUE Queue mail muli. Ang matagumpay na pagpila ay binibilang na parang nai-save ang mail. Mail
ang nakapila sa ganoong paraan ay hindi mapoproseso sa susunod na 30 minuto. Tandaan na
maliban kung ang mailagent ay regular na ginagamit ng cron, mananatili ang mail
ang pila hanggang sa dumating ang isa pang mail. (Nabibigo kapag hindi mai-queue ang mail)

RECORD [-acr] [ay] [(listahan ng tag)]
Itala ang mensahe sa kasaysayan at ipasok ang estado _SEEN_ kung ang mensahe ay na
present doon. Kung ang mensahe ay naitala sa unang pagkakataon, iproseso
nagpapatuloy ng normal. Kung hindi, isasagawa ang REJECT. Ang pag-uugali na ito ay maaaring
medyo binago sa pamamagitan ng paggamit ng ilang mga opsyon. Tingnan ang NATATANGI para sa kumpletong paglalarawan
ng mga opsyon at argumento. Natural, kapag a ay ay tinukoy, na
override ang default na _SEEN_. Ang isang pangalan ng estado ay maaaring maglaman ng mga alphanumeric na character
at salungguhit.

Kapag ang isang listahan ng tag (listahan ng mga pangalan na pinaghihiwalay ng kuwit) ay tinukoy, ang mensahe ay
naitala at sinuri lamang laban sa lahat ng mga tag na iyon, ngunit ang mga ito lamang. Hindi tumutukoy
anumang listahan ng tag ay nangangahulugang anumang pangyayari, ito man ay na-tag o hindi. Tingnan ang talata
paggamit Mga tag in rekord at Kakaiba para sa karagdagang impormasyon. (Ibinabalik ang katayuan ng pagkabigo
kung naitala na ang mail)

TANGGIHAN [-tf] [ay]
Itigil ang pagpapatupad ng kasalukuyang aksyon, at ipagpatuloy ang pagtutugma. Kung -t ay tinukoy,
ang pagtanggi ay magaganap lamang kung matagumpay na nakumpleto ang nakaraang aksyon
(ibalik ang katayuan ng totoo), habang -f magdudulot lamang ng pagtanggi kapag nabigo
naganap. Kung ang ay ay tinukoy, ipinasok namin ang estadong iyon bago ang pagtanggi. TANGGIHAN
nire-reset ang katugmang bandila, na nangangahulugang kung wala nang tugmang mangyayari, ang
malalapat ang default na pagkilos. Ang isang pangalan ng estado ay maaaring maglaman ng mga alphanumeric na character at
salungguhit. (Hindi binabago ang katayuan ng pagpapatupad)

KINAKAILANGAN file [pakete]
Kumilos tulad ng perl mangailangan operator sa pamamagitan ng paglo-load ng perl file sa memorya. Sa pamamagitan ng
default, ang file ay binabasa sa newcmd package, ngunit maaari mong tukuyin ang anuman
package na nais mong i-load ito. Ang command na ito ay isasagawa lamang ang paglo-load
bawat (file, package) tuple. Hindi tulad ng katumbas nitong perl, ang file na "value" ay hindi
mahalaga, ibig sabihin, hindi ito kailangang magtapos sa isang pahayag na nagbabalik ng tunay na halaga.
(Mabibigo kung hindi ma-load ang file)

MULING SIMULA [-tf] [ay]
Itigil ang pagpapatupad ng kasalukuyang aksyon at i-restart ang proseso ng pagtutugma mula sa
simula. Upang maiwasan ang mga loop, ang bawat panuntunan ay maaaring isagawa nang isang beses sa isang naibigay
estado. Tingnan ang TANGGILAN para sa kahulugan ng mga opsyonal na parameter. Nire-reset ng RESTART ang
katugmang flag, na nangangahulugan na ang default na pagkilos ay ilalapat, ay hindi na dapat pa
nagaganap ang tugma. (Hindi binabago ang katayuan ng pagpapatupad)

RESYNC Muling i-synchronize ang header na ginagamit para sa pagtutugma sa header ng mail. Ito ay
marahil ay kapaki-pakinabang lamang kapag ang isang SUBST o ANNOTATE na utos ay pinatakbo. (Hindi nagbabago
katayuan ng pagpapatupad)

TANDAAN: Sa oras ng RESYNC, susuriin ng mailagent kung ang Content-Transfer-Encoding
binago ang header at malinaw na ire-recode ang katawan kung kinakailangan, nang sa gayon
nananatiling wasto ang buong mensahe sa kabila ng pagkasira ng header. Mag-iingat din ito
ng pag-update ng Content-Length kung kinakailangan. Sa tuwing babaguhin mo ang mga mahahalagang ito
mga header sa pamamagitan ng SUBST o ANNOTATE, siguraduhing tawagan ang RESYNC bago itapon ang
mensahe o ikaw ay may panganib na mag-save ng isang sira na bersyon na hindi magiging
maayos na nauunawaan ng iyong mail user agent.

RUN programa
Patakbuhin ang tinukoy na programa at ipadala ang anumang output sa gumagamit na tumatakbo mailagent.
Hindi na-flag ng pagkilos na ito ang mensahe bilang na-save na. (Ibinabalik ang katayuan
of programa)

SAVE folder
I-save ang mensahe sa tinukoy na folder. Kung ang pangalan ng folder ay nagsisimula sa isang '+', ito ay
pinangangasiwaan bilang isang MH-style na folder at rcvstore ay ginagaya upang maihatid ang mensahe
sa folder na iyon. Kung ang folder ay isang direktoryo, ang mensahe ay inihahatid sa isang solong
file sa loob ng direktoryong iyon. Tingnan ang MGA FOLDER seksyon. (Mabibigo kung ang mensahe ay hindi
maligtas)

PUMILI (simula .. dulo) utos
Isagawa ang utos sa loob lamang ng tinukoy na panahon ng pagpili. Pwede ang date
matukoy sa isang malawak na hanay ng mga format. Ang output ng petsa(1) ang utos ay isang
halimbawa ng wastong detalye. Kung ang petsa, taon o buwan ay nawawala,
pagkatapos ay ang kasalukuyang isa ay kahalili sa lugar nito. Ang mga sumusunod na petsa ay
wastong mga detalye: '10:04:25', 'ngayon' , 'Abril 1 1992', 'Disyembre 25', 'Hulyo 14
1789, 07:40' (err... valid ito ayon sa grammar, pero bago ang
Epoch kaya wala itong ibig sabihin). Iba pang mga magarbong petsa tulad ng 'nakaraang buwan - 5
minutes' o '3 weeks ago' ay pinagana din. (Hindi ba napakasarap magkaroon ng isang tunay
parser? Ang mga panuntunan sa pag-filter ay maaaring mas detalyado kung alam ko lang
tungkol sa Berkeley na ito yacc paggawa ng a perlas parser...). (Ibinabalik ang katayuan ng
utos, kung tumakbo, kung hindi ay magbabalik ng true).

SERVER [-t] [-d hindi pinagana utos]
I-activate ang pagpoproseso ng server. Ang katawan ng mensahe ay binibigyang kahulugan bilang isang listahan ng
mga utos na isagawa. Tingnan ang seksyon PANGKALAHATANG MAIL SERVER para sa karagdagang impormasyon tungkol sa
ang server mismo. Ang -t ginagawang pagpipilian ang server sa pinagkakatiwalaan paraan, Kung saan
kapangyarihan maaaring makuha. Ang -d ang opsyon ay dapat na sundan ng isang listahan ng mga hindi pinagana
mga utos, na pinaghihiwalay ng mga kuwit na walang mga puwang sa pagitan ng mga ito.

SPLIT [-adeiw] folder
Hatiin ang isang mail sa digest na format sa tinukoy na folder (parehong mga convention sa pagbibigay ng pangalan
tulad ng sa SAVE). Kung walang folder na tinukoy, ang bawat digest item ay naka-queue at magiging
nasuri bilang isang mail sa pamamagitan ng kanyang sarili. Ang -d Tinatanggal ng opsyon ang digest na header.
Ang -i Ang ibig sabihin ng opsyon ay ang paghahati ay ginagawa sa lugar at ang orihinal na mail ay itatapon.
Ang lahat ng mga opsyon ay maaaring gamitin nang sabay-sabay sa kondisyon na sila ay nakadikit sa
ang simula (pagpipilian sa pag-parse ay talagang panimula).

Kung ang mail ay wala sa digest na format at may tinukoy na folder, ito ay nai-save
sa folder na iyon. Kung hindi, mabibigo ang pagkilos ng SPLIT at walang mangyayari (ang filter
nagpapatuloy sa pagproseso nito bagaman). Ang utos ng SPLIT ay wastong sasabog sa RFC-934
digest ng mga mensahe at susubukan na gawin ang lahat kung hindi man. Kung ang digest ay hindi
Sumusunod ang RFC-934 at may pagkakataong may nagawa ang SPLIT
hindi tama, kung gayon ang orihinal na mensahe ay nai-save din kung -i, kung hindi ay hindi
na-tag bilang naka-save (upang mailapat ang default na utos ng LEAVE). Ang -w (panoorin)
humihiling ng espesyal na pangangalaga at makikita ang bawat hindi RFC-934 digest, kahit na kapag ang
hindi nakakapinsala ang hindi pagsunod; at saka, mas mahaba ang anumang trailing na basura
na 100 bytes ay mase-save bilang isang digest item sa pamamagitan ng kanyang sarili.

Ang -a i-annotate ng opsyon ang bawat digest na item gamit ang X-Digest-To: header line,
na siyang pinagsama-samang To: at Cc: na mga field ng orihinal na digest
mensahe. Ito ay maaaring gamitin halimbawa para i-burst ang digest sa queue at
pagkatapos ay muling iproseso ang bawat isa sa mga item nito ayon sa idinagdag na field na ito. Sa wakas, ang
-e Itatapon lamang ng opsyon ang digest header kung walang laman ang katawan nito (ibig sabihin, ang
moderator ay hindi nagsama ng anumang nangungunang komento). (Ibinabalik ang tagumpay kung nakalagay ang mail
digest format at wastong hatiin nang walang anumang error)

IMBAK folder
I-save ang mensahe sa tinukoy na folder at mag-iwan ng kopya sa mailbox ng system.
Ang folder sumusunod ang parameter sa parehong mga kumbensyon sa pagbibigay ng pangalan tulad ng sa SAVE. muli,
dahil sa mga isyu sa pag-lock, hindi inirerekomenda ang pag-iwan ng mail sa mailbox
Mga makina ng Debian. (Mabibigo kung hindi mai-save ang mensahe sa alinman sa folder o sa
ang mailbox)

I-STRIP header_fields_list
Alisin ang mga kaukulang linya sa header ng mail. Halimbawa, isang "STRIP
Aalisin ng Newsgroups Apparently-To" ang mga naaangkop na linya upang maalis ang anuman
Mga Newsgroup: o Apparently-To: header. Maaari kang magdagdag ng ':' pagkatapos ng bawat field ng header
pangalan kung gusto mo, ngunit hindi iyon mahigpit na kinakailangan. Maaaring tukuyin ang mga header
sa pamamagitan ng mga regular na expression na istilo ng shell o sa pamamagitan ng pagsasama ng "file". (Hindi nagbabago
katayuan ng pagpapatupad)

PANGNGALAN var/header pagpapahayag
Pinapalitan ang expression sa tinukoy na variable na tinukoy ng user (nagsisimula ang pangalan
na may #) o back-reference (digit), o field ng header (opsyonal na nagtatapos sa
':'). Halimbawa

SUBST #foo /w/y/g

ay papalit sa variable na tinukoy ng gumagamit foo ang lahat ng mga w by y. Tingnan din ang ASSIGN
at TR.

Para sa mga pamalit sa mga field ng header, tulad ng:

SUBST Subject: /\[foo\]\s+//;

mare-format muli ang mga tumutugmang linya ng header kapag matagumpay ang pagpapalit,
na malamang ay nangangahulugan na ang mga orihinal na pagpapatuloy ay hindi mapangalagaan. Ang target ng
ang pagpapalit ay ang buong header, na may mga pagpapatuloy na na-normalize sa isa
space. Ikaw samakatuwid ay ginagarantiyahan na maging malaya mula sa aktwal na header
pag-format sa orihinal.

Huwag kalimutang mag-isyu ng RESYNC pagkatapos ng isang header na field na SUBST, dahil ilang mga gawain
(tulad ng POST) probe sa parsed header hash table upang mabuo ang na-save
mensahe.

(Mabibigo kung may error pagpapahayag)

TR var/header pagsasalin
Isagawa ang pagsasalin sa tinukoy na variable, back-reference o header
patlang. Halimbawa

TR 1 /AZ/az/

i-canonicalize ang content ng reference 1 sa lowercase. Matagumpay
Ang mga transliterated na header ay na-reformat, kahit na ang kanilang kabuuang sukat ay hindi
nagbago. Tingnan din ang ASSIGN at SUBST. (Mabibigo kung may error pagsasalin)

UMASK [-l] paraan
Binabago ang umask ng proseso sa tinukoy paraan, na maaaring decimal, octal
(kung nauunahan ng '0') o hexadecimal (nagsisimula sa '0x'). Ang octal notation ay
ang pinakamalinaw na paraan upang tukuyin ang umask pa rin. Diba sabi ng mga tsismis na octal yan
ay naimbento para sa layuning iyon lamang? ;-) Gamitin ang -l opsyon upang baguhin ang umask
para sa tagal ng kasalukuyang panuntunan ng pagkilos lamang. Tandaan na ang default na umask
na tinukoy sa iyong config file ay ginagamit upang i-reset mailagent's umask sa simula ng
bawat pagpoproseso ng mail. (Hindi binabago ang katayuan ng pagpapatupad)

NATATANGING [-acr] [ay] [(listahan ng tag)]
Itala ang mensahe sa kasaysayan at mensahe ng tag bilang naka-save kung ito ay naroroon na
doon. Kung ang mensahe ay naitala sa unang pagkakataon, magpapatuloy ang pagproseso
karaniwan. Kung hindi, isasagawa ang REJECT. Kung -r ay ginamit, isang RESTART ang ginamit
sa halip habang -a magpapa-ABORT. Halimbawa, upang alisin ang duplicate
mga mensahe mula sa mga mailing list, magpatakbo ng isang NATATANGI -a bago i-save ang mail. Ang -c
ang opsyon ay maaaring gamitin nang mag-isa upang aktwal na maiwasan ang utos na makagambala sa
daloy ng pagpapatupad, at upang magamit sa ibang pagkakataon ang katayuan sa pagbabalik upang makita kung ano ang nangyari: NATATANGI
nagbabalik ng katayuan ng pagkabigo kung ang mensahe ay naitala na. Kung opsyonal
ay argument ay ibinigay, pagkatapos ay ang automat ay papasok sa estado na iyon kung ang mail
dati ay nasa database. Tingnan din ang RECORD, at ang talata na pinamagatang
paggamit Mga tag in rekord at Kakaiba para sa karagdagang impormasyon tungkol sa listahan ng tag. (Nabigo
kung naitala na ang mail)

BAKASYON [-l] on|off|path [panahon]
Payagan o huwag payagan ang isang mensahe sa bakasyon. Kapag naka-on ang vacation mode sa pamamagitan ng
configuration file, nagpapadala ng mensahe sa tuwing makakatanggap ang user ng mail meeting
ilang mga kinakailangan, gaya ng ipinaliwanag sa ilalim ng seksyon BAKASYON MODE. Isa sa mga
kundisyon ay ang bandila ng bakasyon na binago ng command na ito ay totoo. Ito
ginagawang madali upang hindi payagan ang mga mensahe sa bakasyon, kailanman, sa isang grupo ng mga tao para sa
halimbawa.

Sa halip ng on or off, maaari mong tukuyin ang isang pangalan ng file (~ pinahihintulutan ang pagpapalit).
ang bagong path na gagamitin para sa paghahanap ng vacation file. Opsyonal, maaari mong
tumukoy ng huling parameter, na kukunin bilang tagal ng paglalapat kung kailan
nagpapadala ng mensahe sa bakasyon. Mga pagbabago sa mensahe ng bakasyon landas ay
bawal kapag ang configuration variable nabakunahan ay nakatakda sa ON.

Kung gagamitin mo ang -l opsyon, lokal na ginagawa ang mga pagbabago, para sa tagal ng panuntunan
lamang. Kung TANGGILAN mong pumunta sa ibang panuntunan, mawawala ang iyong mga pagbabago. Ang
ang pandaigdigang halaga ng mga binagong parameter ay binago sa unang lokal na paggamit at
naibalik kapag may ipinasok na bagong panuntunan. (Hindi binabago ang katayuan ng pagpapatupad)

WRITE folder
Isulat ang mensahe sa tinukoy na folder, alisin ang anumang dati nang folder na may
ang parehong pangalan. Kaya, ang mga sunud-sunod na WRITE command ay papatungan ang nauna.
Ito ay kapaki-pakinabang upang mag-imbak ng output ng mga utos ng system na pinapatakbo ng cron. Huwag subukang gamitin
ito sa isang MH folder o isang folder ng direktoryo o ito ay kumikilos tulad ng SAVE. (Nabigo
kung hindi maisulat ang mensahe)

Pagpapatupad katayuan
Halos lahat ng mga aksyon ay nagbabago ng isang variable na sumusubaybay sa katayuan ng pagpapatupad
(katulad ng $? variable sa shell). Maaaring masuri ang variable na ito sa pamamagitan ng -t or -f
opsyon ng REJECT command halimbawa. Upang magbigay lamang ng isang halimbawa, ang SAVE action
babalik Nabigo ang kung hindi nito mai-save ang mail sa tinukoy na folder. Kung yan SAVE
Ang utos ay sinundan ng isang "REJECT -f FAILED", pagkatapos ay gagawin ang pagpapatupad ng kasalukuyang panuntunan
huminto at patuloy na susuriin ng automat ang mail sa FAILED state.

Gayunpaman, ang ilan sa mga aksyon ay hindi nagbabago sa huling katayuan ng pagpapatupad na ito. Kadalasan, ang mga iyon
mga aksyon na gumagawa ng mga desisyon batay sa katayuang iyon, o simpleng mga aksyon na maaaring hindi mabigo.
Ang mga espesyal na aksyon na iyon ay: I-ABORT, ASSIGN, BEGIN, KEEP, MACRO, NOP, REJECT, RESTART,
RESYNC, STRIP at VACATION.

Nakalulungkot na ang ONCE o SELECT command ay hindi makakagawa ng pagkakaiba sa pagitan ng hindi-
pagpapatupad at isang matagumpay na pagpapatupad ng tinukoy na utos. Maaaring may pagbabago sa
kung paano gumagana ang scheme na ito, ngunit dapat itong manatiling backward compatible.

Perl Makatakas
Sa pamamagitan ng paggamit ng PERL command, mayroon kang kakayahang magsagawa ng pag-filter at iba pa
mga sopistikadong aksyon nang direkta sa perlas. Ito ay talagang iba sa kung ano ang maaari mong gawin sa pamamagitan ng
pagpapakain ng iyong mail sa isang perl script. Una sa lahat, walang karagdagang proseso ang nalikha: ang script
ay direktang na-load sa mailagent at pinagsama-sama sa isang espesyal na pakete na tinatawag mailhook.
Pangalawa, mayroon kang isang perl interface sa lahat ng mga utos sa pag-filter: bawat pagkilos sa pag-filter
ay nauugnay sa isang perl function (spelling lower-cased). Sa wakas, ang ilan ay paunang natukoy
ang mga variable ay itinakda para sa iyo ng mailagent.

Bago tayo magpatuloy, pakitandaan na dahil walang karagdagang prosesong ginawa, ikaw dapat
hindi tawagan ang perl lumabas function. Gamitin &lumabas sa halip, upang ang labasan ay ma-trap. &lumabas
tumatagal ng isang argumento, ang exit code. Kung gumamit ka ng 0, ito ay mauunawaan bilang isang tagumpay, anuman
ibang halaga na nangangahulugang pagkabigo (ibig sabihin, ang utos ng PERL ay magbabalik ng katayuan ng pagkabigo). Gamit
ang perl lumabas direktang papatayin ang function mailagent at malamang na magkaroon ng ilang mail
pagkalugi.

Ang mga script na ginamit ay dapat manatiling simple. Sa partikular, dapat mong iwasan ang paggamit ng
pakete direktiba o tukuyin ang mga function na may pangalan ng package maliban sa mailhook (ie ang
package kung saan na-load ang iyong script). Ang pagkabigong gawin ito ay maaaring magdulot ng ilang mga pagkakasalungatan sa pangalan
mailagentsariling mga gawain. Sa partikular, iwasan ang pangunahin pakete. Tandaan na mula noong
compilation environment ay naka-set-up sa mailhook, hindi tumutukoy sa mga pangalan ng package sa iyong
ang mga variable at subroutine ay maayos (sa katunayan, ito ay sinadya upang gumana sa ganoong paraan).

Ang iyong script ay libre upang gawin ang anumang nais nito sa mail. Gayunpaman, kadalasan, nagtatapos ka
gamit ang mailagent primitives upang i-save ang mail o ipasa ito (ngunit malaya kang
muling idisenyo ang iyong sarili at tawagan sila sa halip, siyempre). Ang interface ay simple: bawat isa
Ang function ay tumatagal lamang ng isang argument, isang string, na siyang mga argumento sa command, kung mayroon man.
Halimbawa, sa isang script ng perl escape, ipapahayag mo ang:

{ I-SAVE ang listahan; FORWARD "mga gumagamit"; MAGPAKAIN ~/bin/newmail -tty; TANGGIHAN }

na may:

&save('list');
&forward('"mga gumagamit"');
&magpakain('~/bin/newmail -tty');
&tanggihan;

Ang panuntunan ay simple: ang bawat command ay pinapalitan ng isang function na tawag, kasama ang natitira
mga parameter na nakapaloob sa isang string, kung mayroon man. Bilang kahalili, maaari mong tukuyin ang mga parameter bilang a
listahan: lahat ng mga argumento na iyong ibinigay ay pinagsama sa isang malaking masayang string, gamit ang isang espasyo
karakter bilang separator. Ang mekanismo ng pagpapalit ng macro ay pinapatakbo sa resultang ito
string ng argumento.

Bawat function ay nagbabalik ng boolean success status ng command (ibig sabihin, 1 ay nangangahulugang tagumpay). Para sa
yaong mga pag-andar na karaniwang hindi nagbabago sa variable ng katayuan ng huling pagpapatupad ng filter, a
laging ibinabalik ang tagumpay. Ginagawa nitong posible na (intuitively) magsulat:

&lumabas(0) kung &save('uucp');
&bounce('root') || &save('emergency');

at makuha ang inaasahang resulta. Ang mail ay ise-save sa emergency folder lamang kapag
nabigo ang pag-save sa uucp folder at hindi ma-bounce sa root ang mail.

Mahalagang maunawaan na mayroon ang mga utos na ito tamang-tama ang parehong epekto sa
proseso ng pag-filter kapag pinapatakbo ang mga ito mula sa isang script ng perl escape o mula sa loob ng file ng panuntunan
bilang mga regular na aksyon. A &tanggihan Ang tawag ay tatalikuran lamang ang pagpapatupad ng kasalukuyang perl
script at ang filter na automat ay muling makontrol at susubukan ang isang bagong tugma. Pero perlas
nagdudulot sa iyo ng higit na kapangyarihan, sa partikular na mga tawag sa system, mga istrukturang kontrol tulad ng if at
para, mga hilaw na regular na expression, atbp...

Ang espesyal perlas @INC array (na kumokontrol sa path ng paghahanap para sa mangailangan) ay bahagyang
binago sa pamamagitan ng prepending sariling pribadong library path ng mailagent. Iniiwan nitong bukas ang pinto para sa
hinaharap na mailagent library perl script na maaaring kailanganin ng perl script.
Higit pa rito, ang mga sumusunod na espesyal na variable ay na-set-up ng perl bago i-invoke ang iyong
script:

@ARGV Ang mga argumento ng script, na ibinigay ng PERL command. Ito
array ay naka-set up sa eksaktong parehong paraan na iyong inaasahan na ito ay naka-set up kung ikaw
direktang tinawag ang utos mula sa shell, maliban doon @ARGV[0] ay ang
pangalan ng script (dahil hindi mo magagamit ang perl's $0 upang makuha ito; iyon ay
bigyan ka ng pangalan ng mailagent).
$address Ang bahagi ng address ng Mula sa: linya.
$cc Ang raw na nilalaman ng Cc: line.
@cc Ang listahan ng mga address sa linyang Cc:, na pinigilan ang mga komento.
$envelope Ang mail envelope, bilang nakalkula gamit ang unang Mula sa linya ng mensahe.
$friendly Ang bahagi ng komento ng Mula sa: linya, kung mayroon man.
$mula sa Ang nilalaman ng Mula sa: linya, na may address at bahagi ng komento.
%header Ang talahanayang ito, na na-index ayon sa pangalan ng field, ay nagbabalik ng hilaw na nilalaman sa
kaukulang linya ng header. Tingnan sa ibaba.
$msgpath Ang buong pangalan ng path ng folder (o mensahe sa loob ng isang MH folder) kung saan ang
naganap ang huling operasyon sa pag-save. Ito ay inilaan upang magamit kung nais mo
upang bumuo ng iyong sariling abiso sa pagtanggap ng mail.
$haba Ang haba ng mensahe, sa bytes.
$linya Ang bilang ng mga linya sa mensahe.
$login Ang pangalan sa pag-log in ng address sa linyang Mula sa:.
$precedence Ang nilalaman ng Precedence: linya, kung mayroon man.
@na-relay Ang listahan ng mga pangalan ng host (maaaring mga raw IP address kung walang DNS mapping) na nakalista
sa (computed) Relayed: linya ng header.
$reply_to Ang e-mail address kung saan dapat magpadala ng tugon, na may komento
pinigilan.
$nagpadala Ang nagpadala ng mensahe (maaaring may komento), ay nagmula sa parehong paraan ng
Nagpadala: ang linya ay kinalkula ng mailagent.
$paksa Ang paksa ng mensahe.
$to Ang raw na nilalaman ng To: line.
@sa Ang listahan ng mga address sa linyang Para kay:, na pinigilan ang mga komento.

Ang associative array %header nagbibigay sa iyo ng access sa lahat ng field sa header ng
mensahe. Halimbawa, $to ay talagang ang halaga ng $header{'To'}. Tinukoy ang susi
gamit ang isang normalized case, ibig sabihin, ang unang titik ng bawat salita ay uppercase, ang natitira
pagiging lowercase. Ito ay independiyente sa aktwal na pisikal na representasyon sa
mismong mensahe.

Ang mga pseudo key Ulo, katawan at lahat ayon sa pagkakabanggit ay nagbibigay sa iyo ng access sa hilaw na header ng
mensahe, ang katawan at ang buong mensahe. Ang %header array ay talagang isang sanggunian sa
mailagentpanloob na istraktura ng data, kaya ang pagbabago sa mga halaga ay makakaimpluwensya sa pag-filter
proseso. Halimbawa, isinulat ng utos ng SAVE ang Ulo, ang X-Filter: linya, dulo ng
header (isang bagong linya) at pagkatapos ay ang katawan (ito ay isang halimbawa lamang, hindi isang dokumentado
tampok :-). Ang =Katawan= espesyal ang key: ito ay isang Perl reference sa isang scalar na naglalaman ng
katawan kung saan inalis ang anumang pag-encode ng paglilipat ng nilalaman.

Tandaan na ang $msgpath Ang variable ay nagtataglay lamang ng snapshot ng path ng folder sa oras kung saan
tinawag ang pagtakas ng PERL. Kung gagawin mo ang iyong sariling pagtitipid sa perl, kailangan mong tumingin
sa $main'folder_saved variable sa halip upang makuha ang up-to-date na halaga ng path ng folder.

Bilang pangwakas na tala, labanan ang tukso ng pagbabasa ng mga panloob ng mailagent at
direktang pagtawag sa mga gawaing kailangan mo. Kung hindi ito nakadokumento sa manual page, maaari itong
mababago nang walang abiso sa pamamagitan ng anumang karagdagang patch. (At hindi nito sinasabi na dokumentado
ang mga tampok ay maaaring hindi rin magbago... Ito ay mas malamang na hindi, at ang mga patch ay malinaw na sinasabi
iyon, siyempre.)

Programa kapaligiran
Ang lahat ng mga programa na sinimulan ng mailagent sa pamamagitan ng RUN at ang mga kaibigan ay namamana ng mga sumusunod
mga variable ng kapaligiran: HOME, USER at NAME, ayon sa pagkakabanggit ay itinakda mula sa configuration
parameter bahay, gumagamit at pangalan. Kung ang mailagent ay hinihingi ng filter, pagkatapos ay ang PATH
ay nakatakda din ayon sa configuration file (kung gumagamit ka ng C filter) o sa
anuman ang itinakda mo sa PATH (kung gumagamit ka ng shell filter).

Ang lahat ng mga programa ay isinasagawa mula sa loob ng bahay direktoryo. Kabilang dito ang mga script
nagsimula sa pamamagitan ng PERL command at mail hooks. Ang huli ay ilalarawan nang detalyado
pababa pa.

talaksan pagsasama
Ang ilang mga utos tulad ng FORWARD o KEEP ay nagbibigay-daan sa iyo na tumukoy ng pangalan ng file sa pagitan ng mga double quote
upang aktwal na mag-load ng mga parameter mula sa file na ito. Maliban kung ang isang buong landas ay ibinigay, ang mga sumusunod
paraan ay ginagamit upang mahanap ang file: una sa lokasyon na itinuro ng mailfilter
variable kung nakatakda, kung hindi sa maildir at panghuli sa home directory. Tandaan na ito ay
hindi isang landas sa paghahanap sa kahulugan na kung mailfilter ay tinukoy at ang file ay wala doon, isang
iuulat ang error.

Dapat ilista ng file ang bawat parameter (maging ito ay isang address, isang header o isang pattern) sa isang linya sa pamamagitan ng
mismo. Ang mga komentong istilo ng shell (#) ay pinapayagan sa loob ng file na iyon at ang mga nangungunang puting espasyo ay
trimmed (ngunit hindi trailing space).

Macros Pamalit
Ang lahat ng mga utos ay dumaan sa isang mekanismo ng pagpapalit ng macro bago isagawa. Ang
ang mga sumusunod na macro ay magagamit:

%% Isang tunay na tanda ng porsyento
%A Ang internet address na kinuha mula sa Mula sa: patlang (abc in [protektado ng email]),
na-convert sa lower-case.
%C pangalan ng CPU kung saan tumatakbo ang mailagent. Iyon ay isang ganap na kwalipikadong hostname na may
domain name, hal lyon.eiffel.com.
%D Araw ng linggo (0-6)
%H Pangalan ng host (pangalan ng makina kung saan ang mailagent tumatakbo), nang walang anumang domain
pangalan. Palaging nasa lower-case, anuman ang pangalan ng makina.
%I Ang internet domain name na kinuha mula sa Mula sa: patlang (bc in [protektado ng email]),
na-convert sa lower-case.
%L Haba ng bahagi ng katawan, sa mga byte, na inalis ang content-transfer-encoding.
%N Buong pangalan ng nagpadala (pangalan sa pag-login kung wala)
%O Ang pangalan ng organisasyon na kinuha mula sa Mula sa: patlang (b in [protektado ng email]), na-convert
sa lower-case.
%R Paksa ng orihinal na mensahe na may nangungunang Re: pinigilan
%S Re: paksa ng orihinal na mensahe
%T Oras ng huling pagbabago sa nai-mail na file (nag-uutos ng MESSAGE at NOTIFY)
%U Buong pangalan ng user
%Y Buong taon, na may apat na digit (tinatawag na yyyy format)
%_ Isang puting espasyo (kapaki-pakinabang upang ilagay ang mga puting espasyo sa iisang pattern)
%& Listahan ng mga tagapili na nagkaroon ng tugma (kabilang sa mga tinukoy sa pamamagitan ng regular
expression tulad ng 'X-*: /foo/i'. Kung mahanap natin ang foo substring sa X-Mailer:
linya ng header, pagkatapos ay itatakda ang %& sa halagang ito). Ang mga halaga sa listahan ay kuwit
hiwalay.
%~ Isang null na character, nabura mula sa nagresultang string.
%tambilang Halaga ng kaukulang back reference mula sa huling tugma.
%#ay Halaga ng variable na tinukoy ng gumagamit ay
%=ay Halaga ng variable ng configuration ng mailagent ay tulad ng tinukoy sa
~/.mailagent file.
%d Araw ng buwan (01-31)
%e Ang e-mail address ng user (sa iyo!).
%f Mga nilalaman ng linyang "Mula kay:," tulad ng %N <%r> o %r (%N) depende sa kung paano
ang mailer ay na-configure.
%h Oras ng araw (00-23)
%i Message ID, kung available (kung hindi man, isa itong null string)
%l Bilang ng mga linya sa mensahe, kapag naalis na ang content-transfer-encoding
%m Buwan ng taon (01-12)
%n Lower-case na pangalan ng login ng nagpadala
%o Organisasyon (kung saan mailagent tumatakbo)
%r Ibalik ang address ng mensahe
%s Paksa ng orihinal na mensahe
%t Kasalukuyang oras at minuto (sa HH:MM na format)
%u Pangalan sa pag-log in ng user
%y Taon (huling dalawang digit)
%[To] Halaga ng field ng header (dito Para sa:)

Tinukoy ng gumagamit Macros
Hinahayaan ka ng mailagent na tukuyin ang sarili mong mga macro sa dalawang paraan: sa antas ng filter sa pamamagitan ng
MACRO command, o sa perl level sa sarili mong mga command o perl action.

Kapag natukoy na, isang user macro (sabihin foo) ay maaaring palitan sa pamamagitan ng paggamit %-(foo). Sa kaso ng a
single-letter macro, na maaaring i-optimize sa %-f halimbawa, ie ang panaklong maaari
tinanggal na

Mayroong anim na uri ng macros:

SCALAR Isang scalar value ang ibinibigay, hal: pula. Ang halaga ng macro ay ang literal na scalar
halaga, walang karagdagang interpretasyon na isinasagawa sa data.

EXPR Ang isang perl expression ay magiging evaled upang makuha ang halaga, hal: $pula. Tandaan na ang
isasagawa ang pagsusuri sa loob ng usrmac package, kaya kung tinutukoy mo
sa isang variable sa isa pang pakete, makabubuting tukuyin ito, tulad ng sa
$foo'bar.

CONST Ito ay talagang kapareho ng EXPR, ngunit ang halaga ay kilala bilang isang pare-pareho. Kaya ang
unang beses na ginawa ang pagpapalit, susuriin ang expression, at pagkatapos
naka-cache ang resulta nito.

FN Isang pangalan ng perl function (nang walang nangungunang &), gaya ng main'do_this. ang
tatawagin ang function na may isang parameter: ang pangalan ng macro mismo.
Iyon ay nag-iiwan ng pinto na bukas para sa karagdagang mga kombensiyon na tinukoy ng gumagamit sa pamamagitan ng pagpilit
pagsusuri sa pamamagitan ng isang solong perl function.

PROG Isang programa na tatakbo para makuha ang aktwal na halaga. Tanging ang sumusunod na bagong linya ay tinadtad,
ang iba ay iniingatan. Ang programa ay na-forked sa bawat oras. Sa listahan ng argumento
ibinigay sa programa, ang %n ay pinalawak bilang ang macro name na sinusubukan naming gawin
suriin. Kung tinukoy mo iyon sa mga panuntunan sa pag-filter, huwag kalimutang i-escape ang
unang %.

PROGC Pareho sa PROG talaga, ngunit ang programa ay na-forked nang isang beses lamang at ang halaga ay naka-cache
para sa pagbabasa mamaya.

Sa antas ng perl, hinahayaan ka ng apat na function na manipulahin at tukuyin ang iyong mga macro (lahat ng bahagi ng
ang usrmac pakete):

bagong pangalan, halaga, uri)
Palitan o lumikha ng %-(name) macro. Halimbawa:

new('foo', "$mailhook'header{'X-Foo'}", 'EXPR');

lilikha ng bagong macro foo na lalawak sa halaga ng isang hypothetical
X-Foo header.

tanggalin (pangalan)
Tanggalin ang lahat ng mga halaga na naitala para sa macro.

itulak(pangalan, halaga, uri)
Mag-stack ng bagong macro, ginagawa ito kung kinakailangan.

pop(pangalan) Alisin ang huling macro definition sa stack.

Isang macro stack ang inilalaan para sa bawat macro, upang ang ilang uri ng krudo dynamic na scoping
maaaring ipatupad. Paglikha ng macro sa pamamagitan ng itulak ay tulad ng pagkuha ng isang lokal na variable sa perl,
habang lumilikha ng isa sa pamamagitan ng bago ay simpleng pagtatalaga sa isang variable. malamang, pop ay parang paglabas a
block na may lokal na variable na kahulugan at alisin frees lahat ang macro na may ganoong pangalan,
ibig sabihin, tinatanggal nito ang buong stack.

Sa antas ng filter, may tatlong opsyon ang MACRO command. Bilang default, tinutukoy ng command
isang bagong macro sa pamamagitan ng paggamit itulak, at ang iba pang mga opsyon sa bawat isa ay nagbibigay-daan sa iyo na ma-access ang isa sa isa
mga function ng interface. Tandaan na nagpapatuloy ang mga macro definition sa mga APPLY na command.

Tinukoy ng gumagamit Pagtotroso
Kadalasan kapag nagsusulat ng bagong mailagent filtering command o isang perl hook, gagawin mo
may pangangailangan para sa tiyak na pag-log, alinman upang mag-ulat ng isang problema o upang subaybayan kung ano ang iyong
ay gumaganap.

Karaniwan, ang mga log ay idinagdag sa agentlog file sa pamamagitan ng pagtawag &main'add_log(string) (Tingnan ang
subsection Pangkalahatan Layunin Mga gawain). Para sa mga simpleng mailagent na pagkilos, ayos lang ito.

Ngunit hinahayaan ka ng mailagent na tukuyin ang mga alternatibong logging file, na tinutukoy sa pamamagitan ng pangalan. Ang generic na ito
logging interface ay tinukoy sa usrlog package:

bagong pangalan, file, bandila)
Nagre-record ng bagong log file na kilala bilang pangalan at tapos na sa file. Kung ibinigay ang pathname para sa
ang file na ito ay hindi ganap, ito ay na-root sa ilalim ng logdir direktoryo. Kung bandila is
nakatakda sa true, ang anumang pag-log na ginawa sa file na ito ay makokopya din sa default
logfile sa buong system. Walang gagawin kung ang isang logfile na may parehong pangalan ay mayroon na
ay tinukoy.

tanggalin (pangalan)
Tinatanggal ang logfile na kilala bilang pangalan. Ang karagdagang pag-log na ginawa sa file na iyon ay
na-redirect sa default na logfile.

main'usr_log(pangalan, string)
Nagdaragdag ng entry sa logfile pangalan. Ang default na logfile ay kilala bilang default at
hindi maaaring muling tukuyin o tanggalin. Tandaan na ang function na ito ay magagamit mula sa
pangunahin pakete. Tinatawag ito ng pangalan itakda sa string 'default' halos
katumbas ng direktang pagtawag main'add_log na may kapansin-pansing pagbubukod na ang
-i Ang opsyon na mailagent ay hindi igagalang sa kasong iyon. Ito ay maaaring o hindi
kapaki-pakinabang sa iyo.

Kung tumawag ka &main'usr_log na may hindi umiiral na pangalan ng logfile, ang pag-log ay na-redirect sa
default na system-wide logfile na tinukoy sa iyong ~/.mailagent.

Karaniwang Pagkarga bago kodigo
Sa iyong mga perl na gawain (mga utos na tinukoy ng gumagamit, perl hook, atbp...), maaari mong maramdaman ang pangangailangang
dynamic na naglo-load ng ilang bagong code sa mailagent. Mayroon kang direktang access sa panloob
routine na ginagamit ng mailagent para ipatupad ang REQUIRE command o i-load ang iyong bagong pag-filter
mga utos halimbawa.

Gamit ang tinatawag na dynload binibili ka ng interface ng ilang karagdagang feature:

· Ang mailagent public library path ay awtomatikong inilalagay sa @INC array, na
hinahayaan kang tukuyin ang iyong sariling mga file sa buong system o pribadong perl library (ang private
ang landas ng library ay tinukoy ng perlib variable ng pagsasaayos, ang landas ng pampublikong aklatan
ay tinukoy sa oras ng pag-install).

· Tulad ng perl's mangailangan, sinusubaybayan ng mailagent kung aling mga file ang na-load kung saan
packages at hindi ire-reload ang parehong file sa parehong package nang dalawang beses.

· Posible upang matiyak na ang isang partikular na function ay tinukoy sa na-load na file,
na may iniulat na error kung hindi ito ang kaso.

· Makikinabang ka sa default na pag-log na ginawa ni dynload kapag may nangyaring error.

Upang magawa ang lahat ng ito, tumawag ka:

&dynload'load(package, file, pagpapaandar)

pagtukoy sa package kung saan mo gustong i-load ang file, at opsyonal ang pangalan ng a
function na dapat tukuyin kapag na-load na ang file (iwanan ang field na ito sa undef if
wala kang ganitong hadlang). Bumabalik ang routine undef kung ang file ay hindi maaaring
na-load (hindi umiiral na file, malamang), 0 kung ang file ay na-load ngunit naglalaman ng isang syntax
error o hindi tinukoy ang tinukoy na function, at 1 para sa tagumpay.

paggamit minsan Command
Hinahayaan ka ng ONCE na mga konstruksyon na tukuyin ang isang ibinigay na utos na patakbuhin isang beses bawat panahon (araw,
linggo...). Ang utos ay kinilala ng a pangalan at mga tag, ang kumbinasyon ng dalawang nilalang
kakaiba. Bakit hindi na lang isang identifier? Well, ayos lang iyon, ngunit ipagpalagay na gusto mo
magpadala ng mensahe bilang tugon sa isang tao isang beses bawat linggo. Maaari mong gamitin ang e-mail address ng
ang tao bilang command identifier. Ngunit paano kung gusto mo ring magpadala ng isa pang mensahe sa
ang parehong address, sa pagkakataong ito isang beses sa isang buwan?

Narito ang isang prototypical na paggamit ng isang ONCE, na gumaganap tulad ng programa sa bakasyon, maliban
na nagpapadala lamang ito ng tugon isang beses sa isang araw para sa isang ibinigay na address:

{ ONCE (%r, message, 1d) MESSAGE ~/.mensahe };

Ito ay umaasa sa macro substitution mechanism upang maipadala lamang isang beses sa isang araw ang mensaheng hawak
in ~/.mensahe. Huwag gamitin ang tag bakasyon, maliban kung alam mo kung ano ang iyong ginagawa: ito ay
ang tag na ginagamit sa loob ng mailagent sa vacation mode. Tandaan na walang tagapili o pattern
ay nauunawaan bilang "Subject: *", kaya ang panuntunan ay palaging isinasagawa dahil ang pattern na iyon
laging magkatugma.

Ang mga timestamp na nauugnay sa bawat command ay pinananatili sa mga file sa ilalim ng Hash na direktoryo.
Ang pangalan ay ginagamit bilang isang hashing key upang kalkulahin ang pangalan ng file (ang dalawang unang titik
ay ginamit). Sa loob ng file, pinagbukud-bukod ang mga timestamp ayon sa pangalan, pagkatapos ay ayon sa tag. Syempre, ikaw
maaaring sabihin (inverting tag at pangalan):

{ ONCE (mensahe, %r, 1d) MENSAHE ~/.mensahe };

ngunit iyon ay malamang na hindi gaanong mahusay, dahil ang unang pag-hash ay gagawin sa a
nakapirming salita, kaya lahat ng timestamp ay makikita sa file Hash/m/e (kung saan Sumira is
ang pangalan ng iyong hashing na direktoryo, na ang sumira parameter sa pagsasaayos
file)

paggamit Mga tag in rekord at Kakaiba
Parehong binibigyang-daan ka ng RECORD at UNIQUE na mga utos na tumukoy ng listahan ng tag na pinaghihiwalay ng kuwit sa pagitan ng '('
at ')'. Para sa bawat tag na nasa listahan, mayroong hiwalay na entry sa database
nauugnay sa message ID. Kapag ang mensahe ay naitala para sa hindi bababa sa isa sa mga tag,
ang command na "fails". Ang hindi pagtukoy ng anumang mga tag ay nangangahulugang naghahanap ng anumang paglitaw nito
message ID, naka-tag man ito o hindi.

Ito ay lubhang kapaki-pakinabang kapag tumatanggap ng mail na naka-cross-post sa mga natatanging mailing list at sa iyo
gustong mag-save ng isang pagkakataon ng mensahe sa bawat folder, ngunit nagbabantay pa rin
mga duplicate. Maaari mong sabihin:

Sa Cc: unix-wizards {
NATATANGI (mga wizard);
I-SAVE ang mga wizard;
TANGGIHAN;
};
Sa Cc: majordomo-users {
NATATANGI (mayordomo);
I-SAVE majordomo;
TANGGIHAN;
};

at isang pagkakataon lamang ng mensahe ang mapupunta sa bawat folder. Kapag mayroon kang mga folder
na may magkasalungat na interes, maaari kang gumamit ng listahan ng tag, sa halip na isang tag. Para sa
halimbawa, sa pag-aakalang gusto mong magtago ng isang kopya para sa mga mensaheng naka-cross-post sa pareho dist-
gumagamit at ahente-gumagamit, ngunit may hiwalay na kopya kung naka-cross-post din sa majordomo-users,
pagkatapos ay sabihin:

Sa Cc: majordomo-users {
NATATANGI (mayordomo);
I-SAVE majordomo;
TANGGIHAN;
};
Sa Cc: dist-users {
NATATANGING (dist, ahente);
I-SAVE ang mga dist-user;
TANGGIHAN;
};
Sa Cc: mga ahente-user {
NATATANGING (dist, ahente);
I-SAVE ang mga dist-user;
TANGGIHAN;
};

Kung mayroon kang ilang panuntunan gamit ang UNIQUE nang walang anumang mga tag, tutugma ito kapag kahit isa
naitala ang instance ng mensahe, anuman ang tag (kung mayroon man) ginamit
ang unang lugar.

Tinutukoy A Panahon
Ang parameter ng panahon ng ONCE command o ang vacperiod parameter ng iyong configuration
file ay may sumusunod na format: isang numero na sinusundan ng isang modifier. Ang modifier ay isang atomic
panahon tulad ng isang araw o isang linggo, ang bilang ay ang bilang ng mga panahon ng atomic sa huling panahon
dapat katumbas ng. Ang mga magagamit na modifier ay:

m minuto
h oras (60 minuto)
d araw (24 oras)
w linggo (7 araw)
M buwan (30 araw)
y taon (365 araw)

Ang lahat ng mga panahon ay na-convert sa loob ng ilang segundo, bagama't wala kang pakialam...
Ang mga halimbawa ng wastong panahon ay mula sa "1m" hanggang "136y" sa isang 32 bits na makina (bakit?).

Mga pag-timeout
Upang maiwasan ang pagkakaroon ng a mailagent naghihintay para sa isang utos magpakailanman, isang maximum na pagpapatupad
Ang oras ng isang oras ay pinapayagan bilang default. Makalipas ang oras na iyon, ang bata ay ipinadala a
SIGTERM signal. Kung hindi ito mamatay sa loob ng susunod na 30 segundo, isang SIGKILL ang ipapadala. Output
mula sa programa, kung mayroon man sa ngayon, ay ipinapadala pabalik sa gumagamit. Maaaring ang default na gawi na ito
mababago sa pamamagitan ng pagtatakda ng nararapat runmax variable sa iyong configuration file upang payagan ang higit pa
oras para makumpleto ang utos.

Mayroon ding isang filter timeout ng pila. Upang i-moderate ang pag-load ng system, ang C filter
Ang programa ay naghihintay ng 60 segundo bilang default (o anuman queuewait ay nakatakda sa config file)
bago ilunsad mailagent. Upang maiwasan ang mga salungatan, ang mga mensahe ay nakapila sa pamamagitan ng unang filter (na
ay pagkatapos ay matulog para sa queuewait segundo) ay hindi pinoproseso ng mailagent's -q opsyon hanggang
sila man lang queuehold segundong gulang. Ang isa pang parameter na nauugnay sa queue ay queuelost, ang
dami ng mga segundo pagkatapos nito mailagent ay i-flag ang mga mensahe bilang "nawala" kapag naglilista ng
pila

Sa wakas, maaari ding i-configure ang patakaran sa pag-lock ng timeout. Bilang default, nasira ang isang lock
kapag ito ay isang oras na (na-configure ng lockhold variable) at mailagent gagawin lamang
lockmax pagtatangka, spaced by lockdelay segundo upang makuha ang lock. Magpapatuloy ito
nakuha man nito o hindi ang lock na iyon. Kung gusto mo ng secure na patakaran sa pag-lock, siguraduhin lockmax
beses lockdelay ay mas malaki sa lockhold, sapat na "malaki" ang parameter na iyon.

Pag-iwas loops
Ang mailagent nag-iiwan ng "X-Filter:" na header sa bawat na-filter na mensahe, na ginagamit naman
upang makita ang mga loop. Kung ang isang mensaheng na-filter na ay ipoproseso, ang mailagent pumapasok a
espesyal na estado _SEEN_. Espesyal ang estado na ito sa diwa na ito ay built-in, hindi ito tugma
ng LAHAT, at ang ilang aksyon ay hindi ginawang available, katulad ng: BACK, BUNCE, FEED, FORWARD,
MAGBIGAY, MAG-NOTIF, PASS, PIPE, POST, PURIFY, PILA at TAKBO. Tandaan din na kahit na ang ONCE
at ang mga SELECT construct ay pinagana, hindi ka nila hahayaan na magsagawa ng mga hindi pinapayagang command.
Kung hindi, ang _SEEN_ na estado ay kumikilos tulad ng anumang ibang estado na maaari mong piliin o i-negate, kaya a
hindi pipiliin ng guard ang panuntunan kapag kami ay nasa estadong _SEEN_.

Pinapadali ng estadong _SEEN_ ang pakikitungo sa mga mail na umiikot dahil sa isang alias loop sa iyo
walang kontrol sa. Kung walang aksyon na nakita sa _SEEN_ na estado, ang mail ay naiwan sa
mailbox, gaya ng dati. Bukod dito, kung walang ginawang pag-save, ang isang LEAVE ay isinasagawa. Ito ang normal
pag-uugali.

Ang "X-Filter:" na header ay idinaragdag lamang kapag na-save ang mensahe. Mga aksyon tulad ng PIPE o
BIGAY huwag i-flag ang mensahe bilang nai-save at samakatuwid ay ginagawa nila hindi idagdag ang header na iyon
linya. Maaari kang magdagdag ng isa sa pamamagitan ng ANNOTATE kung nais mong maiwasan ang mga loop, kung sakaling ang program ay
na iyong pinapakain ang mensahe ay maaaring ibalik ito sa iyo sa kakaibang paraan.

mensahe File
Ang teksto ng mensaheng ibabalik (para sa MESSAGE o NOTIFY) ay binabasa mula sa isang file at
dumaan sa mekanismo ng pagpapalit ng macro. Ang espesyal na macro %T ay nakatakda sa petsa
ng huling pagbabagong ginawa sa file na iyon. Ang format ay buwan/araw, at idinagdag ang taon
bago ang buwan lamang kung ito ay naiiba sa kasalukuyang taon.

Sa ulo ng mensahe, maaari kang maglagay ng mga linya ng header. Ang mga linyang iyon ay papatungan ang
default na ibinigay na mga linya. Maaaring maging kapaki-pakinabang iyon upang baguhin ang default na paksa o magdagdag ng ilan
karagdagang mga field tulad ng pangalan ng iyong organisasyon. Ang dulo ng iyong header ay ibinigay ng
ang unang blangkong linya na nakatagpo. Kung ang tuktok ng mensahe na nais mong ipadala ay mukhang a
mail header, maaari mo itong protektahan sa pamamagitan ng pagdaragdag ng blangkong linya sa pinakatuktok ng file. Ito
aalisin ang dummy line sa mensahe at ang buong file ay ipapadala bilang isang katawan
bahagi.

Narito ang isang halimbawa ng isang vacation file. Nagdagdag kami ng carbon copy pati na rin ang pangalan ng aming
organisasyon sa header:

Cc: ram
Organisasyon: %o
Pangunahin: maramihan

[Huling rebisyon na ginawa noong %T]

Mahal na %N:

Natanggap ko ang iyong mail tungkol sa "%R".
Babasahin ito sa sandaling bumalik ako mula sa bakasyon.

Taos-puso,
--
%U <%u@%C>

BAKASYON MODE


Kapag oras na para magbakasyon, posibleng mag-set up ng mailagent sa vacation mode.
Bawat vacperiod, ang mensahe vacfile ay ipapadala pabalik sa user (na may macros
mga pagpapalit) kung ang gumagamit ay tahasang nakalista sa Upang or Cc field at kung ang nagpadala ay
hindi isang espesyal na gumagamit (ugat, uucp, balita, demonyo, postmaster, newsmaster, usenet, Mailer-
demonyo, Ahente ng Mailler or walang tao). Ginagawa ang mga tugma sa paraang hindi sensitibo sa kaso, kaya
MAILER-DAEMON makikilala rin bilang isang espesyal na gumagamit. Higit pa rito, anumang mensaheng na-tag
na may isang Karapatan sa pangunguna: field na nakatakda sa karamihan, listahan or basura hindi magti-trigger ng mensahe ng bakasyon.
Siyempre, ang built-in na pag-uugali na ito ay maaaring ma-overload ng angkop na mga panuntunan (sa pamamagitan ng pagsubok at
ikaw mismo ang naglalabas ng mensahe sa bakasyon sa pamamagitan ng MESSAGE).

Sa panloob, ang mailagent ay gumagamit ng isang ONCE na command na naka-tag (%r, bakasyon, $vacperiod). Ito ay nagpapahiwatig
hindi mo dapat gamitin ang bakasyon tag sa sarili mong ONCE command, maliban kung alam mo kung ano ka
paggawa.

Bukod pa rito, ipinapadala lang ang mensahe sa bakasyon kung walang inilabas na utos na "VACATION off", o
kung ang isa pang "VACATION on" ay na-overwrite ang nauna. Tandaan na kung ang isang panuntunan ay tumugma o
hindi ay walang kaugnayan sa algorithm. Bilang default, siyempre, pinapayagan ang mensahe ng bakasyon
kapag ang bakasyon nakatakda ang configuration parameter sa on.

Kung hindi ka nasisiyahan sa katotohanan na ang isang mensahe ng bakasyon ay ipinadala sa mga taong naka-address
ikaw ay isang carbon copy lamang, pagkatapos ay maaari kang sumulat sa tuktok ng iyong file ng panuntunan:

Cc: ram { I-off ang VACATION; TANGGIHAN };

Siyempre, kailangan mong palitan ang iyong sariling pangalan sa pag-login bilang kapalit ng iumpog. Hindi mo magagamit ang
parehong pamamaraan upang payagan ang mga mensahe ng bakasyon sa mga espesyal na user na gusto ugat, dahil ang pagsubok para sa
Ang "espesyal" ay nangyayari pagkatapos ng flag ng vacation mode. Ito ay binibigyang-kahulugan bilang isang tampok bilang ito
pinipigilan ang mga hangal na pagkakamali, tulad ng paggamit r* sa halip ng iumpog sa naunang tuntunin.

Baka gusto mo ring mag-set up ng ibang mensahe sa bakasyon, na para lang sa mga tao sa iyo
organisasyon na binigyan ng sensitibong katangian ng impormasyong ipinahayag ;-). Isang simpleng paraan ng
ang paggawa nito ay:

Mula sa: /^\w+$/, /^\w+@\w+$/, /^[\w.-]+@.*\.hp\.com$/i
{ BAKASYON ~/.hp_vacation 1w; TANGGILAN ANG HP };

Ipagpalagay na ang domain ng aking organisasyon ay .hp.com at ang mga mensaheng iyon ay walang anumang domain
ay mga lokal na mensahe, ise-set up ng panuntunan sa itaas ang file ~/.hp_vacation, ipinadala isang beses sa isang linggo, para sa
lahat ng empleyado ng HP.

Hindi ka hahayaan ng VACATION command na baguhin ang path ng mensahe (ngunit papayagan ang frequency
nagbabago pa rin) kapag ang nabakunahan ang configuration variable ay nakatakda sa ON. Ito ay sinadya upang maging
ginagamit sa mga sitwasyong pang-emergency, kapag isang mensahe sa bakasyon lang ang kasya. Halimbawa, kapag
ikaw ay nasa isang sick leave, maaaring magbago ang isang simpleng trigger message sa iyong mailagent mula sa bahay
iyong ~/.mailagent pagsasaayos upang pilitin ang ~/.i_am_sick mensahe, anuman ang
iba't ibang mga patakaran ang dapat sabihin. Sa totoo lang, ito ang dahilan kung bakit idinagdag ang feature na ito,
kamangha-mangha... :-)

MGA VARIABLE


Ang mga sumusunod na variable ay binibigyang pansin: maaaring nagmula sila sa kapaligiran o maging
itakda sa file ng panuntunan:

mailfilter
ay nagpapahiwatig kung saan ang mga na-load na pattern ay hahanapin, kung ang pangalan ng file ay
hindi ganap na kwalipikado. Kung hindi ito nakatakda, maildir sa halip ay gagamitin. Kung maildir
ay hindi rin nakatakda, ang home directory ay ginagamit.

maildir ay ang lokasyon ng iyong mga mail folder. Ang anumang kamag-anak na landas ay nauunawaan bilang
simula sa maildir. Kung hindi ito nakatakda, ~/Mail Ginagamit.

Nananatiling aktibo ang mga variable na iyon habang nasa saklaw ng file ng panuntunan. Dapat isang kahalili
rule file ay gagamitin (sa pamamagitan ng rules hook o ang APPLY command), ang mga kasalukuyang value ay pinapalaganap
sa bagong set ng panuntunan maliban kung na-override sa kahaliling file ng panuntunan. Sa anumang kaso, ang
ang dating halaga ay naibalik kapag ang kontrol ay inilipat pabalik sa nakaraang hanay ng mga panuntunan.
Ibig sabihin, ang mga variable na iyon ay pabago-bago sa halip na statically scoped.

Awtomatikong Pagkilala


Saanman sa mail, maaaring mayroong isang @RR na kaliwang-justified na linya na magpapadala ng isang
pagkilala sa nagpadala ng mail. Ang @RR ay maaaring opsyonal na sundan ng isang
address, kung saan ang acknowledgement ay ipapadala sa address na iyon sa halip. Sa totoo lang
(pero sikreto lang natin yun), isa itong paraan para makita ko kung sino ang nagpapatakbo sa akin
mailagent program at sino ang hindi...

Ang sendmail Ang programa ay karaniwang nagpapatupad ng gayong tampok sa pamamagitan ng isang Return-Receipt-To: header
linya, na nagpapadala ng buong header pabalik sa matagumpay na paghahatid. Gayunpaman, hindi ito
ipinatupad sa lahat ng mail transport agent, at ang @RR ay isang magandang alternatibo :-).

TANDAAN BENE


Sa buong manwal na pahinang ito, palagi akong nagsusulat ng mga field ng header na may unang titik ng
ang bawat salita ay may malalaking titik, tulad ng sa Ibalik-Resibo-Kay. Ngunit ang RFC-822 ay hindi nagpapataw ng spelling na ito
convention, at maaaring legal na muling isulat ng isang mailer ang nakaraang field bilang ibalik-resibo-sa
(at sa katunayan ganoon din sendmail sa sarili nitong pribadong mail queue file).

Gayunpaman, dapat mong palaging tukuyin ang mga header sa kung ano ang maaaring tawaging a na-normalize kaso
(para sa mga header pa rin). Makikilala nang tama ang mailagent cc:, CC: or Cc: sa isang mail
mensahe at magbibigay-daan sa iyong piliin ang mga field na iyon sa pamamagitan ng normalized Cc: tagapili. Sa
sa katunayan, pinapatakbo nito ang normalisasyon para sa iyo, at a cc: ang tagapili ay hindi makikilala bilang
ganyan. Siyempre, walang pisikal na pagbabago ang gagawin sa mismong header.

Totoo rin ito para sa mga header na tinukoy sa utos na STRIP o KEEP. Kung magsusulat ka I-STRIP
Cc, tama nitong aalisin ang anuman cc: linya. Gayundin, kung gumamit ka ng mga regular na expression sa
tukuyin ang isang tagapili, Re.*: ay tumutugma sa parehong orihinal natanggap: at pabalik na landas: mga patlang,
panloob na kilala sa pamamagitan ng kanilang normalized na representasyon.

MAIL PAKIKITA


Ang mga mail hook ay nagpapahintulot sa mailagent na malinaw na mag-invoke ng ilang mga script o gumanap nang higit pa
pagpoproseso sa mensahe. Ang mga kawit na iyon ay isinaaktibo sa pamamagitan ng SAVE, STORE o LEAVE
mga utos. Lalo na, ang pag-save sa isang folder na ang executable bit ay nakatakda ay magtataas ng isang espesyal
pagpoproseso. Bilang default, kinukuha ang folder bilang isang programa kung saan dapat i-pipe ang mail
sa. Kung ang "folder" na programa ay nagbabalik ng zero status, ang mensahe ay isasaalang-alang ligtas by
ang mailagent. Kung hindi, ang lahat ng pagproseso na nakalakip sa mga nabigong pag-save ng mga utos ay magsisimula
(kabilang ang mga pagtatangka sa pag-save ng emergency). Ang mga executable na folder ay nagbibigay ng isang transparent na paraan (mula sa
ang punto ng view ng file ng panuntunan) upang harapin ang mga espesyal na uri ng mga mensahe.

Sa katunayan, limang magkakaibang uri ng mga kawit ang magagamit. Ang una ay ang kapatagan
executable folder na kakausap lang natin. Pero sa totoo lang, eto talaga ang nangyayari kapag
nakita ng isang nagse-save na command ang isang executable na folder: ini-scan ng mailagent ang unang linya ng
folder (sa katunayan, ang unang 128 bytes) at naghahanap ng isang bagay na nagsisimula sa #: at
na sinusundan ng isang salita, na naglalarawan ng isang espesyal na uri ng kawit. Ito ay katulad sa paraan
ang kernel ay tumatalakay sa #! hook sa mga executable na programa. Kung walang #: ay natagpuan o #: ay
sinundan ng ilang basura, pagkatapos mailagent nagpasya na ito ay isang simpleng programa at pinapakain ang mail
mensahe sa programang ito. Katapusan ng kwento.

Ngunit kung ang #: token ay sinusunod (mga puwang na pinapayagan, ang kaso ay hindi nauugnay) ng isa sa
sumusunod na mga salita, pagkatapos ay gagawin ang mga espesyal na aksyon:

patakaran Ang file ay nagtataglay ng isang set ng mailagent rules na ilalapat. Isang bagong mailagent
Ang proseso ay nilikha upang aktwal na harapin ang mga iyon at ang exit status ay pinalaganap
bumalik sa orihinal na mailagent.

pagtutuos ng kuwenta Ito ay katulad ng diwa sa kung ano ang ginagawa ng audit.pl package ni Martin Streicher,
kaya ang pangalan ng hook na ito. Ang mga espesyal na variable na itinakda ng PERL
Ang mga utos ng filter ay sinisimulan at ang script ay na-load sa espesyal mailhook
space name ng package, na nagbibigay din sa iyo ng interface sa sarili ng mailagent
mga gawain. Maaari mong ligtas na gamitin ang lumabas function dito, dahil isang dagdag tinidor is
tapos na. Ito ang tanging pagkakaiba sa pagitan ng isang pagtutuos ng kuwenta at perlas kawit

maghatid Parehong bagay tulad ng para sa pagtutuos ng kuwenta hook, ngunit ang karaniwang output ng iyong script ay
sinusubaybayan ng mailagent at nauunawaan bilang mailagent filtering commands. sa
matagumpay na pagbabalik, isang mailagent na proseso ang hihingin upang aktwal na maisagawa ang mga iyon
utos sa mensahe. Muli, ito ay katulad ng espiritu sa Chip Salzenberg's
maghatid package at ibinigay ang pangalan ng hook na ito.

perlas Ang kawit na ito ay kapareho ng pagtutuos ng kuwenta ngunit ito ay naisakatuparan nang walang tinidor ng bago
mailagent, at mayroon kang perl interface sa mga utos sa pag-filter ng mailagent.
Walang pagkakaiba sa utos ng PERL, dahil ipinatupad iyon
paraan, sa pamamagitan ng pagtawag sa isang mailagent at pagpilit sa utos ng PERL na isagawa. Ito ay
katulad ng espiritu sa sikat na Larry Wall perlas wika at ito ang may pananagutan sa
ang pangalan ng kawit na ito :-).

Gaya ng nabanggit kanina sa manwal na pahinang ito, ang hook ay ginagamit mula sa bahay direktoryo
tinukoy sa iyong ~/.mailagent (na maaaring iba sa iyong tunay na direktoryo ng tahanan, hanggang sa
mailagent or mailhook ay nag-aalala).

Para sa mga hook na sa wakas ay pinapatakbo ng perl, ang espesyal na array ng @INC ay may sariling mailagent
pribadong library path prepended dito, kaya na mangailangan unang tingin sa lugar na ito.

MGA FOLDER


Ang folder ay isang file o isang direktoryo na maaaring maging target ng paghahatid ng mailagent,
ibig sabihin ang argumento ng mga utos na parang SAVE.

Polder format
Bilang default, ang mga mail ay isinusulat sa mga folder ayon sa karaniwang UNIX-style mailbox
format: ang bawat mail ay nagsisimula sa isang nangungunang mula sa linya na naglalaman ng address ng nagpadala at ang
petsa. Gayunpaman, sa pamamagitan ng pagtatakda ng mmdf parameter mula sa ~/.mailagent sa ON, ang mailagent
ay makakapag-save ng mga mensahe sa MMDF na format: ang bawat mensahe ay nasa pagitan ng dalawang linya
ng apat na Ctrl-A na character (ASCII code 1) at ang nangunguna mula sa natanggal ang linya.

Kapag na-activate ang MMDF mode, ang bawat folder ay i-scan upang makita kung ito ay isang UNIX-style o
MMDF-style mailbox at ang mensahe ay ise-save nang naaayon. Kapag nag-iipon sa bago
folder, ang default ay lumikha ng isang UNIX-style na mailbox, maliban kung ang mmdfbox configuration
Ang variable ay nakatakda sa ON, kung saan ang MMDF format ang mangingibabaw.

Tandaan na ang format ng MMDF ay ang pamantayan din para sa mga folder na naka-pack na MH, kaya sa pamamagitan ng pagpapagana ng
MMDF mode, maaari kang maghatid nang direkta sa mga naka-pack na folder. Ang utos ng MH Inc
ay kayang isama ang mail mula sa alinmang anyo, ibig sabihin, hindi mahalaga kung ang
ang folder ay nasa UNIX na format (tinatawag ding UUCP-style) o nasa MMDF na format.

Sinusuportahan din ang mga MH-style na folder. Pangunahing ito ay isang direktoryo kung saan iniimbak ang mga mensahe
sa mga indibidwal na file. Upang direktang i-save sa isang MH folder, i-prefix lang ang pangalan ng folder
gamit ang '+', tulad ng gagawin mo sa mga utos ng MH. Ang mga hindi nakikitang pagkakasunud-sunod na tinukoy sa iyong
MH profile (ang mhprofile parameter sa iyong ~/.mailagent, ang default ay ~/.mh_profile) ay
ma-update nang tama, bilang rcvstore ay.

Kapag ang target na folder ay isang direktoryo, sinusubukan ng mailagent ang paghahatid sa isang indibidwal
may numerong file. Kung mayroong prefix file (config parameter msgprefix, ang default ay
.msg_prefix), ang unang linya nito ay ginagamit upang tukuyin ang batayang pangalan ng mensahe, pagkatapos ay a
numero ay idinagdag upang ibigay ang pangalan ng file ng mensahe na gagamitin. Ibig sabihin, kung wala
tulad ng file, ang folder ay magmumukhang isang MH, nang walang anumang MH sequence file bagaman.

Polder Pagpiga
Kung mayroon kang isa o higit pa sa malawak na magagamit na mga kagamitan sa compression ng file tulad ng
magsiksik or gzip sa iyong PATH (tulad ng itinakda ni ~/.mailagent), pagkatapos ay maaaring naisin mong gumamit ng folder
compression upang makatipid ng kaunting espasyo sa disk, lalo na kapag wala ka nang ilang oras at hindi
gusto mong makita ang iyong mail fill-up ang filesystem.

Upang makamit ang compression ng folder, kailangan mong mag-set up ng isang file, na tinutukoy ng magsiksik
variable ng pagsasaayos. Dapat ilista ng file na ito ang mga pangalan ng folder, isa bawat linya, na may mga blangkong linya
hindi pinansin at pinahihintulutan ang istilo ng shell (#). Maaari kang gumamit ng mga pattern na istilo ng shell upang tukuyin
ang mga folder, at ang tugma ay susubukan sa buong pathname ng folder (~
nangyayari ang pagpapalit). Kung hindi mo tinukoy ang isang pattern na nagsisimula sa isang nangungunang '/'
character, pagkatapos ay susubukan ang tugma sa basename ng folder (ibig sabihin, ang huling
bahagi ng landas ng folder). Kung nais mong i-compress ang lahat ng iyong mga folder, pagkatapos ay ilagay lamang ang a
nag-iisang '*' sa loob ng file na ito.

Ginagamit ng Mailagent ang extension ng filename upang matukoy kung anong compression scheme ang ginagamit para sa a
partikular na folder. Ang file na tinutukoy ng compspecs variable ng pagsasaayos (default
ay $spool/compressors) ay ginagamit upang tukuyin ang mga utos na gagamitin ni mailagent upang maisagawa
ang compress, uncompress, at cat operation para sa isang partikular na extension.

Ang compressors Ang file ay nagtataglay ng mga linya ng sumusunod na form:

mga tag karugtong compression_prog uncompress_prog cat_prog

kung saan:

mga tag ay ang lohikal na pangalan para sa compression scheme. Ito ay karaniwang kapareho ng
ang pangalan ng program na ginamit upang magbigay ng compression, ngunit maaaring iba
sa hindi inaasahang dahilan. Ito ay dapat na natatangi sa lahat ng mga talaan sa file.

karugtong ay ang extension upang makilala bilang kabilang sa tinukoy na tag. Ito ay dapat na
natatangi sa lahat ng talaan sa file.

compression_prog
ay ang pangalan ng command na tatakbo upang i-compress ang isang folder. Ang programa ay dapat
palitan ang hindi naka-compress na file ng naka-compress na may extension
idinagdag sa filename (tulad ng magsiksik or gzip).

uncompression_prog
ay ang pangalan ng command na tatakbo upang i-uncompress ang isang folder. Ang programa ay dapat
palitan ang naka-compress na file ng hindi naka-compress na walang extension
(katulad i-uncompress or baril).

cat_prog ay ang pangalan ng command upang i-output ang hindi naka-compress na nilalaman ng isang naka-compress
folder sa stdout (tulad ng zcat or gzcat).

Ang mga patlang ay pinaghihiwalay ng TABS upang payagan ang paggamit ng mga space character sa command
field.

Kung ang file na tinutukoy ng compspecs configuration variable ay hindi ma-access para sa
anuman ang dahilan, ang isang default na entry ay naka-hard-wired sa mailagent (alam ang tungkol sa pareho magsiksik
at gzip mga programa):

compress .Z compress i-uncompress zcat
gzip .gz gzip gunzip gunzip -c

Kung nais mong magdagdag ng higit pang mga compressor, maaari mong kopyahin ang default compressors file mula sa
direktoryo ng pribadong aklatan ng mailagent at mag-setup ng tamang entry para sa iyong kahaliling
tagapiga. Tandaan na ang trailing extension ay kailangang natatangi sa lahat ng
nakalistang mga programa, dahil ginagamit ang extension na iyon upang matukoy ang uri ng compression
isinagawa sa folder.

Kung ang folder ay nilikha nang walang anumang umiiral na naka-compress na form sa paligid, isang default na compressor
ay pinili para sa iyo, gaya ng tinukoy ng comptag variable ng pagsasaayos. Iyon ay tumutukoy sa
pangalan ng tag ng compspecs file, ibig sabihin, ang unang salita sa linya (karaniwan ay ang pangalan ng
compression program, ngunit hindi kinakailangan).

Kapag sinusubukang ihatid, susuriin ni mailagent ang pangalan ng folder laban sa listahan ng
mga pattern sa compress file. Kung mayroong tugma, ang folder ay na-flag bilang naka-compress.
Pagkatapos ay sinubukan ni mailagent ang decompression kung mayroon nang naka-compress na form (ibig sabihin, ang file
ay may kinikilalang filename extension) at kung walang hindi naka-compress na form. Ang paghahatid ay
pagkatapos ay ginawa sa hindi naka-compress na folder. Gayunpaman, ang muling pag-compress ay hindi nagagawa kaagad,
dahil posible pa ring makakuha ng mga mensahe sa folder na iyon sa iisang batch delivery.
Kung ang puwang sa disk ay maging napakahigpit na imposible ang decompression ng iba pang mga folder,
Ang mailagent ay muling i-compress ang mga folder na hindi na na-compress nito. Kung hindi, naghihintay ito
hanggang sa huling sandali.

Kung sa ilang kadahilanan ay may naka-compress na folder na hindi ma-decompress, mailagent
ay maghahatid ng mail sa plain folder. Ang karagdagang paghahatid sa folder na iyon ay haharapin
na may parehong naka-compress at simpleng bersyon ng folder, at magbibigay ito sa iyo ng babala
sa log file, ngunit awtomatikong gagawin ang paghahatid sa plain file.

Sa mga bagong likhang folder ang comptag configuration variable ay isinangguni upang matukoy ang
uri ng compression na gagamitin para sa folder.

MAIL BIFFING


Kung ikaw ay tumatanggap at nagpoproseso ng mail sa iyong sariling makina, kung gayon mayroon kang access sa
lokal na mail biffing kung saan mailagent maaaring balaan ka tungkol sa mga bagong mensahe at sabihin sa iyo ang tungkol sa
kung saan na-save ang mga ito, nagpi-print ng maliit na subset ng header at ang unang ilang linya
ng katawan.

Upang gumamit ng biffing, ang kailangan mo lang ay ang setting ng ilang mga parameter ng biff sa iyong
~/.mailagent at siguraduhin biff ay nakatakda sa ON. Actually, ito lang ang parameter mo
kailangang i-set para makakuha ng minimal na default na biffing na gawi. Huwag kalimutang patakbuhin ang shell
utos"biff y" sa mga terminal kung saan mo gustong makatanggap ng notification (maaari mong gawin iyon sa
ilang ttys, isa para sa bawat virtual na display halimbawa).

Sa pagtanggap ng mail at pag-save sa isang folder o pag-post sa isang newsgroup, mailagent matatagpuan
lahat ng mga tty kung saan ka naka-log on, pagkatapos ay pipiliin ang mga kung saan hiniling ang biffing,
sa wakas ay naglalabas ng mensahe at gumagawa ng beeping sound (kung sinusuportahan ito ng iyong terminal at
ginagamit mo ang karaniwang format--tingnan sa ibaba).

Pag-customize Biffing Pagbubuhos
Kung hindi angkop sa iyong mga pangangailangan ang default na format, maaari mong i-customize ang biffing message
malaya, itinatakda ang biffmsg parameter upang tumuro sa file kung saan naka-imbak ang format.
Ang mga karaniwang pagpapalit ng macro ay isasagawa sa iyong mensahe, ang sumusunod na hanay ng macro
papalitan at pagkumpleto ng karaniwang hanay:

%-A Pareho sa pagsulat ng %-H, bagong linya, %-B
%-B Ang bahagi ng katawan ng biffing na mensahe, na inalis ang content-transfer-encoding.
Kung ang mensahe ay isang MIME multipart one, ang text/plain na bahagi ay ipinapakita. Kung a
text/html na bahagi ay magagamit, ang HTML markup ay hinubaran para sa biffing.
%-H Ang bahagi ng header ng biffing na mensahe. Kung palabas lang Mula sa:, Sa: Paksa: at
Petsa: mga header, o anumang itinakda mo biffhead configuration variable sa.
Ang lahat ng mga header ay ipinapakita bilang isang linya ng teksto, anuman ang kanilang aktwal na haba.
Magkakaroon ng tatlong trailing tuldok sa dulo bilang senyales na naganap ang truncation.
Para sa isang artikulo ng balita (biffing pagkatapos ng isang POST -b), ang To: at Cc: na mga field ay hindi kailanman
ipinapakita, kahit na tinukoy sa biffhead.
%-T Kapareho ng %-B, ngunit naka-activate ang trimming. Ang layunin ng trimming ay alisin ang anuman
nangungunang sipi sa mensahe, upang makuha lamang ang pinakamakahulugang bahagi. Ito
Ipinapalagay na ang character na sumipi ay isang solong hindi alphanumeric na character. Ang
ang nangungunang linya ng pagpapatungkol na maaaring magpakilala sa quotation ay maaari ding alisin,
at ang pinakamababang haba para sa quotation ay maaaring itakda sa configuration file.
%B Ang kamag-anak na landas sa ilalim ng %d ng folder ng mensahe, buong landas (%p) kung hindi nai-save
sa ilalim ng direktoryong iyon. Ang pangalan ng newsgroup para sa mga artikulo ng balita.
%D Ang direktoryo kung saan nakaimbak ang mensahe. Kung MH folder, ito ang folder
buong landas. Ang home directory ay pinalitan ng isang ~. Walang laman para sa mga artikulo ng balita.
%F Ang batayang pangalan (huling bahagi ng landas) ng mensahe. Para sa isang mensahe ng MH, ito ay
ang numero ng mensahe. Walang laman para sa mga artikulo ng balita.
%P Ang landas ng folder. Mayroon itong tamang semantika para sa MH at mga folder ng direktoryo, ibig sabihin
tumuturo ito sa direktoryo ng folder mismo. Kung hindi, kapareho ng %p.
%a Mga character ng alarm (^G). Maaaring lumawak sa higit sa isa sa ilalim ng kontrol ng
BEEP filtering command. Gamitin ang %b kung gusto mo ng isang kampana lang.
%b Isang beeping character (^G). Bilang kabaligtaran sa %a, ito ay lumalawak lamang upang magbigay isa kampana.
%d Buong path kung saan ang mga folder tulad ng isa na ini-save sa ay naka-imbak kung hindi
kwalipikado (ibig sabihin, ang iyong MH path para sa mga folder ng MH, ng isang bagay tulad ng ~/Mail para sa iba
mga folder). Walang laman para sa mga artikulo ng balita.
%f Folder kung saan nai-save ang mail, pinalitan ng ~ ang tahanan. Ang newsgroup kung kailan
artikulo ay nai-post para sa balita.
%m Isang '+' sign kung ang folder ay isang MH, walang laman kung hindi.
%p Ang buong pangalan ng path (katulad ng %f) ng mensahe, ngunit walang ~ shortcut. Ang
pangalan ng newsgroup para sa mga artikulo ng balita.
%t Ang uri ng mensahe: karaniwang "mail", ngunit nakatakda sa "artikulo" para sa biffing pagkatapos ng a
utos ng POST.

Makukuha mo ang karaniwang macro expansion sa pamamagitan ng paggamit %:f halimbawa, mula noong %f ang macro ay
pinalitan. Ang %: Hinahayaan ka ng form na makuha ang karaniwang kahulugan ng macro, anuman
ano, kaya hindi mo na kailangang tandaan kung ang isang ibinigay na macro ay pinapalitan sa kontekstong ito o
hindi. Bukod dito, ito ay mas ligtas dahil ang mga bagong macro ay maaaring idagdag dito nang walang abiso. Tandaan na
ang mga macro na nauugnay sa nilalaman ng mensahe ay nagsisimula sa lahat %- at samakatuwid ay hindi sumasalungat
na may standard one.

Narito ang format na kailangan mong gamitin para makuha ang parehong gawi gaya ng default na hardwired
format:

%b
Bagong %t para sa %u ay dumating sa %f:
----
%-A
----%b

Tandaan na ang string ...higit pa... lumilitaw sa dulo ng katawan kapag hindi pa
ganap na naka-print out sa screen at ang natitirang mga linya ay hindi blangko o katulad.

Pagbugso Humahantong Banggit
Ito ay isang karaniwang kasanayan, kapag tumutugon sa isang mensahe, upang isama ang isang sipi ng
mga pangungusap na sinasagot, gamit ang isang hindi alphanumeric na character gaya ng '>' upang i-prefix
mga linyang sinipi. Isang bagay tulad ng:

Sinipi si John Doe:
> Ito ay naka-quote na materyal.
> Isa pang linya mula sa mail ni John.

Bahagi ito ng tugon kay John.

Ang nangungunang linyang "Pag-quote ...", na tinatawag na pagpapalagay linya, ay opsyonal at maaaring
nawawala o kumuha ng isa pang libreng form.

Gayunpaman, kapag biffing, ito ay maaaring makita bilang walang kwentang ingay, lalo na sa panahon ngayon kung saan ang mga tao
malayang sumipi ng higit pa at higit pa sa kanilang mga tugon. Dahil ang mensahe ng biff ay nagpapakita lamang sa itaas
mga linya ng mensahe, maaaring kanais-nais na awtomatikong putulin ang mga sinipi na linya.

Sa pamamagitan ng %-T macro sa customized na biff na format, maaari kang humiling ng pag-trim ng nangungunang
materyal na panipi, pinapanatili ang linya ng pagpapatungkol o hindi, at palitan pa ang mga na-trim na materyal
na may notification na napakaraming linya ang naalis.

Ginagawa ang lahat ng pagpapasadyang ito mula sa ~/.mailagent configuration file, gamit ang
bifftrim, bifftrlen at biffquote mga variable.

Kailangan mo munang i-on ang trimming sa pamamagitan ng paggamit ng customized na biff format gamit ang %-T macro.
Sa pamamagitan ng pagtatakda bifftrlen hanggang 3, maaari kang humiling na ang mga sipi lamang ng hindi bababa sa 3 linya ay
pinutol. lumingon bifftrim ang off ay mag-aalis ng trimming notification, habang lumiliko
biffquote aalisin din ng off ang linya ng attribution, kapag naroroon.

Halimbawa, ipagpalagay ang mga sumusunod na setting:

bifftrim : NAKA-ON
bifftrlen: 2
biffquote: NAKA-OFF

pagkatapos ang halimbawa sa itaas ay gagawa ng sumusunod na biffing output (header ng mensahe
hindi makayanan):

[nag-trim ng 3 linya na nagsisimula sa isang nangungunang '>' na character at linya ng pagpapatungkol]
Bahagi ito ng tugon kay John.

dahil ang blangkong linya na sumusunod sa siniping materyal ay binibilang bilang bahagi ng
pagsipi. Ang "[trimmed ..]" na mensahe ay maaaring i-off sa pamamagitan ng pagtatakda bifftrim sa OFF.

Isinasaalang-alang ng trimming algorithm ang unang linya ng katawan upang makita kung ito ay nagsisimula sa a
hindi alphanumeric na character. Kung nangyari ito, pagkatapos ay ang lahat ng mga sumusunod na linya na nagsisimula sa iyon
parehong character, o anumang blangko na linya ay aalisin, hanggang sa unang hindi blangko na linya na nagsisimula sa
ibang karakter. Opsyonal, ang unang linya (at ang linyang iyon lang) ay nilalaktawan kung ang
ang pangalawa ay nagsisimula sa isang hindi alphanumeric na character, at ang unang linya ay kinuha bilang pagiging
ang linya ng pagpapatungkol.

paggamit Siksik MH-style Biffing
Ang tinatawag nang gayon MH-style Ang biffing ay isang paraan ng pagpapakita ng isang siksik na katawan kung saan ang lahat ng mga linya
ay pinagsama-sama sa isang malaking masayang string na may sunud-sunod na mga puwang na naging isang solong
karakter sa espasyo. Upang paganahin ito, kailangan mong itakda ang biffmh variable sa ON.

Dahil ang compacting na ito ay output verbatim sa tty, ang mga line break ay random na magaganap at
ito ay maaaring magpahirap sa pagbabasa. Maaari kang humiling ng awtomatikong pag-reformat ng
siksik na katawan sa pamamagitan ng pag-ikot biffnice sa ON at ang biff output ay magkasya nang maayos sa loob ng
terminal.

Sa kasamaang palad, hindi posibleng i-customize ang dami ng mga column na dapat gamitin
para sa pag-format: dahil maaari kang mag-biff sa anumang tty na naka-log on ka, mapipilit iyon
mailagent upang suriin ang tty para sa laki ng column nito, para sa bawat posibleng tty kung saan maaaring pumunta ang output,
at walang maaasahang portable na paraan para gawin iyon. Paumanhin.

PAGPAPALAW PAG-FILTER UTOS


Kapag naabot mo na ang dalubhasa antas, at kung mayroon kang patas na kaalaman sa perlas, Mo
maaaring maramdaman ang pangangailangan para sa mas advanced na mga utos na hindi bahagi ng karaniwang hanay. Ito
Ipinapaliwanag ng seksyon kung paano mo ito makakamit nang pabago-bago, nang hindi nangangailangan ng malalim na pagsisid
sa loob ng source code.

Kapag na-extend mo na ang filtering command set, maaari mong gamitin ang mga command na iyon sa loob ng
rule file na parang built-in ang mga ito. Maaari mo ring piliin na muling tukuyin ang mga karaniwang utos
kung hindi sila nababagay sa iyo (gayunpaman, kung nais mong gawin iyon, dapat mong malaman nang eksakto kung ano ka
ginagawa, o maaari kang magsimulang mawalan ng ilang mail o makakuha ng hindi inaasahang pag-uugali -- ito rin
mawawalan ng bisa ang iyong warranty :-).

Ang kakayahang magbigay ng mga panlabas na utos nang hindi aktwal na binabago ang pangunahing source code
ay, naniniwala ako, isang malakas na punto sa pabor ng pagkakaroon ng isang programa na nakasulat sa isang interpreted
wika tulad ng perlas. Ito siyempre kapag nakumbinsi mo ang iyong sarili na ito ay isang Mabuti
Bagay na iko-customize at i-extend ang isang program sa parehong wika gaya ng ginagamit para sa core,
ibig sabihin ay karaniwang isang medyo mababang antas ng wika na may mas kaunting user-friendly na mga kawit.

Pangkalahatang-ideya
Upang maipatupad ang isang bagong utos, sabihin ang FOLD, kakailanganin mong gawin ang sumusunod:

· Sumulat ng perl subroutine upang ipatupad ang aksyong FOLD at ilagay iyon sa isang panlabas
file. Sabihin nating isulat ang subroutine kulungan ng mga tupa at iniimbak namin iyon sa isang fold.pl file. Ito ay
natural ang mahirap na bahagi, kung saan kailangan mong malaman ang ilang mga pangunahing bagay tungkol sa
mailagent internals.

· Piliin kung saan mo gustong iimbak ang iyong fold.pl file. Pagkatapos ay suriin ang syntax na may perlas -c,
para makasigurado lang...

· I-edit ang newcmd file (tulad ng ibinigay ng configuration file) para i-record ang iyong bagong command.
Pagkatapos ay tiyaking mahigpit na protektado ang file na ito. Dapat pag-aari mo ito, at hindi dapat
maaaring isulat ng sinumang indibidwal maliban sa iyo.

· Bukod pa rito, maaaring gusto mong tukuyin kung babaguhin ng FOLD ang umiiral na
katayuan ng pagpapatupad at kung papayagan o hindi ito sa loob ng espesyal na _SEEN_
estado.

· Sumulat ng ilang panuntunan gamit ang bagong FOLD command. Ito ang madali bahagi! Tandaan na ang iyong
Ang command ay maaari ding gamitin sa loob ng perl hooks na parang ito ay isang builtin command (ito
nangangahulugan na mayroong isang function ng interface na binuo para sa iyo sa loob ng mailhook pakete).

Sa mga sumusunod na seksyon, ilalarawan namin ang syntax ng newcmd file, at
pagkatapos ay magpapakita kami ng ilang mababang antas na panloob na mga variable na maaaring gamitin kapag nagpapatupad
mga bagong utos.

bago Utos talaksan format
Ang newcmd file ay binubuo ng isang serye ng mga linya, ang bawat linya ay naglalarawan ng isang utos. Blanko
binabalewala ang mga linya at ang mga komentong istilo ng shell na ipinakilala ng matalas na (#) na karakter ay
Pinapayagan.

Ang bawat linya ay binubuo ng 3 pangunahing field at 2 opsyonal; ang mga patlang ay pinaghihiwalay ng
mga puwang o tab. Narito ang isang balangkas:



Ang cmd_name ay ang pangalan ng utos na nais mong idagdag. Sa aming nakaraang halimbawa, ito ay
maging TIPIK. Ang susunod na larangan, landas, nagsasabi sa mailagent kung saan ang file na naglalaman ng command
ang pagpapatupad ay matatagpuan. Sabihin na iimbak namin ito ~/mail/cmds/fold.pl. ang tungkulin ang patlang ay
ang pangalan ng perlas function na nagpapatupad ng FOLD, na maaaring matagpuan sa fold.pl. Dito, kami
pinangalanan ang aming function kulungan ng mga tupa. Tandaan na kung ang iyong function ay may pangalan nito sa loob ng newcmd
package, na kung saan ay ang default na pag-uugali kung wala kang tinukoy, kung gayon hindi na kailangan
prefix ang pangalan ng function sa package. Kung hindi, dapat kang gumamit ng ganap na kwalipikadong pangalan.

Ang huling dalawang field ay opsyonal, at mga boolean na halaga na maaaring tukuyin ng totoo or
oo upang ipahayag ang katotohanan, at hindi totoo or hindi upang ipahayag ang kasinungalingan. Kung status_flag ay nakatakda sa totoo,
pagkatapos ay babaguhin ng command ang huling variable ng katayuan ng pagpapatupad. Kung seen_flag ay totoo,
pagkatapos ay ang utos ay maaaring gamitin kapag ang filter ay nasa _SEEN_ na estado. Ang mga default na halaga ay
buong galang totoo at hindi totoo.

Kaya sa aming halimbawa, isusulat namin:

TULAD ~/mail/cmds/fold.pl tiklop hindi oo

upang payagan ang FOLD kahit sa _SEEN_ na estado at ipatupad ito nang hindi binabago ang kasalukuyang
halaga ng last-command-status variable

Pagsulat An Pagsasakatuparan
Ang iyong perl function ay ilo-load kapag kinakailangan sa espesyal na pakete newcmd, upang ito
Ang sariling name-space ay protektado at hindi sinasadyang sumasalungat sa ibang mailagent
mga gawain o variable. Kapag kailangan mong tawagan ang perl interface ng ilang karaniwang mailagent
mga function, kailangan mong tandaan na gamitin ang ganap na kwalipikadong pangalan ng karaniwang gawain, halimbawa
&mailhook'umalis upang aktwal na isagawa ang utos ng LEAVE.

(Karaniwan, sa PERL hook, hindi na kailangan ang prefixing na ito dahil ang perl script ay
ikinakarga sa mailhook pakete. Kapag pinahaba mo ang iyong mailagent, dapat kang maging extra
maingat gayunpaman, at hindi talaga nakakasamang gamitin ang prefixing na ito. Malaya kang gamitin
ang perl pakete direktiba sa loob ng iyong function, kaya lumipat sa mailhook pakete
sa katawan ng nakagawiang ngunit iniiwan ang pangalan nito sa newcmd pakete.)

Dahil ang mailagent ay dynamic na maglo-load ng pagpapatupad ng iyong command sa unang pagkakataon
ay tumatakbo, sa pamamagitan ng paglo-load ng tinukoy na perl script sa memorya at pagsusuri nito, iminumungkahi ko sa iyo
ilagay ang bawat pagpapatupad ng command sa isang hiwalay na file, upang maiwasan ang pag-iimbak ng potensyal na hindi kailangan
code sa memorya.

Ang bawat utos ay tinatawag na may isang argumento, lalo na ang buong command string na nabasa mula sa
mga panuntunan sa filter. Bukod pa rito, ang espesyal @ARGV Ang array ay itinakda sa pamamagitan ng pagsasagawa ng shell-style
pag-parse ng command line (na mabibigo kung ang mga quote ay hindi tugma, ngunit pagkatapos ay magagawa mo
ang pag-parse nang mag-isa dahil nakuha mo ang command line). Sa pagtatapos ng iyong gawain, ikaw
dapat ibalik ang katayuan ng pagkabigo, ibig sabihin 0 para sa tagumpay at 1 upang magsenyas ng pagkabigo.

Yan lang ang requirements mo. Malaya kang gawin ang anumang gusto mo sa loob ng routine.
Upang mapagaan ang iyong gawain gayunpaman, ang ilang mga variable ay paunang nakalkula para sa iyo, ang parehong mga variable
ginawang available sa loob ng mail hooks, tanging ang mga ito ay tinukoy sa loob ng newcmd pakete ito
oras. Mayroon ding ilang mga espesyal na variable na kailangan mong malaman, at isang set ng
karaniwang gawain na maaaring gusto mong tawagan. Mangyaring iwasang tumawag sa isang bagay na hindi
dokumentado dito, dahil maaari itong magbago nang walang paunang abiso. Kung gusto mong gumamit ng isa
routine at hindi ito nakadokumento sa manual page na ito, mangyaring ipaalam sa akin.

Ang bawat utos ay tinatawag mula sa loob ng isang eval bumuo, upang ligtas mong magamit mamatay o tawagan
panlabas na mga gawain sa aklatan na gumagamit mamatay. Kung gagamitin mo mangailangan, magkaroon ng kamalayan na ang mailagent ay
pag-set up ng isang espesyal @INC array sa pamamagitan ng pag-uuna sa path ng pribadong library nito, para magawa mo
ilagay ang lahat ng iyong mailagent-mga file na nauugnay sa library sa lugar na ito.

espesyal Variable
Ang mga sumusunod na espesyal na variable (ang ilan sa mga ito ay minarkahan ng read-only, ibig sabihin ay hindi mo dapat
baguhin ang mga ito, at sa katunayan hindi mo maaaring) gawing available nang direkta sa loob ng newcmd pakete, ay
paunang itinakda ng filter automat, at ginagamit upang kontrolin ang proseso ng pag-filter:

$mfile Ang batayang pangalan ng mail file na pinoproseso. Ang variable na ito ay read-only.
Pangunahing ginagamit ito sa mga mensahe ng log, tulad ng sa [$mfile] upang i-tag ang bawat log, dahil a
ang proseso ng solong mailagent ay maaaring makitungo sa maraming mensahe.

$ever_saved Ito ay isang boolean, na dapat ay itakda sa 1 minsan isang matagumpay na pag-iipon
natapos na ang operasyon. Kung sa dulo ng pag-filter, ang variable na ito
pa rin 0, pagkatapos ay isasagawa ang default na LEAVE.

$folder_saved Ang halaga ng variable na iyon ay namamahala sa $msgpath hanay ng variable na kaginhawaan
para sa PERL escapes. Ito ay ina-update tuwing may isinulat na mensahe sa isang file, sa
hawakan ang landas ng nakasulat na file.

$cont Ito ang katayuan ng pagpapatuloy, isang variable na pinakamahalaga kung kailan
pagharap sa daloy ng kontrol. Apat na constants mula sa pangunahin pakete ay maaaring
ginamit upang tukuyin kung dapat tayong magpatuloy sa kasalukuyang panuntunan
($FT_CONT), abandunahin ang kasalukuyang panuntunan ($FT_REJECT), i-restart ang pag-filter mula sa
simula ($FT_RESTART) o i-abort lang ang pagproseso ($FT_ABORT). Higit pa sa
ito mamaya.

$lastcmd Ang huling katayuan ng pagkabigo na naitala ng huling utos (kabilang sa mga nagagawa
baguhin ang katayuan ng pagpapatupad). Hindi mo dapat kailangang i-update ito sa pamamagitan ng
ang iyong sarili maliban kung nagpapatupad ka ng ilang encapsulation para sa iba pang mga utos,
tulad ng BACK o ONCE, dahil bilang default $lastcmd itatakda sa halaga mo
bumalik sa dulo ng utos.

$wmode Itinatala nito ang kasalukuyang estado ng filter automat (working mode), sa a
literal na string form, karaniwang binago ng BEGIN command o bilang isang side
epekto, tulad ng sa REJECT halimbawa.

Ang lahat ng mga espesyal na variable na set-up para sa PERL escapes ay naka-install din sa loob ng newcmd
pakete. Ang mga iyon ay $login, %header, atbp... Maaari mong basahin ang mga ito sa iyong kalooban.

Ang iba pang mga variable na maaaring kailanganin mo ay mga parameter ng pagsasaayos, na hawak sa
~/.mailagent configuration file. Well, ang panuntunan ay simple. Ang halaga ng bawat parameter
ang pera ko mula sa configuration file ay gaganapin sa variable $cf'param. Variable $main'loglvl is
ang kopya ng $cf'level, dahil palaging mas maikli ang pag-type $'loglvl pagkatapos ng bawat tawag sa
ang gawain sa pag-log &add_log.

May isa pang variable na dapat malaman tungkol sa: $main'FILTER, alin ang angkop na X-
I-filter ang linya na dapat idugtong lahat ang mail na ipinadala mo sa pamamagitan ng mailagent, upang
iwasan ang mga loop. Gayundin kapag nag-save ka ng mga mail sa isang folder, makabubuting idagdag ang linyang ito kung sakaling a
problema arises: maaari mong matukoy ang salarin.

Patakaran kapaligiran
Ang isang aksyon ay maaaring may lehitimong pagnanais na baguhin ang kapaligiran para sa saklaw ng isa
panuntunan lamang, na bumabalik sa dating halaga kapag lumalabas sa panuntunan. O baka gusto mo
baguhin ang halaga magpakailanman.

Kapag pinag-uusapan natin ang tungkol sa pagbabago ng kapaligiran, tinutukoy natin ang naka-set up sa pamamagitan ng
configuration file, na ang mga value ay nagtatapos sa cf pakete. Well, ang ilan sa mga variable na iyon
ay kinopya sa env package bago magsimula ang pag-filter ng isang mensahe (sa ilalim ng kontrol ng
ang @env'Env array).

Ang lahat ng mga panuntunan ay dapat sumangguni sa bersyon sa env package, at wala sa cf package,
upang makita ang mga pagbabago. Ang mga pandaigdigang pagbabago ay ginagawa sa pamamagitan ng direktang pag-apekto sa variable sa
env package, habang hinihiling ang mga lokal na pagbabago sa pamamagitan ng pagtawag sa &env'local gawain.

Halimbawa, ang cf'umask ang halaga ay kinopya bilang env'umask dahil sa umask ay gaganapin sa @env'Env.
Ginagawa ang mga pandaigdigang pagbabago sa pamamagitan ng direktang pagtatakda ng kopyang iyon, habang maaaring gawin ang mga lokal na pagbabago
na may:

&env'local('umask', 0722);

upang mag-set-up ng bagong lokal na halaga. Unang beses &env'local ay tinatawag sa isang variable, ang halaga nito
ay nai-save sa isang lugar, at ibabalik sa paglabas sa saklaw ng panuntunan. Tapos yung bago
ang halaga ay apektado sa variable.

Mga variable na nangangailangan ng side effect kapag binago ang kanilang value (tulad ng umask variable,
na nangangailangan ng system call upang hayaan ang kernel na makita ang pagbabago) ay maaaring tukuyin ito sa pamamagitan ng pag-access
ang %env'Spec array, ang susi ay ang pangalan ng variable na nangangailangan ng side effect, ang
value na binibigyang-kahulugan bilang isang bit ng perl code na tumakbo sa sandaling naibalik ang orihinal na halaga. Para sa
halimbawa, sinasabi namin sa isang lugar (sa &env'init):

package env;
$Spec{'umask'} = 'umask($umask)';

upang i-update ang kernel view kapag umaalis sa saklaw. Tandaan na ang side effect ay sinusuri ng isang beses
nabawi ng variable ang orihinal na halaga nito, at sa loob ng env Pakete.

Sa panloob, ang &analyze_mail mga karaniwang tawag &env'setup bago simulan ang pagproseso nito sa
simulan ang env pakete, at &env'cleanup sa dulo bago bumalik. Bago tumakbo
ang mga pagkilos na tinukoy sa isang tugma ng panuntunan, &apply_rules tawag &env'restore upang matiyak a
magkakaugnay na pagtingin sa kapaligiran habang pinapatakbo ang mga aksyon para sa partikular na panuntunang iyon.

Nagbabago Kontrolin Pag-agos
Kapag gusto mong baguhin ang daloy ng kontrol upang magsagawa ng REJECT, RESTART o ABORT, mayroon ka
tatlong pagpipilian. Kung nais mong kontrolin ang pagkilos na iyon sa pamamagitan ng isang opsyon, sa parehong paraan sa pamantayan
UNIQUE ay (kasama ang -c, -r or -a), maaari kang tumawag &main'alter_execution(opsyon, estado) bigay
ito ng dalawang parameter: ang opsyon na titik at ang estado na nais mong baguhin bago baguhin
ang daloy ng kontrol.

Maaaring gusto mo ring direktang baguhin ang $wmode at $cont mga variable, ngunit magkakaroon ka
na gawin ang iyong sariling pag-log kung gusto mo. O maaari kang tumawag sa mababang antas ng mga gawain
&main'do_reject, &main'do_restart at &main'do_abort upang maisagawa ang kaukulang
operasyon (na may pag-log).

Tandaan na ang _SEEN_ na estado ay espesyal at direktang pinangangasiwaan sa antas ng filter, at
nagsisimula ang filter sa INITIAL na estado. Ang default na aksyon ay upang magpatuloy sa kasalukuyang
panuntunan, kaya naman walang nakagawiang gawin ang gawaing ito.

Ang ginustong paraan ay i-invoke ang mailhook mga function ng interface, &mailhook'magsimula,
&mailhook'reject, atbp..., at gagana iyon kahit na muling tukuyin ang mga function na iyon
iyong sarili. Bukod, iyon lang ang interface na malamang na hindi mababago ng bago
mga bersyon.

Pangkalahatan Layunin Mga gawain
Ang sumusunod ay isang listahan ng lahat ng pangkalahatang gawain na maaari mong tawagan kapag gumaganap
ilang mga gawaing mababa ang antas. Tandaan na ang impormasyong ito ay nakadepende sa bersyon. Since nagdocument ako
sa kanila, susubukan kong panatilihin ang mga ito sa mga bagong bersyon, ngunit hindi ko magagarantiya na hindi ko ito kakailanganin
bahagyang baguhin ang ilan sa kanilang mga semantika. May magandang pagkakataon na hindi mo na kakailanganin
mag-alala tungkol doon.

&header'format(rfc822-field)
Magbalik ng na-format na field na RFC822 upang magkasya sa 78 column, na may wastong mga pagpapatuloy
ipinakilala ng walong espasyo.

&header'normalize(rfc822-header-name)
I-normalize ang case sa RFC822 header at ibalik ang bagong pangalan ng header sa bawat una
malaking titik.

&header'reset
Ito ay bahagi ng isang RFC822 header validation, pangunahing ginagamit kapag hinahati ang a
digest. Nire-reset nito ang recognition automaton (tingnan ang &header'valid).

&header'valid(linya)
Nagbabalik ng boolean status, na nagsasaad kung ang lahat ng linya ay ibinigay hanggang dito
function mula noong huli &header'reset ay bahagi ng isang wastong RFC822 header. Ang
nauunawaan ng function ang unang Mula sa linya na bahagi ng UNIX mail. Sa anumang
oras, ang variable $header'siguro maaaring suriin upang makita kung sa ngayon ay natagpuan namin
kahit isang mahalagang field ng header ng mail.

&main'acs_rqst(file)
Magsagawa ng .lock na pag-lock sa file, nagbabalik ng 0 sa tagumpay at -1 sa pagkabigo.
Kung may lumang lock, aalisin ito (nakatakda ang limitasyon sa oras sa isang oras). Gamitin
&main'free_file para bitawan ang lock.

&main'add_log(string)
Idagdag ang pisi sa logfile. Ang karaniwang idyoma ay i-postfix ang tawag na iyon gamit ang
if $'loglvl > halaga, Kung saan halaga ay ang antas ng pag-log na nais mong magkaroon noon
naglalabas ng ganoong uri ng log ($'loglvl ay isang maikling form para sa $main'loglvl).

&main'free_file(file)
Mag-alis ng .lock sa isang file, nakuha ni &main'acs_rqst. Nagbabalik ito ng 0 kung ang lock
ay matagumpay na naalis, -1 kung ito ay isang lipas na lock (nakuha ng ibang tao).

&main'header_found(file)
I-scan ang head ng isang file at subukang tukuyin kung mayroong mail header sa
ang simula o hindi. Ibalik ang true kung may nakitang header.

&main'history_record
Itala ang message ID ng kasalukuyang mensahe at ibalik ang 0 kung wala ang mensahe
nakita na dati, 1 kung ito ay duplicate.

&main'hostname
Ibalik ang halaga ng hostname, lowercased, na may posibleng domain name na nakadugtong
dito. Ang hostname ay naka-cache, dahil ang halaga nito ay dapat na unang makuha sa pamamagitan ng
tinidor. (Tingnan din &main'myhostname)

&main'internet_info(email-address)
Mag-parse ng isang e-mail na internet address at magbalik ng tatlong elementong array na naglalaman ng
host, domain at bahagi ng bansa ng internet host. Halimbawa, kung ang
ang address ay [protektado ng email], babalik ito (c, b, a).

&main'login_name(email-address)
I-parse ang e-mail internet address at ibalik ang login name.

&main'macros_subst(*linya)
Magsagawa ng in-place na macro substitution (linya na ipinasa bilang isang uri ng glob) gamit ang
impormasyong kasalukuyang hawak sa %main'Header array. gawin hindi pumasa *_ bilang isang
parameter, dahil sa loob macros_subst gumagamit ng lokal na variable na may ganoong pangalan
upang maisagawa ang mga pagpapalit at magkakaroon ka ng hindi binagong bersyon. Kung
gusto mo talagang pumasa *_, pagkatapos ay dapat mong gamitin ang ibinalik na halaga mula sa
macros_subst na kung saan ay ang substituted na teksto, ngunit iyon ay mas mahusay kaysa sa
na binago ito sa lugar.

&main'makedir(pathname, fashion)
Gumawa ng direktoryo, na lumilikha ng lahat ng mga intermediate na direktoryo na kailangang gawin
pangalan ng landas isang wastong direktoryo. Walang epekto kung umiiral na ang direktoryo. Ang
Ang parameter ng mode ay opsyonal, 0700 ang ginagamit (octal number) kung hindi tinukoy.

&main'myhostname
Ibinabalik ang hostname ng kasalukuyang machine, nang walang anumang domain name. Ang
Ang hostname ay naka-cache, dahil ang halaga nito ay dapat na unang makuha sa pamamagitan ng forking.

&main'run_command(filter-command)
Isagawa ang iisang filter na utos na tinukoy at ibalik ang katayuan ng pagpapatuloy,
na karaniwang dapat maapektuhan sa $cont variable. Kakailanganin mo ito
routine kapag sinusubukang ipatupad ang mga utos na sumasaklaw sa iba pang mga utos, tulad ng
ONCE o SELECT.

&main'seconds_in_period(period)
Ibalik ang bilang ng mga segundo sa tinukoy na panahon. Tingnan ang seksyon Tinutukoy A
Panahon para makakuha ng wastong mga string ng panahon.

&main'shell_command(programa, input, feedback)
Magpatakbo ng isang shell command at ibalik ang isang katayuan ng pagkabigo (0 para sa OK). Ang input parameter
ay maaaring isa sa mga sumusunod na constants (tinukoy sa pangunahin package): $NO_INPUT
upang isara ang karaniwang input, $BODY_INPUT upang i-pipe ang katawan ng kasalukuyang mensahe,
$MAIL_INPUT para i-pipe ang buong mail kung ano-ano, $MAIL_INPUT_BINARY para i-pipe ang kabuuan
mail pagkatapos na alisin ang anumang paglilipat-encoding ng nilalaman at $HEADER_INPUT sa
pipe ang header ng mensahe. Ang parameter ng feedback ay maaaring isa sa $FEEDBACK o
$NO_FEEDBACK depende kung gusto mo o hindi gamitin ang karaniwang output sa
baguhin ang kaukulang bahagi ng mensahe. Kung walang feedback na gusto, ang
ang output ng command ay ipinapadala pabalik sa user. Ang $FEEDBACK_ENCODING ay
hinahawakan tulad ng $FEEDBACK ngunit sasabihin sa mailagent na tingnan ang pinakaangkop na katawan
encoding kapag ang input ay ang buong mensahe.

&main'parse_address(rfc822-address)
I-parse ang isang RFC822 e-mail address at ibalik ang isang array ng dalawang elemento na naglalaman ng
internet address at ang bahagi ng komento ng address na iyon.

&main'xeqte(filter-actions)
Magsagawa ng isang serye ng mga aksyon na pinaghihiwalay ng ';' karakter, pagtawag run_command
upang aktwal na maisagawa ang trabaho. Ibalik ang katayuan ng pagpapatuloy. Tandaan na
Gagawin ni $FT_ABORT hindi kailanman ibabalik, dahil ang mailagent ay karaniwang humihinto pagkatapos magkaroon
nagsagawa ng isang hanay ng mga aksyon, magpapatuloy lamang kung nakakita ito ng RESTART o REJECT.
Ang ginagawa ng ABORT ay ang paglaktaw sa natitirang mga utos sa linya at paglabas na parang
ang lahat ng mga utos ay pinatakbo. Maaari mong sabihin xeqte ay ang katumbas ng eval
function sa perl, dahil binibigyang kahulugan nito ang isang maliit na filter na script at nagbabalik ng kontrol
sa tumatawag kapag natapos na, at ang ABORT ay kay perl mamatay.

Maaari mo ring gamitin ang tatlong function mula sa panlabas package na nagmamanipula ng persistent
mga variable (naidokumento na sa seksyong tumatalakay sa mga variable) pati na rin ang user-
tinukoy na mga macro routine.

halimbawa
Ang pagsulat ng iyong sariling mga utos ay hindi madali, dahil nangangailangan ito ng ilang pangunahing kaalaman tungkol sa
mailagent internals. Gayunpaman, sa sandaling pamilyar ka na, dapat itong medyo
deretso

Narito ang isang maliit na halimbawa. Nais naming magsulat ng isang utos upang ibalik ang isang mensaheng mail sa
orihinal na nagpadala, ang paraan ng sendmail, na may ilang nangungunang teksto upang ipaliwanag kung ano ang nangyari.
Ang utos ay magkakaroon ng sumusunod na syntax:

PAG-SENDBACK dahilan

at gusto naming baguhin ng command na iyon ang kasalukuyang status, na nagbabalik ng isang pagkabigo kung ang
hindi maibabalik ang mail. Dahil ang utos na ito ay talagang nagpapadala ng isang bagay pabalik, hindi namin ginagawa
nais itong maisakatuparan sa _SEEN_ na estado. Narito ang aking pagpapatupad (hindi pa nasubok):

sub sendback {
local($cmd_line) = @_;
local($reason) = join(' ', @ARGV[1..$#ARGV]);
maliban kung (bukas(MAILER, "|/usr/lib/sendmail -odq -t")) {
&'add_log("ERROR cannot run sendmail to send message")
kung $'loglvl;
1 bumalik;
}
i-print ang MAILER <
Mula sa: mailagent
Para kay: $header{'Sender'}
Paksa: Ibinalik na mail: Mailagent failure
$main'FILTER

--- Transcript Ng Session

$dahilan

--- Sumusunod ang Hindi Naipadalang Mensahe

$header{'Lahat'}
EOF
malapit na MAILER;
$ever_saved = 1; # Ayaw ito sa mailbox
$? == 0 ? 0 : 1; # Katayuan ng pagkabigo
}

Ipagpalagay na ang utos na ito ay inilagay sa ~/mail/cmds/sendback.pl, ang linyang naglalarawan dito sa
newcmd file ay magiging:

PAG-SENDBACK ~/mail/cmds/sendback.pl sendback oo hindi

Ngayon ang utos na ito ay maaaring malayang gamitin sa anumang panuntunan, at ila-log bilang isang tinukoy ng gumagamit
utos ng command dispatcher. Sinong nagsabing hindi madaling gawin? :-)

Tandaan ang paggamit ng $ever_saved variable upang markahan ang mail bilang na-save kapag ito ay nai-save na
tumalbog. Sa katunayan, kung ang aksyong SENDBACK ay ang tanging aksyon na gagawin, hindi namin gagawin
gusto ni mailagent na IWAN ang mail sa mailbox dahil hindi pa ito na-save (ito
ang default na gawi ay isang pag-iingat lamang -- mas ligtas kaysa sorry).

Konklusyon
Kung naiisip mo ang ilang mga kapaki-pakinabang na utos na maaaring gawing bahagi ng pamantayan
command set, mangyaring e-mail ang mga ito sa akin at isasaalang-alang ko ang pagsasama sa kanila. Sa hinaharap, ako
Nais ding magbigay ng isang karaniwang library ng perl script upang ipatupad ang ilang kakaiba
mga utos na maaaring kailanganin sa mga espesyal na kaso.

Tandaan na maaari mo ring gamitin ang impormasyong ipinakita dito sa loob ng mga script ng perl escape.
Sa pamamagitan ng mangailangan operator, madaling makuha ang bagong pagpapatupad ng command sa iyong
script at gawin ang parehong gawain. Maaaring kailanganin mong mag-set up ng @ARGV nang mag-isa kung ikaw
umasa sa feature na iyon sa iyong pagpapatupad ng command.

Ang extension ng command ay maaari ding tingnan bilang isang paraan upang muling gamitin ang ilang iba pang perl code, ang mailagent
pagbibigay ng maayos at maaasahang frame at ang panlabas na programa na nagbibigay ng serbisyo. Isa
ang agarang extension ay ang paghawak ng mailing list, gamit ang mekanismong ito para makipag-interface
ilang mailing list management software na nakasulat sa perl.

PANGKALAHATANG MAIL SERVER


Ang isang magandang bagay tungkol sa mailagent ay ang pagbibigay nito sa iyo ng mga pangunahing kasangkapan upang ipatupad ang a
generic na mail server. Sa katunayan, sa pamamagitan ng utos ng SERVER, maaari mong iproseso ang isang mensaheng mail,
i-extract at pagkatapos ay magsagawa ng ilang paunang natukoy na mga utos. Halimbawa, maaari mong ipatupad ang isang
archive server, o isang mailing list manager, atbp...

Ang pangunahing limitasyon sa kasalukuyan ay ang mga simpleng utos lamang ang tinatanggap, o mga utos
pagkuha ng ilang karagdagang impormasyon bilang pamantayan input o katumbas. Walang ideya ng mga mode,
na may hiwalay na command set para sa bawat mode o limitadong name-space visibility, kahit para sa
ngayon, kaya hindi madali (bagaman posible) na ipatupad ang isang ftpmail server, halimbawa,
dahil ito ay nagpapahiwatig ng paniwala ng mode.

Pangkalahatang-ideya
Upang maipatupad ang isang mail server command (sabihin ipadala file, na magpapadala ng arbitrary
file mula sa file system sa isang hiwalay na mensahe sa mail), kailangan mong gawin ang sumusunod:

· Mag-isip tungkol sa utos mula sa isang punto ng seguridad. Dito, ang utos na gusto natin
implement ay isang potensyal na mapanganib dahil maaari itong magbigay ng access sa anumang file sa
makina ang indibidwal na tumatakbo mailagent may access sa. Kaya gusto naming higpitan iyon
utos sa limitadong bilang ng mga pinagkakatiwalaang tao, na bibigyan ng kapangyarihan tumakbo
utos na ito. Higit pa tungkol dito mamaya.

· Piliin kung gusto mong ipatupad ang command sa perl o sa ibang programming
wika. Kung gagawin mo ang huli, ang iyong utos ay makikilala bilang a talukap ng alimango utos (ibig sabihin, a
command runnable nang direkta mula sa isang shell), habang sa dating kaso, mayroon kang
pagpili ng pagpapalabas nito bilang a talukap ng alimango utos, o i-hook ito sa mailagent in
aling kaso ito ay kilala bilang a perlas utos. Sa huling kaso na iyon, ang iyong utos ay
dynamic na na-load sa mailagent kasama ang lahat ng mga pakinabang na nagdudulot sa iyo. Dito, kami
ay isusulat ang aming utos bilang isang script ng shell.

· Isulat ang utos mismo. Iyon ang pinakamahirap na bahagi sa scheme na ito. Sa ibang Pagkakataon,
makikita natin ang isang tuwirang pagpapatupad ng magpadala utos.

· I-edit ang comserver file (tinukoy sa iyong ~/.mailagent) upang itala ang iyong bagong utos.
Pagkatapos ay tiyaking mahigpit na protektado ang file na ito. Dapat pag-aari mo ito, at mag-isa
pinapayagan na baguhin ito.

· Bilang karagdagan, maaaring gusto mong itago ang ilan sa mga argumento sa transcript ng session
(higit pa tungkol dito sa ibang pagkakataon), payagan ang command na kumuha ng daloy ng data bilang nito pamantayan input,
magtalaga ng landas sa command, atbp... Ang lahat ng mga parameter na iyon ay nagaganap sa iyong
comserver file.

· Simulan ang paggamit ng command... na siyempre ang pinakamagandang bahagi sa scheme na ito!

Sa mga sumusunod na seksyon, malalaman natin ang tungkol sa syntax ng comserver file, ano kapangyarihan
ay, kung paano binuo ang session transcript, kung ano ang command environment, atbp...

Itinayo Command Pangkalahatang-ideya
Ang mail server ay may limitadong hanay ng mga builtin na command, na nakikitungo sa pagpapatunay ng user
at mga setting ng command environment. Ang pagpapatunay ng user ay batay sa password at hindi
napakalakas dahil ang mga password ay tinukoy nang malinaw sa loob mismo ng mensaheng mail,
na madaling maharang.

Pinapanatili ng server ang paniwala ng kapangyarihan. Ang isang user ay maaaring magkaroon ng higit sa isang kapangyarihan sa a
oras, ang bawat kapangyarihan ay nagbibigay lamang ng limitadong pag-access sa ilang sensitibong lugar. Ang ilang mga kapangyarihan ay
naka-hardwired sa server, ngunit ang user ay maaaring lumikha ng mga bago kung kinakailangan. Ang mga kapangyarihang iyon ay
software-enforced, ibig sabihin, dapat suriin ng command ang sarili nito kung may kailangan
(mga) kapangyarihan upang gumanap nang tama.

Ang mga kapangyarihan ay protektado ng isang password at isang file ng clearance. Ang pagkakaroon ng magandang password ay hindi
sapat na, kailangan mong i-clear upang (ab) magamit ito. Ang clearance file ay isang listahan ng e-
mga pattern ng mail address, gamit ang shell metacharacters scheme, may na-clear kung at
lamang kung ang kanyang e-mail address ay tumugma sa kahit isa sa mga pattern mula sa clearance file.
Kung mas gagamit ka ng mga metacharacter, mas mahina itong clearance scheme, kaya
mag-ingat ka.

Ang iyong mga utos at ang output na nagreresulta mula sa kanilang pagpapatupad ay karaniwang ipinapadala pabalik sa iyo
bilang transcript ng session. Para sa mga kadahilanang pangseguridad, ang mga password ay nakatago mula sa command line.
Gayundin, ang kabiguan na makakuha ng kapangyarihan ay hindi magsasaad kung wala kang pahintulot o
kung ang iyong password ay masama.

Isang user na may sistema pinapayagan ang kapangyarihan na lumikha ng mga bagong kapangyarihan, magtanggal ng iba pang kapangyarihan, magbago
power password, at ilista, alisin o baguhin ang mga power clearance. Ito ay kahit papaano ay isang mahalaga
kapangyarihan na dapat ay pinigil ng isang maliit na bilang ng mga gumagamit na may napakahigpit na clearance (no
meta-character sa address, kung maaari). Ang isang mahusay na password ay dapat ding protektahan iyon
kapangyarihan.

Gayunpaman, ang isang gumagamit na may sistema ang kapangyarihan ay hindi pinapayagang direktang makakuha ng isa pang kapangyarihan nang wala
pagtukoy sa password nito at pinapayagang gawin ito ng nauugnay na file ng clearance. Pero
posibleng makamit iyon nang hindi direkta sa pamamagitan ng pag-alis ng kapangyarihan at paglikha ng bago
isa na may parehong pangalan. Upang makontrol ang mga tao sa sistema kapangyarihan at para din
ilang nakakalito na sitwasyon, may isa pang mas mala-diyos na kapangyarihan: ang ugat kapangyarihan.

Isang user na may ugat Ang kapangyarihan ay maaaring gumawa ng halos anumang bagay, dahil ito ay agad na nagbibigay nito
indibiduwal lahat ang mga kapangyarihan na magagamit sa server (ngunit katiwasayan). Ang tanging limitasyon ay
na ugat hindi maalis ang ugat kapangyarihan mag-isa. Kailangang tukuyin ng isa ang katiwasayan password
(isa pang hardwired power) upang magpatuloy. Hindi na kailangang sabihin, lamang isa indibidwal dapat
magkaroon ng pareho ugat at katiwasayan clearance, at isang indibidwal lamang ang dapat makaalam ng katiwasayan
password at mailista sa clearance file. Ang sistema hindi maaaring makapinsala sa alinman sa mga iyon ang kapangyarihan
dalawang kapangyarihan. Sa kalaunan, higit sa isang user ang maaaring magkaroon ng ugat kapangyarihan, ngunit huwag ibigay
na magaan...

Pagkuha ng ugat kapangyarihan ay kailangan kapag sistema ay nagulo sa configuration ng system
sa isang walang pag-asa na paraan, o kapag ang isang mahabang atomic sequence ng mga utos ay kailangang ilabas: ugat is
hindi napapailalim sa maximum na bilang ng command na maaaring ibigay sa isang solong mensahe.

Kung sakaling isipin mo ito mailagent Ang feature ay mapanganib para sa iyong account, huwag gumawa ng
ugat at katiwasayan kapangyarihan, at huwag sumulat ng anumang sensitibong utos.

Itinayo Command Depinisyon
Ngayon tingnan natin ang mga builtin na command. Ang mga password ng mga sensitibong utos ay magiging
nakatago sa transcript ng session. Ang ilang mga utos ay tumatanggap ng input sa pamamagitan ng pagbabasa ng mail
mensahe hanggang sa EOF marker, na isang simpleng EOF string sa isang linya mismo (katulad
na may mga shell dito dokumento).

addauth kapangyarihan password
Magdagdag ng mga user sa clearance file para sa kapangyarihan. Kung ibinigay ang power password, hindi
espesyal na kapangyarihan ang kailangan, kung hindi man ang sistema kailangan ang kapangyarihan. Para sa ugat or
katiwasayan kapangyarihan, ang kaukulang kapangyarihan ay kinakailangan, o ang password dapat
tinukoy. Binabasa ng command ang karaniwang input hanggang sa EOF marker para makuha ang
bagong gumagamit.

aprubahan password utos
Itinatala ang password sa command environment, pagkatapos ay ipapatupad ang command. Kung
kailangan ng kapangyarihan at hindi pa nakukuha, hahanapin ng command ang password
sa kapaligiran at subukang makuha ang nauugnay na kapangyarihan gamit ang password na iyon. Kaya naman,
Ang inaprubahang utos (na may wastong password) ay malinaw na ipapatupad nang wala ang
hassle of requesting the power, issuing the command and then release the
kapangyarihan. Nasa utos na gawin ang aprubahan pagsubok ng password sa pamamagitan ng pagtingin
sa aprubahan variable sa command environment (tingnan sa ibaba). Since clearance
ang mga pagsusuri (tulad ng mga ginawa kapag humihiling ng kapangyarihan) ay hindi ginaganap, hindi
ang sensitibong utos ay dapat harapin ang aprubahan bumuo.

delpower kapangyarihan password [seguridad]
Magtanggal ng power mula sa system, at ang nauugnay nitong listahan ng clearance. Ang sistema
kinakailangan ang kapangyarihan upang matanggal ang karamihan sa mga kapangyarihan maliban sa ugat at katiwasayan. ang katiwasayan
kapangyarihan ay maaari lamang matanggal sa pamamagitan ng kanyang sarili at ang ugat ang kapangyarihan ay maaari lamang matanggal kapag
ang katiwasayan ang password ay tinukoy din.

getauth kapangyarihan password
Kumuha ng kasalukuyang clearance file para sa isang ibinigay na kapangyarihan. Walang kinakailangang espesyal na kapangyarihan kung ang
ibinigay ang password o nakakulong na ang kapangyarihan. Kung hindi man, ang kapangyarihan ng system
ay kailangan para sa lahat ng kapangyarihan ngunit ugat or katiwasayan kung saan ang kaukulang kapangyarihan ay
sapilitan.

bagong kapangyarihan kapangyarihan password [alias]
Magdagdag ng bagong kapangyarihan sa system. Binabasa ng command ang karaniwang input ng mail
hanggang sa EOF marker para makuha ang power clearance list. Ang sistema kapangyarihan ay
kinakailangan upang lumikha ng isang bagong kapangyarihan, maliban kung ito ay ugat or katiwasayan: Ang katiwasayan kapangyarihan
ay kinakailangan upang lumikha ugat at ang ugat kapangyarihan ay kinakailangan upang lumikha katiwasayan.

passwd kapangyarihan luma bago
Baguhin ang power password. Hindi mahalaga kung hawak mo na ang kaukulang
kapangyarihan, dapat mong ibigay ang wastong lumang password. Tingnan din ang password utos.

password kapangyarihan bago
Baguhin ang power password. Ang kaukulang kapangyarihan ay kinakailangan, o kailangan mong makuha
ang sistema kapangyarihan. Upang baguhin ang ugat or katiwasayan mga password, kailangan mo ang
kaukulang kapangyarihan.

kapangyarihan pangalan password
Humingi ng bagong kapangyarihan. Syempre, ugat hindi na kailangang humiling ng iba pa
kapangyarihan ngunit katiwasayan, mas kaunti ang magbigay ng anumang password. Ang utos na ito ay hindi pinarangalan kapag ang
wala sa trusted mode ang server, lingid sa kaalaman ng user: ang mensahe ng error sa
Ang transcript file ay hindi naiiba sa nakuhang may di-wastong password.

kapangyarihan regexp
Ilista ang lahat ng kapangyarihan na tumutugma sa perl na regular na expression, kasama ng kanilang
kaukulang file ng clearance. Ang sistema kapangyarihan ay kinakailangan upang makuha ang listahan. Ang
ugat or katiwasayan kapangyarihan ay kinakailangan upang makakuha ng access sa ugat or katiwasayan
impormasyon, ayon sa pagkakabanggit. Kung walang mga argumento na ibinigay, ang lahat ng kapangyarihan ay
nakalista.

pakawalan kapangyarihan
Alisin ang ilang kapangyarihan.

remauth kapangyarihan password
Alisin ang mga user mula sa clearance file, pagkuha ng listahan sa pamamagitan ng pagbabasa ng karaniwang mail
input hanggang sa EOF marker. Ang utos na ito ay hindi nangangailangan ng anumang espesyal na kapangyarihan kung
ang tamang password ay ibinigay o kung ang kapangyarihan ay nakakulong na. kung hindi,
ang sistema kailangan ang kapangyarihan. Para sa ugat at katiwasayan clearance, ang kaukulang
kailangan din ng kapangyarihan.

itakda nagbabago halaga
Itakda ang variable sa katumbas na halaga. Kapaki-pakinabang upang baguhin ang mga panloob na variable
tulad ng EOF marker value, o baguhin ang ilang command environment. Ang gumagamit ay maaaring
tukuyin ang kanyang sariling mga variable para sa kanyang mga utos. Para sa bandila-type na variable, isang halaga ng
on, oo or totoo itinatakda ang variable sa 1, itinatakda ito ng anumang iba pang string 0 (mali).
Ginamit nang mag-isa bilang itakda, ang listahan ng lahat ng tinukoy na variable kasama ng
ibinalik ang kani-kanilang mga halaga.

setauth kapangyarihan password
Palitan ang power clearance file ng isang nakuha mula sa karaniwang mail input hanggang sa
ang marka ng EOF. Ang sistema kailangan ang kapangyarihan maliban kung tinukoy mo ang wastong password
o ang kapangyarihan ay nasa iyo na. Gaya ng dati, ugat or katiwasayan clearance lang pwede
nagbago kapag ang kapangyarihan ay pinigil.

gumagamit [e-mail [utos]]
Isagawa ang utos sa pamamagitan ng pag-aakalang tinukoy ang pagkakakilanlan ng e-mail. Ang mga kapangyarihan ay nawala habang
pagsasagawa ng utos. Ang pagkakakilanlan ng e-mail ay maaaring suriin ng mismong command,
na maaaring magpataw ng karagdagang mga paghihigpit sa pagpapatupad, tulad ng pagkuha ng user-
tinukoy na mga kapangyarihan. Tandaan na binabago lamang ng command na ito ang pandaigdigang kapaligiran, at
na bahala na ang utos pagpapatupad upang magamit ang impormasyong iyon. Kung
walang utos na tinukoy, ang bagong pagkakakilanlan ay ipinapalagay hanggang sa baguhin ng isa pa
gumagamit utos at lahat ng kapangyarihan na kasalukuyang hawak ng gumagamit ay inilabas. Kung hindi
e-mail ibinigay ang address, naibalik ang orihinal na user ID.

Utos kapaligiran
Mayroong anim na uri ng mga command at variable na maaaring tukuyin sa server mode. Dalawa sa
sila, dulo at Tulungan ang mga uri ay espesyal at hiwalay na pinangangasiwaan. Dalawang klase ay at bandila sumangguni
sa mga variable at ang huling dalawang uri perlas at talukap ng alimango sumangguni sa mga utos.

Sa tuwing magpapagana ang mailagent ng utos ng server, nagse-set up ito ng kapaligiran para sa utos na iyon: kung
ito ay isang perlas-type na utos, pagkatapos ay itinakda ang isang set ng perl variable bago i-load ang
utos; kung ito ay a talukap ng alimango-type na utos, ang ilang mga variable ng kapaligiran ay sinisimulan at
Ang file descriptor #3 ay naka-set up upang direktang tumuro sa mailagent session transcript.

A talukap ng alimango-type na utos ay naka-forked, habang a perlasAng -type na command ay direktang na-load sa mailagent
sa loob ng cmdenv pakete. Ito ay gumagana tulad ng PERL filtering command, tanging ang
ang target na package ay naiiba at isang natatanging hanay ng mga variable ang naka-preset.

Nangongolekta ang ilang command ng karagdagang data hanggang sa isang end-of-file marker (bilang default ang string
EOF sa isang linya mismo) at ang mga data na iyon ay pinapakain sa mga utos ng shell sa pamamagitan ng si stdin at sa perl
mga utos sa pamamagitan ng @buffer variable na naka-set up sa environment package na pinangalanan cmdenv (kung saan
ang utos ay na-load at tumakbo).

Kung tutukuyin mo ang iyong sariling mga variable (types ay or bandila), maaari mong gamitin ang builtin itakda utos
upang baguhin ang kanilang mga halaga. Tandaan na walang default na halaga ang maaaring ibigay kapag tinutukoy ang iyong
variable. Ang isang angkop na default na halaga ay dapat itakda sa loob ng mga utos na gumagamit ng mga ito, kasama ang
ang kalamangan na ang iba't ibang mga default na halaga ay maaaring gamitin ng iba't ibang mga utos.

Ang mga sumusunod na kapaligiran ang mga variable ay tinukoy. Karamihan ay read-only, maliban kung aabisuhan
kung hindi, kung saan ang builtin itakda utos ay maaaring gamitin sa kanila.

aprubahan Ang aprubahang password para sa aprubahan mga command, walang laman kung hindi sa loob ng builtin aprubahan
bumuo.

auth Isang flag na nakatakda sa true kapag may nakitang valid na sobre sa mensaheng mail. Kailan
mali ang flag na ito, hindi maaaring ilagay sa trusted mode ang server.

cmd Ang command line, gaya ng nakasulat sa mensahe.

mangolekta Itinakda sa true ang panloob na flag habang kumukuha ng input mula sa isang dito-dokumento. Ito ay
karaniwang i-reset sa false bago tawagan ang utos.

mag-alis ng mga insekto True kapag na-activate ang debug mode (maaaring itakda).

hindi pinagana Isang listahan na pinaghihiwalay ng kuwit ng mga hindi pinaganang command, na walang puwang sa pagitan ng mga ito. Ito
ay sinisimulan kapag ang SERVER command ay na-invoke at ang -d ginagamit ang opsyon.

eof Ang kasalukuyang marker ng end-of-file para sa mga command na here-document. Bilang default, itinakda sa
'EOF' (maaaring baguhin).

error Bilang ng mga error sa ngayon.

jobnum Ang numero ng trabaho na itinalaga sa kasalukuyang mailagent.

mag-log Ano ang naka-log in sa transcript, na may ilang argumento na posibleng nakatago.

pangalan Ang pangalan ng utos.

mag-impake Packing mode para sa pagpapadala ng file (maaaring itakda).

landas Destination address para sa pagpapadala o notification ng file (maaaring itakda).

kapangyarihan Isang colon (:) na pinaghihiwalay na listahan ng mga kapangyarihan na kasalukuyang matagumpay na mayroon ang user
hiniling at nakuha.

kahilingan Bilang ng mga kahilingang naproseso sa ngayon.

kopyahin o sipiin sa pamamagitan ng pag-aninag True kapag ang mga shell command ay gustong ma-trace sa transcript (maaaring itakda).

pinagkakatiwalaan Totoo kapag nasa trust mode ang server, kung saan maaaring makakuha ng mga kapangyarihan. Ito ay isinaaktibo
sa pamamagitan ng -t opsyon ng utos ng SERVER, kung mayroong wastong mail envelope
natagpuan.

uid Address ng nagpadala ng mensahe, kung saan ipapadala ang transcript. Sa pamamagitan ng
extension, ang tunay na user ID para sa server, na siyang batayan ng kapangyarihan
mekanismo ng clearance.

gumagamit Ang epektibong user ID, orihinal na kapareho ng uid, ngunit maaaring baguhin sa pamamagitan ng
ang gumagamit builtin na utos.

sesyon Sipi
Ang isang session transcript ay awtomatikong ipinapadala pabalik sa user na humiling ng isang server
access. Ipinapakita ng transcript na ito ang mga command na pinatakbo ng user at ang kanilang status: OK or MABABA.
Sa pagitan ng dalawang linyang iyon, ipinapakita ng transcript ang anumang output na tahasang ginawa ng command na to
ang transcript. Karaniwan, ang transcript ay maaaring gamitin upang ipasa ang mga mensahe ng error pabalik sa
ang gumagamit, ngunit kahit na ang mga utos na gumagana nang tama ay maaaring nais na maglabas ng isang tahasang mensahe,
nagsasaad ng katatapos lang na gawin.

Maaaring ma-access ng perl command ang transcript sa pamamagitan ng MAILER hawakan ng file, na tinukoy sa cmdenv
package, habang ang isang shell command ay maaaring ma-access ito sa pamamagitan ng file descriptor #3 nito.

Tandaan na ang transcript ng session ay ipinapadala sa koreo sa nagpadala ng mensahe, ibig sabihin, kung sino man ang
sabi ng linya ng header ng sobre na ito ay. Sa abot ng server, ang e-mail address na ito ay
ginamit bilang user ID, tulad ng isang payak na pangalan sa pag-log in ay maaaring isipin bilang user id. Para sa
mga sensitibong utos, ang pagpapatunay batay sa impormasyong iyon ay talagang mahina. Isang higit pa
Ang "secure" na pagpapatotoo ay ibinibigay ng mga kapangyarihan ng server, na nakabatay sa password.
Sa kasamaang palad, ang malinaw na password ay kailangang ipadala sa mismong mensahe at maaaring
nakikinig.

Pagtatala bago Command at Variable
Ang mga utos at variable ng server ay tinukoy sa comserver file na tinukoy sa iyong
~/.mailagent. Ang format ng file ay sa isang table na may mga item sa isang row na pinaghihiwalay ng
mga character sa tab. Ang bawat linya ay tumutukoy sa isang utos o variable. Anumang hindi nauugnay na larangan ay maaaring
ipinasok bilang isang solong '-' (minus) na character. Ang format ay nagbibigay-daan para sa shell-style (#) na mga komento.

Ang bawat row ay may mga sumusunod na field:

pangalan uri itago collect-data landas dagdag

kung saan:

pangalan ay ang pangalan ng command o variable na kinikilala ng server.

uri ay isa sa perlas, talukap ng alimango, ay, bandila, Tulungan or dulo.

itago ay nagpapahiwatig kung aling mga argumento sa utos ang itatago (ang pangalan ng utos
pagiging argument zero) sa transcript ng session. Gamitin ang '-' kung walang mga argumento
kailangang itago. Karaniwan, ito ay ginagamit upang itago ang mga malinaw na password
mga utos. Kung higit sa isang argumento ang kailangang itago, pagkatapos ay isang listahan ng
mga numerong pinaghihiwalay ng ',' (kuwit) ay maaaring tukuyin, na may hindi mga puwang sa pagitan ng
sila. Halimbawa, itatago ng '2,4' ang mga argumento 2 at 4 sa transcript.

collect-data ay isang bandila (tukuyin bilang alinman sa 'y' o 'n', ngunit maaari kang gumamit ng kumpletong mga salita
'oo' o 'hindi') na nagpapahiwatig kung ang utos ay nangongolekta ng karagdagang data sa a
dito-dokumento hanggang sa EOF marker. Bilang kahalili, maaari mong tukuyin ang '-' sa
lugar ng 'n'.

landas tumutukoy sa landas ng utos (~pinahihintulutan ang pagpapalit ng pangalan). Kung hindi
may kaugnayan (hal. kapag tumutukoy sa isang variable) o kapag gusto mong iwanan ito
blangko, gamitin ang '-'. Kung ang isang blangkong landas ay tinukoy para sa a perlas or talukap ng alimango utos,
pagkatapos ay ang pagpapatupad ng utos na iyon ay inaasahang makikita sa servdir,
gaya ng tinukoy sa ~/.mailagent. Kung ang command name ay cmd halimbawa, kung gayon
perl command ay inaasahan doon sa isang file na pinangalanan cmd of cmd.pl, samantalang
Ang mga utos ng shell ay inaasahang makikita sa a cmd of cmd.sh file. Tandaan na
ang isang command ay hindi pinagana kung hindi ito matatagpuan sa oras na ang comserver
na-parse ang file.

dagdag ay anumang karagdagang parameter na kailangan para sa utos. Hindi tulad ng ibang larangan, ito
dapat iwanang blangko kung hindi kinakailangan. Kahit ano hanggang sa dulo ng linya ay
sinunggaban ng patlang na ito. Dapat tukuyin ng mga utos ng Perl ang pangalan ng perl
function na tumawag upang isagawa ang utos; kung walang tinukoy, ang pangalan ng
ang utos mismo ay tinatawag. Maaaring gamitin ng mga Shell command ang field na iyon para mag-supply
karagdagang mga opsyon, na ilalagay pagkatapos ng command name at
bago ang anumang iba pang argumentong ibinigay ng user. Dapat iwanan ito ng iba.

espesyal Utos Uri
Kasalukuyang mayroong dalawang espesyal na uri ng command.

Ang pinakasimpleng ay ang dulo uri. Ito ay ginagamit upang tukuyin ang mga utos na maaaring magtapos sa server
pagpoproseso. Bilang default, magpapatuloy ang pagproseso hanggang sa maabot ang dulo ng file o a
Natagpuan ang signature delimiter na '--'. Halimbawa, maaaring naisin mong tukuyin ang utos umalis
at bigyan ito ng dulo uri. Sa sandaling maabot ng server ang utos na iyon, abort ito
pinoproseso at itinatapon ang natitirang mensahe.

Ang Tulungan uri ay karaniwang naka-attach sa isang Tulungan command at prints tulong sa isang command na batayan,
tulong para sa bawat utos na iniimbak sa ilalim ng helpdir variable (tinukoy sa iyong
~/.mailagent) sa isang file na may kaparehong pangalan ng mismong command. Halimbawa, ipagpalagay
isang utos mabaril, ang help file nito ay inaasahan sa helpdir/shoot. Kung walang nakitang file
doon, tumitingin ang mailagent sa pampublikong aklatan nito (/usr/share/mailagent) para sa isang help file.
Ang tulong ay ibinibigay lamang kapag ang file ng tulong ay umiiral at hindi zero-sized.

Paglikha ang Ugat kapangyarihan
Upang ma-bootstrap ang server, kailangan mong lumikha ng root power. Lahat ng iba pang kapangyarihan
maaaring malikha sa pamamagitan ng paggamit ng interface ng server, na nagsisiguro ng pagkakapare-pareho at pag-log sa iyong
mga aksyon. Kung wala kang planong gumamit ng mga kapangyarihan, maaari mong laktawan ang seksyong iyon.

Una, kailangan mong pumili ng magandang password para sa ugat kapangyarihan. Isang taong may ugat kapangyarihan
maaaring gawin ang halos anumang bagay sa server, kaya mag-ingat. Ipagpalagay natin na pipili ka ugat-
pumasa bilang isang password.

Patnugutan passwd (tinukoy sa iyong ~/.mailagent) at idagdag ang sumusunod na linya:

ugat: :

ibig sabihin, ilagay ang password nang malinaw sa pagitan ng '<' at '>'. Hindi ito magtatagal sa ganoong anyo,
ngunit ito ang pinakamadaling paraan upang i-bootstrap ito. Protektahan ang passwd file nang mahigpit (read-write
mga pahintulot para lamang sa iyo). Pagkatapos ay lumikha ng a powerdir/root file, protektahan ito sa parehong paraan at
idagdag ang iyong e-mail address dito, sa isang linya mismo. yun dapat maging ang address na gagawin
magpakita sa Mula sa: linya ng iyong mga mail. Dahil ang mga clearance file ay sumusuporta sa shell-style
pattern, maaari mong gamitin login@*domain.top upang payagan ang mga mail mula sa iyong pag-log in mula sa anumang machine in
iyong domain.

Malapit ka nang matapos. Ngayon ay ilabas lamang ang sumusunod na utos:

mailagent -i -e 'SERVER -t'

at pakainin ang karaniwang input nito ng:

mula sa iyong e-mail tirahan
Mula sa: iyong e-mail tirahan

kapangyarihan root root-pass
password root root-pass
^D

Tandaan na ang una mula sa Ang linya ay sapilitan dito, dahil ito ang sobre kung saan
nakabatay ang pagpapatunay. Dahil pinapakain namin ang mailagent ng isang handcrafted na mensahe, kami
dapat magbigay ng valid na sobre o hindi lilipat ang server sa trusted mode...

Ang side effect ng muling pag-instantiate ng iyong password ay ang pag-crypt nito sa passwd file,
upang ang sinumang tumitingin sa file na iyon ay hindi mahulaan ang iyong ugat password, sana.

Kapag may valid ka na ugat naka-install na kapangyarihan, maaari kang lumikha ng sistema kapangyarihan sa pamamagitan ng paggamit
bagong kapangyarihan. Ang mga karagdagang kapangyarihan ay maaaring malikha at matanggal gamit ang sistema kapangyarihan lamang.

Dapat mo ring likhain ang katiwasayan kapangyarihan at bigyan ito ng ibang password kaysa sa ugat
password. Ito ay talagang kailangan lamang kung nais mong malayuang pamahalaan ang server. Kung
mayroon kang lokal na pag-access at ang mga bagay ay nasira, palaging posible na baguhin ang ugat
manu-manong password sa pamamagitan ng pag-uulit sa pagkakasunud-sunod ng bootstrap na ito.

Tandaan na ang mga pagsusuri sa clearance ay ginagawa gamit ang address ng sobre ng mensahe, na a
mas mahirap pandayin kaysa sa mga plain na field ng header Nagpadala:. Kinuha ang sobre
sa pamamagitan ng pagtingin sa unang linya ng header, na sa mga sistema ng Unix ay ganito ang hitsura:

mula sa sobre-address petsa ng pagpapadala

at ipinasok ng mail transport agent (MTA). Kung ikaw ay gumagamit sendmail bilang MTA,
saka lang pinagkakatiwalaan ipinahayag ng mga gumagamit sa sendmail.cf file ay maaaring lumikha ng isang "pekeng"
address ng sobre, isang tampok na karaniwang ginagamit ng mga dispatcher ng mailing list, mula noong address na iyon
ay pagkatapos ay ginagamit bilang ang bounce target kung sakaling ang mail ay hindi maihatid. Kung yan muna
Ang linya ng header ay wala, ang nagpadala ay kinukuwenta gamit ang Nagpadala: field kung naroroon, pagkatapos ay ang
Mula sa: patlang, ngunit ang auth variable ay nakatakda sa false at ang server ay hindi lilipat sa
pinagkakatiwalaang mode; sa madaling salita, hindi posibleng makakuha ng mga kapangyarihan sa session na iyon.

Bukod dito, dahil ang transcript ng session ay ipinadala sa parehong address ng sobre na ginamit noon
patunayan ang pagiging karapat-dapat para sa isang kapangyarihan, ang tampok ng server ay halos hindi magamit
kunin ang kumpidensyal na impormasyong hawak sa site kung saan ang mailagent ay tumatakbo mula noong
ipapadala ang impormasyon sa isa sa mga user na na-clear para sa kapangyarihang iyon. Ito ay ang
responsibilidad mo, ang gumagamit, upang matiyak na hindi ito mangyayari o maaari kang makapasok
mga legal na problema.

Sa wakas, ang mga sensitibong utos ay dapat na protektahan ng isang wastong kapangyarihan, at dapat na mag-ingat
dadalhin sa pagsulat ng pagpapatupad ng utos upang matiyak na ang seguridad ay hindi
umiwas. Ngunit hindi, ang tampok na mailagent na ito ay hindi pinaniniwalaang mapanganib para sa
system o site kung saan ito ginagamit, dahil ang isang determinadong user ay maaaring magpatupad ng isang walang halaga sa pamamagitan ng a
limang linyang shell script. Kung talagang isyu ang seguridad, .pasulong mga file gamit ang piping
Ang tampok ay dapat na ipinagbabawal at pag-access sa cron ipinagbabawal upang maiwasan ang awtomatikong mail
pagproseso (dahil posibleng magkaroon ng cron invoke a mailagent proseso -o anuman
ibang programa para sa bagay na iyon- upang iproseso ang papasok na mail sa isang katulad na paraan).

halimbawa
Narito ang isang halimbawa na nagpapakita ng mga hakbang na kasangkot sa paglikha ng a talukap ng alimango utos, na gagawin
kumuha ng script sa pamamagitan ng pagkolekta ng mga linya hanggang sa isang marka ng EOF at ipakain ito sa isang tunay na shell para sa
pagbitay. Dahil ang pagpayag sa feature na ito nang walang anumang mga pag-iingat ay magiging isang tunay na seguridad
butas, pinoprotektahan namin iyon sa pamamagitan ng paghiling ng kapangyarihan talukap ng alimango bago payagan ang pagpapatupad.

Narito ang aking pagpapatupad ng talukap ng alimango command (magagamit sa pamamahagi ng mailagent
sa ilalim misc/shell):

#!/ Bin / SH

# Ipatupad ang mga utos mula sa stdin, gaya ng ipinadala ng mailagent server.
Ang # File descriptor #3 ay isang channel sa transcript ng session.

# Siguraduhin na mayroon kaming kapangyarihan ng shell.
# Huwag payagan ang root power na lampasan iyon para sa mga kadahilanang pangseguridad.
kaso ":$powers:" sa
*:shell:*);;
*)
echo "Tinanggihan ang pahintulot." >&3
labasan 1
;;
na C

# Marahil ay tinukoy ang isang shell... Kung hindi, gamitin / Bin / SH
kaso "$shell" sa
'') shell='/ Bin / SH';;
na C

# Karaniwan, ang isang shell command ay may kasamang output sa transcript lamang sa
# kaso ng error o kapag hiniling ng user ang bakas. Dito gayunpaman, kailangan natin
# tingnan kung ano ang nangyari, kaya na-redirect ang lahat sa transcript ng session.

exec $shell -x >&3 2>&3

Tandaan kung paano kami gumagawa ng access sa $powers at $shell variable ng kapaligiran. Ang huli ay
tinukoy ng gumagamit upang payagan ang dynamic na set-up ng isang shell.

Ipagpalagay na iniimbak namin ang utos na iyon sa ilalim servdir/shell.sh (huwag kalimutang idagdag ang execution
bit sa file...), narito kung paano namin ito idedeklara at ang variable nito sa comserver file.

shell shell - y -
shell var ---

Ipinapakita ng halimbawang ito na mayroong hiwalay na name-space para sa mga variable at command.
Bukod dito, ang utos ay may parehong pangalan tulad ng uri nito -- huwag hayaan na malito ka :-).

Ngayon, ipagpalagay na nakagawa ka na ng a sistema kapangyarihan at pinrotektahan ito ng isang password
(Ipagpalagay natin sys-pass para sa layunin ng halimbawang ito), kailangan mong lumikha ng shell
kapangyarihan. Bagama't maaari mong gawin ito nang manu-mano (tulad noong ginawa mo ang ugat kapangyarihan), ito ay
mas mahusay na gamitin ang interface ng SERVER dahil tinitiyak nito ang pagkakapare-pareho.

Upang malikha ang talukap ng alimango kapangyarihan na kinakailangan upang magamit ang bagong likha talukap ng alimango utos, ikaw
kailangang idagdag ang sumusunod na panuntunan sa iyong file ng panuntunan:

Paksa: Server { SAVE server; SERVER -t };

na magse-save ng lahat ng mail ng server sa isang nakalaang folder at iproseso ang mga ito. Pansinin ang -t
opsyon, na nagpapahintulot sa pinagkakatiwalaang mode, kung saan maaaring makakuha ng mga kapangyarihan. Ngayon ipadala sa iyong sarili ang
sumusunod na mail:

Paksa: Server
sistema ng kuryente sys-pass
newpower shell shell-pass
[protektado ng email]
EOF

na humihiling para sa sistema kapangyarihan (kinakailangan upang lumikha ng karamihan sa mga kapangyarihan), at pagkatapos ay lumilikha ng a
bagong kapangyarihan talukap ng alimango, pagtatalaga shell-pass bilang password at pag-clear nito [protektado ng email] para rito.
Tandaan ang fill-in dito-dokumento para sa newpower command, hanggang sa EOF marker. Syempre,
kailangan mong palitan ang address ng iyong tunay na address.

Makakatanggap ka ng transcript ng session sa mga linyang ito:

---- Transcript ng sesyon ng mail para sa [protektado ng email] ----

----> sistema ng kuryente ********
OK.

====> newpower shell ********
OK.

====> --
Pagtatapos ng pagproseso (.signature)

---- Pagtatapos ng mailagent session transcript ----

Tandaan ang mga nakatagong password, at ang agarang pagbabago kapag ang kapangyarihan ng system ay naging
ipinagkaloob. Dahil ang aking mailer ay awtomatikong nagdaragdag ng isang lagda, ang pagproseso ay hihinto dito.

Ngayon, gamitin natin ang bagong command na ito... Ipadala sa iyong sarili ang sumusunod na mail:

Paksa: Server
itakda ang shell /bin/ksh
set eof END
talukap ng alimango
ls -l / etc / passwd
END
kapangyarihan shell shell-pass
talukap ng alimango
ls -l / etc / passwd
END

Kung tama ang lahat, dapat kang makatanggap ng transcript na ganito:

---- Transcript ng sesyon ng mail para sa [protektado ng email] ----

----> itakda ang shell /bin/ksh
OK.

----> set eof END
OK.

----> shell
Tinanggihan ang pahintulot.
Nagbalik ang utos ng hindi zero na katayuan (1).
NABIGO.

----> power shell ********
OK.

====> shell
+ ls -l / etc / passwd
-rw-r--r-- 1 root system 691 Okt 01 14:24 / etc / passwd
OK.

====> --
Pagtatapos ng pagproseso (.signature)

---- Pagtatapos ng mailagent session transcript ----

Ang unang panawagan ng talukap ng alimango nabigo ang utos dahil kulang tayo sa talukap ng alimango kapangyarihan. Ang tali
"Tinanggihan ang pahintulot." ay echoed ng mismong command sa file descriptor #3 at ginagawa ito
sa transcript.

Konklusyon
Ang generic na mail server na ipinatupad sa mailagent ay maaaring gamitin upang ipatupad ang isang mailing list
manager, server ng pagboto, server ng archive, atbp... Sa kasamaang palad, hindi ito sa kasalukuyan
may paniwala ng estado, na may set ng command na nakatuon sa bawat estado, kaya hindi
posibleng magpatupad ng isang matalinong server ng archive.

Kung magpapatupad ka ng mga bagong simpleng utos ng server at sa tingin mo ay sapat na ang mga ito
nag-ambag, mangyaring ipadala ang mga ito sa akin at malugod kong isasama ang mga ito.

HALIMBAWA


Narito ang ilang halimbawa ng mga file ng panuntunan. Una, kung hindi mo tinukoy ang isang file ng panuntunan o kung ito ay
walang laman, nalalapat ang sumusunod na built-in na panuntunan:

Lahat: /^Subject: [Cc]ommand/ { LEAVE; PROSESO };

Ang bawat mail ay naiwan sa mailbox. Bukod, mail na may "Subject: Command" kahit saan sa
naproseso ang mensahe.

Ang sumusunod na file ng panuntunan ay ang kasalukuyang ginagamit ko:

maildir = ~/mail;

Lahat: /^Subject: [Cc]ommand/ { SAVE cmds; PROSESO };

Para kay: /^[protektado ng email]/ { POST -l mail.gue };
Tila-Kay: ram,
Mga Newsgroup: mail.gue { Bounce [protektado ng email] };

<_SEEN_>
Tila-Kay: ram,
Mga Newsgroup: mail.gue { DELETE };

From: root, To: root { BEGIN ROOT; TANGGIHAN };
/^Daily run output/ { WRITE ~/var/log/york/daily.%D };
/^Lingguhang run output/ { WRITE ~/var/log/york/weekly };
/^Buwanang run output/ { WRITE ~/var/log/york/buwanang };

Mula sa: ram { BEGIN RAM; TANGGIHAN };
Para kay: ram { UMALIS };
X-Mailer: /mailagent/ { LEAVE };
{ DELETE };

Ang direktoryo ng folder ay nakatakda sa ~/mail. Lahat ng command mail ay naka-save sa folder
~/mail/cmds at naproseso. Hindi sila lumalabas sa aking mailbox. Mga sulat na nakadirekta sa gue
mailing list (French Eiffel's Users Group, namely Groupe des Utilisateurs Eiffel) ay
nai-post sa lokal na newsgroup mail.gue at hindi rin lumalabas sa aking mailbox. Anumang pagsunod-
ang ginawa sa grupong ito ay ipinapadala sa akin ni inews (at hindi direkta sa mailing list,
dahil ang mga mail na iyon ay babalik sa akin muli at ipapakain sa newsgroup, na siya namang
ipapadala sila pabalik sa listahan, at iba pa, at iba pa). Kaya ang susunod na tuntunin
na nakakakuha ng mga follow-up na iyon at nagba-bounce sa kanila sa mailing list. Ang mga mail na iyon
talagang bumalik, ngunit tatanggalin lang sila ng panuntunang _SEEN_.

Sa aking makina, ang mga mail para sa ugat ay ipinapasa sa akin. Gayunpaman, araw-araw, ang cron demonyo
nagsisimula ng ilang proseso para gumawa ng ilang paglilinis ng administrasyon (umiikot na mga log file, atbp...), at
ibinalik sa koreo ang mga resulta. Na-redirect ang mga ito sa mga partikular na folder gamit ang WRITE command,
upang matiyak na hindi sila lumaki nang walang limitasyon. Tandaan ang macro substitution para sa pang-araw-araw
output (sa Lunes, ang output ay naka-imbak sa araw-araw.1 halimbawa).

Pinipigilan ng susunod na pangkat ng mga panuntunan ang mail system na magpadala ng mga mail pabalik kapag ako ay nasa a
pagpapalawak ng alias ng grupo. Ito ay sendmail opsyon na hindi ko pinagana sa aking makina. Ang pangangalaga ay
kinuha gayunpaman upang panatilihing nagmumula ang mga mail mula sa mailagent na natatanggap ko bilang isang blind carbon
kopya.

CAVEAT


Upang limitahan ang overhead ng load sa system, lamang isa Ang proseso ng mailagent ay pinapayagan
upang patakbuhin ang mga utos. Kung may dumating na bagong mail habang tumatakbo ang isa pang mailagent, iyon
mail ay nakapila at ipoproseso sa ibang pagkakataon ng pangunahin mailagent.

Para sa parehong dahilan, ang mga mensahe na ipinadala pabalik ng mailagent ay nakapila ni sendmail, para maiwasan ang
halaga ng paglilipat ng mail habang pinoproseso ang mga utos.

SEGURIDAD


Una, hayaan mo akong talakayin kung ano katiwasayan ibig sabihin dito. ginagawa nito hindi ibig sabihin ng kaligtasan ng system laban sa
pag-atake ng nanghihimasok. Kung pinapayagan ng iyong system .pasulong mga kawit at/o cron mga trabahong itatakda
mga regular na user, kung gayon ang iyong system ay hindi ligtas. Panahon. Kaya hindi kami nag-abala
seguridad sa antas ng system, ngunit sa iyong sariling antas ng account kung saan ang lahat ng uri ng
ang mahalagang data ay hawak.

Upang maiwasan ang anumang mapaminsalang panghihimasok sa pamamagitan ng mga Trojan horse, ang C filter ay tatanggi na tumakbo kung
ang configuration file ~/.mailagent o ang tinukoy na file ng panuntunan ay maaaring isulat sa mundo o hindi
pagmamay-ari ng gumagamit. Ang mga pagsubok na iyon ay ipinatupad kahit na ang filter hindi tumatakbo setuid,
dahil kinokompromiso nila ang seguridad ng iyong account. Ang mailagent gaganap din
ilan sa mga pagsusuring iyon, kung sakaling hindi ito ma-invoke sa pamamagitan ng C filter.

Sa katunayan, kung ang isang tao ay maaaring sumulat sa iyong ~/.mailagent file, pagkatapos ay madali niyang mapapalitan ang iyong
patakaran configuration parameter upang tumuro sa isa pang pekeng file ng panuntunan at pagkatapos ay magpadala sa iyo ng a
mail, na magti-trigger ng mailagent, na tumatakbo habang ikaw. Sa pamamagitan ng RUN command, ang potensyal na ito
ang nanghihimasok ay maaaring magpatakbo ng anumang utos, gamit ang iyong mga pribilehiyo, at maaaring magtakda ng Trojan horse para sa
mamaya pagbabasa. Ang paglalapat ng parehong lohika, ang file ng panuntunan ay dapat ding protektahan nang mahigpit.

At, hindi nakakagulat, ang parehong mga patakaran ay nalalapat para sa iyo newcmd file, na ginagamit upang ilarawan
pinahabang mga utos sa pag-filter. Kung hindi, ito ay magpapahintulot sa isang tao na tahimik na muling tukuyin ang a
karaniwang ginagamit na karaniwang utos tulad ng LEAVE at sa ibang pagkakataon ay magagawa mong ipagpalagay ang iyong pagkakakilanlan.

Ang mga bersyon pagkatapos ng 3.0 PL44 ay may pinahusay na (mula sa punto ng seguridad) C filter
na hindi lamang gagawa ng mga nabanggit na mga pagsusuri ngunit titiyakin din na ang perlas
maipapatupad at ang mailagent Ang script na malapit nang i-exec ay hindi maluwag na protektado (kapag
execsafe NAKA-ON o kapag tumatakbo nang may mga pribilehiyo ng superuser). Higit pa rito, kung ang filter is
set up sa iyong .pasulong gaya ng inilarawan sa man page na ito, masusuri nito ang sarili nito
kaligtasan at babalaan ka ng malakas kung maaari itong pakialaman, na maaaring talunin ang lahat
mga pagsusuri sa seguridad.

Ang Mailagent ay pinalawig din upang ang lahat ng mga programa ay naisakatuparan sa pamamagitan ng RUN at mga kaibigan, pati na rin
mail hooks, ay sinusuri para sa halatang mga depekto sa proteksyon bago aktwal na tumakbo Interpreted
script (nagsisimula sa #! magic token) at perl script kasunod ng magic na "exec perl
kung ang $under_shell" incantation ay espesyal na sinusuri para sa karagdagang seguridad ng nauugnay
interpreter. Ang mga pagsusuring iyon ay isinasagawa nang sistematikong (kapag execsafe ay ON o kailan
tumatakbo na may mga pribilehiyo ng superuser) kahit na ang hindi makatatakas hindi nakatakda ang parameter sa ON. Gayundin,
lahat ng mga file na malapit nang maging exec()ed ay sinusuri gamit ang parehong pinahabang paraan ng pagsusuri na ginamit noong
hindi makatatakas ay NAKA-ON (ang mga pagsusuri sa pagmamay-ari ay nilaktawan gayunpaman kapag tinitingnan ang exec()-kakayahan ng a
file)

Gumamit ng mailagent online gamit ang mga serbisyo ng onworks.net


Mga Libreng Server at Workstation

Mag-download ng Windows at Linux apps

  • 1
    PSI
    PSI
    Ang Psi ay cross-platform na makapangyarihang XMPP
    idinisenyo ang kliyente para sa mga may karanasang gumagamit.
    May mga build na magagamit para sa MS
    Windows, GNU/Linux at macOS.. Audience:
    Mga End User...
    I-download ang Psi
  • 2
    Blobby Volley 2
    Blobby Volley 2
    Opisyal na pagpapatuloy ng sikat
    Blobby Volley 1.x arcade game..
    Audience: Mga End User/Desktop. Gumagamit
    interface: OpenGL, SDL. Programming
    Wika: C++, Lua. C...
    I-download ang Blobby Volley 2
  • 3
    SuiteCRM
    SuiteCRM
    Ang SuiteCRM ay ang award-winning na Customer
    Pamamahala ng Relasyon (CRM)
    application na inihatid sa iyo ng mga may-akda
    at mga tagapangasiwa, SalesAgility. Ito ay ang
    ang mundo...
    I-download ang SuiteCRM
  • 4
    Poweradmin
    Poweradmin
    Ang Poweradmin ay isang web-based na DNS
    tool sa pangangasiwa para sa PowerDNS server.
    Ang interface ay may ganap na suporta para sa karamihan
    ng mga tampok ng PowerDNS. Ito ay puno
    suporta...
    I-download ang Poweradmin
  • 5
    Gin Web Framework
    Gin Web Framework
    Ang Gin ay isang napakabilis na web framework
    nakasulat sa Golang na maaaring gumanap hanggang sa
    40 beses na mas mabilis, salamat dito
    martini-like API at custom na bersyon ng
    httprout...
    I-download ang Gin Web Framework
  • 6
    CEREUS LINUX
    CEREUS LINUX
    CEREUS LINUX basado en MX LINUX con
    varios entornos de escritorios. Ito ay
    isang application na maaari ding makuha
    mula
    https://sourceforge.net/projects/cereu...
    I-download ang CEREUS LINUX
  • Marami pa »

Linux command

Ad