1 % run this through LaTeX
5 \documentstyle[12pt,sfwmac]{article}
9 \title{Changes to\\ The Rand MH Message Handling System:\\
10 MH \#6.5 for 4.3BSD UNIX}
11 \author{Marshall T.~Rose\\
12 Northrop Research and Technology Center\\
14 Palos Verdes Peninsula, CA 90274}
15 \date{\ifdraft \versiondate/\\ Version \versiontag/\else \today\fi}
17 \footnotetext[0]{\hskip -\parindent
18 This document (version \versiontag/)
19 was \LaTeX set \today\ with \fmtname\ v\fmtversion.}
22 This document describes the user-visible change to the
23 UCI version of the Rand \MH/ system that were made from \mh5 to \MH/ \#6.5.
24 It is based on the \mh6 changes document,
25 but has been updated to accurately reflect the \MH/ distributed with
27 This document does not describe bug-fixes, per se,
29 unless these activities resulted in a visible change for the \MH/ user.
31 This document is meant to supplement,
32 not supersede, the standard \MH/ User's manual\cite{MH.USR}.
34 Comments concerning this documentation should be addressed to the Internet
35 mailbox {\sf Bug-MH@ICS.UCI.EDU}.
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.
49 However, Van Jacobson deserves a special acknowledgement for his tireless
50 work in improving the performance of \MH/.
51 Some programs have been speeded-up by a factor of 10 or 20.
52 All of users of \MH/, everywhere, owe a special thanks to Van.
54 \f\section* {Disclaimer}
55 The Regents of the University of California wish to make it known that:
57 Although each program has been tested by its contributor,
58 no warranty, express or implied,
59 is made by the contributor or the University of California,
60 as to the accuracy and functioning of the program
61 and related program material,
62 nor shall the fact of distribution constitute any such warranty,
63 and no responsibility is assumed by the contributor
64 or the University of California in connection herewith.
68 \f\section* {Conventions}
70 certain \LaTeX -formatting conventions are adhered to:
72 \item The names of \unix/ commands, such as \pgm{comp},
73 are presented in {\it text italics}.
75 \item Arguments to programs, such as \arg"msgs",
76 are presented in {\tt typewriter style} and delimited by single-quotes.
78 \item \unix/ pathnames and envariables,
79 such as $$\file{/usr/uci/}\hbox{\qquad and\qquad}\file{\$SIGNATURE},$$
80 are presented in {\sl slanted roman}.
82 \item Text presenting an example, such as
86 is presented in {\tt typewriter style}.
90 \f\section* {General Changes}
91 Unlike the changes between \mh4 and \mh5,
92 a large number of user-visible changes have been made in \mh6.
93 These changes have been in the form of bug fixes and several generalizations.
94 The majority of these will not affect novice users.
95 In addition, \mh6 is a great deal faster than \mh5:
96 all programs have been speeded-up significantly,
97 thanks to work done by Van Jacobson as part of the process of including \mh6
98 in the 4.3\bsd/~\unix/ distribution.
100 This document describes all user-visible changes to \mh5 from it's initial
101 release to the intermediate release of \MH/ \#6.5.
103 \subsection* {System-5 Support}
104 In addition to support for \bsd/~\unix/, V7~\unix/ and \xenix/ variants of
106 \MH/ finally has support for the AT\&T variant of \unix/, System~5.
107 Hopefully this will greatly expand the number of system which can run \MH/.
109 it appears that five ports of earlier versions of \MH/ (including \mh5)
111 but news of the work was not widespread.%
113 three groups in one large organization ported \MH/ independently,
114 each without knowledge of the others' work.}
116 \subsection* {Documentation}
117 Several new documents have been included in the \mh6 distribution:
118 The paper {\em MH.5: How to process 200 messages a day and still get some
120 was presented at the 1985 Summer Usenix Conference and Exhibition in
122 Another paper, {\em MH: A Multifarious User Agent},
123 has been accepted for publication by Computer Networks.
125 the former from a more technical and somewhat humorous perspective,
126 the latter from a more serious and research-oriented perspective.
128 a third paper has been included,
129 {\em Design of the TTI Prototype Trusted Mail Agent},
130 which describes a so-called ``trusted'' mail agent built on top of \MH/.
131 This paper was presented at the Second International Symposium on
132 Computer Message Systems in Washington, D.C.
134 {\em MZnet: Mail Service for Personal Micro-Computer Systems},
137 which was presented at the First International Symposium on Computer Message
138 Systems in Nottingham, U.K.,
139 describes a \cpm/-based version of \MH/.
142 the \MH/ tutorial, {\em The Rand MH Message Handling System: Tutorial},
144 {\em The Rand MH Message Handling System: The UCI BBoards Facility},
145 have both been updated by Jerry N.~Sweet.
147 For \MH/ administrators (PostMasters and the like),
148 there's an entirely new document,
149 {\em The Rand MH Message Handling System: Administrator's Guide}.
150 It explains most of the ``ins and outs'' of maintaining an \MH/ system.
152 Finally, all of the manual entries and the \MH/ manual have had a thorough
154 The documentation is expanded, more accurate, and more detailed.
156 \subsection* {Help Listings}
157 When any \MH/ command is invoked with the \switch"help" switch,
158 in addition to listing the syntax of the command and version information,
159 the \MH/ configuration options will be listed.
160 \MH/ has so many configuration options,
161 that when debugging problems, this information is invaluable.
163 \subsection* {The \MH/ Profile}
164 There are two new profile entries worth noting:
165 \verb"MH-Sequences" tells \MH/ the name of the file to record public
167 Users of \pgm{vm}, a proprietary, visual front-end to \MH/,
168 make use of this to disable the public sequences feature of \MH/.
170 The profile entry \verb"Unseen-Sequence" names those sequences which should be
171 defined as those messages recently incorporated by \pgm{inc}.
172 The \pgm{show} program knows to remove messages from this sequence once it
173 thinks they have been seen.
174 If this profile entry is not present, or is empty, then no sequences are
176 Otherwise, for each name given, the sequence is first zero'd and then each
177 message incorporated is added to the sequence.
178 As such, this profile entry is rather analogous to the
179 \verb"Previous-Sequence" entry in the user's \MH/ profile.
181 In addition, the \verb"Alternate-Mailboxes" entry in the profile has been
182 expanded to support simple wild-carding.
183 Also, the default for this profile entry is now the user's mail-id at any host.
184 This change was made since \MH/ can no longer reliably figure out what
185 the user's real outgoing address looks like.
188 when the \pgm{install-mh} program is automatically invoked by \MH/,
189 it won't prompt the user for information.
190 Instead, it notes that it's setting up the default environment.
192 the \MH/ administrator may set-up a file called \file{mh.profile} in the \MH/
193 library area which is consulted by \pgm{install-mh} when initializing the
196 \subsection* {The \MH/ Context}
197 The \pgm{folder}, \pgm{scan}, and \pgm{show} programs have been modified to
198 update the user's \MH/ context prior to writing to the user's terminal.
199 This allows the \MH/ user interrupt output to the terminal and still have the
201 This is especially useful to interrupt long \pgm{scan} listings.
202 This change also introduces a subtle bug between \pgm{show} and messages
203 denoted by the \verb"Unseen-Sequence".
204 See \man show(1) for the details.
206 \subsection* {Addresses and 822 support}
207 \MH/ now fully supports the RFC-822 routing syntax for addresses
208 (it used to recognize the syntax, but ignore the information present).
210 there are three major modes for support of non-822 addressing in \MH/:
213 This is useful on sites running \SendMail/.
214 It doesn't support full 822--style addressing,
215 in favor of recognizing such formats as ACSnet, and so on.
216 For sites that can't run in an 822--compliant environment,
217 this is the option to use
218 (at the price of sacrificing some of the power of 822--style addressing).
219 This also drastically reduces the address formatting facilities described
223 Although not as liberal as BERK,
224 the DUMB option is useful on sites in which the message transport system
225 conforms to the 822 standard,
226 but wants to do all the defaulting itself.
229 From out in left field,
230 the BANG option favors \UUCP/-style addressing over 822--style addressing.
231 Hopefully when all the \UUCP/ sites around get around to adopting domain-style
232 addresses, this option won't be needed.
235 The \pgm{ap} program (mentioned momentarily) and the \pgm{ali} program
236 both support a \switch"normalize" switch indicate if addresses should be
237 resolved to their ``official'' hostnames.
239 \subsection* {New Programs}
240 There are five new programs available:
241 The \pgm{ap} program is the \MH/ stand-alone address parser.
242 It's useful for printing address in various formats
243 (and for debugging address strings).
244 The \pgm{dp} program is similar, but works on dates instead of addresses.
246 The \pgm{msgchk} program checks for new mail,
247 possibly using the Post Office Protocol, POP, described below.
249 A new receive mail hook,
250 the \pgm{rcvstore} program,
251 which was written by Julian L.~Onions is available.
253 Finally, a visual front-end to \pgm{msh} called \pgm{vmh} has been included.
254 (This program is discussed in greater detail later on.)
256 \subsection* {Message Numbering}
257 \MH/ now no longer restricts the number of messages which may reside in a
259 (beyond that of system memory constraints).
260 This means that message numbers larger than 2000 are permissible.
261 Hopefully this will make life easier for people reading the network news
264 \f\section* {The WhatNow Shell}
266 there is now the concept of a unified \whatnow/ processor that
267 the four composition programs, \pgm{comp}, \pgm{dist}, \pgm{forw},
268 and \pgm{repl} all invoke.
269 This permits a greater flexibility in building mail applications with \MH/.
270 As a result, there's a new program, \pgm{whatnow}, which acts as the default
272 Consult the \man whatnow(1) manual entry for all the details.
273 The only important user-visible change is the \verb"headers" option went away,
274 which wasn't used that much anyway.
277 The only other thing worth noting is that unless \MH/ has been compiled with
279 the user's \file{\$HOME/.signature} file is not consulted for the user's
282 \f\section* {Format Strings}
283 A general format string facility has been added to allow \MH/ users to tailor
284 the output of certain commands.
286 The \pgm{inc}, \pgm{scan}, \pgm{ap}, and \pgm{dp} programs all consult a
287 file containing format strings.
289 which look a lot like \man printf(3) strings,
290 give these \MH/ commands precise instructions on how to format their output.
293 the \pgm{inc} and \pgm{scan} programs no longer have the
294 \switch"size", \switch"nosize",
295 \switch"time", \switch"notime",
296 \switch"numdate", and \switch"nonumdate"
298 These switches have been replaced with the
299 \switch"form formatfile" switch and the \switch"format string" switch.
300 The former directs the program to consult the named file for the format
302 The latter directs the program to use the named string as the format.
303 To get the behavior of the old \switch"time" option,
304 use the \switch"form scan.time" option.
306 to get the effect of \switch"size",
307 use \switch"form scan.size".
309 A fun form to use is \switch"form scan.timely" with \pgm{scan}.
313 The \pgm{repl} command uses a file containing format files to
314 indicate how the reply draft should be constructed.
315 Note that reply templates prior to \mh6 are incompatible with \mh5.%
316 \footnote{In fact, reply templates between \mh6 and \MH/ \#6.5 are
319 it's quite easy to convert the templates by hand.
320 (Those clever enough to have written a reply template to begin with won't
321 have {\em any\/} problem.)
323 Similarly, when the \pgm{forw} program is constructing a digest,
324 it uses a file containing format strings to indicate how to build the
327 Finally, you can use these facilities in \pgm{mhl} as well.
330 The depreciated \MH/ news system (from \mh1) is now de-supported.
331 Use the ``hoopy'' BBoards facility instead.
333 \f\section* {BBoards}
334 \MH/ maintainers take note:
335 the default home directory for the bboards login has changed from
336 \file{/usr/bboards/} to \file{/usr/spool/bboards/}.
337 Use the \verb"bbhome" directive in your \MH/ configuration file to set
338 it back to the old value if you wish.
340 In addition, the aliases field for a BBoard in the BBoards file is now
341 deemed useful only for addressing, not for user input to \pgm{bbc}.
342 This means when giving the name of a BBoard to \pgm{bbc},
343 only the official name should be used.
345 A final note for mailsystem maintainers:
346 the \MMDFII/ BBoards channel and the \SendMail/ BBoards mailer have been
347 modified to use the standard message encapsulation format when returning
348 failed messages to the list maintainer.
349 This means that the failure notices that the maintainer receives can
350 simply be \pgm{burst}.
352 \subsection* {New Switches in bbc}
353 The \pgm{bbc} program permits you to specify the \verb"mshproc" to use on the
354 command line by using the \switch"mshproc program" option.
355 There's also a \switch"rcfile file" option which does ``the obvious thing''.
356 In addition, options which aren't understood by \pgm{bbc} are passed along to
359 In addition, the following commands
360 pass any unrecognized switches on to the program that they invoke:
361 \pgm{bbc}, \pgm{next}, \pgm{show}, \pgm{prev}, and \pgm{vmh}.
363 \subsection* {Distributed BBoards}
364 If both BBoards and POP (see the next section) are enabled,
365 then distributed BBoards can be supported on top of the POP service.
366 This allows the \MH/ user to read BBoards on a server machine
367 instead of the local host
368 (which saves a lot of wasted disk space when the same BBoards are replicated
369 several times at a site with several hosts).
370 See the {\em Administrator's Guide\/} for information on how this can be made
371 completely transparent to the \MH/ user.
373 If you have several machines at your site running 4.2\bsd/~\unix/
374 and connected by an \ethernet/ (or other high-speed LAN),
375 you {\em want\/} this software.
377 \subsection* {Visual Front-End to msh}
378 A simple window management protocol has been implemented for \MH/ programs
379 that might wish to act as a back-end to a sophisticated visual front-end.
381 The first implementation of a server side (front-end) program is \pgm{vmh},
382 which uses \man curses(3) to maintain a split-screen interface.
383 Perhaps look for a \pgm{mhtool} program for the SUN next!
385 The \pgm{msh} program has been modified to speak the client side (back-end)
386 of this protocol, if so directed.
387 At present, \pgm{msh} is the only program in the \MH/ distribution which
388 implements the client side of the window management protocol.
390 \subsection* {Updates in msh}
392 the \pgm{msh} command now asks if the \pgm{packf\/}'d file you've been
393 perusing should be updated if you've modified it and the file is writable by
395 The file can be modified by using \pgm{burst}, \pgm{rmm}, \pgm{rmm},
396 or \pgm{sortm} commands.
397 The file can also be modified by using the \pgm{refile} command without the
398 \switch"link" option.
400 the \switch"link" option doesn't actually link anything to the file.)
402 \f\section* {Distributed Mail}
403 \MH/ now contains a powerful facility for doing distributed mail
404 (having \MH/ reside on a host different than the message transport agent).
405 For general information,
407 {\em MH.5: How to process 200 messages a day and still get some real work
409 or the {\em MH: A Multifarious User Agent} paper.
410 For specific information,
411 consult the {\em Administrator's Guide}.
412 Here's a brief synopsis:
414 This POP facility in \MH/ is based on a modification of the ARPA Post
415 Office Protocol (POP).
416 A POP {\em subscriber\/} is a remote user,
417 on a POP {\em client host},
418 that wishes to pick-up mail on a POP {\em service host}.
420 There are two ways to administer POP:
423 Each user-id in the \man passwd(5) file is considered a POP subscriber.
424 No changes are required for the mailsystem on the POP service host.
426 this method requires that each POP subscriber have an entry in the password
428 The POP server will fetch the user's mail from wherever maildrops are kept on
429 the POP service host.
430 This means that if maildrops are kept in the user's home directory,
431 then each POP subscriber must have a home directory.
434 This is based on the notion that the list of POP subscribers and the list of
435 login users are completely separate name spaces.
436 A separate database (similar to the \man BBoards(5) file)
437 is used to record information about each POP subscriber.
439 the local mailsystem must be changed to reflect this.
440 This requires two changes (both of which are simple):
443 The aliasing mechanism is augmented so that POP subscriber addresses
444 are diverted to a special delivery mechanism.
445 \MH/ comes with a program, \man popaka(8), which generates the
446 additional information to be put in the mailsystem's alias file.
448 A special POP delivery channel (for \MMDFII/)
449 or POP mailer (for \SendMail/) performs the actual delivery (\mh6
451 All it really does is just place the mail in the POP spool area.
453 Clever mailsystem people will note that
454 the POP mechanism is really a special case of the more general
457 These two different philosophies are not compatible on the same POP service
458 host: one or the other, but not both, may be run.
460 In addition, there is one user-visible difference,
461 which the administrator controls the availability of.
462 The difference is whether the POP subscriber must supply a password to the POP
465 \item ARPA standard method\\
466 This uses the standard ARPA technique of sending a username and a password.
467 The appropriate programs (\pgm{inc}, \pgm{msgchk}, and possibly \pgm{bbc\/})
468 will prompt the user for this information.
470 \item \unix/ remote method\\
471 This uses the Berkeley \unix/ reserved port method for authentication.
472 This requires that the two or three mentioned above programs be {\em setuid\/}
474 (There are no known holes in any of these programs.)
476 These two different philosophies are compatible on the same POP service host:
477 to selectively disable RPOP for hosts which aren't trusted,
478 either modify the \file{.rhosts} file in the case of POP subscribers being
480 or zero the contents of network address field of the \man pop(5) file for the
481 desired POP subscribers.
483 The \pgm{inc} command also has two other switches when \MH/ is enabled for
485 \switch"pack file" and \switch"nopack".
487 \pgm{inc} will use the POP to incorporate mail from a POP service host into
488 an \MH/ folder (\verb"+inbox").
490 there are some misguided individuals who prefer to \pgm{msh} to read their
492 By using the \switch"pack file" option,
493 these individuals can direct \pgm{inc} to fetch their maildrop from the POP
494 service host and store it locally in the named file.
495 As expected, \pgm{inc} will treat the local file as a maildrop,
496 performing the appropriate locking protocols.
498 if the file doesn't exist,
499 the user is now asked for confirmation.
501 \f\section* {Rcvmail hooks}
502 In order to offer users of \MH/ increased rcvmail hook functionality,
503 the \pgm{slocal} program has been upgraded to support the semantics of
504 the \MMDFII/ mail-delivery mechanism.
505 This means that users of \mh6 can maintain identical \file{.maildelivery}
506 files regardless of the underlying transport system.
507 See \man mhook(1) for all the details.
509 \subsection* {Change in rcvdist}
510 The \pgm{rcvdist} rcvmail hook now uses the \MH/ formatting facility when
511 redistributing a message.
513 \subsection* {Field change in rcvpack}
514 The \pgm{rcvpack} rcvmail hook now adds the field name \verb"Delivery-Date:"
515 instead of \verb"Cron-Date:" to messages it \pgm{pack\/}s.
517 \f\section* {GNU Emacs Support}
518 James Larus' \pgm{mh-e} macro package for GNU Emacs (version~17) is included
520 When loaded in Emacs, this provides a handy front-end.
522 \f\section* {Other Changes}
523 Here's the miscellany:
525 \subsection* {Continuation Lines}
526 Alias files used by \MH/,
527 display templates used by \pgm{mhl},
528 and format files used by \pgm{forw}, \pgm{repl}, and \pgm{scan} all support
529 a standard continuation line syntax.
530 To continue a line in one of these files,
531 simply end the line with the backslash character (`$\backslash$').
532 All the other files used by \MH/ are in 822--format,
533 so the 822--continuation mechanism is used.%
534 \footnote{Looking back,
535 it would have been best had all files in \MH/ used the 822--format.}
537 \subsection* {Default Date Format}
538 \MH/ now uses numeric timezones instead of locally-meaningful alpha timezones
539 when generating mail.
540 This change was made to encourage the use of unambiguous, globally-meaningful
542 A local configuration option can disable this correct behavior.
543 All of the \pgm{mhl} templates have been modified to use locally-meaningful
544 alpha timezones when displaying messages.
546 \subsection* {New switch in ali}
547 The \pgm{ali} command now has a \switch"noalias" switch to prevent
548 system-wide aliases from being interpreted.
550 \subsection* {Modifications to show}
551 The \switch"format", \switch"noformat", \switch"pr", and \switch"nopr"
552 options to \pgm{show} have gone away in favor of a more general mechanism.
553 The \switch"showproc program" option tells \pgm{show}
554 (or \pgm{next} or \pgm{prev\/}) to use the named program as the \verb"showproc".
555 The \switch"noshowproc" option tells \pgm{show}, et. al.,
556 to use the \man cat(1) program instead of a \verb"showproc".
557 As a result, the profile entry \verb"prproc" is no longer used.
559 \subsection* {Switch change in inc}
560 The \switch"ms ms-file" switch in \pgm{inc} has been changed to
561 \switch"file name" to be more consistent.
563 \subsection* {Front-End to mhl}
564 When outputting to a terminal,
565 the \pgm{mhl} program now runs the program denoted by the profile entry
567 If this entry is not present,
568 the default is the UCB \pgm{more} program.
569 If the entry is non-empty,
570 then that program is spliced between \pgm{mhl} and the user's terminal.
571 The author uses the \pgm{less} program as his \verb"moreproc".
574 if \pgm{mhl} isn't outputting to a terminal,
575 then \verb"moreproc" is not invoked.
578 to aid in the construction of replies,
579 a prefix string may be specified for the \verb"body" component of the message
581 Simply use the \verb"component=" construct in \pgm{mhl} for \verb"body:".
583 \subsection* {Confirmation in packf}
584 If the file specified by the \switch"file name" switch doesn't exist,
585 the user is now asked for confirmation.
587 \subsection* {Complex Expressions in pick}
588 The \pgm{pick} command now handles complex boolean expressions.
590 \subsection* {Defaults change in prompter and burst}
591 The \switch"prepend" option is now the default in \pgm{prompter}.
592 The \switch"noinplace" option is now the default in \pgm{burst}.
594 \subsection* {Fcc:s and post}
595 If multiple Fcc:s for a message are specified during posting,
596 \pgm{post} will try much harder to preserve links.
598 \subsection* {Interactive option in rmf}
599 The \pgm{rmf} program has been changed to support an \switch"interactive"
602 then the user is prompted regarding whether the folder should be deleted.
603 If the folder to be removed is not given by the user,
604 this switch is defaulted to on.
606 \subsection* {Trusted Mail Interface}
607 \MH/ now has an interface for so-called ``trusted mail'' applications.
608 Although the modifications to \MH/ to support this are in the public domain,
609 the actual library that \MH/ uses is not.
610 Contact Professor David J.~Farber ({\sf Farber@UDel\/}) for more information.
612 \bibliography{bcustom,sfwdoc}
613 \bibliographystyle{alpha}