1 % run this through LaTeX
6 \documentstyle[12pt,DScustom,sfwmac]{article}
12 \title{Changes to\\ The Rand MH Message Handling System:\\ MH.6}
13 \author{Marshall T.~Rose\\
14 Northrop Research and Technology Center\\
16 Palos Verdes Peninsula, CA 90274}
17 \date{\ifdraft \versiondate/\\ Version \versiontag/\else \today\fi}
19 \footnotetext[0]{\hskip -\parindent
20 This document (version \versiontag/)
21 was \LaTeX set \today\ with \fmtname\ v\fmtversion.}%
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,
28 unless these activities resulted in a visible change for the \MH/ user.
30 This document is meant to supplement,
31 not supersede, the standard \MH/ User's manual\cite{MH}.
33 Comments concerning this documentation should be addressed to the Internet
34 mailbox {\sf Bug-MH@UCI.EDU}.
37 \bop\pagestyle{plain}\pagenumbering{arabic}
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/.
47 a large number of people have helped \MH/ along.
48 The list of ``\MH/~immortals'' is too long to list here.
50 \f\section* {Disclaimer}
51 The Regents of the University of California wish to make it known that:
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.
65 \f\section* {Conventions}
67 certain \LaTeX -formatting conventions are adhered to:
69 \item The names of \unix/ commands, such as \pgm{comp},
70 are presented in {\it text italics}.
72 \item Arguments to programs, such as \arg{msgs},
73 are presented in {\tt typewriter style} and delimited by single-quotes.
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}.
79 \item Text presenting an example, such as
80 \example comp\ -editor\ zz\endexample
81 is presented in {\tt typewriter style}.
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.
96 This document describes all user-visible changes to \mh5 from it's initial
97 release to the initial release of \mh6.
99 \subsection* {System-5 Support}
100 In addition to support for \bsd/~\unix/, V7~\unix/ and \xenix/ variants of
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/.
105 it appears that five ports of earlier versions of \MH/ (including \mh5)
107 but news of the work was not widespread.%
109 three groups in one large organization ported \MH/ independently,
110 each without knowledge of the others' work.}
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
116 was presented at the 1985 Summer Usenix Conference and Exhibition in
118 Another paper, {\em MH: A Multifarious User Agent},
119 has been accepted for publication by Computer Networks.
121 the former from a more technical and somewhat humorous perspective,
122 the latter from a more serious and research-oriented perspective.
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.
130 {\em MZnet: Mail Service for Personal Micro-Computer Systems},
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/.
138 the \MH/ tutorial, {\em The Rand MH Message Handling System: Tutorial},
140 {\em The Rand MH Message Handling System: The UCI BBoards Facility},
141 have both been updated by Jerry N.~Sweet.
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.
148 Finally, all of the manual entries and the \MH/ manual have had a thorough
150 The documentation is expanded, more accurate, and more detailed.
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.
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
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/.
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
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.
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.
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.
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
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
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.
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).
206 there are three major modes for support of non-822 addressing in \MH/:
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).
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.
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.
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.
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.
240 The \pgm{msgchk} program checks for new mail,
241 possibly using the Post Office Protocol, POP, described below.
243 A new receive mail hook,
244 the \pgm{rcvstore} program,
245 which was written by Julian L.~Onions is available.
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.)
250 \subsection* {Message Numbering}
251 \MH/ now no longer restricts the number of messages which may reside in a
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
258 \f\section* {The WhatNow Shell}
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
266 Consult the \man whatnow(1) manual entry for all the details.
268 The only other thing worth noting is that unless \MH/ has been compiled with
270 the user's \file{\$HOME/.signature} file is not consulted for the user's
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.
277 The \pgm{inc}, \pgm{scan}, \pgm{ap}, and \pgm{dp} programs all consult a
278 file containing 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.
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}
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
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.
297 to get the effect of \switch{size},
298 use \switch{form~scan.size}.
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.
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.)
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
313 The depreciated \MH/ news system (from \mh1) is now de-supported.
314 Use the ``hoopy'' BBoards facility instead.
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.
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.
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}.
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
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}.
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.
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.
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.
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!
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.
372 \subsection* {Updates in msh}
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
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.
382 the \switch{link} option doesn't actually link anything to the file.)
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,
389 {\em MH.5: How to process 200 messages a day and still get some real work
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:
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}.
402 There are two ways to administer POP:
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.
408 this method requires that each POP subscriber have an entry in the password
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.
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.
421 the local mailsystem must be changed to reflect this.
422 This requires two changes (both of which are simple):
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.
434 Clever mailsystem people will note that
435 the POP mechanism is really a special case of the more general
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.
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
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.
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\/}
455 (There are no known holes in any of these programs.)
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
461 or zero the contents of network address field of the \man pop(5) file for the
462 desired POP subscribers.
464 The \pgm{inc} command also has two other switches when \MH/ is enabled for
466 \switch{pack~file} and \switch{nopack}.
468 \pgm{inc} will use the POP to incorporate mail from a POP service host into
469 an \MH/ folder (\eg{+inbox}).
471 there are some misguided individuals who prefer to \pgm{msh} to read their
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.
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.
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.
491 \f\section* {Other Changes}
492 Here's the miscellany:
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.}
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.
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
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}.
526 if \pgm{mhl} isn't outputting to a terminal,
527 then \eg{moreproc} is not invoked.
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.
533 \subsection* {Complex Expressions in pick}
534 The \pgm{pick} command now handles complex boolean expressions.
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}.
540 \subsection* {Interactive option in rmf}
541 The \pgm{rmf} program has been changed to support an \switch{interactive}
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.
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.