Annotation of 43BSD/contrib/mh/papers/multifarious/text.tex, revision 1.1

1.1     ! root        1: % begin text
        !             2: 
        !             3: \banner
        !             4: 
        !             5: \section{Introduction}                         % mtr
        !             6: \tagfigure{0}{\MTS/ model}{mtsmodel}
        !             7: 
        !             8: The UCI version of the Rand Message Handling System, \MH/,
        !             9: is a user agent.
        !            10: In the interests of brevity,
        !            11: we dispense with the usual definition of terms,
        !            12: refer the reader to Figure~\mtsmodel,
        !            13: and simply note that \MH/ is not responsible for delivering mail.
        !            14: Rather,
        !            15: it interacts with a {\it message transport system}, \MTS/,
        !            16: at two interfaces:
        !            17: it sends mail by placing it through a {\it posting slot} to the \MTS/,
        !            18: and it receives mail by retrieving it through a {\it delivery slot} from the
        !            19: \MTS/.
        !            20: Besides these two \MTS/-specific activities,
        !            21: the tasks which \MH/ addresses are:
        !            22: the composition of messages
        !            23: (which may, or may not, be in reference to previously sent messages),
        !            24: the reading of messages,
        !            25: and the organization of messages.
        !            26: 
        !            27: \MH/ was originally developed by the Rand Corporation,
        !            28: and initially was proprietary software.
        !            29: The Department of Information and Computer Science at
        !            30: University of California, Irvine,
        !            31: shortly after joining the Computer Science Network (CSnet),
        !            32: acquired a copy of \MH/,
        !            33: and began additional development of the software.
        !            34: Since that time,
        !            35: the Rand Corporation has declared \MH/ to be in the public domain,
        !            36: and the UCI version of \MH/ has passed through four major releases.
        !            37: 
        !            38: Much credit must be given to the initial designers and implementors of \MH/:
        !            39: Bruce Borden, Stockton Gaines, and Norman Shapiro.
        !            40: Although \MH/ has suffered significant development at UCI
        !            41: since Rand's initial release,
        !            42: the fundamental concepts of \MH/'s environs have remained nearly unchanged.
        !            43: In addition,
        !            44: the current maintainers of \MH/ gratefully acknowledge the comments of the
        !            45: many sites which have run various releases of \MH/ in the past.
        !            46: 
        !            47: \MH/ runs on different versions of the \unix/ operating system
        !            48: (such as 4.2\bsd/~\unix/ and various flavors of v7~\unix/).
        !            49: In addition,
        !            50: \MH/ supports four different \MTS/ interfaces:
        !            51: \SendMail/\cite{EAllm83},
        !            52: the standard mailer for 4.2\bsd/ systems;
        !            53: \MMDF/\cite{DCroc79} and \MMDFII/\cite{DKing84},
        !            54: the Multi-Channel Memo Distribution Facility developed by the University of
        !            55: Delaware
        !            56: which forms the software-backbone for CSnet\cite{DCome83} mail relays service;
        !            57: SMTP,
        !            58: the ARPA Internet Simple Mail Transfer Protocol\cite{SMTP};
        !            59: and,
        !            60: a stand-alone delivery system.
        !            61: 
        !            62: The organization of this paper is straight-forward,
        !            63: given space considerations.
        !            64: Initially,
        !            65: the \MH/ philosophy of mail handling is presented,
        !            66: along with a description of the environment which the \MH/ user is given to
        !            67: process mail.
        !            68: Following this,
        !            69: certain advanced features of \MH/ are discussed in more detail.
        !            70: In particular,
        !            71: the notion of a {\it draft folder} is introduced,
        !            72: which permits the handling of multiple drafts during composition.
        !            73: In addition,
        !            74: message selection facilities are described.
        !            75: Next,
        !            76: two different aspects of \MH/'s power as a software system are discussed:
        !            77: record handling, in which \MH/ facilitates record processing systems;
        !            78: and,
        !            79: how \MH/ can be employed in a distributed mail environment.
        !            80: This latter section raises questions as to the location of the posting and
        !            81: delivery slots,
        !            82: along with authentication mechanisms.
        !            83: Finally,
        !            84: we conclude by discussing areas of future development which \MH/ may endure.
        !            85: 
        !            86: Although familiarity with \MH/ is not assumed on the part of the reader,
        !            87: some knowledge of the \unix/ operating system is useful.
        !            88: Appendix~A gives a short synopsis of the \MH/ commands.
        !            89: 
        !            90: \section{The \MH/ Philosophy}                  % mtr
        !            91: Although \MH/ has many traits which tend to differ it from other user agents,
        !            92: the design aspect which fundamentally influences the interface between \MH/
        !            93: and the user is that it is composed of many small
        !            94: programs instead of one very large one.
        !            95: This architecture gives \MH/ much of its strength,
        !            96: since intermediate and advanced users are able to take advantage of this
        !            97: flexibility.
        !            98: 
        !            99: The key to this flexibility is that the \unix/ shell
        !           100: (usually the {\it C} shell or the {\it Bourne} shell),
        !           101: is the user's interface to \MH/.
        !           102: This means that when handling mail,
        !           103: the entire power of the shell is at the user's disposal in addition to the
        !           104: facilities which \MH/ provides.
        !           105: Hence,
        !           106: the user may intersperse mail handling commands with other commands in an
        !           107: arbitrary fashion,
        !           108: making use of command handling capabilities that the user's shell provides.
        !           109: 
        !           110: Furthermore,
        !           111: rather than storing messages in a complicated data structure
        !           112: within a monolithic file,
        !           113: in \MH/, each message is a \unix/ file,
        !           114: and each folder (an object which holds groups of messages)
        !           115: is a \unix/ directory.
        !           116: That is,
        !           117: the directory and file structure of \unix/ is used directly.
        !           118: As a result,
        !           119: any \unix/ file-handling command can be applied to any message.
        !           120: 
        !           121: To the novice,
        !           122: this may not make much sense or may not seem important.
        !           123: From three years of observation, we have seen that
        !           124: as users of \MH/ have become more experienced
        !           125: they have found this capability to be quite attractive.
        !           126: In addition,
        !           127: this approach is often quite pleasing to system implementors,
        !           128: because it minimizes the amount of coding to be performed
        !           129: and,
        !           130: given a modular design,
        !           131: changes to the software system can be maintained easily.
        !           132: Our empirical findings confirm our theoretical expectations regarding the
        !           133: \MH/ architecture.
        !           134: 
        !           135: Having described how \MH/ fits into the \unix/ environment,
        !           136: we now discuss the mail handling environment which is available to the \MH/
        !           137: user.
        !           138: 
        !           139: \subsection{The \MH/ Environs}                 % jns
        !           140: \MH/ provides a complementary environment to the user's shell.
        !           141: While the shell maintains a context related to the user's focus in the file
        !           142: system (a {\it current working directory\/}),
        !           143: mail handling is performed in a separate mail folder context.
        !           144: Operations on mail can therefore be
        !           145: performed entirely without regard to the current file system context,
        !           146: although \MH/ does not prevent the user from making use of that context.
        !           147: Certain mail handling functions do make use of information
        !           148: maintained by the shell.
        !           149: For instance, by setting certain shell parameters,
        !           150: called {\it environment variables},
        !           151: alternate mail handling contexts can be selected.
        !           152: 
        !           153: \MH/ conventions often have direct analogs to shell or file system
        !           154: conventions.
        !           155: The shell has a current working directory; \MH/ has a current mail folder.
        !           156: When the user begins a session on the system,
        !           157: the user's ``home directory'' is the base context;
        !           158: \MH/'s default base area, the \Mail/ directory, 
        !           159: is found under the user's home directory.
        !           160: The user's default shell parameters are set upon beginning a new
        !           161: session from a startup profile
        !           162: (called \file{.profile} for \pgm{sh} users
        !           163: or \file{.cshrc} for \pgm{csh} users);
        !           164: the default parameters for \MH/ commands are taken from a file called
        !           165: \profile/ in the user's home directory.
        !           166: The shell has an {\it environment\/};
        !           167: \MH/ has a \context/ file.
        !           168: Each of the user's directories has files;
        !           169: each of the user's \MH/ folders has messages.
        !           170: 
        !           171: These parallels have a basis not only in \MH/'s high level mail
        !           172: handling model,
        !           173: but also in the way low level shell and file
        !           174: system conventions have been abstracted to implement \MH/ conventions.
        !           175: Directories are folders; files are messages.
        !           176: The \Mail/ directory forms the root of a virtual file subsystem within
        !           177: which the user operates on mail without disturbing files outside this
        !           178: mail handling domain. 
        !           179: 
        !           180: \tagfigure{1}{\MH/ File Subsystem\\(directories are shaded)}{MHfiles}
        !           181: \tagdiagram{2}{Elaborated \MH/ Profile}{elab}
        !           182: \subsection{The \MH/ Profile}
        !           183: The \profile/ contains plaintext that describes the user's default mail
        !           184: handling parameters.
        !           185: An example of an elaborated profile is shown in Figure~\elab.
        !           186: 
        !           187: Each line in the profile consists of an \MH/ parameter name terminated
        !           188: with a colon (`:') followed by parameter values.
        !           189: In this example,
        !           190: ``global'' parameters are listed in the first few lines,
        !           191: with program-specific parameters following.
        !           192: Each \MH/ program examines global parameters as well as any parameter
        !           193: with the same name by which the program was invoked.
        !           194: For example,
        !           195: the \pgm{comp} program, which is used to compose new messages to be sent,
        !           196: examines the entries:
        !           197: \medskip
        !           198: {\advance\leftskip by2\parindent
        !           199: \uitem{Path}
        !           200: The path parameter specifies the name of the \MH/ root directory.
        !           201: This is normally named \Mail/.
        !           202: 
        !           203: \uitem{Editor}
        !           204: The editor parameter specifies which text editor is first invoked to create
        !           205: the header information and body of a message draft.
        !           206: In most cases, this editor is the \MH/ default editor, \pgm{prompter}.
        !           207: 
        !           208: \uitem{Draft-Folder}
        !           209: This parameter specifies a folder within which new message drafts
        !           210: are to be created.
        !           211: The draft folder mechanism is an advanced feature of \MH/ that is
        !           212: given separate treatment in a later segment of this paper.
        !           213: 
        !           214: \uitem{comp}
        !           215: The program-specific parameter examined by \pgm{comp} lists
        !           216: user-default options.
        !           217: \par}
        !           218: \medskip
        !           219: 
        !           220: \noindent
        !           221: Other programs invoked by \pgm{comp}
        !           222: (e.g. \pgm{prompter} and \pgm{send\/}) would examine their own profile 
        !           223: entries as well.
        !           224: \MH/ programs have reasonable compiled-in defaults and also permit options to
        !           225: be specified on the shell command line with which the programs are invoked.
        !           226: The order of override precedence is: command line options first,
        !           227: \profile/ options second, and compiled-in defaults last.
        !           228: 
        !           229: Each program option is prefixed by a dash (`-') following the \unix/
        !           230: convention.
        !           231: Unlike most \unix/-style options,
        !           232: however, the options are words rather than single letters.
        !           233: An option may be abbreviated to an unambiguous prefix.
        !           234: Each \MH/ program has a \switch{help} option that
        !           235: displays a brief summary of the program's available options.
        !           236: 
        !           237: \subsection{Folders and Messages}
        !           238: In a typical paper-oriented office,
        !           239: new correspondence arrives and is stacked in an ``in box'',
        !           240: while outgoing correspondence is placed in an ``out box''.
        !           241: Processed material is stored in
        !           242: appropriately labelled folders and filed away for future reference.
        !           243: This state of affairs is modelled in \MH/ with {\it folders}
        !           244: and {\it messages},
        !           245: which are simply text files (one message per file) stored
        !           246: under the folder directories.
        !           247: Most of the user's folders are kept under the \Mail/ directory.
        !           248: 
        !           249: A folder is given an alphanumeric name permissible within the \unix/ file
        !           250: system structure,
        !           251: and each message stored therein is given a numeric name in the range 1..1999.
        !           252: The upper bound on message numbers was
        !           253: selected for efficient access to an internal representation,
        !           254: an array of bits (a ``bit set''),
        !           255: with each bit indicating the presence or
        !           256: absence of a message with a number in the range 1..1999.
        !           257: This internal representation also restricts the order of multiple
        !           258: message reference to an ascending numerical sequence.
        !           259: Other representations have been studied
        !           260: (e.g., an unsorted sparse array of integers),
        !           261: but have been rejected for reasons of efficiency.
        !           262: Folders may contain subfolders,
        !           263: corresponding to \unix/ tree-structured directories.
        !           264: For the sake of completeness,
        !           265: it might be said that ``sub-messages'' exist insofar as message ``digests'',
        !           266: which nest messages inside other messages,
        !           267: are supported by certain advanced \MH/ functions.
        !           268: 
        !           269: The current working folder is the default folder selected for almost
        !           270: all \MH/ commands.
        !           271: To select explicitly a folder for mail handling
        !           272: commands entails specifying the name of the folder, prefixing the name
        !           273: with a plus-symbol (`+').
        !           274: An example is: \example refile\ 1\ 2\ 3\ +chron/yr.1984\endexample
        !           275: This command re-files the selected messages
        !           276: (\file{1}, \file{2}, and \file{3} here)
        !           277: from the current working folder to a subfolder under the
        !           278: folder \file{chron} named \file{yr.1984}.
        !           279: To see the folder/subfolder relationship, refer to Figure~\MHfiles.
        !           280: 
        !           281: The plus-symbol notation is specific to those folders immediately
        !           282: subordinate to the \Mail/ directory.
        !           283: This is analogous to ``absolute pathnames'' in \unix/---those
        !           284: files whose positions in the file system
        !           285: hierarchy are given starting with the system root,
        !           286: names prefixed with the slash character (`/').
        !           287: To specify folders subordinate to the current working folder,
        !           288: an at-sign (`@') is substituted for (`+').
        !           289: It is permitted to use \unix/ dot notation to specify parent folders.
        !           290: Referring to Figure~\MHfiles,
        !           291: if the current working folder were \eg{+chron/yr.1985},
        !           292: then the command \example folder\ @../yr.1984\endexample
        !           293: \noindent
        !           294: selects the subfolder \file{yr.1984} in the parent directory
        !           295: \file{chron}, as the new current working folder.
        !           296: While the current working folder is normally the default, it may be
        !           297: specified explicitly as \eg{@.}.
        !           298: 
        !           299: \subsection{The Context File}
        !           300: The \profile/ contains static information about the user's
        !           301: preferences.
        !           302: A \context/ file, contained in the \Mail/ directory,
        !           303: contains the current mail handling environment information,
        !           304: which changes as different folders, messages, and named message lists
        !           305: (called {\it message sequences\/})  are selected, created, and updated.
        !           306: This information is retained between invocations of \MH/ commands,
        !           307: and is preserved across system sessions.
        !           308: 
        !           309: \tagdiagram{3}{Elaborated Reply Template}{replcomps}
        !           310: \subsection{Templates}
        !           311: The message draft composition functions
        !           312: (\pgm{comp}, \pgm{repl}, \pgm{forw}, and \pgm{dist\/})
        !           313: use certain default header formats,
        !           314: which may be changed by the user through the use of message templates.
        !           315: The exact format of a template may vary among commands.
        !           316: An example of an elaborated template for the reply command \pgm{repl} is
        !           317: shown in Figure~\replcomps.
        !           318: 
        !           319: This template specifies how the automatically-generated header for a
        !           320: draft message in reply to a source message is to be formatted.
        !           321: The syntax is capable of directing output of header lines based on the
        !           322: presence or absence of other header lines in the source message.
        !           323: 
        !           324: Other kinds of templates are used to specify the display formats of
        !           325: messages, or to specify the way that messages are to be included in
        !           326: other messages.  This is similar to the functionality provided by BBN
        !           327: Hermes\cite{HERMES},
        !           328: another powerful mail handling system for \tops20/ based systems.
        !           329: 
        !           330: \subsection{Explaining All This to New Users}
        !           331: There do exist people who do not like \MH/.%
        !           332: \nfootnote{At UCI, these
        !           333: people are reported to be weeded out at an early stage and quietly taken to the
        !           334: Ministry of Love to be made {\it uncrimethinkful}.}
        !           335: The emerging pattern of complaints from such people indicates that \MH/
        !           336: accentuates their perceptions of the deficiencies of \unix/,
        !           337: to wit, lack of interactivity and lack of easily found help facilities.
        !           338: Also,
        !           339: some feel that the proximity of the mail handling environment to the
        !           340: operating system is a distraction, rather than an asset.
        !           341: There have been some attempts to make \MH/ more accessible to users who prefer
        !           342: menu-oriented or monolithic mail system interfaces.%
        !           343: \nfootnote{For example,
        !           344: \pgm{mhe} from Brian Reid of Stanford University
        !           345: and \pgm{emh} from Marshall Rose
        !           346: are instances of macro packages for James Gosling's \EMACS/ extensible editor,
        !           347: while the \pgm{hm} program from Jim Guyton of the Rand Corporation is a
        !           348: monolithic \MH/ interface.
        !           349: As of this writing,
        !           350: none of these programs is documented in the literature.}
        !           351: 
        !           352: In truth,
        !           353: users new to \unix/ do not always acclimate to \MH/ easily.
        !           354: The command set is undistinguishably mixed in with all other \unix/
        !           355: utilities, and it is not easy, without aid of a manual,
        !           356: to pick out the necessary commands.
        !           357: \MH/ does not provide any ``hand-holding'' to guide
        !           358: the user through a minimally useful command subset.
        !           359: 
        !           360: Another problem is that the initial default user profile is too often sparse,
        !           361: containing only a \eg{Path:} parameter.
        !           362: \MH/ commands will perform adequately without specific information
        !           363: in the profile,
        !           364: so new users often neglect optionally useful \MH/ capabilities,
        !           365: eventually becoming frustrated with the limited default capabilities,
        !           366: yet unable to determine without researching through the user's manual,
        !           367: the necessary options that would solve their problems.
        !           368: 
        !           369: The currently available means for learning how to use \MH/ are:
        !           370: \medskip
        !           371: {\advance\leftskip by 2\parindent
        !           372: \item{$\bullet$}
        !           373: One-on-one tutoring by knowledgeable \MH/ users,
        !           374: which has so far shown the best results with new users.
        !           375: 
        !           376: \item{$\bullet$}
        !           377: Consulting the {\it \MH/ Tutorial\/}\cite{MRose84b},
        !           378: or the {\it \MH/ User's Manual\/}\cite{MRose85a}.
        !           379: 
        !           380: \item{$\bullet$}
        !           381: Using the \pgm{msh} (``\MH/ shell'') program as a training shell to read
        !           382: bulletin boards.
        !           383: The \pgm{msh} command is an interactive program that provides some help
        !           384: messages and can list available \MH/ commands.
        !           385: \par}
        !           386: \medskip
        !           387: 
        !           388: \noindent
        !           389: No on-line tutorial materials are presently distributed with the \mh5
        !           390: system, although there are some plans in the works to provide a program
        !           391: to help with setting up the user profile that would also provide
        !           392: operational tips for \MH/ and \unix/. 
        !           393: 
        !           394: It should be noted that these perceived defects of \MH/ do not affect its
        !           395: utility any more than analogous problems with any operating system
        !           396: will diminish its actual capabilities.
        !           397: Users may quarrel with the means chosen for orchestrating \MH/,
        !           398: but the fact remains that \MH/ is a very
        !           399: useful set of mail handling tools that is flexible,
        !           400: infinitely interoperable with other \unix/ text handling tools,
        !           401: and yet simple enough for new users to grasp once they are given the 
        !           402: proper start.
        !           403: The fact that better tutorial materials and training do not exist only means
        !           404: that some further work needs to be done in the area of user-education.
        !           405: 
        !           406: \section{A Few Advanced Features}              % mtr
        !           407: We now consider certain advanced features in \MH/.
        !           408: These features have been chosen to demonstrate some useful capabilities
        !           409: available to the \MH/ user.
        !           410: It should be noted that many capabilities of \MH/,
        !           411: such as shell scripts for extensibility,
        !           412: mail delivery hooks,
        !           413: the personal aliasing facility,
        !           414: and so forth,
        !           415: are not described here for lack of space.
        !           416: 
        !           417: \subsection{Draft Folders}                     % jns
        !           418: The {\it draft folder} facility provides a method by which several
        !           419: message drafts can be simultaneously composed and maintained until
        !           420: sent.
        !           421: The rationale for this is that partially composed message drafts,
        !           422: perhaps elaborate sets of separate messages,
        !           423: can be incrementally completed,
        !           424: while a folder provides a consistent organization for drafts in progress.
        !           425: This is comparable to similar situations in the ``paper world'' where
        !           426: contracts, business correspondence, and other communications,
        !           427: rather than being created serially with each posted in turn before composing
        !           428: the next,
        !           429: are usually left in various stages of
        !           430: completion before they are eventually mailed.
        !           431: 
        !           432: The \eg{Draft-Folder:} parameter value in the \MH/ profile is used to
        !           433: specify a default draft folder,
        !           434: where each draft is given a number and an ``artificial'' date stamp.
        !           435: Provided that the proper header fields have been completed,
        !           436: a \pgm{scan} listing of the draft folder provides a summary of
        !           437: each draft in progress:
        !           438: to whom the message is to be sent,
        !           439: the subject,
        !           440: the date of the draft's initial creation and optionally,
        !           441: the current size of the draft in terms of characters.
        !           442: Experienced users of \MH/ may often keep as many as five to ten unfinished
        !           443: drafts in their draft folder.
        !           444: ``Draft clutter'' can be remedied easily with the \pgm{rmm} command.
        !           445: 
        !           446: \subsection{Message Selection}                 % stef
        !           447: \MH/ commands accept {\it message sequence} specifications to specify which
        !           448: \arg{msg} or \arg{msgs} are to be operated upon.
        !           449: Here are some examples:
        !           450: \example scan\ 1\ 3\ 5\ 19\ 185\endexample
        !           451: to get a scan listing of messages 1, 3, 5, 19 and 185.
        !           452: \example scan\ pseq\endexample
        !           453: to get a scan listing of whatever message sequence was given to the previous
        !           454: MH command (in this case 1, 3, 5, 19, and 185).
        !           455: \example show\ first\ last\endexample
        !           456: to get a display of the first and last messages in the folder.
        !           457: The \MH/ sequences named \eg{first} and \eg{last} are system defined pseudo
        !           458: sequences which act like explicit sequences when given to MH commands.
        !           459: Others are \eg{cur}, \eg{next}, \eg{prev},
        !           460: and \eg{all} which respectively specify the ``current'' message,
        !           461: the ``next'' after cur,
        !           462: the ``previous'' message before cur,
        !           463: or ``all'' messages in the current-folder.
        !           464: The \pgm{scan} assumes \eg{all} while show assumes \eg{cur},
        !           465: unless overridden on the command line.
        !           466: Over-ride precedence is: command-line first,
        !           467: \profile/ second,
        !           468: and compiled-in default last.
        !           469: 
        !           470: Users can define additional sequences for similar use,
        !           471: but must avoid using reserved names.
        !           472: A few optional sequence names have been preempted by \MH/,
        !           473: such as \eg{pseq} to mean the
        !           474: ``sequence used by the previous MH command,''
        !           475: and \eg{unseen} to mean the ``messages not yet seen by the user.''
        !           476: Sometimes these preempted names can be changed by resetting them in the
        !           477: user's \MH/ profile,
        !           478: but these facilities are beyond the scope of this discussion.
        !           479: 
        !           480: The mark command can be used to set the values for user-defined sequences:
        !           481: \example mark\ 1\ 3\ 5\ -seq\ zzz\\
        !           482:         mark\ 4\ 5\ 9\ -seq\ zzz\ -nozero\endexample
        !           483: will create a user-sequence named \eg{zzz} and put the sequence \eg{1 3 5}
        !           484: in it.
        !           485: The \pgm{mark} command assumes that any prior content in an
        !           486: existing user-sequence should be ``zeroed'' before the new sequence value is
        !           487: recorded.
        !           488: This can be prevented with a \switch{nozero} switch on the command line,
        !           489: to add \eg{4 5 9} to the original \eg{1 3 5} to yield \eg{1 3 4 5 9}.
        !           490: \example mark\ pseq\ zzz\ -seq\ zzznew\endexample
        !           491: will create a new sequence named \eg{zzznew} and set its value to the combined
        !           492: (inclusive or) of the existing user-sequences in \eg{pseq} and \eg{zzz} for
        !           493: its value.
        !           494: 
        !           495: Another more powerful way to set the values of a user-sequence is with
        !           496: the pick command, which provides full string search capabilities:
        !           497: \example pick\ -from\ mrose\ -seq\ yyy\\
        !           498:         pick\ -from\ mrose\ -seq\ yyy\ -list\endexample
        !           499: will search though all the \eg{From:} fields in the current folder for the
        !           500: string \eg{mrose} and place the list of ``hits''
        !           501: in the sequence named \eg{yyy}.
        !           502: The \switch{list} switch will cause the resulting list to also be displayed on
        !           503: the user's terminal.
        !           504: If no \switch{seq\ name} switch is given,
        !           505: pick will assume \switch{list}
        !           506: and will simply display the resulting list of hits on the user's terminal.
        !           507: 
        !           508: This \switch{list} behavior of pick allows users to take advantage of the
        !           509: \unix/ backquoting facility to embed searches in other \MH/ commands.
        !           510: \example scan\ \bq{pick\ -from\ mrose}\endexample
        !           511: will produce a scan listing of \switch{from\ mrose} hits because the
        !           512: \unix/ shell will spawn a process to execute the
        !           513: \eg{pick\ -from\ mrose} segment and return the \switch{list}
        !           514: results as the message sequence to be scanned.
        !           515: \example mark\ pseq\ -seq\ zzz\endexample
        !           516: could then be used to capture the ``previous sequence'' in zzz for later use.
        !           517: 
        !           518: One last facility should be mentioned here.
        !           519: It is also possible to negate a sequence to specify a new sequence.
        !           520: The default negation string is \eg{not}.
        !           521: \example scan\ notzzz\\
        !           522:         mark\ notzzz\ -seq\ zzznot\endexample
        !           523: will give the user a scan listing of all the messages in the current folder
        !           524: that are not included in the sequence \eg{zzz}.
        !           525: The mark example will of course record the negation of zzz in zzznot.
        !           526: It is a bad idea to use the string \eg{not} as the beginning of any
        !           527: user-sequence name,
        !           528: if \eg{not} is defined as the negation string.
        !           529: (Users can choose a different negation string.)
        !           530: 
        !           531: From this discussion,
        !           532: it should be clear that \MH/ provides a uniform set of ways to capture
        !           533: and use sequences to augment the user's short- and long-term
        !           534: memory and to manipulate lists of interesting messages.
        !           535: User-sequences are normally stored as RFC822 labeled text lines in a file
        !           536: (e.g., \sequences/)
        !           537: in the folder with the messages referred to in the sequence.
        !           538: If a user does not have write access to a folder,
        !           539: then the \MH/ \pgm{mark} and \pgm{pick} commands will
        !           540: create a ``private'' sequence in the user's \context/ file.
        !           541: Switches are available to give the user control over
        !           542: the choice of \switch{private} or \switch{public} sequence options.
        !           543: 
        !           544: Since user-sequences are stored as ordinary text lines in RFC822 labeled
        !           545: fields,
        !           546: there is no prohibition against someone writing programs to perform
        !           547: any kind of useful manipulation on \MH/ sequences.
        !           548: Boolean operators can be implemented,
        !           549: or complex indexing structures could be developed to serve special purposes.
        !           550: If a DBMS can utilize \unix/ pathnames or \MH/ \arg{+folder} and
        !           551: message names,
        !           552: then the full power of the DBMS might be applied.
        !           553: The intention of \MH/ development teams has always been to leave open the
        !           554: widest possible array of options for later extension.
        !           555: The only restrictions should be the user's ingenuity,
        !           556: programming prowess, and the available machine resources.
        !           557: Unfortunately these resources always seem to be available in
        !           558: limited quantities.
        !           559: 
        !           560: \subsection{Distribution Lists}                        % mtr
        !           561: \MH/ has a convenient interface to the UCI BBoards facility\cite{MRose84a}.%
        !           562: \nfootnote{The UCI BBoards facility can run under either the \MMDF/ or
        !           563: \SendMail/,
        !           564: or in a more restricted form under stand-alone \MH/.}
        !           565: This facility permits the efficient distribution of interest group messages
        !           566: on a single host,
        !           567: to a group of hosts under a single administration,
        !           568: and to the ARPA Internet community.
        !           569: 
        !           570: Described simply, an interest group is composed of a number of subscribers
        !           571: with a common interest.
        !           572: These subscribers post mail to a single address, known as a
        !           573: {\it distribution} address (e.g., {\tx MH-Workers@UCI}).
        !           574: From this distribution address, a copy of the message is sent to each
        !           575: subscriber.
        !           576: Each group has a {\it moderator},
        !           577: which is the person that runs the group.
        !           578: This moderator can usually be reached at a special address,
        !           579: known as a {\it request} address (e.g., {\tx MH-Workers-Request@UCI}).
        !           580: Usually, the responsibilities of the moderator are quite simple,
        !           581: since the mail system handles distribution to subscribers automatically.
        !           582: In some interest groups,
        !           583: instead of each separate message being distributed directly to subscribers,
        !           584: a batch of (related) messages are put into a {\it digest} format by the
        !           585: moderator and then sent to the subscribers.
        !           586: Although this requires more work on the part of the moderator
        !           587: and introduces delays,
        !           588: such groups tend to be better organized.
        !           589: 
        !           590: Unfortunately, some problems arise with the scheme outlined above.
        !           591: First, if two users on the same host subscribe to the same interest group,
        !           592: two copies of the message will be delivered.
        !           593: This is wasteful of both processor and disk resources at that host.
        !           594: 
        !           595: Second,
        !           596: some groups carry a lot of traffic.
        !           597: Although subscription to a group does indicate interest on the part of a
        !           598: subscriber,
        !           599: it is usually not interesting to get 50 messages or so delivered to 
        !           600: the user's private maildrop each day,
        !           601: interspersed with {\it personal} mail,
        !           602: that is likely to be of a much more important and timely nature.
        !           603: 
        !           604: Third, if a subscriber's address in a distribution list 
        !           605: becomes ``bad'' somehow and causes failed mail to be returned,
        !           606: the originator of the message is normally notified.
        !           607: It is not uncommon for a large list to have several bogus addresses.
        !           608: This results in the originator being flooded with ``error messages'' from
        !           609: mailers across the Internet stating that a given address on the list was
        !           610: bad.
        !           611: Needless to say,
        !           612: the originator usually does not care if the bogus addresses got a copy
        !           613: of the message or not.
        !           614: The originator is merely interested in posting a message
        !           615: to the group at large.
        !           616: On the other hand,
        !           617: the moderator of the group does care if there are bogus addresses on the list,
        !           618: but ironically does not receive notification.
        !           619: 
        !           620: To solve all of these problems,
        !           621: the UCI BBoards facility introduces a new entity into the picture:
        !           622: all interest group mail is handled by a special component of the mail system.
        !           623: The distribution address maps to a special {\it channel} that performs
        !           624: several actions.
        !           625: First, if local delivery is to be performed,
        !           626: then a copy of the message is placed in a global maildrop for the interest
        !           627: group with a timestamp and a unique number.
        !           628: Local users can read messages posted for the interest group by reading this
        !           629: ``public'' maildrop.
        !           630: Second, if further distribution is to take place,
        !           631: a copy of the message is sent to the distribution address in such a way that
        !           632: if any of the addresses are bogus,
        !           633: failure notices will be returned to the local maintainer of the group
        !           634: address list, rather than the originator of the message.
        !           635: 
        !           636: This scheme has several advantages:
        !           637: First, messages delivered to the local host are processed and saved once
        !           638: in a globally accessible area.
        !           639: The UCI BBoards facility supports software which allows a user to query an
        !           640: interest group for new messages and to read and process
        !           641: those messages in the \MH/-style.
        !           642: Second, once a host administrator subscribes to an interest group,
        !           643: each user can join or quit the list's readership without
        !           644: contacting anyone.
        !           645: Third, a hierarchical distribution scheme can be constructed to
        !           646: reduce the amount of delivery effort.
        !           647: Fourth, errors are prevented from propagating.
        !           648: When an address on the distribution list goes bad,
        !           649: the list moderator who is immediately responsible for the address is notified.
        !           650: If a local moderator does not exist,
        !           651: then the local PostMaster is notified (not the global group moderator).
        !           652: 
        !           653: In addition to solving the problems outlined above,
        !           654: the UCI BBoards facility supports several other capabilities.
        !           655: BBoards may be automatically archived in order to conserve disk space and
        !           656: reduce processing time when reading current items.
        !           657: Also,
        !           658: the archives can be separately maintained on tape for access by interested
        !           659: researchers.
        !           660: 
        !           661: Special alias files may be generated which allow the \MH/ user to shorten
        !           662: address type-in.
        !           663: For example, instead of sending to {\tx SF-Lovers@Rutgers},
        !           664: a user of \MH/ usually sends to \eg{SF-Lovers} and the \MH/ aliasing
        !           665: facility automatically makes the appropriate expansion in the headers of the
        !           666: outgoing message.
        !           667: Hence,
        !           668: the user need only know the name of an interest group and not its global
        !           669: network address.
        !           670: 
        !           671: Finally, the UCI BBoards facility supports {\it private} interest groups
        !           672: using the \unix/ group access mechanism.
        !           673: This allows a group of people on the same or different machines to conduct a
        !           674: private discussion.
        !           675: 
        !           676: The practical upshot of all this is that the UCI BBoards facility automates
        !           677: the vast majority of BBoards handling from the point of view of both the
        !           678: PostMaster and the user.
        !           679: 
        !           680: \MH/ provides three programs to deal with interest groups.
        !           681: The \pgm{bbc} program is used to check on the status of one or more groups,
        !           682: and to optionally start an \MH/ shell on those groups which the user is
        !           683: interested in.
        !           684: The \pgm{bbl} program can be used to perform manual maintenance on a
        !           685: discussion group beyond the normal automatic capabilities of the UCI BBoards
        !           686: facility.
        !           687: Finally,
        !           688: the \pgm{msh} program implements an \MH/ shell for reading BBoards,
        !           689: in which nearly all of the \MH/ commands are implemented in a single program.
        !           690: 
        !           691: Observant readers may note that the use of \pgm{msh} is contrary to the \MH/
        !           692: philosophy of using relatively small, single-purposed programs.
        !           693: Sadly,
        !           694: the authors admit that this is true.
        !           695: In an effort to avoid some problems with shared-access and message naming
        !           696: conventions (which are beyond the scope of this paper),
        !           697: BBoards are kept in maildrop format (monolithic) instead of folders.
        !           698: Some research has gone into overcoming this problem in order to restore
        !           699: \MH/'s purity of purpose,
        !           700: but all solutions proposed to date are either unworkable or require
        !           701: significant recoding of \MH/'s internals.
        !           702: 
        !           703: \subsection{Encapsulation}                     % mtr
        !           704: As described above,
        !           705: some interest groups appear in digest form.
        !           706: This means that the messages which appear in such a forum actually
        !           707: encapsulate other messages in their body.
        !           708: It turns out that the generation of a digest is not at all unlike the
        !           709: generation of a draft which forwards one or more messages.
        !           710: In RFC934\cite{MRose85b},
        !           711: a method is proposed to standardize message encapsulation for the ARPA
        !           712: Internet community.
        !           713: \MH/ uses this method for the generation of digests,
        !           714: forwardings,
        !           715: and blind-carbon-copies.
        !           716: 
        !           717: A key requisite for using an encapsulation technique for digests and
        !           718: forwardings is the ability to later decapsulate the contents.
        !           719: Without this ability,
        !           720: the forwarded messages are of little use to the recipients because they can
        !           721: not be distributed, forwarded, replied-to, searched-for,
        !           722: or otherwise processed as separate individual messages.
        !           723: In the case of a digest,
        !           724: a bursting capability is especially useful.
        !           725: Not only does the ability to burst a digest permit a recipient of the digest
        !           726: to reply to an individual digestified message,
        !           727: but it also allows the recipient to selectively process the other messages
        !           728: encapsulated in the digest.
        !           729: 
        !           730: For example,
        !           731: a single digest issue usually contains more than one topic.
        !           732: A subscriber may only be interested in a subset of the topic discussed in a
        !           733: particular issue.
        !           734: With a bursting capability,
        !           735: the subscriber can burst the digest,
        !           736: scan the headers,
        !           737: and process those messages which are of interest.
        !           738: The others can be ignored,
        !           739: if the user so desires.
        !           740: 
        !           741: Note that with proper encapsulation technology,
        !           742: one can argue for the re-distribution of messages simply becoming
        !           743: special cases of message forwarding.
        !           744: For example,
        !           745: the NBS Standard for Mail Interchange\cite{FIPS98}
        !           746: and the recent CCITT draft on Mail Handling Systems standards\cite{X.400}
        !           747: both discourage the re-distribution facility in favor of forwarding
        !           748: by encapsulation.
        !           749: 
        !           750: \subsection{Encapsulation and Blind-Carbon-Copies} % mtr
        !           751: Many user agents support a blind-carbon-copy facility.
        !           752: \MH/ implements this using a form of encapsulation.
        !           753: It may not be apparent to the reader as to why encapsulation of the original
        !           754: message is a good way to deliver blind-carbon-copies.
        !           755: With a blind-carbon-copy facility,
        !           756: two types of addressees are possible in the draft to be sent:
        !           757: {\it visible} and {\it blind}.
        !           758: The visible recipients are listed as addresses in the \eg{To:} and \eg{cc:}
        !           759: fields,
        !           760: and the blind recipients are listed in the \eg{Bcc:} fields of the draft.
        !           761: The idea behind this facility is that copies of the draft which are
        !           762: delivered to the \eg{To:} and \eg{cc:} recipients should show the visible
        !           763: recipients only.
        !           764: 
        !           765: A major concern with a blind-carbon-copy facility
        !           766: is that blind recipients should be prevented from accidentally replying to the
        !           767: message in such a way that the visible recipients are included as addressees
        !           768: in the reply.
        !           769: 
        !           770: There are several methods to implement this facility.
        !           771: Most rely on posting two drafts with the \MTS/.
        !           772: One draft is destined for visible recipients,
        !           773: and simply lacks the \eg{Bcc:} fields of the original draft.
        !           774: The second draft is destined for the blind recipients.
        !           775: The question then arises as to what form this latter draft posted should take.
        !           776: 
        !           777: One approach might be to disable the \eg{To:} and \eg{cc:} fields of the
        !           778: draft sent to the blind recipients
        !           779: (e.g., by prefixing the string \eg{BCC-} to these fields).
        !           780: Unfortunately,
        !           781: this is often very confusing to the blind recipients
        !           782: because it differs from what the visible recipients got.
        !           783: Although accidental replies are not possible,
        !           784: it is often difficult to tell that the message received is the result of a
        !           785: blind-carbon-copy.
        !           786: 
        !           787: The method used by \MH/ is to post two drafts,
        !           788: a visible draft for the visible recipients,
        !           789: and a blind draft for the blind recipients.
        !           790: The visible draft consists of the original draft without any \eg{Bcc:} fields.
        !           791: The blind draft contains the visible message as a forwarded message.
        !           792: The headers for the blind draft contain the minimal RFC822 headers
        !           793: (\eg{From:} and \eg{Date:})
        !           794: and,
        !           795: if the original draft had a ``Subject:'' field,
        !           796: then this header field is also included.
        !           797: In addition,
        !           798: \MH/ alerts the recipient that the message is a blind-carbon-copy by
        !           799: placing this information in the initial encapsulation information in the
        !           800: blind recipient's copy.
        !           801: This scheme prevents inadvertent replies while allowing the recipient
        !           802: full access to an exact copy of what was sent to the visible recipients.
        !           803: 
        !           804: \section{\MH/ as a Record Handler}             % stef
        !           805: Although message format standards such as RFC822
        !           806: (and its predecessors) were originally devised to facilitate
        !           807: computer processing of interpersonal messages,
        !           808: there is no special reason why the concept should be
        !           809: limited to interpersonal message processing.
        !           810: Messages are just one of a variety of useful record forms that might
        !           811: be created in one place and transfered to another for processing.
        !           812: In this regard,
        !           813: RFC822 wisely left open the option for higher level applications to use
        !           814: arbitrary header names or field contents by proscribing \MTS/ use
        !           815: of header names beginning with \eg{X-}.
        !           816: 
        !           817: \MH/ carries though on this idea by allowing the \pgm{pick} command
        !           818: to accept any arbitrary field name for string searches,
        !           819: so MH users can select on any arbitrary field name without prior definition.
        !           820: Beyond this,
        !           821: since all messages are simply files in \unix/ directories,
        !           822: applications can be developed to apply any programmable process to
        !           823: any selected message.
        !           824: 
        !           825: For example,
        !           826: a {\it Time Card Form} might be called up by an \MH/ user with
        !           827: \example comp\ -form\ timecomps\endexample
        !           828: to enter time and attendance information into \eg{X-time$\tdots$:} fields in a
        !           829: draft message record.
        !           830: The \file{timecomps} form would include the address of a
        !           831: supervisor who should validate the information,
        !           832: along with empty fields to be filled in with data.
        !           833: In fancy applications,
        !           834: this might be done with a sophisticated interactive data entry tool
        !           835: which would validate entered information,
        !           836: but this is an open choice within the \MH/ framework.
        !           837: Another
        !           838: alternative would be to use a received message as the blank form to add a
        !           839: degree of central control over time and attendance reporting forms.
        !           840: 
        !           841: Receiving supervisors could simply register approval by using the \MH/
        !           842: \pgm{dist} command to resend subordinates' time cards to higher approval
        !           843: levels, or
        !           844: to send them to a time card collection address.
        !           845: The \MH/ \pgm{dist} command automatically inserts ``ReSent'' header fields
        !           846: showing who resent it and the resending date.
        !           847: Alternatively,
        !           848: the MH \pgm{forw} command could be used to transfer a batch of approved time
        !           849: cards to the next processing station.
        !           850: If desired, a new ``approval'' command could be programmed to provide a more
        !           851: trusted authentication, perhaps with encryption of the content.
        !           852: Trusted mail systems, such as \trustedmail/\cite{MRose85c},
        !           853: are becoming available for this purpose.
        !           854: 
        !           855: At the final collection destination,
        !           856: an automated User Agent could be programmed to directly load the data into
        !           857: the Time and Attendance DBMS by
        !           858: parsing and decoding the data contained in the \eg{X-time$\tdots$:} fields.
        !           859: It might be noted that while the RFC822 does not restrict the
        !           860: internal forms of messages,
        !           861: it is necessary to conform to the interchange standard if specialized filters
        !           862: for message headers are not to be built to serve as {\it export laundries}
        !           863: (a term originating with Stephen H.~Willson to describe conformance
        !           864: transformations in \Ada/).
        !           865: 
        !           866: \subsection{Mapping Between Record Modes (DBMS/MHS)}
        !           867: This time and attendance example suggests that it is possible to define
        !           868: one-to-one mappings between RFC822 fields and DBMS data elements.
        !           869: For every DBMS data element definition,
        !           870: there is a potential corresponding RFC822 transferable equivalent
        !           871: definition which can facilitate mail transfers of record information.
        !           872: Indeed,
        !           873: a large portion of the definitional work is already done where a Data Base
        !           874: has already been defined.
        !           875: All that remains is to define the RFC822 equivalents.
        !           876: 
        !           877: The suggestion that a batch of time cards be forwarded inside a ``cover''
        !           878: message implies that it is possible in the \MH/ framework to recursively
        !           879: bundle messages within messages, and be able to recover the originals for
        !           880: separate processing at a receiving destination.
        !           881: The \MH/ \pgm{burst} command can be applied recursively for this purpose
        !           882: because \MH/ encapsulation uses an unambiguous scheme to delimit messages
        !           883: that are enclosed inside other messages.
        !           884: Thus,
        !           885: it should be possible to extract a structured set of records from a DBMS
        !           886: and mail the set to a foreign site for processing, or reinsertion into
        !           887: another DBMS.
        !           888: As long as the DBMS data element definitions
        !           889: correctly correspond to the RFC822 definitions,
        !           890: it is not even necessary
        !           891: for the source and destination DBMS systems to be the same.
        !           892: 
        !           893: From this discussion,
        !           894: it is concluded that the \MH/ framework can be useful
        !           895: for building distributed record handling systems where people at widely
        !           896: scattered locations must create and submit record forms for processing
        !           897: at distant locations.
        !           898: This might prove to be especially effective when
        !           899: a mail system is also needed for other communication purposes.
        !           900: A network of sales offices is a good example,
        !           901: where general message service would be used for communications
        !           902: with remote manufacturing and distribution centers,
        !           903: and could also be used for an order entry system.
        !           904: 
        !           905: Another example might be for structured communications, as occur in
        !           906: requisition and purchasing systems.
        !           907: Requisitions could be filled in and mailed to approval offices,
        !           908: and resent or forwarded to others for action.
        !           909: At some point,
        !           910: the requisitions could flow into other other more suitable
        !           911: processing systems as needed.
        !           912: At the very least, the ability to originate
        !           913: requisitions can be distributed to anyone with access to a mail system
        !           914: that can originate a proper requisition form.
        !           915: 
        !           916: As a last example,
        !           917: \MH/ already supports group discussions with its BBoard facilities
        !           918: which allow for automatic sorting of mail by group address,
        !           919: with shared private or public group access to contributed items.
        !           920: As has been shown to be possible with administrative record systems,
        !           921: there is no obvious limit to the ways that group discussion traffic
        !           922: might be organized into structured collections with indices,
        !           923: annotations, or reference pointers
        !           924: to aid in making conference archives more useful.
        !           925: Indeed, \MH/ tools could even be used to feed discussion items into
        !           926: existing conference systems.
        !           927: 
        !           928: \section{Distributed Mail}                     % mtr
        !           929: Next, we consider how \MH/ might be used in a distributed mail environment.
        !           930: Two schemes are discussed:
        !           931: one in which connectivity is high and connections are relatively ``cheap'',
        !           932: and one in which connectivity is low and connections are ``expensive''.
        !           933: 
        !           934: \subsection{The ARPA Internet Environs}                % mtr
        !           935: The ARPA Internet community consists of many types of heterogeneous nodes.
        !           936: Some hosts are large mainframe computers,
        !           937: others are personal workstations.
        !           938: All communicate using the \milstd/ TCP/IP protocol suite\cite{IP,TCP}.
        !           939: Messages which conform to the Standard for the Format of ARPA Internet Text
        !           940: Messages\cite{DCroc82}
        !           941: are exchanged using the Simple Mail Transfer Protocol\cite{SMTP}.
        !           942: 
        !           943: On smaller nodes in the ARPA Internet it is often impractical to maintain
        !           944: a message transport agent.
        !           945: For example,
        !           946: a workstation may not have sufficient resources (cycles, disk space)
        !           947: in order to permit an SMTP server and associated local mail delivery system
        !           948: to be kept resident and continuously running.
        !           949: Furthermore,
        !           950: the workstation could be off-net for extended periods of time.
        !           951: Similarly,
        !           952: it may be expensive (or impossible) to keep a personal computer
        !           953: interconnected to an IP-style network for long periods of time.
        !           954: In other words,
        !           955: the node is lacking the resource known as ``connectivity''.
        !           956: 
        !           957: Despite this,
        !           958: it is often desirable to be able to process mail with \MH/ on these smaller
        !           959: nodes,
        !           960: and they often support a user agent to aid the tasks of mail handling.
        !           961: To solve this problem,
        !           962: a network node which can support a message transport entity
        !           963: (known as {\it service} host) offers
        !           964: a maildrop service to these less endowed nodes
        !           965: (known as {\it client} hosts).
        !           966: The Post Office Protocol\cite{JReyn84} (POP) is intended to permit a
        !           967: workstation to dynamically access a maildrop on a service host to pick-up
        !           968: mail.%
        !           969: \nfootnote{Actually,
        !           970: there are three different descriptions of the POP.
        !           971: The first, cited in \cite{JReyn84},
        !           972: was the original description of the protocol,
        !           973: which suffered from certain problems.
        !           974: Since then,
        !           975: two alternate descriptions have been developed.
        !           976: The official revision of the POP\cite{MButl85},
        !           977: and the revision of the POP which \MH/ uses
        !           978: (which is documented in an internal memorandum in the \MH/ release).
        !           979: This paper considers the POP in the context of the \MH/ release.}
        !           980: The level of access includes the ability to
        !           981: determine the number of messages in the maildrop and the size of each message,
        !           982: as well as to retrieve and delete individual messages.
        !           983: More sophisticated implementations of the POP server
        !           984: are able to distinguish between the header and body portion of each message,
        !           985: and send $n$ lines of a message to the POP client.
        !           986: This capability is useful in thinly connected environments where conservation
        !           987: of bandwidth is important.
        !           988: By utilizing a more intelligent POP client,
        !           989: a user may generate ``scan~listings'' and dynamically decide which messages
        !           990: are worth taking delivery on.
        !           991: The philosophy of the POP is to put intelligence in the
        !           992: POP clients and not the POP servers.
        !           993: 
        !           994: The underlying paradigm in which the POP functions is that of a
        !           995: split-slot/remote-\UA/ model.
        !           996: The client host (such as a workstation) is without a co-resident
        !           997: {\it message transport agent} (\MTA/),
        !           998: and thus makes use of a service host with an \MTA/ to obtain posting (SMTP)
        !           999: and delivery (POP) services.
        !          1000: The entity which supports this type of environment is called a remote-\UA/
        !          1001: since the user agent resides on a different host than its associated message
        !          1002: transport agent.
        !          1003: 
        !          1004: One very important issue which must be raised at this point is one of
        !          1005: authentication.
        !          1006: The POP requires that a client identify itself to the server using a
        !          1007: server-specific user-id and a server/user-specific password.
        !          1008: This authentication is required to prevent unauthorized entities from
        !          1009: accessing a maildrop on a POP service host.
        !          1010: It must be emphasized that the POP client is not a ``trusted'' entity of the
        !          1011: \MTS/ in any sense at all.
        !          1012: 
        !          1013: Ideally,
        !          1014: one would also like to authenticate mail as it is posted on the POP service
        !          1015: host using the SMTP.
        !          1016: Currently,
        !          1017: in the ARPA Internet community,
        !          1018: no authentication is done with SMTP transactions.
        !          1019: This is considered a shortcoming by those interested in researching the
        !          1020: split-\UA/ model of distributed mail.
        !          1021: The MZnet environment,
        !          1022: discussed in the next section,
        !          1023: has authentication facilities for posting mail.
        !          1024: 
        !          1025: The current release of \MH/ supports the above model fully:
        !          1026: a POP client program is available to retrieve a maildrop on a POP service
        !          1027: host.
        !          1028: In addition,
        !          1029: using the SMTP configuration for delivery in \MH/,
        !          1030: a user is able to specify a search-list of service hosts (and networks)
        !          1031: with which to try to post mail.
        !          1032: Using this search-list,
        !          1033: when an \MH/ user posts a draft,
        !          1034: the \pgm{post} program will attempt to establish an SMTP connection
        !          1035: with each host in the list to post the message until it succeeds.
        !          1036: Initial experimentation with the split-\UA/
        !          1037: in a local network environment has proved quite successful.
        !          1038: 
        !          1039: \subsection{The MZnet Environs}                        % jns
        !          1040: In 1983,
        !          1041: the MZnet project\cite{EStef84} at the University of California, Irvine
        !          1042: set out to study the problems involved with bringing
        !          1043: Internet-class mail handling facilities to personal computers.
        !          1044: The project used Apple~II computers running the CP/M 2.2 operating system.
        !          1045: Programming was done in a subset of the C language called BDS C.
        !          1046: The transport system was based on the \MMDF/ PhoneNet software,
        !          1047: and implemented a {\it split-slot} arrangement between a personal computer
        !          1048: and a larger,
        !          1049: centralized mail distribution system that performed user
        !          1050: authentication and provided a relatively secure mail transfer channel.
        !          1051: The user agent, CP/MH, was based on \MH/.
        !          1052: 
        !          1053: A conclusion of the experiment was that small personal computer systems
        !          1054: with dial-up phone connections constrain user agent systems design in
        !          1055: ways that require use of a {\it split-slot} interface between the \UA/
        !          1056: and its supporting \MTA/, and that this interface
        !          1057: best provides the required services if it has error controlled command
        !          1058: and data transfer facilities, with interactive behavior. 
        !          1059: Another conclusion indicated that a good design for a user agent in such
        !          1060: a small personal computer
        !          1061: environment could be based on a very modular architecture,
        !          1062: such as \MH/.
        !          1063: A final conclusion was that session-level authentication of the client \UA/
        !          1064: is required for both posting and delivery.
        !          1065: 
        !          1066: It should be noted that the MZnet project had a profound influence on the
        !          1067: development of the POP used by \MH/.
        !          1068: A somewhat more detailed discussion of the relations between the two
        !          1069: environments can be found in the POP description contained
        !          1070: in the \MH/ release.
        !          1071: 
        !          1072: \section{A Final Note}                         % jns
        !          1073: With the fifth major release of the \MH/ system,
        !          1074: it has become clear that most major increases in functionality can come
        !          1075: only at the expense of either efficiency or portability.
        !          1076: Although there has been great effort to keep \MH/ portable to a number of
        !          1077: \unix/ implementations,%
        !          1078: \nfootnote{As of this writing,
        !          1079: there are approximately 75~sites running \mh5
        !          1080: on five different implementations of \unix/.}
        !          1081: the divergence in process management facilities,
        !          1082: file system enhancements,
        !          1083: and even C~compiler capabilities
        !          1084: has already presented obstacles to some attempts to rehost the \MH/ code.
        !          1085: 
        !          1086: There has been some discussion of implementing specialized \MH/ daemons
        !          1087: that maintain context information over one or more sessions,
        !          1088: thus decreasing the amount of overhead involved in starting each \MH/ command.
        !          1089: Unfortunately,
        !          1090: even if such daemons were to be implemented,
        !          1091: they would be very difficult to move to versions of \unix/
        !          1092: without sophisticated process management facilities,
        !          1093: and even then the differences in ``philosophies''
        !          1094: of process management\cite{WJoy83,EOlse84}
        !          1095: would tend to keep such daemons system specific.
        !          1096: A better solution seems to be simply to tune existing code.
        !          1097: 
        !          1098: \section{Acknowledgements}
        !          1099: The authors would like to thank Norman Z.~Shapiro and
        !          1100: Phyllis Kantar of the Rand Corporation for their invaluable comments during
        !          1101: the preparation of this paper.
        !          1102: 
        !          1103: \section{Distribution Information}
        !          1104: For information concerning distribution mechanics for the current release of
        !          1105: \MH/, please contact:
        !          1106: $$\displayindent=\leftskip     \advance\displayindent by1.5\parindent
        !          1107:     \halign{\leftline{#}\cr
        !          1108:        Support Group\cr
        !          1109:        Attn: MH Distribution\cr
        !          1110:        Department of Information and Computer Science\cr
        !          1111:        University of California, Irvine\cr
        !          1112:        Irvine, CA  92717\qquad USA\cr
        !          1113:        \cr
        !          1114:        714/856--6852\cr
        !          1115: }$$

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.