📄 text.tex
字号:
% begin text\banner\section{Introduction} % mtrThe UCI version of the Rand Message Handling System, \MH/,is a software system that performs two functions:\underbar{first},it interfaces a user to a message transport system,so the user may receive and send mail;\underbar{second},it permits the user to maintain an organized mail environment to facilitatethe composition of new messages and the reading of old messages.In short,while not responsible for the delivery of messages,\MH/ aids the user in handling mail.\MH/ was originally developed by the Rand Corporation,and initially was proprietary software.The Department of Information and Computer Science atUniversity of California, Irvine,shortly after joining the Computer Science Network (CSnet),acquired a copy of \MH/,and began additional development of the software.Since that time,the Rand Corporation has declared \MH/ to be in the public domain,and the UCI version of \MH/ has passed through four major releases.The current version, \mh5,is available from U.C.~Irvine for a nominal distribution fee,or may be retrieved from the University of Delaware via anonymous FTP.Much credit must be given to the initial designers and implementors of \MH/:Bruce Borden, Stockton Gaines, and Norman Shapiro.Although \MH/ has suffered significant development at UCIsince Rand's initial release,the fundamental concepts of \MH/'s environs have remained nearly unchanged.In addition,the authors of the current release gratefully acknowledge the comments of themany sites which have run various releases of \MH/ in the past.In particular,the dozen or so beta test sites for \mh5provided tremendous help in stabilizing the current release.\MH/ runs on different versions of the \unix/ operating system(such as Berkeley~4.2\bsd/ and various flavors of v7).In addition,\MH/ supports four different message transport interfaces:\SendMail/\cite{EAllm83},the standard mailer for 4.2\bsd/ systems;\MMDF/\cite{DCroc79} and \MMDFII/\cite{DKing84},the Multi-Channel Memo Distribution Facility developed by the University ofDelawarewhich forms the software-backbone for CSnet\cite{DCome83} mail relay service;SMTP,the ARPA Internet Simple Mail Transfer Protocol\cite{SMTP};and,a stand-alone delivery system.This paper is organized in a straight-forward fashion:Initially,the \MH/ philosophy of mail handling is presented,along with a description of the environment which the \MH/ user is given toprocess mail.Following this,certain advanced features of \MH/ are discussed in more detail,such as facilities for selecting messages,and ``advanced'' concepts in {\it draft} handling.In addition,user interface issues in mail handling are addressed,and the merits of \MH/'s approach is critically examined.Next,the \mh5 distribution package is described.Finally,we conclude by discussing the authors' experience with \MH/ developmentand introducing areas where \MH/ may be further developed.Although familiarity with \MH/ is not assumed on the part of the reader,some knowledge of the \unix/ operating system is useful.Appendix~A gives a short synopsis of the \MH/ commands.\section{The \MH/ Philosophy} % mtrAlthough \MH/ has many traits which tend to distinguish it from other systemswhich handle mail,there is a single fundamental design decision which influences the interfacebetween \MH/ and the user:\MH/ differs from most other systems in that it is composed of many smallprograms instead of one very large one.This architecture gives \MH/ much of its strength,since intermediate and advanced users are able to take advantage of thisflexibility.The key to this flexibility is that the \unix/ shell(usually the {\it C} shell or the {\it Bourne} shell),is the user's interface to \MH/.This means that when handling mail,the entire power of the shell is at the user's disposal,in addition to thefacilities which \MH/ provides.Hence,the user may intersperse mail handling commands with other commands in anarbitrary fashion,making use of command handling capabilities whichthe user's shell provides.Furthermore,rather than storing messages in a complicated data structurewithin a monolithic file,each message in \MH/ is a \unix/ file,and each folder (an object which holds groups of messages)in \MH/ is a \unix/ directory.That is,the directory- and file-structure of \unix/ is used directly.As a result,any \unix/ file-handling command can be applied to any message.To the novice,this may not make much sense or may not seem important.However,as users of \MH/ become more experienced,they find this capability attractive.In addition,this approach is often quite pleasing to system implementors,because it minimizes the amount of coding to be performed,and given a modular design,changes to the software system can be maintained easily.There are, however, performance penalties to be paid with this scheme.This issue is considered later in the paper.Having described how \MH/ fits into the \unix/ environment,we now discuss the mail handling environment which is available to the \MH/user.\subsection{The \MH/ Environs} % jlrIn the \file{\$HOME} directory of each \MH/ user, a file named\profile/ contains static information about the user's \MH/ environment, and default arguments for \MH/ programs.For the latter case,each line of profile takes the form:\example program-name:\ options\endexampleEach \MH/ program consults the user's \profile/ for its options.These options are consulted prior to evaluating any command-line arguments,and so provide the \MH/ user the capability to customize the defaults for eachcommand.Futher, by using the \unix/ link facility,different names can be given to the same command.Since each \MH/ command looksin the \profile/for a component with the name by which it was invoked,it's possible to have different defaults for the same program.For example,it is not uncommon to link \pgm{prompter}(a simple prompting editor front-end)under the name \pgm{rapid} in theuser's \file{bin/} directory, and add to the \profile/:\example rapid:\ -prepend\ -rapid\endexampleAs a result,when \pgm{prompter} is invoked as \pgm{rapid},it automatically uses the \switch{prepend} and \switch{rapid} options.The profile component \eg{Path:} is the path to the user's\MH/-directory, usually \Mail/.In addition to containing the user's folders,the \MH/-directory also contains {\it skeletons} and{\it templates} used by the \MH/ programs,and the user's \context/ file.This latter file has the same format as the user's \profile/,and contains the dynamic,context-dependent information about the user's environment.Whenever \MH/ looks for an \MH/-specific file,such as a template or skeleton,it first consults the user's \MH/-directory,and then a system-wide library area.The \MH/ user always has a {\it current folder},which is the folder in whichthe user is currently (or was last) working.Since any \MH/ program which deals with folders implicitly manipulates thisinformation,the name of the current folder is stored in the \file{context}component \eg{Current-Folder:}.Every folder has a {\it current message} known as \arg{cur}.These values are the defaults for \MH/ commands whichaccept folder and/or messages arguments.\MH/ programs make use of a set of envariableswhich further customize their behavior.The \file{\$MH} envariable, if present,specifies the name of an alternate profile for the user.This allows a user of \MH/ toeasily maintain multiple mail-handling environments.In terms of command syntax,most \MH/ commands accept an optional {\it folder} argument,such as \arg{+outbox}.Unlike most \unix/ commands,all \MH/ commands have switches which are words, rather than single letters.Switches may be abbreviated to the least unambiguous prefix.All \MH/ commands also support a \switch{help} switch,which lists the syntax of the command along with available switches,and the version number of the command.Most \MH/ commands also take a \arg{msg} or \arg{msgs} argumentwhich takes the form of a message number (\eg{1}), a message range (\eg{1-2}),a standard sequence name (\eg{cur}),or a user-defined sequence name (\eg{select}).\tagdiagram{1}{An \MH/ Session}{session}\subsection{An \MH/ Transcript} % jlrFigure~\session\ contains a transcript of a simple \MH/ session.First, \pgm{inc} is run to incorporate the new mail into the user's \eg{+inbox} folder.A \pgm{scan} listing of the mail is printed whileit is being incorporated.(The user could run \pgm{scan} explicitly to generate additional \pgm{scan}listings later on.)The \pgm{scan} listing gives the message number, followedby the date, message sender, and subject.(If the message originated from the user generating the listing,the \eg{to:} addressee is displayed instead of the sender.)If the subject is short,the first part of the message body is displayed after the characters \eg{<<}.The plus sign (`+') afterthe message number indicates the current message.The user \pgm{show\/}s the message, and decides to \pgm{repl\/}y.A reply draftis created using the headers of the message being replied-to,using the default \file{replcomps} template.The default editor, \pgm{prompter}, is called to edit the draft.When an EOT is typed, \pgm{prompter} exits and theuser is left at the \whatnow/ prompt.The option \pgm{send} is chosen.Since there were no problems in posting the draft with the message transportsystem, no additional output is produced.(\MH/ is not verbose by default.)The user then decides to compose a new message.The default skeleton, \file{components}, is copied to the draft,and \pgm{prompter} is once again called.After entering the addresses, subject, and body,the user then \pgm{send\/}s the \file{draft} from the \whatnow/ prompt,using \eg{send\ -verbose}, which causes\MH/ to list out the message addresses as it submits themto the message transport system.\section{Some \MH/ Features} % mtrWe now consider certain advanced features in \MH/.These features have been chosen to demonstrate some useful capabilitiesavailable to the \MH/ user.\subsection{Message Sequences and Selection} % jlr\MH/ has several built-in message sequence names, which maybe used anywhere a \arg{msg} or \arg{msgs} argument is expected.These are:\arg{cur}, \arg{next}, \arg{prev}, \arg{first}, \arg{last}, and \arg{all}.Message ranges may also be specified.For example, \arg{all} is actually \arg{first-last}, and\arg{+mh\ last:5} references the last five messages in your\arg{+mh} folder.A powerful capability of \MH/ is the ability to use not only the pre-definedmessage sequence names,but also arbitrary user-defined message sequence names.Although all \MH/ programs recognize user-defined sequences when appropriate, the \pgm{pick} and \pgm{mark} commands can create and modify user-defined message sequences.The \pgm{mark} command allows low-level manipulation of sequences,and is not particularly interesting in our discussion.The \pgm{pick} command selects certain messages out of a folder.The criteria used for selection may be a search string and/or a date range.Searching is performed on either a specific header in the message(e.g., \eg{To:}),or anywhere within the message.By default,\pgm{pick} lists out the message numbers that matchedthe selection criteria.Thus, \pgm{pick} is useful in backquoted operations to the shell.For example, to scan all the messages in the current folder from ``frated'',
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -