Added sources to historical documents downloaded from
[mmh] / docs / historical / multifarious / text.tex
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 }$$