Added all of the MH sources, including RCS files, in
[mmh] / docs / historical / mh-6.8.5 / papers / mh6 / mh6.tex
1 % run this through LaTeX
2
3 \input lcustom
4 \input version
5
6 \documentstyle[12pt,DScustom,sfwmac]{article}
7 \setcounter{page}{0}
8 \pagestyle{empty}
9
10 \begin{document}
11
12 \title{Changes to\\ The Rand MH Message Handling System:\\ MH.6}
13 \author{Marshall T.~Rose\\
14         Northrop Research and Technology Center\\
15         One~Research Park\\
16         Palos Verdes Peninsula, CA  90274}
17 \date{\ifdraft \versiondate/\\ Version \versiontag/\else \today\fi}
18 \maketitle
19 \footnotetext[0]{\hskip -\parindent
20 This document (version \versiontag/)
21 was \LaTeX set \today\ with \fmtname\ v\fmtversion.}%
22
23 \begin{abstract}
24 \noindent This document describes the user-visible change to the
25 UCI version of the Rand \MH/ system that were made from \mh5 to \mh6.
26 This document does not describe bug-fixes, per se,
27 or internal changes,
28 unless these activities resulted in a visible change for the \MH/ user.
29
30 This document is meant to supplement,
31 not supersede, the standard \MH/ User's manual\cite{MH}.
32
33 Comments concerning this documentation should be addressed to the Internet
34 mailbox {\sf Bug-MH@UCI.EDU}.
35 \end{abstract}
36
37 \bop\pagestyle{plain}\pagenumbering{arabic}
38
39 \f\section*      {Acknowledgements}
40 The \MH/ system described herein is based on the original Rand \MH/ system.
41 It has been extensively developed (perhaps too much so) by Marshall T.~Rose
42 and John L.~Romine at the University of California, Irvine.
43 Einar A.~Stefferud, Jerry N.~Sweet,
44 and Terry P.~Domae provided numerous suggestions
45 to improve the UCI version of \MH/.
46 Of course,
47 a large number of people have helped \MH/ along.
48 The list of ``\MH/~immortals'' is too long to list here.
49
50 \f\section*      {Disclaimer}
51 The Regents of the University of California wish to make it known that:
52 \begin{quote}
53 Although each program has been tested by its contributor,
54 no warranty, express or implied,
55 is made by the contributor or the University of California,
56 as to the accuracy and functioning of the program
57 and related program material,
58 nor shall the fact of distribution constitute any such warranty,
59 and no responsibility is assumed by the contributor
60 or the University of California in connection herewith.
61 \end{quote}
62
63 \bop
64
65 \f\section*      {Conventions}
66 In this document,
67 certain \LaTeX -formatting conventions are adhered to:
68 \begin{enumerate}
69 \item   The names of \unix/ commands, such as \pgm{comp},
70 are presented in {\it text italics}.
71
72 \item   Arguments to programs, such as \arg{msgs},
73 are presented in {\tt typewriter style} and delimited by single-quotes.
74
75 \item   \unix/ pathnames and envariables,
76 such as $$\file{/usr/uci/}\hbox{\qquad and\qquad}\file{\$SIGNATURE},$$
77 are presented in {\sl slanted roman}.
78
79 \item   Text presenting an example, such as
80 \example comp\ -editor\ zz\endexample
81 is presented in {\tt typewriter style}.
82 \end{enumerate}
83
84 \bop
85
86 \f\section*      {General Changes}
87 Unlike the changes between \mh4 and \mh5,
88 a large number of user-visible changes have been made in \mh6.
89 These changes have been in the form of bug fixes and several generalizations.
90 The majority of these will not affect novice users.
91 In addition, \mh6 is a great deal faster than \mh5:
92 all programs have been speeded-up significantly,
93 thanks to work done by Van Jacobson as part of the process of including \mh5
94 in the 4.3\bsd/~\unix/ distribution.
95
96 This document describes all user-visible changes to \mh5 from it's initial
97 release to the initial release of \mh6.
98
99 \subsection*    {System-5 Support}
100 In addition to support for \bsd/~\unix/, V7~\unix/ and \xenix/ variants of
101 \unix/,
102 \MH/ finally has support for the AT\&T variant of \unix/, System~5.
103 Hopefully this will greatly expand the number of system which can run \MH/.
104 Ironically,
105 it appears that five ports of earlier versions of \MH/ (including \mh5)
106 were done,
107 but news of the work was not widespread.%
108 \nfootnote{In fact,
109 three groups in one large organization ported \MH/ independently,
110 each without knowledge of the others' work.}
111
112 \subsection*    {Documentation}
113 Several new documents have been included in the \mh6 distribution:
114 The paper {\em MH.5: How to process 200 messages a day and still get some
115 real work done}
116 was presented at the 1985 Summer Usenix Conference and Exhibition in
117 Portland, Orgeon.
118 Another paper, {\em MH: A Multifarious User Agent},
119 has been accepted for publication by Computer Networks.
120 Both describe \MH/,
121 the former from a more technical and somewhat humorous perspective,
122 the latter from a more serious and research-oriented perspective.
123 In addition,
124 a third paper has been included,
125 {\em Design of the TTI Prototype Trusted Mail Agent},
126 which describes a so-called ``trusted'' mail agent built on top of \MH/.
127 This paper was presented at the Second International Symposium on
128 Computer Message Systems in Washington, D.C.
129 A fourth paper,
130 {\em MZnet: Mail Service for Personal Micro-Computer Systems},
131 is also included.
132 This paper,
133 which was presented at the First International Symposium on Computer Message
134 Systems in Nottingham, U.K.,
135 describes a \cpm/-based version of \MH/.
136
137 In addition,
138 the \MH/ tutorial, {\em The Rand MH Message Handling System: Tutorial},
139 and,
140 {\em The Rand MH Message Handling System: The UCI BBoards Facility},
141 have both been updated by Jerry N.~Sweet.
142
143 For \MH/ administrators (PostMasters and the like),
144 there's an entirely new document,
145 {\em The Rand MH Message Handling System: Administrator's Guide}.
146 It explains most of the ``ins and outs'' of maintaining an \MH/ system.
147
148 Finally, all of the manual entries and the \MH/ manual have had a thorough
149 working over.
150 The documentation is expanded, more accurate, and more detailed.
151
152 \subsection*    {Help Listings}
153 When any \MH/ command is invoked with the \switch{help} switch,
154 in addition to listing the syntax of the command and version information,
155 the \MH/ configuration options will be listed.
156 \MH/ has so many configuration options,
157 that when debugging problems, this information is invaluable.
158
159 \subsection*    {The \MH/ Profile}
160 There are two new profile entries worth noting:
161 \eg{MH-Sequences} tells \MH/ the name of the file to record public
162 sequences in.
163 Users of \pgm{vm}, a proprietary, visual front-end to \MH/,
164 make use of this to disable the public sequences feature of \MH/.
165
166 The profile entry \eg{Unseen-Sequence} names those sequences which should be
167 defined as those messages recently incorporated by \pgm{inc}.
168 The \pgm{show} program knows to remove messages from this sequence once it
169 thinks they have been seen.
170 If this profile entry is not present, or is empty, then no sequences are
171 defined.
172 Otherwise, for each name given, the sequence is first zero'd and then each
173 message incorporated is added to the sequence.
174 As such, this profile entry is rather analogous to the
175 \eg{Previous-Sequence} entry in the user's \MH/ profile.
176
177 In addition, the \eg{Alternate-Mailboxes} entry in the profile has been
178 expanded to support simple wild-carding.
179 Also, the default for this profile entry is now the user's mail-id at any host.
180 This change was made since \MH/ can no longer reliably figure out what
181 the user's real outgoing address looks like.
182
183 Finally,
184 when the \pgm{install-mh} program is automatically invoked by \MH/,
185 it won't prompt the user for information.
186 Instead, it notes that it's setting up the default environment.
187 In addition,
188 the \MH/ administrator may set-up a file called \file{mh.profile} in the \MH/
189 library area which is consulted by \pgm{install-mh} when initializing the
190 user's \profile/.
191
192 \subsection*    {The \MH/ Context}
193 The \pgm{folder}, \pgm{scan}, and \pgm{show} programs have been modified to
194 update the user's \MH/ context prior to writing to the user's terminal.
195 This allows the \MH/ user interrupt output to the terminal and still have the
196 expected context.
197 This is especially useful to interrupt long \pgm{scan} listings.
198 This change also introduces a subtle bug between \pgm{show} and messages
199 denoted by the \eg{Unseen-Sequence}.
200 See \man show(1) for the details.
201
202 \subsection*    {Addresses and 822 support}
203 \MH/ now fully supports the RFC-822 routing syntax for addresses
204 (it used to recognize the syntax, but ignore the information present).
205 In addition,
206 there are three major modes for support of non-822 addressing in \MH/:
207 \begin{itemize}
208 \item   BERK\hbreak
209 This is useful on sites running \SendMail/.
210 It doesn't support full 822--style addressing,
211 in favor of recognizing such formats as ACSnet, and so on.
212 For sites that can't run in an 822--compliant environment,
213 this is the option to use
214 (at the price of sacrificing some of the power of 822--style addressing).
215
216 \item   DUMB\hbreak
217 Although not as liberal as BERK,
218 the DUMB option is useful on sites in which the message transport system
219 conforms to the 822 standard,
220 but wants to do all the defaulting itself.
221
222 \item   BANG\hbreak
223 From out in left field,
224 the BANG option favors \UUCP/-style addressing over 822--style addressing.
225 Hopefully when all the \UUCP/ sites around get around to adopting domain-style
226 addresses, this option won't be needed.
227 \end{itemize}
228
229 The \pgm{ap} program (mentioned momentarily) and the \pgm{ali} program
230 both support a \switch{normalize} switch indicate if addresses should be
231 resolved to their ``official'' hostnames.
232
233 \subsection*    {New Programs}
234 There are five new programs available:
235 The \pgm{ap} program is the \MH/ stand-alone address parser.
236 It's useful for printing address in various formats
237 (and for debugging address strings).
238 The \pgm{dp} program is similar, but works on dates instead of addresses.
239
240 The \pgm{msgchk} program checks for new mail,
241 possibly using the Post Office Protocol, POP, described below.
242
243 A new receive mail hook,
244 the \pgm{rcvstore} program,
245 which was written by Julian L.~Onions is available.
246
247 Finally, a visual front-end to \pgm{msh} called \pgm{vmh} has been included.
248 (This program is discussed in greater detail later on.)
249
250 \subsection*    {Message Numbering}
251 \MH/ now no longer restricts the number of messages which may reside in a
252 folder
253 (beyond that of system memory constraints).
254 This means that message numbers larger than 2000 are permissible.
255 Hopefully this will make life easier for people reading the network news
256 using \MH/.
257
258 \f\section*      {The WhatNow Shell}
259 In \mh6,
260 there is now the concept of a unified \whatnow/ processor that
261 the four composition programs, \pgm{comp}, \pgm{dist}, \pgm{forw},
262 and \pgm{repl} all invoke.
263 This permits a greater flexibility in building mail applications with \MH/.
264 As a result, there's a new program, \pgm{whatnow}, which acts as the default
265 \whatnow/ program.
266 Consult the \man whatnow(1) manual entry for all the details.
267
268 The only other thing worth noting is that unless \MH/ has been compiled with
269 the UCI option,
270 the user's \file{\$HOME/.signature} file is not consulted for the user's
271 personal name.
272
273 \f\section*      {Format Strings}
274 A general format string facility has been added to allow \MH/ users to tailor
275 the output of certain commands.
276
277 The \pgm{inc}, \pgm{scan}, \pgm{ap}, and \pgm{dp} programs all consult a
278 file containing format strings.
279 Format strings,
280 which look a lot like \man printf(3) strings,
281 give these \MH/ commands precise instructions on how to format their output.
282
283 As a result,
284 the \pgm{inc} and \pgm{scan} programs no longer have the
285 \switch{size}, \switch{nosize},
286 \switch{time}, \switch{notime},
287 \switch{numdate}, and \switch{nonumdate}
288 switches.
289 These switches have been replaced with the
290 \switch{form~formatfile} switch and the \switch{format~string} switch.
291 The former directs the program to consult the named file for the format
292 strings.
293 The latter directs the program to use the named string as the format.
294 To get the behavior of the old \switch{time} option,
295 use the \switch{form~scan.time} option.
296 Similarly,
297 to get the effect of \switch{size},
298 use \switch{form~scan.size}.
299
300 The \pgm{repl} command uses a file containing format files to
301 indicate how the reply draft should be constructed.
302 Note that reply templates prior to \mh6 are incompatible with \mh5.
303 Don't worry though,
304 it's quite easy to convert the templates by hand.
305 (Those clever enough to have written a reply template to begin with won't
306 have {\em any\/} problem.)
307
308 Similarly, when the \pgm{forw} program is constructing a digest,
309 it uses a file containing format strings to indicate how to build the
310 encapsulating draft.
311
312 \f\section*      {News}
313 The depreciated \MH/ news system (from \mh1) is now de-supported.
314 Use the ``hoopy'' BBoards facility instead.
315
316 \f\section*      {BBoards}
317 \MH/ maintainers take note:
318 the default home directory for the bboards login has changed from
319 \file{/usr/bboards/} to \file{/usr/spool/bboards/}.
320 Use the \eg{bbhome} directive in your \MH/ configuration file to set
321 it back to the old value if you wish.
322
323 In addition, the aliases field for a BBoard in the BBoards file is now
324 deemed useful only for addressing, not for user input to \pgm{bbc}.
325 This means when giving the name of a BBoard to \pgm{bbc},
326 only the official name should be used.
327
328 A final note for mailsystem maintainers:
329 the \MMDFII/ BBoards channel and the \SendMail/ BBoards mailer have been
330 modified to use the standard message encapsulation format when returning
331 failed messages to the list maintainer.
332 This means that the failure notices that the maintainer receives can
333 simply be \pgm{burst}.
334
335 \subsection*    {New Switches in bbc}
336 The \pgm{bbc} program permits you to specify the \eg{mshproc} to use on the
337 command line by using the \switch{mshproc~program} option.
338 In addition, options which aren't understood by \pgm{bbc} are passed along to
339 the \eg{mshproc}.
340
341 In addition, the following commands
342 pass any unrecognized switches on to the program that they invoke:
343 \pgm{bbc}, \pgm{next}, \pgm{show}, \pgm{prev}, and \pgm{vmh}.
344
345 \subsection*    {Distributed BBoards}
346 If both BBoards and POP (see the next section) are enabled,
347 then distributed BBoards can be supported on top of the POP service.
348 This allows the \MH/ user to read BBoards on a server machine
349 instead of the local host
350 (which saves a lot of wasted disk space when the same BBoards are replicated
351 several times at a site with several hosts).
352 See the {\em Administrator's Guide\/} for information on how this can be made
353 completely transparent to the \MH/ user.
354
355 If you have several machines at your site running 4.2\bsd/~\unix/
356 and connected by an \ethernet/ (or other high-speed LAN),
357 you {\em want\/} this software.
358
359 \subsection*    {Visual Front-End to msh}
360 A simple window management protocol has been implemented for \MH/ programs
361 that might wish to act as a back-end to a sophisticated visual front-end.
362
363 The first implementation of a server side (front-end) program is \pgm{vmh},
364 which uses \man curses(3) to maintain a split-screen interface.
365 Perhaps look for a \pgm{mhtool} program for the SUN next!
366
367 The \pgm{msh} program has been modified to speak the client side (back-end)
368 of this protocol, if so directed.
369 At present, \pgm{msh} is the only program in the \MH/ distribution which
370 implements the client side of the window management protocol.
371
372 \subsection*    {Updates in msh}
373 Prior to quitting,
374 the \pgm{msh} command now asks if the \pgm{packf\/}'d file you've been
375 perusing should be updated if you've modified it and the file is writable by
376 you.
377 The file can be modified by using \pgm{burst}, \pgm{rmm}, \pgm{rmm},
378 or \pgm{sortm} commands.
379 The file can also be modified by using the \pgm{refile} command without the
380 \switch{link} option.
381 (Or course,
382 the \switch{link} option doesn't actually link anything to the file.)
383
384 \f\section*      {Distributed Mail}
385 \MH/ now contains a powerful facility for doing distributed mail
386 (having \MH/ reside on a host different than the message transport agent).
387 For general information,
388 consult either the 
389 {\em MH.5: How to process 200 messages a day and still get some real work
390 done} paper,
391 or the {\em MH: A Multifarious User Agent} paper.
392 For specific information,
393 consult the {\em Administrator's Guide}.
394 Here's a brief synopsis:
395
396 This POP facility in \MH/ is based on a modification of the ARPA Post
397 Office Protocol (POP).
398 A POP {\em subscriber\/} is a remote user,
399 on a POP {\em client host},
400 that wishes to pick-up mail on a POP {\em service host}.
401
402 There are two ways to administer POP:
403 \begin{itemize}
404 \item   Naive Mode\hbreak
405 Each user-id in the \man passwd(5) file is considered a POP subscriber.
406 No changes are required for the mailsystem on the POP service host.
407 However,
408 this method requires that each POP subscriber have an entry in the password
409 file.
410 The POP server will fetch the user's mail from wherever maildrops are kept on
411 the POP service host.
412 This means that if maildrops are kept in the user's home directory,
413 then each POP subscriber must have a home directory.
414
415 \item   Smart Mode\hbreak
416 This is based on the notion that the list of POP subscribers and the list of
417 login users are completely separate name spaces.
418 A separate database (similar to the \man BBoards(5) file)
419 is used to record information about each POP subscriber.
420 Unfortunately,
421 the local mailsystem must be changed to reflect this.
422 This requires two changes (both of which are simple):
423 \begin{enumerate}
424 \item   Aliasing\hbreak
425         The aliasing mechanism is augmented so that POP subscriber addresses
426         are diverted to a special delivery mechanism.
427         \MH/ comes with a program, \man popaka(8), which generates the
428         additional information to be put in the mailsystem's alias file.
429 \item   Delivery\hbreak
430         A special POP channel (for \MMDFII/) or POP mailer (for \SendMail/)
431         performs the actual delivery (\mh6 supplies both).
432         All it really does is just place the mail in the POP spool area.
433 \end{enumerate}
434 Clever mailsystem people will note that
435 the POP mechanism is really a special case of the more general
436 BBoards mechanism.
437 \end{itemize}
438 These two different philosophies are not compatible on the same POP service
439 host: one or the other, but not both, may be run.
440
441 In addition, there is one user-visible difference,
442 which the administrator controls the availability of.
443 The difference is whether the POP subscriber must supply a password to the POP
444 server:
445 \begin{itemize}
446 \item   ARPA standard method\hbreak
447 This uses the standard ARPA technique of sending a username and a password.
448 The appropriate programs (\pgm{inc}, \pgm{msgchk}, and possibly \pgm{bbc\/})
449 will prompt the user for this information.
450
451 \item   \unix/ remote method\hbreak
452 This uses the Berkeley \unix/ reserved port method for authentication.
453 This requires that the two or three mentioned above programs be {\em setuid\/}
454 to root.
455 (There are no known holes in any of these programs.)
456 \end{itemize}
457 These two different philosophies are compatible on the same POP service host:
458 to selectively disable RPOP for hosts which aren't trusted,
459 either modify the \file{.rhosts} file in the case of POP subscribers being
460 \unix/ logins,
461 or zero the contents of network address field of the \man pop(5) file for the
462 desired POP subscribers.
463
464 The \pgm{inc} command also has two other switches when \MH/ is enabled for
465 POP:
466 \switch{pack~file} and \switch{nopack}.
467 Normally,
468 \pgm{inc} will use the POP to incorporate mail from a POP service host into
469 an \MH/ folder (\eg{+inbox}).
470 However,
471 there are some misguided individuals who prefer to \pgm{msh} to read their
472 maildrop.
473 By using the \switch{pack~file} option,
474 these individuals can direct \pgm{inc} to fetch their maildrop from the POP
475 service host and store it locally in the named file.
476 As expected, \pgm{inc} will treat the local file as a maildrop,
477 performing the appropriate locking protocols.
478
479 \f\section*      {Rcvmail hooks}
480 In order to offer users of \MH/ increated rcvmail hook functionality,
481 the \pgm{slocal} program has been upgraded to support the semantics of
482 the \MMDFII/ mail-delivery mechanism.
483 This means that users of \mh6 can maintain identical \file{.maildelivery}
484 files regardless of the underlying transport system.
485 See \man mhook(1) for all the details.
486
487 \subsection*    {Field change in rcvpack}
488 The \pgm{rcvpack} rcvmail hook now adds the field name \eg{Delivery-Date:}
489 instead of \eg{Cron-Date:} to messages it \pgm{pack\/}s.
490
491 \f\section*      {Other Changes}
492 Here's the miscellany:
493
494 \subsection*    {Continuation Lines}
495 Alias files used by \MH/,
496 display templates used by \pgm{mhl},
497 and format files used by \pgm{forw}, \pgm{repl}, and \pgm{scan} all support
498 a standard continuation line syntax.
499 To continue a line in one of these files,
500 simply end the line with the backslash character (`$\backslash$').
501 All the other files used by \MH/ are in 822--format,
502 so the 822--continuation mechanism is used.%
503 \nfootnote{Looking back,
504 it would have been best had all files in \MH/ used the 822--format.}
505
506 \subsection*    {Modifications to show}
507 The \switch{format}, \switch{noformat}, \switch{pr}, and \switch{nopr}
508 options to \pgm{show} have gone away in favor of a more general mechanism.
509 The \switch{showproc~program} option tells \pgm{show}
510 (or \pgm{next} or \pgm{prev\/}) to use the named program as the \eg{showproc}.
511 The \switch{noshowproc} option tells \pgm{show}, et. al.,
512 to use the \man cat(1) program instead of a \eg{showproc}.
513 As a result, the profile entry \eg{prproc} is no longer used.
514
515 \subsection*    {Front-End to mhl}
516 When outputting to a terminal,
517 the \pgm{mhl} program now runs the program denoted by the profile entry
518 \eg{moreproc}.
519 If this entry is not present,
520 the default is the UCB \pgm{more} program.
521 If the entry is non-empty,
522 then that program is spliced between \pgm{mhl} and the user's terminal.
523 The author uses the \pgm{less} program as his \eg{moreproc}.
524
525 Of course,
526 if \pgm{mhl} isn't outputting to a terminal,
527 then \eg{moreproc} is not invoked.
528
529 \subsection*    {Switch change in inc}
530 The \switch{ms~ms-file} switch in \pgm{inc} has been changed to
531 \switch{file~name} to be more consistent.
532
533 \subsection*    {Complex Expressions in pick}
534 The \pgm{pick} command now handles complex boolean expressions.
535
536 \subsection*    {Defaults change in prompter and burst}
537 The \switch{prepend} option is now the default in \pgm{prompter}.
538 The \switch{noinplace} option is now the default in \pgm{burst}.
539
540 \subsection*    {Interactive option in rmf}
541 The \pgm{rmf} program has been changed to support an \switch{interactive}
542 switch.
543 If given,
544 then the user is prompted regarding whether the folder should be deleted.
545 If the folder to be removed is not given by the user,
546 this switch is defaulted to on.
547
548 \subsection*    {Trusted Mail Interface}
549 \MH/ now has an interface for so-called ``trusted mail'' applications.
550 Although the modifications to \MH/ to support this are in the public domain,
551 the actual library that \MH/ uses is not.
552 Contact Professor David J.~Farber ({\sf Farber@UDel\/}) for more information.
553
554 \bibliography{mh6}
555
556 \showsummary
557
558 \end{document}