|
|
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: }$$
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.