Annotation of 43BSDReno/share/doc/usd/08.mh/MH.me, revision 1.1

1.1     ! root        1: .\"    This file is automatically generated.  Do not edit!
        !             2: \".po +.75i
        !             3: .de $c                          \" Major Heading printer
        !             4: .ce
        !             5: .b "\\s12\\n+(ch.\\ \\$1\\s0"   \" 12 Point Bold Header
        !             6: .(x
        !             7: 
        !             8: \ \ \ \\n(ch.\\ \\ \\$1
        !             9: .)x
        !            10: .sp 45p         \" 45 point space or about 1/2 inch
        !            11: ..
        !            12: \".nr xs .15v     \" Put index entries closer together
        !            13: .(x
        !            14: 
        !            15: Section
        !            16: .)x _
        !            17: .de $0          \" Sub-Heading macro called AFTER printing the heading
        !            18: .(x
        !            19: .sp .3v
        !            20: .ti .5i
        !            21: \\$1
        !            22: .)x
        !            23: ..
        !            24: .de $s          \" Macro to print footnote separator
        !            25: \"\l'2i'        \" No line drawn
        !            26: .if n \
        !            27: .       sp 1.3  \" But extra space to make up for it.
        !            28: ..
        !            29: .fc ^ ~         \" The characters ^ and ~ CANNOT BE USED
        !            30: \"                 throughout this document except as field
        !            31: \"                 delimiter & pad indicator!
        !            32: .oh 'USD:8-%''The Rand MH Message Handling System'
        !            33: .eh 'The Rand MH Message Handling System''USD:8-%'
        !            34: \".he ''-%-''
        !            35: \" .ll 32P         \" 32 Picas or about 5+1/3 inch Line Length
        !            36: .ll 6.5i
        !            37: .lt 6.5i
        !            38: .if n .ll 72m   \" Use 72 ems for nroff
        !            39: .nr ss 30p      \" 30 point space before section titles
        !            40: \".nr fm 5v       \" Rand likes bigger than normal [3v] bottom margins
        !            41: \".nr bm 7v       \"   ditto
        !            42: .ds . \\fB.\\fP\\h'-(1m/3)' \" Bold period to stand out.
        !            43: .ds << <\\h!-(\\w'<'/2)!<
        !            44: .ds >> >\\h!-(\\w'>'/2)!>
        !            45: .ds ** \v'-3p'\s+1*\s0\v'+3p'
        !            46: .so version.rf
        !            47: .tp
        !            48: .(l C
        !            49: \fIdiscard this page\fR
        !            50: .sp 4
        !            51: The Rand \fIMH\fR
        !            52: Message Handling System:
        !            53: User's Manual
        !            54: .sp
        !            55: UCI/UCB Version
        !            56: .sp 2
        !            57: \*(td
        !            58: \*(MH
        !            59: .)l
        !            60: .++ C
        !            61: .+c INTRODUCTION
        !            62: .pp
        !            63: Although people can travel cross-country in hours and can
        !            64: reach others by telephone in seconds, communications still depend
        !            65: heavily upon paper, most of which is distributed through the mails.
        !            66: .pp
        !            67: There are several major reasons for this continued dependence on
        !            68: written documents.
        !            69: First, a written document may be proofread
        !            70: and corrected prior to its distribution, giving the author
        !            71: complete control over his words.
        !            72: Thus, a written document is
        !            73: better than a telephone conversation in this respect.
        !            74: Second,
        !            75: a carefully written document is far less likely to be
        !            76: misinterpreted or poorly translated than a phone conversation.
        !            77: Third, a signature offers reasonable verification of authorship,
        !            78: which cannot be provided with media such as telegrams.
        !            79: .pp
        !            80: However, the need for
        !            81: .u fast ,
        !            82: accurate, and reproducible document distribution is
        !            83: obvious.
        !            84: One solution in widespread use is the telefax.
        !            85: Another
        !            86: that is rapidly gaining popularity is electronic mail.
        !            87: Electronic mail is similar to telefax in that the data to be sent
        !            88: are digitized, transmitted via phone lines, and
        !            89: turned back into a document at the receiver.
        !            90: The advantage of
        !            91: electronic mail is in its compression factor.
        !            92: Whereas a telefax
        !            93: must scan a page in very fine lines and send all of the black and
        !            94: white information, electronic mail assigns characters fixed
        !            95: codes which can be transmitted as a few bits of information.
        !            96: Telefax presently has the advantage of being able to transmit an
        !            97: arbitrary page, including pictures, but electronic mail is
        !            98: beginning to deal with this problem.
        !            99: Electronic mail also integrates well
        !           100: with current directions in office automation, allowing documents
        !           101: prepared with sophisticated equipment at one site to be quickly
        !           102: transferred and printed at another site.
        !           103: .pp
        !           104: Currently, most electronic mail is intraorganizational,
        !           105: with mail transfer remaining within one computer.
        !           106: As computer
        !           107: networking becomes more common, however, it is becoming more feasible to
        !           108: communicate with anyone whose computer can be linked to your
        !           109: own via a network.
        !           110: .pp
        !           111: The pioneering efforts on general-purpose electronic mail
        !           112: were by organizations using the DoD ARPAnet[1].
        !           113: The capability to send messages between computers existed before
        !           114: the ARPAnet was developed, but it was used only in limited ways.
        !           115: With the advent of the
        !           116: ARPAnet, tools began to be developed which made it convenient for
        !           117: individuals or organizations to distribute messages
        !           118: over broad geographic areas, using
        !           119: diverse computer facilities.
        !           120: The interest and activity in
        !           121: message systems has now reached such proportions that steps
        !           122: have been taken within the DoD to coordinate and
        !           123: unify the development of military message systems.
        !           124: The use of electronic mail is expected to increase
        !           125: dramatically in the next few years.
        !           126: The utility of such systems
        !           127: in the command and control and intelligence environments is
        !           128: clear, and applications in these areas will probably lead the
        !           129: way.
        !           130: As the costs for sending and handling electronic messages
        !           131: continue their rapid decrease, such uses can be
        !           132: expected to spread rapidly into other areas and, of course, will
        !           133: not be limited to the DoD.
        !           134: .pp
        !           135: A message system provides tools that help users (individuals
        !           136: or organizations) deal with messages in various ways.
        !           137: Messages
        !           138: must be composed, sent, received, stored, retrieved,
        !           139: forwarded, and replied to.
        !           140: Today's best interactive computer
        !           141: systems provide a variety of word-processing and information
        !           142: handling capabilities.
        !           143: The message handling facilities should be
        !           144: well integrated with the rest of the system, so as to be a
        !           145: graceful extension of overall system capability.
        !           146: .pp
        !           147: The message system described in this report, \fIMH\fR, provides most of the
        !           148: features that can be found in other message systems and also
        !           149: incorporates some new ones.
        !           150: It has been built on the UNIX time-sharing
        !           151: system[2], a popular operating system for the DEC PDP-11\**
        !           152: and VAX-11 classes of computers.
        !           153: .(f
        !           154: \** PDP and VAX are trademarks of Digital Equipment Corporation.
        !           155: .)f
        !           156: A \*(lqsecure\*(rq operating
        !           157: system similar to UNIX is currently being developed[3],
        !           158: and that system will also run \fIMH\fR.
        !           159: .pp
        !           160: This report provides a complete description of \fIMH\fR and
        !           161: thus may serve as a user's manual, although parts of the report
        !           162: will be of interest to non-users as well.
        !           163: Sections 2 and 3, the
        !           164: Overview and Tutorial, present the key
        !           165: ideas of \fIMH\fR and will give those not familiar with message systems
        !           166: an idea of what such systems are like.
        !           167: .pp
        !           168: \fIMH\fR consists of a set of commands which use some special
        !           169: files and conventions.
        !           170: The final section is divided into three parts.
        !           171: The first part covers the information
        !           172: a user needs to know in addition to the
        !           173: commands.
        !           174: Then, each of the \fIMH\fR commands is described in detail.
        !           175: Finally, other obscure details are revealed.
        !           176: A summary of the commands is given in Appendix A,
        !           177: and the syntax of message sequences is given in Appendix B.
        !           178: .pp
        !           179: A novel approach has been taken in the design of \fIMH\fR.
        !           180: Instead of creating a large subsystem that appears as a single
        !           181: command to the user (such as MS[4]),
        !           182: \fIMH\fR is a collection of separate commands
        !           183: which are run as separate programs.
        !           184: The file and directory
        !           185: system of UNIX are used directly.
        !           186: Messages are stored as
        !           187: individual files (datasets), and collections of them are grouped
        !           188: into directories.
        !           189: In contrast, most other message systems store
        !           190: messages in a complicated data structure within a monolithic
        !           191: file.
        !           192: With the \fIMH\fR approach, UNIX commands can be
        !           193: interleaved with commands invoking the functions of the message
        !           194: handler.
        !           195: Conversely, existing UNIX commands
        !           196: can be used in connection with messages.
        !           197: For
        !           198: example, all the usual UNIX editing, text-formatting, and printing
        !           199: facilities can be applied directly to individual messages.
        !           200: MH,
        !           201: therefore, consists of a relatively small amount of new code; it
        !           202: makes extensive use of other UNIX software to provide the
        !           203: capabilities found in other message systems.
        !           204: .+c OVERVIEW
        !           205: .pp
        !           206: There are three main aspects of \fIMH\fR\0:  the  way  messages  are
        !           207: stored (the message database), the user's profile (which directs
        !           208: how certain actions of the message handler take place), and the
        !           209: commands for dealing with messages.
        !           210: .pp
        !           211: Under \fIMH\fR, each message is stored as a separate file.
        !           212: A user
        !           213: can take any action with a message that he could with an ordinary
        !           214: file in UNIX.
        !           215: A UNIX directory in which messages are stored is
        !           216: called a folder.
        !           217: Each folder contains some standard entries to support
        !           218: the message-handling functions.
        !           219: The messages in a folder have numerical
        !           220: names.
        !           221: These folders (directories)
        !           222: are entries in a particular directory path, described in
        !           223: the user profile, through which \fIMH\fR can find message folders.
        !           224: Using the UNIX \*(lqlink\*(rq facility, it is possible for one copy of a
        !           225: message to be \*(lqfiled\*(rq in more than one folder, providing a
        !           226: message index facility.
        !           227: Also, using the UNIX tree-structured
        !           228: file system, it is possible to have a folder within a folder,
        !           229: nested arbitrarily deep,
        !           230: and have the full power of the \fIMH\fR commands available.
        !           231: .pp
        !           232: Each user of \fIMH\fR has a user profile, a file in
        !           233: his \fB$HOME\fR (initial login) directory called \fI\&.mh\(ruprofile\fR.
        !           234: This profile contains several
        !           235: pieces of information used by the \fIMH\fR commands:
        !           236: a path name to the directory that contains the message folders
        !           237: and parameters that tailor \fIMH\fR commands
        !           238: to the individual user's requirements.
        !           239: There is also another file,
        !           240: called the user context,
        !           241: which contains information concerning which folder the user last referenced
        !           242: (the \*(lqcurrent\*(rq folder).
        !           243: It also contains
        !           244: most of the necessary state information concerning how
        !           245: the user is dealing with his messages, enabling \fIMH\fR to be
        !           246: implemented as a set of individual UNIX commands, in contrast to the
        !           247: usual approach of a monolithic subsystem.
        !           248: .pp
        !           249: In \fIMH\fR, incoming mail is appended
        !           250: to the end of a file in a system spooling area for the user.
        !           251: This area is called the mail drop directory,
        !           252: and the file is called the user's mail drop.
        !           253: Normally when the user logins in,
        !           254: s/he is informed of new mail
        !           255: (or the \fIMH\fR program \fImsgchk\fR may be run).
        !           256: The user adds the new messages to his/her collection of \fIMH\fR messages
        !           257: by invoking the command
        !           258: \fIinc\fR.
        !           259: The \fIinc\fR (incorporate) command adds the new
        !           260: messages to a folder called \*(lqinbox\*(rq, assigning them names which
        !           261: are consecutive integers starting with the next highest integer
        !           262: available in inbox.
        !           263: \fIinc\fR also produces a
        !           264: \fIscan\fR summary of
        !           265: the messages thus incorporated.
        !           266: A folder can be compacted into a single file,
        !           267: for easy storage,
        !           268: by using the \fIpackf\fR command.
        !           269: Also,
        !           270: messages within a folder can be sorted by date and time with the \fIsortm\fR
        !           271: command.
        !           272: 
        !           273: .pp
        !           274: There are four commands for examining the messages in a
        !           275: folder:
        !           276: \fIshow\fR,
        !           277: \fIprev\fR,
        !           278: \fInext\fR,
        !           279: and
        !           280: \fIscan\fR.
        !           281: The \fIshow\fR command displays a message in a folder,
        !           282: \fIprev\fR displays the message preceding the current message, and
        !           283: \fInext\fR displays the message following the current message.
        !           284: \fIMH\fR lets the user choose the program that displays individual messages.
        !           285: A special program, \fImhl\fR, can be used to display messages according
        !           286: to the user's preferences.
        !           287: The \fIscan\fR command summarizes the messages in a folder,
        !           288: normally producing one line per message, showing who the message is from,
        !           289: the date, the subject, etc.
        !           290: .pp
        !           291: The user may move a message from one folder to another with
        !           292: the command
        !           293: \fIrefile\fR.
        !           294: Messages may be removed from a folder
        !           295: by means of the command
        !           296: \fIrmm\fR.
        !           297: In addition, a user may query
        !           298: what the current folder is and may specify that a new folder
        !           299: become the current folder, through the command
        !           300: \fIfolder\fR.
        !           301: All folders may be summarized with the \fIfolders\fR command.
        !           302: A message folder (or subfolder) may be removed by means of
        !           303: the command
        !           304: \fIrmf\fR.
        !           305: .pp
        !           306: A set of messages based on content may be selected by
        !           307: use of the command \fIpick\fR.
        !           308: This command searches through
        !           309: messages in a folder and selects those that match a given
        !           310: set of criteria.
        !           311: These messages are then bound to a \*(lqsequence\*(rq name for use with other
        !           312: \fIMH\fR commands.
        !           313: The \fImark\fR command manipulates these sequences.
        !           314: .pp
        !           315: There are five commands enabling the user to create new
        !           316: messages and send them:
        !           317: \fIcomp\fR,
        !           318: \fIdist\fR,
        !           319: \fIforw\fR,
        !           320: \fIrepl\fR,
        !           321: and
        !           322: \fIsend\fR.
        !           323: The \fIcomp\fR command
        !           324: provides the facility for the user to compose a
        !           325: new message;
        !           326: \fIdist\fR redistributes mail to additional addressees;
        !           327: \fIforw\fR enables the user to forward messages; and
        !           328: \fIrepl\fR facilitates the generation of a reply to an incoming message.
        !           329: The last three commands may optionally annotate the original message.
        !           330: Messages may be arbitrarily annotated with the \fIanno\fR command.
        !           331: Once a draft has been constructed by one of the four above composition
        !           332: programs,
        !           333: a user\-specifiable program is run to query the user as to the disposition of
        !           334: the draft prior to sending.
        !           335: \fIMH\fR provides the simple \fIwhatnow\fR program to start users off.
        !           336: If
        !           337: a message is not sent directly by one of these commands, it may
        !           338: be sent at a later time using the command
        !           339: \fIsend\fR.
        !           340: \fIMH\fR allows the use of any UNIX editor when composing a message.
        !           341: For rapid entry, a special editor, \fIprompter\fR, is provided.
        !           342: For programs, a special mail-sending program, \fImhmail\fR, is provided.
        !           343: .pp
        !           344: \fIMH\fR supports a personal aliasing facility which gives users the
        !           345: capability to considerably shorten address typein
        !           346: and use meaningful names for addresses.
        !           347: The \fIali\fR program can be used to query \fIMH\fR as to the expansion of a
        !           348: list of aliases.
        !           349: After composing a message, but prior to sending, the \fIwhom\fR command
        !           350: can be used to determine exactly who a message would go to.
        !           351: .pp
        !           352: \fIMH\fR provides a natural interface for telling the user's shell the names
        !           353: of \fIMH\fR messages and folders.
        !           354: The \fImhpath\fR program achieves this capability.
        !           355: .pp
        !           356: The \fIburst\fR command can be used to \*(lqshred\*(rq digests of messages
        !           357: into individual messages.
        !           358: .pp
        !           359: All of the elements summarized above
        !           360: are described in more detail in the following sections.
        !           361: Many of the
        !           362: normal facilities of UNIX provide additional capabilities for
        !           363: dealing with messages in various ways.
        !           364: For example, it is
        !           365: possible to print messages
        !           366: on the line-printer without requiring any additional code within
        !           367: \fIMH\fR\0.
        !           368: Using standard UNIX facilities, any terminal output can be
        !           369: redirected to a file for repeated or future viewing.
        !           370: In general,
        !           371: the flexibility and capabilities of the UNIX interface with the
        !           372: user are preserved as a result of the integration of \fIMH\fR into the UNIX
        !           373: structure.
        !           374: .+c TUTORIAL
        !           375: .pp
        !           376: This tutorial provides a brief introduction to the \fIMH\fR commands.
        !           377: It should be sufficient
        !           378: to allow the user to read his mail, do some simple manipulations of
        !           379: it, and create and send messages.
        !           380: .pp
        !           381: A message has two major pieces:  the
        !           382: header and the body.
        !           383: The body consists of the text of the message
        !           384: (whatever you care to type in).
        !           385: It follows the header and is separated from
        !           386: it by an empty line.
        !           387: (When you compose a message, the form that appears
        !           388: on your terminal shows a line of dashes after the header.
        !           389: This is for
        !           390: convenience and is replaced by an empty line when the message is
        !           391: sent.)  The header is composed of several components, including the
        !           392: subject of the message and the person to whom it is addressed.
        !           393: Each component starts with a name
        !           394: and a colon; components must not start with a blank.
        !           395: The text of the
        !           396: component may take more than one line, but each continuation line must
        !           397: start with a blank.
        !           398: Messages typically have \*(lqTo:\*(rq, \*(lqcc:\*(rq, and
        !           399: \*(lqSubject:\*(rq components.
        !           400: When composing a message, you should include
        !           401: the \*(lqTo:\*(rq and \*(lqSubject:\*(rq components;
        !           402: the \*(lqcc:\*(rq (for people you want to send copies to) is not necessary.
        !           403: .pp
        !           404: The basic \fIMH\fR commands are
        !           405: \fIinc\fR,
        !           406: \fIscan\fR,
        !           407: \fIshow\fR,
        !           408: \fInext\fR,
        !           409: \fIprev\fR,
        !           410: \fIrmm\fR,
        !           411: \fIcomp\fR,
        !           412: and
        !           413: \fIrepl\fR.
        !           414: These are described below.
        !           415: 
        !           416: \fIinc\fR
        !           417: .pp
        !           418: When you get the message \*(lqYou have mail\*(rq, type the command \fIinc\fR.
        !           419: You will get a \*(lqscan listing\*(rq such as:
        !           420: 
        !           421: .nf
        !           422: .in +.5i
        !           423: .ta \w'7+  'u +\w'11/26  'u +\w'To:norm  'u
        !           424: 7+     \07/13  Cas     revival of measurement work
        !           425: 8      10/\09  Norm    NBS people and publications
        !           426: 9      11/26   To:norm question \*(<<Are there any functions
        !           427: .re
        !           428: .in -.5i
        !           429: .fi
        !           430: .pp
        !           431: This shows the messages you received since the last time you
        !           432: executed this command (\fIinc\fR adds these new messages to your inbox folder).
        !           433: You can see this list again, plus a list of any
        !           434: other messages you have, by using the
        !           435: \fIscan\fR command.
        !           436: 
        !           437: \fIscan\fR
        !           438: .pp
        !           439: The scan listing shows the message number, followed by the
        !           440: date and the sender.
        !           441: (If you are the sender, the addressee in the \*(lqTo:\*(rq
        !           442: component is displayed.
        !           443: You may send yourself a message by including
        !           444: your name among the \*(lqTo:\*(rq or \*(lqcc:\*(rq addressees.)
        !           445: It also shows the message's subject; if
        !           446: the subject is short, the first part of the body of the message is
        !           447: included after the characters \*(<<.
        !           448: 
        !           449: .ne 5
        !           450: \fIshow\fR
        !           451: .pp
        !           452: This command shows the current message, that is,
        !           453: the first one of the new messages after an
        !           454: \fIinc\fR.
        !           455: If the message is not
        !           456: specified by name (number), it is
        !           457: generally the last message referred to by an \fIMH\fR command.
        !           458: For example,
        !           459: 
        !           460: 
        !           461: .ta \w'\fIshow\fR\0|\0\fIlpr\fR  'u
        !           462: .ti .5i
        !           463: ^\fIshow\fP\05~^will show message 5.
        !           464: .re
        !           465: 
        !           466: .pp
        !           467: You can use the show command to copy a message or print a
        !           468: message.
        !           469: 
        !           470: .(b L
        !           471: .in .5i
        !           472: .ta \w'\fIshow\fR\0|\0\fIlpr\fR  'u
        !           473: ^\fIshow\fR\0>\0\fIx\fR~^will copy the message to file x.
        !           474: .br
        !           475: ^\fIshow\fR\0|\0\fIlpr\fR~^will print the message, using the \fIlpr\fR command.
        !           476: .br
        !           477: ^\fInext\fR~^will show the message that follows the current message.
        !           478: .br
        !           479: ^\fIprev\fR~^will show the message previous to the current message.
        !           480: .br
        !           481: ^\fIrmm\fR~^will remove the current message.
        !           482: .br
        !           483: ^\fIrmm\03\fR~^will remove message 3.
        !           484: .)b
        !           485: 
        !           486: .ne 5
        !           487: \fIcomp\fR
        !           488: .pp
        !           489: The
        !           490: \fIcomp\fR command puts you in the editor to write or edit a message.
        !           491: Fill in or
        !           492: delete the \*(lqTo:\*(rq, \*(lqcc:\*(rq, and \*(lqSubject:\*(rq fields,
        !           493: as appropriate, and type the body of the message.
        !           494: Then
        !           495: exit normally from the editor.
        !           496: You will be asked
        !           497: \*(lqWhat now?\*(rq.
        !           498: Type a carriage return to see the options.
        !           499: Typing \fBsend\fR
        !           500: will cause the message to be sent; typing \fBquit\fR will cause an exit
        !           501: from
        !           502: \fIcomp\fR,
        !           503: with the message draft saved.
        !           504: .pp
        !           505: If you quit without sending the message, it will be saved in a file
        !           506: called <name>/Mail/draft (where <name> is your \fB$HOME\fR directory).
        !           507: You can resume editing the message later with \*(lqcomp\0\-use\*(rq;
        !           508: or you can send the message later, using the \fIsend\fR command.
        !           509: 
        !           510: .ne 4
        !           511: \fIcomp\0\-editor\0prompter\fR
        !           512: .pp
        !           513: This command uses a different editor and is useful for preparing
        !           514: \*(lqquick and dirty\*(rq messages.
        !           515: It prompts you for each component of the
        !           516: header.
        !           517: Type the information for that component, or type a carriage
        !           518: return to omit the component.
        !           519: After that, type the body of the
        !           520: message.
        !           521: Backspacing is the only form of editing allowed with this editor.
        !           522: When the body is complete, type a carriage return followed by <EOT>
        !           523: (usually <CTRL-D>).
        !           524: This completes the initial preparation of the message; from then on, use
        !           525: the same procedures as with
        !           526: \fIcomp\fR (above).
        !           527: 
        !           528: .ne 5
        !           529: \fIrepl\fR
        !           530: .br
        !           531: \fIrepl\fR\0n 
        !           532: .pp
        !           533: This command makes up an initial message form with a header
        !           534: that is appropriate for
        !           535: replying to an existing message.
        !           536: The message being answered is the
        !           537: current message if no message number is mentioned, or n if a number
        !           538: is specified.
        !           539: After the header is completed, you can finish the message as in
        !           540: \fIcomp\fR (above).
        !           541: .pp
        !           542: This is enough information to get you going using \fIMH\fR.
        !           543: There are more commands,
        !           544: and the commands described here have more features.
        !           545: Subsequent sections
        !           546: explain \fIMH\fR in complete detail.
        !           547: The system is quite powerful if you
        !           548: want to use its sophisticated features, but the foregoing commands
        !           549: suffice for sending and receiving messages.
        !           550: .pp
        !           551: There are numerous additional capabilities you may wish to explore.
        !           552: For example, the
        !           553: \fIpick\fR command will select a subset of messages
        !           554: based on specified criteria such as sender and/or subject.
        !           555: Groups of
        !           556: messages may be designated, as described in Sec. IV,
        !           557: under \fBMessage Naming\fR.
        !           558: The file \fI\&.mh\(ruprofile\fR can be used to tailor your use of
        !           559: the message system to your needs and preferences, as described in Sec. IV,
        !           560: under \fBThe User Profile\fR.
        !           561: In general, you may
        !           562: learn additional features of the system selectively, according to your
        !           563: requirements,
        !           564: by studying the relevant sections of this manual.
        !           565: There is no need to
        !           566: learn all the details of the system at once.
        !           567: .+c "DETAILED DESCRIPTION"
        !           568: .pp
        !           569: This section describes the \fIMH\fR system in detail, including the components
        !           570: of the user profile, the conventions for message naming, and some of
        !           571: the other \fIMH\fR conventions.
        !           572: Readers who are
        !           573: generally familiar with computer systems will be able to follow
        !           574: the principal ideas, although some details may be meaningful only to
        !           575: those familiar with UNIX.
        !           576: .uh "THE USER PROFILE"
        !           577: .pp
        !           578: The first time an \fIMH\fR command is issued by a new user, the system
        !           579: prompts for a \*(lqPath\*(rq and creates an \fIMH\fR \*(lqprofile\*(rq.
        !           580: .pp
        !           581: Each \fIMH\fR user has a profile which contains tailoring
        !           582: information for each individual program.
        !           583: Other profile entries control the \fIMH\fR path (where folders and
        !           584: special files are kept), folder and message protections, editor
        !           585: selection, and default arguments for each \fIMH\fR program.
        !           586: Each user of \fIMH\fR also has a context file which contains
        !           587: current state information for the \fIMH\fR package
        !           588: (the location of the context file is kept in the user's \fIMH\fR directory,
        !           589: or may be named in the user profile).
        !           590: When a folder becomes
        !           591: the current folder, it is recorded in the user's context.
        !           592: (Other state information is kept in the context file,
        !           593: see the manual entry for \fImh\-profile\0\fR(5) for more details.)
        !           594: In general,
        !           595: the term \*(lqprofile entry\*(rq refer to entries in either the profile or
        !           596: context file.
        !           597: Users of \fIMH\fR needn't worry about the distinction,
        !           598: \fIMH\fR handles these things automatically.
        !           599: .pp
        !           600: The \fIMH\fR profile is stored in the file \fI\&.mh\(ruprofile\fR in the
        !           601: user's \fB$HOME\fR directory\**.
        !           602: .(f
        !           603: \** By defining the environment variable \fB$MH\fR,
        !           604: you can specify an alternate profile to be used by \fIMH\fR commands.
        !           605: .)f
        !           606: It has the format of a message without
        !           607: any body.
        !           608: That is, each profile entry is on one line, with a
        !           609: keyword followed by a colon (:) followed by text particular to
        !           610: the keyword.
        !           611: .br
        !           612: \(rh\ \ \&
        !           613: \fIThis file must not have blank lines.\fR
        !           614: .br
        !           615: The keywords
        !           616: may have any combination of upper and lower case.
        !           617: (See the information of \fImh\-mail\fR later on in this manual
        !           618: for a description of message formats.)
        !           619: .pp
        !           620: For the average \fIMH\fR user, the only profile entry of
        !           621: importance is \*(lqPath\*(rq.
        !           622: Path specifies a directory in which \fIMH\fR
        !           623: folders and certain files such as \*(lqdraft\*(rq are found.
        !           624: The
        !           625: argument to this keyword must be a legal UNIX path that names an
        !           626: existing directory.
        !           627: If this path is not absolute
        !           628: (i.e., does not begin with a \fB/\fR\0),
        !           629: it will be presumed to start from the user's \fB$HOME\fR directory.
        !           630: All folder and message references within
        !           631: \fIMH\fR will relate to this path unless full path names are used.
        !           632: .pp
        !           633: Message protection defaults to 644, and folder protection to
        !           634: 711.
        !           635: These may be changed by profile entries \*(lqMsg-Protect\*(rq
        !           636: and \*(lqFolder-Protect\*(rq, respectively.
        !           637: The argument to these
        !           638: keywords is an octal number which is used as the UNIX file mode\**.
        !           639: .(f
        !           640: \** See \fIchmod\fR\0(1) in the \fIUNIX Programmer's Manual\fR\0[5].
        !           641: .)f
        !           642: .pp
        !           643: When an \fIMH\fR program starts running, it looks through the
        !           644: user's profile for an entry with a keyword matching the program's
        !           645: name.
        !           646: For example, when
        !           647: \fIcomp\fR is run, it looks for a \*(lqcomp\*(rq
        !           648: profile entry.
        !           649: If one is found, the text of the profile entry is
        !           650: used as the default switch setting until all defaults are overridden
        !           651: by explicit switches passed to the program as arguments.
        !           652: Thus the profile
        !           653: entry \*(lqcomp:\0\-form\0standard.list\*(rq would direct
        !           654: \fIcomp\fR to use the
        !           655: file \*(lqstandard.list\*(rq as the message skeleton.
        !           656: If an explicit
        !           657: form switch is given to the
        !           658: \fIcomp\fR command, it will override the
        !           659: switch obtained from the profile.
        !           660: .pp
        !           661: In UNIX, a program may exist under several names,
        !           662: either by linking or aliasing.
        !           663: The actual invocation name is used by an \fIMH\fR
        !           664: program when scanning for its profile defaults\**.
        !           665: .(f
        !           666: \** Unfortunately,
        !           667: the shell does not preserve aliasing information when calling a program,
        !           668: hence if a program is invoked by an alias different than its name,
        !           669: the program will examine the profile entry for its name,
        !           670: not the alias that the user invoked it as.
        !           671: The correct solution is to create a (soft) link in your \fI$HOME/bin\fR
        !           672: directory to the \fIMH\fR program of your choice.
        !           673: By giving this link a different name,
        !           674: you can use an alternate set of defaults for the command.
        !           675: .)f
        !           676: Thus, each \fIMH\fR program
        !           677: may have several names by which it can be invoked, and each name
        !           678: may have a different set of default switches.
        !           679: For example, if
        !           680: \fIcomp\fR is invoked by the name
        !           681: \fIicomp\fR,
        !           682: the profile entry
        !           683: \*(lqicomp\*(rq will control the default switches for this invocation of
        !           684: the
        !           685: \fIcomp\fR program.
        !           686: This provides a powerful
        !           687: definitional facility for commonly used switch settings.
        !           688: .pp
        !           689: The default editor
        !           690: for editing within
        !           691: \fIcomp\fR,
        !           692: \fIrepl\fR,
        !           693: \fIforw\fR,
        !           694: and
        !           695: \fIdist\fR,
        !           696: is usually \fIprompter\fR,
        !           697: but might be something else at your site,
        !           698: such as \fI/usr/ucb/ex\fR or \fI/bin/e\fR.
        !           699: A different editor may be used by specifying
        !           700: the profile entry
        !           701: \*(lqEditor: \*(rq.
        !           702: The argument to \*(lqEditor\*(rq is the name of an
        !           703: executable program or shell command file which can be found via
        !           704: the user's $PATH defined search path, excluding the current
        !           705: directory.
        !           706: The \*(lqEditor:\*(rq profile specification
        !           707: may in turn be overridden by a `\-editor\0<editor>'
        !           708: profile switch associated with
        !           709: \fIcomp\fR,
        !           710: \fIrepl\fR,
        !           711: \fIforw\fR,
        !           712: or
        !           713: \fIdist\fR.
        !           714: Finally, an explicit editor switch specified with any
        !           715: of these four commands will have ultimate precedence.
        !           716: .pp
        !           717: During message composition, more than one editor may be
        !           718: used.
        !           719: For example, one editor (such as \fIprompter\fR\0)
        !           720: may be used
        !           721: initially, and a second editor may be invoked later to revise
        !           722: the message being composed
        !           723: (see the discussion of
        !           724: \fIcomp\fR in Section 5 for details).
        !           725: A profile entry \*(lq<lasteditor>\-next:\0<editor>\*(rq specifies the name of
        !           726: the editor to be used after a particular editor.
        !           727: Thus \*(lqcomp:\0\-e\0prompter\*(rq
        !           728: causes the initial text to be collected by
        !           729: \fIprompter\fR,
        !           730: and the profile entry \*(lqprompter\-next:\0ed\*(rq names ed as the
        !           731: editor to be invoked for the next round of editing.
        !           732: .pp
        !           733: Some of the \fIMH\fR commands, such as
        !           734: \fIshow\fR,
        !           735: can be used on
        !           736: message folders owned by others, if those folders are readable.
        !           737: However,
        !           738: you cannot write in someone else's folder.
        !           739: All the \fIMH\fR command
        !           740: actions not requiring write permission may be used with
        !           741: a \*(lqread-only\*(rq folder.
        !           742: .pp
        !           743: Table 1 lists examples of some of the currently defined profile
        !           744: entries, typical arguments, and the programs that reference the
        !           745: entries.
        !           746: .bp
        !           747: .in .9i
        !           748: .ll -.9i
        !           749: .ta \w'<program>:\0default switches  'u
        !           750: .sp 30p
        !           751: .ce
        !           752: Table 1
        !           753: .sp 8p
        !           754: .ce
        !           755: P\s-2ROFILE\s0 C\s-2OMPONENTS\s0
        !           756: .hl             \" ~12p preceding + 1v (12p) after
        !           757: .nf
        !           758: ^^\fIMH\fR Programs that
        !           759: ^Keyword and Argument~^\ use Component\h'|\n(.lu-.9i'\v'4p'\l'|0'\v'-4p'  \" \l'..' does underlining
        !           760: .sp
        !           761: ^Path:\0Mail~^All
        !           762: ^Current-Folder:\0inbox~^Most
        !           763: ^Editor:\0/usr/ucb/ex~^\fIcomp, dist, forw, repl\fR
        !           764: ^Msg\-Protect:\0644~^\fIinc\fR
        !           765: ^Folder\-Protect:\0711~^\fIinc, pick, refile\fR
        !           766: ^<program>:\0default switches~^All
        !           767: ^prompter\-next:\0ed~^\fIcomp, dist, forw, repl\fR
        !           768: .hl
        !           769: .ll +.9i
        !           770: .in 0
        !           771: .fi
        !           772: .pp
        !           773: Path
        !           774: .u should
        !           775: be present.
        !           776: Current\-Folder is maintained
        !           777: automatically by many \fIMH\fR commands (see the \fBContext\fR sections of
        !           778: the individual commands in Sec. IV).
        !           779: All other entries are optional,
        !           780: defaulting to the values described above.
        !           781: .uh "MESSAGE NAMING"
        !           782: .pp
        !           783: Messages may be referred to explicitly or implicitly when
        !           784: using \fIMH\fR commands.
        !           785: A formal syntax of message names is given in Appendix B, but the
        !           786: following description should be sufficient for most \fIMH\fR users.
        !           787: Some details of message naming that apply only to certain
        !           788: commands are included in the description of those
        !           789: commands.
        !           790: .pp
        !           791: Most of the \fIMH\fR commands accept arguments specifying one or
        !           792: more folders, and one or more messages to operate on.
        !           793: The use of
        !           794: the word \*(lqmsg\*(rq as an argument to a command means that exactly one
        !           795: message name may be specified.
        !           796: A message name may be a number,
        !           797: such as 1, 33, or 234, or it may be
        !           798: one of the \*(lqreserved\*(rq message names:
        !           799: first, last, prev, next, and cur.
        !           800: (As a shorthand, a
        !           801: period (\&.) is equivalent to cur.)
        !           802: The meanings of these names are straightforward:
        !           803: \*(lqfirst\*(rq is the first message in the folder;
        !           804: \*(lqlast\*(rq is the last message in the folder;
        !           805: \*(lqprev\*(rq is the message numerically previous to the current message;
        !           806: \*(lqnext\*(rq is the message numerically following the current message;
        !           807: \*(lqcur\*(rq (or \*(lq\&.\*(rq) is the current message in the folder.
        !           808: In addition,
        !           809: \fIMH\fR supports user\-defined\-sequences;
        !           810: see the description of the \fImark\fR command for more information.
        !           811: .pp
        !           812: The default in commands that take a \*(lqmsg\*(rq argument is
        !           813: always \*(lqcur\*(rq.
        !           814: .pp
        !           815: The word \*(lqmsgs\*(rq indicates that several messages may be
        !           816: specified.
        !           817: Such a specification consists of several message
        !           818: designations separated by spaces.
        !           819: A message designation is
        !           820: either a message name or a message range.
        !           821: A message range is a
        !           822: specification of the form name1\-name2 or name1:n, where name1 and
        !           823: name2 are message names and n is an integer.
        !           824: The first form
        !           825: designates all the messages from name1 to name2 inclusive; this
        !           826: must be a non-empty range.
        !           827: The second form specifies up to n
        !           828: messages, starting with name1 if name1 is a number, or first,
        !           829: cur, or next, and ending with name1 if name1 is last or
        !           830: prev.
        !           831: This interpretation of n is overridden if n is preceded
        !           832: by a plus sign or a minus sign;
        !           833: +n always means up to n messages starting with
        !           834: name1, and \-n always means up to n messages ending with name1.
        !           835: Repeated specifications of the same message have the same effect
        !           836: as a single specification of
        !           837: the message.
        !           838: Examples of
        !           839: specifications are:
        !           840: 
        !           841: .(b
        !           842: 1 5 7\-11 22
        !           843: first 6 8 next
        !           844: first\-10
        !           845: last:5
        !           846: .)b
        !           847: .pp
        !           848: The message name \*(lqall\*(rq is a shorthand for \*(lqfirst\-last\*(rq,
        !           849: indicating all of the messages in the folder.
        !           850: .pp
        !           851: In commands that accept \*(lqmsgs\*(rq arguments, the default is
        !           852: either cur or all, depending on which makes more sense.
        !           853: .pp
        !           854: In all of the \fIMH\fR commands, a plus sign preceding an argument
        !           855: indicates a folder name.
        !           856: Thus, \*(lq+inbox\*(rq is the name of the
        !           857: user's standard inbox.
        !           858: If an explicit folder argument is given
        !           859: to an \fIMH\fR command, it will become the current folder (that is,
        !           860: the \*(lqCurrent-Folder:\*(rq entry
        !           861: in the user's profile will be changed to this folder).
        !           862: In the case of the
        !           863: \fIrefile\fR command, which
        !           864: can have multiple output folders, a new source folder (other than
        !           865: the default current folder) is specified by `\-src\0+folder'.
        !           866: .uh "OTHER MH CONVENTIONS"
        !           867: .pp
        !           868: One very powerful feature of \fIMH\fR is that the \fIMH\fR commands may
        !           869: be issued from any current directory, and the proper path to
        !           870: the appropriate folder(s) will be taken from the user's profile.
        !           871: If the \fIMH\fR path is not appropriate for a specific folder or file,
        !           872: the automatic prepending of the \fIMH\fR path can be avoided by
        !           873: beginning a folder or file name with \fB/\fR,
        !           874: or with \fB\&./\fR or \fB\&.\&./\fR component.
        !           875: Thus any specific absolute path may be specified along with any path
        !           876: relative to the current working directory.
        !           877: .pp
        !           878: Arguments to the various programs may be given in any order,
        !           879: with the exception of a few switches whose arguments must follow
        !           880: immediately, such as `\-src\0+folder' for \fIrefile\fR.
        !           881: .pp
        !           882: Whenever an \fIMH\fR command prompts the user, the valid options
        !           883: will be listed in response to a <RETURN>.
        !           884: (The first of the
        !           885: listed options is the default if end-of-file is encountered,
        !           886: such as from a command file.)
        !           887: A valid response is any \fIunique\fR abbreviation of one of the listed options.
        !           888: .pp
        !           889: Standard UNIX documentation conventions are used in this report
        !           890: to describe \fIMH\fR command syntax.
        !           891: Arguments enclosed in brackets
        !           892: ([ ]) are optional; exactly one of the arguments enclosed
        !           893: within braces ({ }) must be specified, and all other
        !           894: arguments are required.
        !           895: The use of ellipsis dots (...) indicates
        !           896: zero or more repetitions of the previous item.
        !           897: For example,
        !           898: \*(lq+folder ...\*(rq would indicate that one or more \*(lq+folder\*(rq
        !           899: arguments is required
        !           900: and \*(lq[+folder ...]\*(rq indicates that 0 or more
        !           901: \*(lq+folder\*(rq arguments may be given.
        !           902: .pp
        !           903: \fIMH\fR departs from UNIX standards by using switches that consist of
        !           904: more than one character, e.g. `\-header'.
        !           905: To minimize typing,
        !           906: only a unique abbreviation of a switch need be typed; thus, for
        !           907: `\-header', `\-hea' is probably sufficient, depending on the
        !           908: other switches the command accepts.
        !           909: Each \fIMH\fR program
        !           910: accepts the switch `\-help' (which \fBmust\fR be spelled out fully)
        !           911: and produces a syntax description and a list of switches.
        !           912: In the
        !           913: list of switches, parentheses indicate required characters.
        !           914: For example, all `\-help' switches will appear as \*(lq\-(help)\*(rq,
        !           915: indicating that no abbreviation is accepted.
        !           916: Furthermore,
        !           917: the `\-help' switch tells the version of the \fIMH\fR program you invoked.
        !           918: .pp
        !           919: Many \fIMH\fR switches have both on and off forms, such as
        !           920: `\-format' and `\-noformat'.
        !           921: In many of the descriptions which follow,
        !           922: only one form is defined; the other form, often used to
        !           923: nullify profile switch settings, is assumed to be the opposite.
        !           924: .br
        !           925: .bp
        !           926: .uh "MH COMMANDS"
        !           927: .pp
        !           928: The \fIMH\fR package comprises several programs:
        !           929: .\"    I pity the fool who tampers with the next line...
        !           930: .ds ZZ -me
        !           931: .so mh.me
        !           932: .pp
        !           933: These programs are described below.
        !           934: The form of the descriptions
        !           935: conforms to the standard
        !           936: form for the description of UNIX commands.
        !           937: .if t \{
        !           938: .ll 6.5i
        !           939: .lt 6.5i
        !           940: \}
        !           941: .fo '[mh.6]'MH'UCI/UCB version'
        !           942: .de SC
        !           943: \".he '\\$1(\\$2)'-%-'\\$1(\\$2)'
        !           944: .oh 'USD:8-%'The Rand MH Message Handling System'\\$1(\\$2)'
        !           945: .eh '\\$1(\\$2)'The Rand MH Message Handling System'USD:8-%'
        !           946: .bp
        !           947: .(x
        !           948: .ti .8i
        !           949: \\$1
        !           950: .)x
        !           951: ..
        !           952: .de NA
        !           953: .b \\s-2NAME\\s0
        !           954: .ti .5i
        !           955: ..
        !           956: .de SY
        !           957: .sp
        !           958: .b \\s-2SYNOPSIS\\s0
        !           959: .in 1i
        !           960: .ti .5i
        !           961: .na
        !           962: ..
        !           963: .de DE
        !           964: .ad
        !           965: .sp
        !           966: .in 0
        !           967: .b  \\s-2DESCRIPTION\\s0
        !           968: .sp
        !           969: .fi
        !           970: .in .5i
        !           971: ..
        !           972: .de Hh
        !           973: .ad
        !           974: .sp
        !           975: .in 0
        !           976: .b "\\s-2Helpful Hints\\s0"
        !           977: .sp
        !           978: .fi
        !           979: .in .5i
        !           980: ..
        !           981: .de Fi
        !           982: .(b L
        !           983: .ti 0
        !           984: .b \\s-2Files\\s0
        !           985: .ta \w'/usr/new/lib/mh/ExtraBigFileName  'u
        !           986: ..
        !           987: .de Pr
        !           988: .)b
        !           989: .(b L F
        !           990: .ta \w'ExtraBigProfileName  'u
        !           991: .ti 0
        !           992: .b "\\s-2Profile Components\\s0"
        !           993: .ti .5i
        !           994: ..
        !           995: .de Ps
        !           996: .ti .5i
        !           997: ..
        !           998: .de Sa
        !           999: .)b
        !          1000: .(b L F
        !          1001: .ti 0
        !          1002: .b "\\s-2See Also\\s0"
        !          1003: .br
        !          1004: ..
        !          1005: .de De
        !          1006: .)b
        !          1007: .(b L
        !          1008: .in .5i
        !          1009: .ti 0
        !          1010: .b \\s-2Defaults\\s0
        !          1011: ..
        !          1012: .de Ds
        !          1013: ..
        !          1014: .de Co
        !          1015: .)b
        !          1016: .(b L F
        !          1017: .ti 0
        !          1018: .b \\s-2Context\\s0
        !          1019: .br
        !          1020: ..
        !          1021: .de Hi
        !          1022: .)b
        !          1023: .(b L F
        !          1024: .ti 0
        !          1025: .b \\s-2History\\s0
        !          1026: .br
        !          1027: ..
        !          1028: .de Bu
        !          1029: .)b
        !          1030: .(b L F
        !          1031: .ti 0
        !          1032: .b \\s-2Bugs\\s0
        !          1033: .br
        !          1034: ..
        !          1035: .de En
        !          1036: .)b
        !          1037: .in 0
        !          1038: ..
        !          1039: \".po -.50i
        !          1040: .so ali.me
        !          1041: .so anno.me
        !          1042: .so burst.me
        !          1043: .so comp.me
        !          1044: .so dist.me
        !          1045: .so folder.me
        !          1046: .so forw.me
        !          1047: .so inc.me
        !          1048: .so mark.me
        !          1049: .so mhl.me
        !          1050: .so mhmail.me
        !          1051: .so mhook.me
        !          1052: .so mhpath.me
        !          1053: .so msgchk.me
        !          1054: .so msh.me
        !          1055: .so next.me
        !          1056: .so packf.me
        !          1057: .so pick.me
        !          1058: .so prev.me
        !          1059: .so prompter.me
        !          1060: .so rcvstore.me
        !          1061: .so refile.me
        !          1062: .so repl.me
        !          1063: .so rmf.me
        !          1064: .so rmm.me
        !          1065: .so scan.me
        !          1066: .so send.me
        !          1067: .so show.me
        !          1068: .so sortm.me
        !          1069: .so vmh.me
        !          1070: .so whatnow.me
        !          1071: .so whom.me
        !          1072: \".po +.50i
        !          1073: \".he ''-%-''
        !          1074: .oh 'USD:8-%''The Rand MH Message Handling System'
        !          1075: .eh 'The Rand MH Message Handling System''USD:8-%'
        !          1076: .fo ''''
        !          1077: .br
        !          1078: .if t \{
        !          1079: \".ll 32P
        !          1080: \".lt 32P
        !          1081: .ll 6.5i
        !          1082: .lt 6.5i
        !          1083: \}
        !          1084: .bp
        !          1085: .uh "MORE DETAILS"
        !          1086: .pp
        !          1087: This section describes some of the more intense points of the \fIMH\fR system,
        !          1088: by expanding on topics previously discussed.
        !          1089: The format presented conforms to the standard form for the description of UNIX
        !          1090: documentation.
        !          1091: .if t \{
        !          1092: .ll 6.5i
        !          1093: .lt 6.5i
        !          1094: \}
        !          1095: .fo '[mh.6]'MH'UCI/UCB version'
        !          1096: \".po -.50i
        !          1097: .so mh-alias.me
        !          1098: .so mh-format.me
        !          1099: .so mh-mail.me
        !          1100: .so mh-profile.me
        !          1101: .so ap.me
        !          1102: .so conflict.me
        !          1103: .so dp.me
        !          1104: .so install-mh.me
        !          1105: .so post.me
        !          1106: \".po +.50i
        !          1107: \".he ''-%-''
        !          1108: .oh 'USD:8-%''The Rand MH Message Handling System'
        !          1109: .eh 'The Rand MH Message Handling System''USD:8-%'
        !          1110: .fo ''''
        !          1111: .br
        !          1112: .if t \{
        !          1113: \".ll 32P
        !          1114: \".lt 32P
        !          1115: .ll 6.5i
        !          1116: .lt 6.5i
        !          1117: \}
        !          1118: .+c "REPORTING PROBLEMS"
        !          1119: .pp
        !          1120: If problems are encountered with an \fIMH\fR program,
        !          1121: the problems should be reported to the local maintainers of \fIMH\fR.
        !          1122: When doing this,
        !          1123: the name of the program should be reported,
        !          1124: along with the version information for the program.
        !          1125: To find out what version of an \fIMH\fR program is being run,
        !          1126: invoke the program with the `\-help' switch.
        !          1127: In addition to listing the syntax of the command,
        !          1128: the program will list information pertaining to its version.
        !          1129: This information includes the version of \fIMH\fR,
        !          1130: the host it was generated on,
        !          1131: and the date the program was loaded.
        !          1132: A second line of information,
        !          1133: found on versions of \fIMH\fR after #5.380 include \fIMH\fR configuration
        !          1134: options.
        !          1135: For example,
        !          1136: 
        !          1137: .in +.5i
        !          1138: version: MH 6.1 #1[UCI] (nrtc-gremlin) of Wed Nov  6 01:13:53 PST 1985
        !          1139: .br
        !          1140: options: [BSD42] [MHE] [NETWORK] [SENDMTS] [MMDFII] [SMTP] [POP]
        !          1141: .in -.5i
        !          1142: 
        !          1143: The `6.1 #1[UCI]' indicates that the program is from the UCI \fImh.6\fR
        !          1144: version of \fIMH\fR.
        !          1145: The program was generated on the host `nrtc-gremlin' on
        !          1146: `Wed Nov  6 01:13:53 PST 1985'.
        !          1147: It's usually a good idea to send the output of the `\-help' switch along
        !          1148: with your report.
        !          1149: 
        !          1150: If there is no local \fIMH\fR maintainer,
        !          1151: try the address \fBBug-MH\fR.
        !          1152: If that fails, use the Internet mailbox \[email protected]\fR.
        !          1153: 
        !          1154: .+c "ADVANCED FEATURES"
        !          1155: .de UH
        !          1156: .lp
        !          1157: .b "\\$1"
        !          1158: .pp
        !          1159: .(x
        !          1160: .ti .8i
        !          1161: \\$1
        !          1162: .)x
        !          1163: ..
        !          1164: .pp
        !          1165: This section describes some features of \fIMH\fR that were included strictly
        !          1166: for advanced \fIMH\fR users.
        !          1167: These capabilities permit \fIMH\fR to exhibit more powerful behavior for the
        !          1168: seasoned \fIMH\fR users.
        !          1169: .uh "USER\-DEFINED SEQUENCES"
        !          1170: .pp
        !          1171: User\-defined sequences allow the \fIMH\fR user a tremendous amount of power
        !          1172: in dealing with groups of messages in the same folder
        !          1173: by allowing the user to bind a group of messages to a meaningful symbolic
        !          1174: name.
        !          1175: The user may choose any name for a message sequence,
        !          1176: as long as it consists of alphanumeric characters and does not conflict with
        !          1177: the standard \fIMH\fR reserved message names
        !          1178: (e.g., \*(lqfirst\*(rq, etc).
        !          1179: After defining a sequence,
        !          1180: it can be used wherever an \fIMH\fR command expects a `msg' or `msgs'
        !          1181: argument.
        !          1182: Although all \fIMH\fR commands expand user\-defined sequences as appropriate,
        !          1183: there are two commands that allow the user to define and manipulate them:
        !          1184: \fIpick\fR and \fImark\fR.
        !          1185: .UH "Pick and User\-Defined Sequences"
        !          1186: .pp
        !          1187: Most users of \fIMH\fR will use user\-defined sequences only with
        !          1188: the \fIpick\fR command.
        !          1189: By giving the `\-sequence\ name' switch to \fIpick\fR
        !          1190: (which can occur more than once on the command line),
        !          1191: each sequence named is defined as those messages which \fIpick\fR matched
        !          1192: according the the selection criteria it was given.
        !          1193: Hence,
        !          1194: 
        !          1195: .ti +.5i
        !          1196: pick\0\-from\0frated\0\-seq\0fred
        !          1197: 
        !          1198: finds all those messages in the current folder which were from
        !          1199: \*(lqfrated\*(rq,
        !          1200: creates a sequence called \*(lqfred\*(rq,
        !          1201: and then adds them to the sequence.
        !          1202: The user could then invoke
        !          1203: 
        !          1204: .ti +.5i
        !          1205: scan\0fred
        !          1206: 
        !          1207: to get a \fIscan\fR listing of those messages.
        !          1208: Note that by default,
        !          1209: \fIpick\fR creates the named sequences
        !          1210: before it adds the selected messages to the sequence.
        !          1211: Hence, if the named sequence already existed,
        !          1212: the sequence is destroyed prior to being re\-defined
        !          1213: (nothing happens to the messages that were a part of this sequence,
        !          1214: they simply cease to be members of that sequence).
        !          1215: By using the `\-nozero' switch, this behavior can be inhibited,
        !          1216: as in
        !          1217: 
        !          1218: .in +.5i
        !          1219: pick\0\-from\0frated\0\-seq\0sgroup
        !          1220: .br
        !          1221: pick\0\-from\0fear\0\-seq\0sgroup\0\-nozero
        !          1222: .br
        !          1223: pick\0\-from\0freida\0\-seq\0sgroup\0\-nozero
        !          1224: .in -.5i
        !          1225: 
        !          1226: finds all those messages in the current folder which were from
        !          1227: \*(lqfrated\*(rq, \*(lqfear\*(rq, or \*(lqfreida\*(rq,
        !          1228: and defines the sequence called \*(lqsgroup\*(rq as exactly those messages.
        !          1229: These operations amounted to an \*(lqinclusive\-or\*(rq of three selection
        !          1230: criteria,
        !          1231: using \fIpick\fR,
        !          1232: one can also generate the \*(lqand\*(rq of some selection criteria as well:
        !          1233: 
        !          1234: .in +.5i
        !          1235: pick\0\-from\0frated\0\-seq\0fred
        !          1236: .br
        !          1237: pick\0\-before\0friday\0\-seq\0fred\0fred
        !          1238: .in -.5i
        !          1239: 
        !          1240: This example defines the sequence called \*(lqfred\*(rq as exactly those
        !          1241: messages from \*(lqfrated\*(rq that were dated prior to \*(lqfriday\*(rq.\**
        !          1242: .(f
        !          1243: \** Of course,
        !          1244: it is much easier to simply use the built\-in boolean operation of
        !          1245: \fIpick\fR to get the desired results:
        !          1246: 
        !          1247: .ti +.5i
        !          1248: pick\0\-from\0frated\0\-or\0\-from\0fear\0\-or\0\-from\0freida\0\-seq\0sgroup
        !          1249: 
        !          1250: and
        !          1251: 
        !          1252: .ti +.5i
        !          1253: pick\0\-from\0frated\0\-and\0\-before\0friday\0\-seq\0fred
        !          1254: 
        !          1255: do exactly the same thing as the five commands listed above.
        !          1256: Hence, the `\-nozero' option to \fIpick\fR is only useful to manipulate
        !          1257: existing sequences.
        !          1258: .)f
        !          1259: .pp
        !          1260: \fIPick\fR is normally used as a back\-quoted command,
        !          1261: for example,
        !          1262: 
        !          1263: .ti +.5i
        !          1264: scan\0`pick\0\-from\0postmaster`
        !          1265: 
        !          1266: Now suppose that the user decides that another command should be issued,
        !          1267: using exactly those messages.
        !          1268: Since,
        !          1269: \fIpick\fR wasn't given a `\-sequence\ name' argument in this example,
        !          1270: the user would end\-up typing the entire back\-quoted command again.
        !          1271: A simpler way is to add a default sequence name to the \&.mh\(ruprofile.
        !          1272: For example,
        !          1273: 
        !          1274: .ti +.5i
        !          1275: pick:\0\-seq\0select\0\-list
        !          1276: 
        !          1277: will tell \fIpick\fR to always define the sequence \*(lqselect\*(rq whenever
        !          1278: it's run.
        !          1279: The `-list' is necessary since the `\-sequence\ name' switch sets `\-nolist'
        !          1280: whenever the former is encountered.
        !          1281: Hence, this profile entry makes \fIpick\fR define the \*(lqselect\*(rq
        !          1282: sequence and otherwise behave exactly as if there was no profile entry at all.
        !          1283: .UH "Mark and User\-Defined Sequences"
        !          1284: .pp
        !          1285: The \fImark\fR command lets the user perform low\-level manipulation of
        !          1286: sequences,
        !          1287: and also provides a well\-needed debug facility to the
        !          1288: implementors/developers/maintainers of \fIMH\fR (the \fIMH\fR\-hacks).
        !          1289: In the future, a user\-friendly \*(lqfront\-end\*(rq for \fImark\fR will
        !          1290: probably be developed to give the \fIMH\fR user a way to take better
        !          1291: advantage of the underlying facilities.
        !          1292: .UH "Public and Private User\-Defined Sequences"
        !          1293: .pp
        !          1294: There are two kinds of sequences: \fIpublic\fR sequences,
        !          1295: and \fIprivate\fR sequences.
        !          1296: \fIPublic\fR sequences of a folder are accessible to any \fIMH\fR user that
        !          1297: can read that folder and are kept in the \&.mh\(rusequences file in the folder.
        !          1298: \fIPrivate\fR sequences are accessible only to the \fIMH\fR user that defined
        !          1299: those sequences and are kept in the user's \fIMH\fR context file.
        !          1300: By default,
        !          1301: \fIpick\fR (and \fImark\fR\0) create \fIpublic\fR sequences
        !          1302: if the folder for which the sequences are being defined is writable by the
        !          1303: \fIMH\fR user.
        !          1304: Otherwise, \fIprivate\fR sequences are created.
        !          1305: This can be overridden with the `\-public' and `\-private' switches.
        !          1306: .UH "Sequence Negation"
        !          1307: .pp
        !          1308: In addition to telling an \fIMH\fR command to use the messages in the sequence
        !          1309: \*(lqseen\*(rq, as in
        !          1310: 
        !          1311: .ti +.5i
        !          1312: refile\0seen\0+old
        !          1313: 
        !          1314: it would be useful to be easily able to tell an \fIMH\fR command to use all
        !          1315: messages \fIexcept\fR those in the sequence.
        !          1316: One way of doing this would be to use \fImark\fR and define the sequence
        !          1317: explicitly,
        !          1318: as in
        !          1319: 
        !          1320: .ti +.5i
        !          1321: mark\0\-delete\0\-zero\0seen\0\-seq\0notseen
        !          1322: 
        !          1323: which,
        !          1324: owing to \fImark\fR\0's cryptic interpretation of `\-delete' and `\-zero',
        !          1325: defines the sequence \*(lqnotseen\*(rq to be all messages not in the sequence
        !          1326: \*(lqseen\*(rq.
        !          1327: Naturally,
        !          1328: anytime the sequence \*(lqseen\*(rq is changed,
        !          1329: \*(lqnotseen\*(rq will have to be updated.
        !          1330: Another way to achieve this is to define the entry
        !          1331: \*(lqSequence\-Negation:\*(rq in the \&.mh\(ruprofile.
        !          1332: If the entry was
        !          1333: 
        !          1334: .ti +.5i
        !          1335: Sequence\-Negation:\0not
        !          1336: 
        !          1337: then anytime an \fIMH\fR command was given \*(lqnotseen\*(rq as a `msg' or
        !          1338: `msgs' argument,
        !          1339: it would substitute all messages that are not a member of the sequence
        !          1340: \*(lqseen\*(rq.
        !          1341: That is,
        !          1342: 
        !          1343: .ti +.5i
        !          1344: refile\0notseen\0+new
        !          1345: 
        !          1346: does just that.
        !          1347: The value of the \*(lqSequence\-Negation:\*(rq entry in the profile can be
        !          1348: any string.
        !          1349: Hence,
        !          1350: experienced users of \fIMH\fR do not use a word,
        !          1351: but rather a special character which their shell does not interpret
        !          1352: (users of the \fICShell\fR use a single caret or circumflex (usually shift\-6),
        !          1353: while users of the Bourne shell use an exclamation\-mark).
        !          1354: This is because there is nothing to prevent a user of \fIMH\fR from defining a
        !          1355: sequence with this string as its prefix,
        !          1356: if the string is nothing by letters and digits.
        !          1357: Obviously,
        !          1358: this could lead to confusing behavior
        !          1359: if the \*(lqSequence\-Negation:\*(rq entry leads \fIMH\fR to believe that two
        !          1360: sequences are opposites by virtue of their names differing by the prefix
        !          1361: string.
        !          1362: .UH "The Previous Sequence"
        !          1363: .pp
        !          1364: Many times users find themselves issuing a series of commands on the same
        !          1365: sequences of messages.
        !          1366: If the user first defined these messages as a sequence,
        !          1367: then considerable typing may be saved.
        !          1368: If the user doesn't have this foresight,
        !          1369: \fIMH\fR provides a handy way of having \fIMH\fR remember the `msgs' or
        !          1370: `msg' argument last given to an \fIMH\fR command.
        !          1371: If the entry \*(lqPrevious\-Sequence:\*(rq is defined in the
        !          1372: \&.mh\(ruprofile,
        !          1373: then when the command finishes,
        !          1374: it will define the sequence(s) named in the value of this entry as being
        !          1375: exactly those messages that were specified.
        !          1376: Hence, a profile entry of
        !          1377: 
        !          1378: .ti +.5i
        !          1379: Previous\-Sequence:\0pseq
        !          1380: 
        !          1381: directs any \fIMH\fR command that accepts a `msg' or `msgs' argument to
        !          1382: define the sequence \*(lqpseq\*(rq as those messages when it finishes.
        !          1383: More than one sequence name may be placed in this entry,
        !          1384: separated with spaces.
        !          1385: The one disadvantage of this approach
        !          1386: is that the \fIMH\fR progams have to update the sequence information for
        !          1387: the folder each time they run
        !          1388: (although most programs read this information,
        !          1389: usually only \fIpick\fR and \fImark\fR have to write this information out).
        !          1390: .UH "The Unseen Sequence"
        !          1391: .pp
        !          1392: Finally, some users like to distinguish between messages which have been
        !          1393: previously seen by them.
        !          1394: Both \fIinc\fR and \fIshow\fR honorthe profile entry
        !          1395: \*(lqUnseen\-Sequence\*(rq to support this activity.
        !          1396: Whenever \fIinc\fR places new messages in a folder,
        !          1397: if the entry \*(lqUnseen\-Sequence\*(rq is defined in the \&.mh\(ruprofile,
        !          1398: then when the command finishes,
        !          1399: \fIinc\fR will add the new messages to the sequence(s) named in the value of
        !          1400: this entry.
        !          1401: Hence, a profile entry of
        !          1402: 
        !          1403: .ti +.5i
        !          1404: Unseen\-Sequence:\0 unseen
        !          1405: 
        !          1406: directs \fIinc\fR to add new messages to the sequence \*(lqunseen\*(rq.
        !          1407: Unlike the behavior of the \*(lqPrevious\-Sequence\*(rq entry in the profile
        !          1408: however,
        !          1409: the sequence(s) will \fBnot\fR be zero'd.
        !          1410: .pp
        !          1411: Similarly,
        !          1412: whenever \fIshow\fR (or \fInext\fR or \fIprev\fR\0) displays a message,
        !          1413: they remove those messages from any sequences named by the
        !          1414: \*(lqUnseen\-Sequence\*(rq entry in the profile.
        !          1415: .uh "COMPOSITION OF MAIL"
        !          1416: .pp
        !          1417: There are a number of interesting advanced facilities for the composition of
        !          1418: outgoing mail.
        !          1419: 
        !          1420: .UH "The Draft Folder"
        !          1421: .pp
        !          1422: The \fIcomp\fR, \fIdist\fR, \fIforw\fR, and \fIrepl\fR commands have two
        !          1423: switches, `\-draftfolder\0+folder' and `\-draftmessage\0msg'.
        !          1424: If `\-draftfolder\0+folder' is used,
        !          1425: these commands are directed to construct a draft message in the indicated
        !          1426: folder.
        !          1427: (The \*(lqDraft\-Folder:\*(rq profile entry may be used to declare a
        !          1428: default draft folder for use with
        !          1429: \fIcomp\fR, \fIdist\fR, \fIforw\fR, and \fIrepl\fR)
        !          1430: If `\-draftmessage\0msg' is not used, it defaults to `new'
        !          1431: (unless the user invokes \fIcomp\fR with `\-use',
        !          1432: in which case the default is `cur').
        !          1433: Hence, the user may have several message compositions in progress
        !          1434: simultaneously.
        !          1435: Now, all of the \fIMH\fR tools are available on each of the user's message
        !          1436: drafts
        !          1437: (e.g., \fIshow\fR, \fIscan\fR, \fIpick\fR, and so on).
        !          1438: If the folder does not exist,
        !          1439: the user is asked if it should be created (just like with \fIrefile\fR\0).
        !          1440: Also,
        !          1441: the last draft message the user was composing is known as `cur' in the
        !          1442: draft folder.
        !          1443: .pp
        !          1444: Furthermore,
        !          1445: the \fIsend\fR command has these switches as well.
        !          1446: Hence, from the shell,
        !          1447: the user can send off whatever drafts desired using the
        !          1448: standard \fIMH\fR `msgs' convention with `\-draftmessage msgs'.
        !          1449: If no `msgs' are given, it defaults to `cur'.
        !          1450: .pp
        !          1451: In addition,
        !          1452: all five programs have a `\-nodraftfolder' switch,
        !          1453: which undoes the last occurrence of `\-draftfolder\0folder'
        !          1454: (useful if the latter occurs in the user's \fIMH\fR profile).
        !          1455: .pp
        !          1456: If the user does not give the `\-draftfolder\0+folder' switch,
        !          1457: then all these commands act ``normally''.
        !          1458: Note that the `\-draft' switch to \fIsend\fR and \fIshow\fR
        !          1459: still refers to the file called `draft' in the user's \fIMH\fR
        !          1460: directory.
        !          1461: In the interests of economy of expression,
        !          1462: when using \fIcomp\fR or \fIsend\fR,
        !          1463: the user needn't prefix the draft `msg' or `msgs' with
        !          1464: `\-draftmessage'.
        !          1465: Both of these commands accept a `file' or `files' argument,
        !          1466: and they will, if given `\-draftfolder\0+folder' treat these arguments
        !          1467: as `msg' or `msgs'.\**
        !          1468: .(f
        !          1469: \** This may appear to be inconsistent, at first,
        !          1470: but it saves a lot of typing.
        !          1471: .)f
        !          1472: Hence,
        !          1473: 
        !          1474: .ti +.5i
        !          1475: send -draftf +drafts first
        !          1476: 
        !          1477: is the same as
        !          1478: 
        !          1479: .ti +.5i
        !          1480: send -draftf +drafts -draftm first
        !          1481: 
        !          1482: .pp
        !          1483: To make all this a bit more clear, here are some examples.
        !          1484: Let's assume that the following entries are in the \fIMH\fR profile:
        !          1485: 
        !          1486: .in +.5i
        !          1487: .nf
        !          1488: Draft\-Folder: +drafts
        !          1489: sendf: -draftfolder +drafts
        !          1490: .fi
        !          1491: .in -.5i
        !          1492: 
        !          1493: Furthermore,
        !          1494: let's assume that the program \fIsendf\fR is a (symbolic) link in the user's 
        !          1495: \fB$HOME/bin/\fR directory to \fIsend\fR.
        !          1496: Then, any of the commands
        !          1497: 
        !          1498: .in +.5i
        !          1499: .nf
        !          1500: comp
        !          1501: dist
        !          1502: forw
        !          1503: repl
        !          1504: .fi
        !          1505: .in -.5i
        !          1506: 
        !          1507: constructs the message draft in the `draft' folder using the `new'
        !          1508: message number.
        !          1509: Furthermore,
        !          1510: they each define `cur' in this folder to be that message draft.
        !          1511: If the user were to use the \fIquit\fR option at `What now?' level,
        !          1512: then later on,
        !          1513: if no other draft composition was done,
        !          1514: the draft could be sent with simply
        !          1515: 
        !          1516: .ti +.5i
        !          1517: sendf
        !          1518: 
        !          1519: Or,
        !          1520: if more editing was required,
        !          1521: the draft could be edited with
        !          1522: 
        !          1523: .ti +.5i
        !          1524: comp -use
        !          1525: 
        !          1526: Instead,
        !          1527: if other drafts had been composed in the meantime,
        !          1528: so that this message draft was no longer known as `cur' in the `draft'
        !          1529: folder,
        !          1530: then the user could \fIscan\fR the folder to see which message draft in the
        !          1531: folder should be used for editing or sending.
        !          1532: Clever users could even employ a back-quoted \fIpick\fR to do the work:
        !          1533: 
        !          1534: .ti +.5i
        !          1535: comp -use `pick +drafts -to bug-mh`
        !          1536: 
        !          1537: or
        !          1538: 
        !          1539: .ti +.5i
        !          1540: sendf `pick +drafts -to bug-mh`
        !          1541: 
        !          1542: Note that in the \fIcomp\fR example,
        !          1543: the output from \fIpick\fR must resolve to a single message draft
        !          1544: (it makes no sense to talk about composing two or more drafts with one
        !          1545: invocation of \fIcomp\fR\0).
        !          1546: In contrast,
        !          1547: in the \fIsend\fR example,
        !          1548: as many message drafts as desired can appear,
        !          1549: since \fIsend\fR doesn't mind sending more than one draft at a time.
        !          1550: .pp
        !          1551: Note that the argument `\-draftfolder\0+folder' is not
        !          1552: included in the profile entry for \fIsend\fR,
        !          1553: since when \fIcomp\fR, et. al., invoke \fIsend\fR directly,
        !          1554: they supply \fIsend\fR with the UNIX pathname of the message draft,
        !          1555: and \fBnot\fR a `draftmessage\0msg' argument.
        !          1556: As far as \fIsend\fR is concerned,
        !          1557: a \fIdraft folder\fR is not being used.
        !          1558: .pp
        !          1559: It is important to realize that \fIMH\fR treats the draft folder like a standard
        !          1560: \fIMH\fR folder in nearly all respects.
        !          1561: There are two exceptions:
        !          1562: .u first ,
        !          1563: under no circumstancs will the `\-draftfolder\0folder' switch cause the
        !          1564: named folder to become the current folder.\**
        !          1565: .(f
        !          1566: \** Obviously,
        !          1567: if the folder appeared in the context of a standard `+folder'
        !          1568: argument to an \fIMH\fR program, as in
        !          1569: 
        !          1570: .ti +.5i
        !          1571: scan +drafts
        !          1572: 
        !          1573: it might become the current folder, depending on the context changes of the
        !          1574: \fIMH\fR program in question.
        !          1575: .)f
        !          1576: .u Second ,
        !          1577: although conceptually \fIsend\fR deletes the `msgs' named in the draft
        !          1578: folder,
        !          1579: it does not call `delete-prog' to perform the deletion.
        !          1580: 
        !          1581: .UH "What Happens if the Draft Exists"
        !          1582: .pp
        !          1583: When the \fIcomp\fR, \fIdist\fR, \fIforw\fR, and \fIrepl\fR commands are
        !          1584: invoked and the draft you indicated already exists,
        !          1585: these programs will prompt the user for a reponse directing the program's
        !          1586: action.
        !          1587: The prompt is
        !          1588: 
        !          1589: .ti +.5i
        !          1590: Draft ``/usr/src/uci/mh/mhbox/draft'' exists (xx bytes).
        !          1591: .ti +.5i
        !          1592: Disposition?
        !          1593: 
        !          1594: The appropriate responses and their meanings are:
        !          1595: .u replace :
        !          1596: deletes the draft and starts afresh;
        !          1597: .u list :
        !          1598: lists the draft;
        !          1599: .u refile :
        !          1600: files the draft into a folder and starts afresh;
        !          1601: and,
        !          1602: .u quit :
        !          1603: leaves the draft intact and exits.
        !          1604: In addition, if you specified `\-draftfolder\0folder' to the command,
        !          1605: then one other response will be accepted:
        !          1606: .u new :
        !          1607: finds a new draft,
        !          1608: just as if `\-draftmessage\0new' had been given.
        !          1609: Finally, the \fIcomp\fR command will accept one more response:
        !          1610: .u use :
        !          1611: re-uses the draft,
        !          1612: just as if `\-use' had been given.
        !          1613: 
        !          1614: .UH "The Push Option at What now? Level"
        !          1615: .pp
        !          1616: The \fIpush\fR option to the \*(lqWhat now?\*(rq query
        !          1617: in the \fIcomp\fR, \fIdist\fR, \fIforw\fR, and \fIrepl\fR commands,
        !          1618: directs the command to \fIsend\fR the draft
        !          1619: in a special detached fashion,
        !          1620: with all normal output discarded.
        !          1621: If \fIpush\fR is used and the draft can not be sent,
        !          1622: then \fIMH\fR will send the user a message,
        !          1623: indicating the name of the draft file,
        !          1624: and an explanation of the failure.
        !          1625: .\" Although using \fIpush\fR calls \fIsend\fR\0(1),
        !          1626: .\" the \fIsend\fR command will consult the profile entry for \fIpush\fR.
        !          1627: .pp
        !          1628: The user can also invoke \fIsend\fR from the shell with the `\-push'
        !          1629: switch,
        !          1630: which makes \fIsend\fR act like it had been \fIpush\fR\0'd by one of the
        !          1631: composition commands.
        !          1632: .\" composition commands.\**
        !          1633: .\" .(f
        !          1634: .\" \** Note that in this case,
        !          1635: .\" \fIsend\fR consults the profile entry for whatever name it was invoked as,
        !          1636: .\" such as \fIsendf\fR.
        !          1637: .\" .)f
        !          1638: .pp
        !          1639: By using \fIpush\fR, the user can free the shell to do other things,
        !          1640: because it appears to the shell that the \fIMH\fR command has finished.
        !          1641: As a result the shell will immediately prompt for another command,
        !          1642: despite the fact that the command is really still running.
        !          1643: Note that if the user indicates that annotations are to be performed
        !          1644: (with `\-annotate' to \fIdist\fR, \fIforw\fR, or \fIrepl\fR),
        !          1645: the annotations will be performed after the message has been
        !          1646: successfully sent.
        !          1647: This action will appear to occur asynchronously.
        !          1648: Obviously, if one of the messages that is to be annotated is
        !          1649: removed before the draft has been successfully sent,
        !          1650: then when \fIMH\fR tries to make the annotations,
        !          1651: it won't be able to do so.
        !          1652: In previous versions of \fIMH\fR,
        !          1653: this resulted in an error message mysteriously appearing on the user's
        !          1654: terminal.
        !          1655: In \fImh.5\fR and later versions,
        !          1656: in this special circumstance, no error will be generated.
        !          1657: .pp
        !          1658: If send is \fIpush\fR\0'd,
        !          1659: then the `\-forward' switch is examined if a failure notice is generated.
        !          1660: If given,
        !          1661: then the draft is forwarded with the failure notice sent to the user.
        !          1662: This allows rapid \fIburst\fR\0'ing of the failure notice to retrieve the
        !          1663: unsent draft.
        !          1664: 
        !          1665: .UH "Options at What now? Level"
        !          1666: .pp
        !          1667: By default,
        !          1668: the message composition programs call a program called \fIwhatnow\fR before
        !          1669: the initial draft composition.
        !          1670: The \fIMH\fR user can specify any program for this.
        !          1671: Following is some information about the default \*(lqWhat now?\*(rq level.
        !          1672: More detailed information can be found in the \fIwhatnow\fR\0(1) manual entry.
        !          1673: .pp
        !          1674: When using the \fIcomp\fR, \fIdist\fR, \fIforw\fR, and \fIrepl\fR commands at
        !          1675: \*(lqWhat now?\*(rq level,
        !          1676: the \fIedit\fR, \fIlist\fR, \fIheaders\fR, \fIrefile\fR,
        !          1677: and (for the \fIdist\fR and \fIrepl\fR commands) the \fIdisplay\fR options
        !          1678: will pass on any additional arguments given them to whatever program they
        !          1679: invoke.
        !          1680: .pp
        !          1681: In \fImh.1\fR (the original Rand \fIMH\fR\0)
        !          1682: and \fImh.2\fR (the first UCI version of \fIMH\fR\0),
        !          1683: \fIMH\fR used a complicated heuristic to determine if the draft should be
        !          1684: deleted or preserved after an unsuccessful edit.
        !          1685: In \fImh.3\fR,
        !          1686: \fIMH\fR was changed to preserve the draft always,
        !          1687: since \fIcomp\fR, et. al.,
        !          1688: could usually look at a draft, apply another set of heuristics,
        !          1689: and decide if it was important or not.
        !          1690: With the notion of a \fIdraft folder\fR, 
        !          1691: in which one by default gets a `new' message draft,
        !          1692: the edit deletion/preservation algorithm was re-implemented,
        !          1693: to keep the draft folder from being cluttered with aborted edits.
        !          1694: .pp
        !          1695: Also,
        !          1696: note that by default,
        !          1697: if the draft cannot be successfully sent,
        !          1698: these commands return to \*(lqWhat now?\*(rq level.
        !          1699: But, when \fIpush\fR is used, this does not happen (obviously).
        !          1700: Hence,
        !          1701: if these commands were expected to annotate any messages,
        !          1702: this will have to be done by hand, later on, with the \fIanno\fR command.
        !          1703: .pp
        !          1704: Finally, if the `\-delete' switch is not given to the \fIquit\fR option,
        !          1705: then these commands will inform the user of the name of the unsent draft file.
        !          1706: 
        !          1707: .UH "Digests"
        !          1708: .pp
        !          1709: The \fIforw\fR command has the beginnings of a digestifying facility,
        !          1710: with the `\-digest\ list', `\-issue\ number', and `\-volume\ number' switches.
        !          1711: 
        !          1712: If \fIforw\fR is given \*(lqlist\*(rq to the `\-digest' switch
        !          1713: as the name of the discussion group,
        !          1714: and the `\-issue\ number' switch is not given,
        !          1715: then \fIforw\fR looks for an entry in the user's \fIMH\fR context called
        !          1716: \*(lq\fIdigest\fR\-issue\-list\*(rq and increments its value to use as the
        !          1717: issue number.
        !          1718: Similarly,
        !          1719: if the `\-volume\ number' switch is not given,
        !          1720: then \fIforw\fR looks for \*(lq\fIdigest\fR\-volume\-list\*(rq
        !          1721: (but does not increment its value) to use as the volume number.
        !          1722: 
        !          1723: Having calculated the name of the digest and the volume and issue numbers,
        !          1724: \fIforw\fR will now process the components file using the same format string
        !          1725: mechanism used by \fIrepl\fR.
        !          1726: The current `%'\-escapes are:
        !          1727: 
        !          1728: .nf
        !          1729: .ta \w'escape  'u +\w'integer  'u
        !          1730: \fIescape\fR   \fItype\fR      \fIsubstitution\fR
        !          1731: digest string  digest name
        !          1732: issue  integer issue number
        !          1733: volume integer volume number
        !          1734: .re
        !          1735: .fi
        !          1736: 
        !          1737: In addition, to capture the current date,
        !          1738: any of the escapes valid for \fIdp\fR\0(8) are also valid for \fIforw\fR.
        !          1739: 
        !          1740: The default components file used by \fIforw\fR when in digest mode is:
        !          1741: 
        !          1742: .nf
        !          1743: .in +.5i
        !          1744: .ne 10
        !          1745: .eo
        !          1746: \" .so /usr/new/lib/mh/digestcomps  included inline here so it looks good
        !          1747: From:    %{digest}-Request
        !          1748: To:      %{digest} Distribution: dist-%{digest};
        !          1749: Subject:  %{digest} Digest V%(putnum(msg)) #%(putnum(cur))
        !          1750: Reply-To: %{digest}
        !          1751: --------
        !          1752: %{digest} Digest       %(putstr(weekday{date})), %2(putnumf(mday{date})) \
        !          1753: %(putstr(month{date})) 19%02(putnumf(year{date}))
        !          1754:                Volume %(putnum(msg)) : Issue %(putnum(cur))
        !          1755: 
        !          1756: Today's Topics:
        !          1757: .ec
        !          1758: .in -.5i
        !          1759: .fi
        !          1760: 
        !          1761: Hence, when the `\-digest' switch is present,
        !          1762: the first step taken by \fIforw\fR is to expand the format strings in the
        !          1763: component file.
        !          1764: The next step is to compose the draft using
        !          1765: the standard digest encapsulation algorithm
        !          1766: (even putting an \*(lqEnd of list Digest\*(rq trailer in the draft).
        !          1767: Once the draft is composed by \fIforw\fR,
        !          1768: \fIforw\fR writes out the volume and issue profile entries for the digest,
        !          1769: and then invokes the editor.
        !          1770: 
        !          1771: Naturally, when composing the draft,
        !          1772: \fIforw\fR will honor the `\-filter\ filterfile' switch,
        !          1773: which is given to \fImhl\fR to filter each message being forwarded prior to
        !          1774: encapsulation in the draft.
        !          1775: A good filter file to use, which is called \fImhl.digest\fR, is:
        !          1776: 
        !          1777: .nf
        !          1778: .in +.5i
        !          1779: .ne 10
        !          1780: .eo
        !          1781: .so /usr/new/lib/mh/mhl.digest
        !          1782: .ec
        !          1783: .in -.5i
        !          1784: .fi
        !          1785: 
        !          1786: .uh "FOLDER HANDLING"
        !          1787: .pp
        !          1788: There are two interesting facilities for manipulating folders:
        !          1789: relative folder addressing,
        !          1790: which allows a user to shorten the typing of long folder names;
        !          1791: and
        !          1792: the folder\-stack,
        !          1793: which permits a user to keep a stack of current folders.
        !          1794: 
        !          1795: .UH "Relative Folder Addressing"
        !          1796: .pp
        !          1797: By default, when `+folder' is given,
        !          1798: and the folder name is not absolute
        !          1799: (does not start with \fB/\fR, \fB\&./\fR, or \fB\&.\&./\fR),
        !          1800: then the UNIX pathname of the folder is interpreted relative to the user's
        !          1801: \fIMH\fR directory.
        !          1802: Although this mechanism works fine for top\-level folders and their immediate
        !          1803: sub\-folders,
        !          1804: once the depth of the sub\-folder tree grows, it becomes rather unwieldly:
        !          1805: 
        !          1806: .ti +.5i
        !          1807: scan\0+mh/mh.4/draft/flames
        !          1808: 
        !          1809: is a lot of typing.
        !          1810: \fIMH\fR can't do anything if the current folder was \*(lq+inbox\*(rq,
        !          1811: but if the current folder was, say, \*(lq+mh/mh.4/draft\*(rq,
        !          1812: \fIMH\fR has a short\-hand notation to reference a sub\-folder of the
        !          1813: current folder.
        !          1814: Using the `@folder' notation,
        !          1815: the \fIMH\fR user can direct any \fIMH\fR program which expects a `+folder'
        !          1816: argument to look for the folder relative to the current folder instead of the
        !          1817: user's \fIMH\fR directory.
        !          1818: Hence, if the current folder \fIwas\fR \*(lq+mh/mh.4/draft\*(rq,
        !          1819: then
        !          1820: 
        !          1821: .ti +.5i
        !          1822: scan\0@flames
        !          1823: 
        !          1824: would do the trick handily.
        !          1825: In addition, if the current folder \fIwas\fR \*(lq+mh/mh.4/draft\*(rq,
        !          1826: 
        !          1827: .ti +.5i
        !          1828: scan\0@../pick
        !          1829: 
        !          1830: would scan the folder \*(lq+mh/mh.4/pick\*(rq,
        !          1831: since, in the UNIX fashion,
        !          1832: it references the folder \*(lqpick\*(rq which is a sub\-folder of
        !          1833: the folder that is the parent of the current folder.
        !          1834: Since most advanced \fIMH\fR users seem to exhibit a large degree of locality
        !          1835: in referencing folders when they process mail,
        !          1836: this convention should receive a wide range of uses.
        !          1837: 
        !          1838: .UH "The Folder\-Stack"
        !          1839: .pp
        !          1840: The \fIfolder\-stack\fR mechanism in \fIMH\fR gives the \fIMH\fR user a
        !          1841: facility similar to the \fICShell\fR\0's directory\-stack.
        !          1842: Simply put,
        !          1843: 
        !          1844: .ti +.5i
        !          1845: folder\0\-push\0+foo
        !          1846: 
        !          1847: makes \*(lqfoo\*(rq the current folder,
        !          1848: saving the folder that was previously the current folder on the
        !          1849: \fIfolder\-stack\fR.
        !          1850: As expected,
        !          1851: 
        !          1852: .ti +.5i
        !          1853: folder\0\-pop
        !          1854: 
        !          1855: takes the top of the \fIfolder\-stack\fR and makes it the current folder.
        !          1856: Each of these switches lists the \fIfolder\-stack\fR when they execute.
        !          1857: It is simple to write a \fIpushf\fR command as a shell script.
        !          1858: It's one line:
        !          1859: 
        !          1860: .ti +.5i
        !          1861: exec\0folder\0\-push\0$@
        !          1862: 
        !          1863: Probably a better way is to link \fIfolder\fR to the $HOME/bin/ directory under
        !          1864: the name of \fIpushf\fR and then add the entry
        !          1865: 
        !          1866: .ti +.5i
        !          1867: pushf:\0\-push
        !          1868: 
        !          1869: to the \&.mh\(ruprofile.
        !          1870: .pp
        !          1871: The manual page for \fIfolder\fR discusses the analogy between the
        !          1872: \fICShell\fR directory stack commands and the switches in \fIfolder\fR which
        !          1873: manipulate the \fIfolder\-stack\fR.
        !          1874: The \fIfolder\fR command uses the context entry `Folder\-Stack:' to keep
        !          1875: track of the folders in the user's stack of folders.
        !          1876: \"
        !          1877: \"              On to the Appendices
        !          1878: \"
        !          1879: \".fo ''-%-''
        !          1880: \".he ''''
        !          1881: .(x
        !          1882: .sp
        !          1883: Appendix
        !          1884: .)x _
        !          1885: .de $c                          \" Major Heading printer
        !          1886: .ce
        !          1887: Appendix \\n+(ch
        !          1888: .sp 2p
        !          1889: .ce
        !          1890: .b "\\s12\\$1\\s0"              \" 12 Point Bold Header
        !          1891: .(x
        !          1892: \ \ \ \\n(ch.\\ \\ \\$2
        !          1893: .)x
        !          1894: .sp 45p                                \" 45 points or about 1/2 inch
        !          1895: ..
        !          1896: .++ A
        !          1897: .oh 'USD:8-%'The Rand MH Message Handling System'Appendix A'
        !          1898: .eh 'Appendix A'The Rand MH Message Handling System'USD:8-%'
        !          1899: .bp
        !          1900: .$c "COMMAND SUMMARY" "Command Summary"
        !          1901: \".po -.50i
        !          1902: .so mh-chart.me
        !          1903: \".po +.50i
        !          1904: .oh 'USD:8-%'The Rand MH Message Handling System'Appendix B'
        !          1905: .eh 'Appendix B'The Rand MH Message Handling System'USD:8-%'
        !          1906: .if t \{
        !          1907: \".ll 32P
        !          1908: \".lt 32P
        !          1909: .ll 6.5i
        !          1910: .lt 6.5i
        !          1911: \}
        !          1912: .bp
        !          1913: .$c "MESSAGE NAME BNF" "Message Name BNF"
        !          1914: 
        !          1915: .nf
        !          1916: .in 1i
        !          1917: .ta \w'signed-number 'u +\w':=  'u +\w'user-defined-sequence  'u
        !          1918: msgs   :=      msgspec |
        !          1919:                msgs msgspec
        !          1920: 
        !          1921: msgspec        :=      msg     |
        !          1922:                msg-range       |
        !          1923:                msg-sequence    |
        !          1924:                user-defined-sequence
        !          1925: 
        !          1926: msg    :=      msg-name        |
        !          1927:                <number>
        !          1928: 
        !          1929: msg-name       :=      \*(lqfirst\*(rq |
        !          1930:                \*(lqlast\*(rq  |
        !          1931:                \*(lqcur\*(rq   |
        !          1932:                \*(lq\&.\*(rq   |
        !          1933:                \*(lqnext\*(rq  |
        !          1934:                \*(lqprev\*(rq
        !          1935: 
        !          1936: msg-range      :=      msg\*(lq-\*(rqmsg       |
        !          1937:                \*(lqall\*(rq
        !          1938: 
        !          1939: msg-sequence   :=      msg\*(lq:\*(rqsigned-number
        !          1940: 
        !          1941: signed-number  :=      \*(lq+\*(rq<number>     |
        !          1942:                \*(lq-\*(rq<number>     |
        !          1943:                <number>
        !          1944: .re
        !          1945: .fi
        !          1946: .sp
        !          1947: .lp
        !          1948: Where <number> is a decimal number greater than zero.
        !          1949: .lp
        !          1950: Msg-range specifies all of the messages in the given range
        !          1951: and must not be empty.
        !          1952: .lp
        !          1953: Msg-sequence specifies up to <number> of messages, beginning
        !          1954: with \*(lqmsg\*(rq (in the case of first, cur, next, or <number>),
        !          1955: or ending with \*(lqmsg\*(rq (in the case of prev or last).
        !          1956: +<number> forces \*(lqstarting with msg\*(rq, and \-<number> forces
        !          1957: \*(lqending with number\*(rq.
        !          1958: In all cases, \*(lqmsg\*(rq must exist.
        !          1959: .lp
        !          1960: User\-defined sequences are defined and manipulated with the \fIpick\fR
        !          1961: and \fImark\fR commands.
        !          1962: .in 0
        !          1963: .bp
        !          1964: .ce
        !          1965: .b \\s12REFERENCES\\s0
        !          1966: .(x
        !          1967: .sp
        !          1968: REFERENCES
        !          1969: .)x
        !          1970: .sp 3
        !          1971: .in .4i
        !          1972: .ti 0
        !          1973: 1.  Crocker, D. H., J. J. Vittal, K. T. Pogran, and D. A. Henderson, Jr.,
        !          1974: \*(lqStandard for the Format of ARPA Network Text Messages,\*(rq
        !          1975: \fIRFC733\fR,
        !          1976: November 1977.
        !          1977: 
        !          1978: .ti 0
        !          1979: 2.  Thompson, K., and D. M. Ritchie, \*(lqThe UNIX Time-sharing System,\*(rq
        !          1980: \fICommunications of the ACM\fR, Vol. 17, July 1974, pp. 365-375.
        !          1981: 
        !          1982: .ti 0
        !          1983: 3.  McCauley, E. J., and P. J. Drongowski, \*(lqKSOS\-The Design of a Secure
        !          1984: Operating System,\*(rq \fIAFIPS Conference Proceedings\fR,
        !          1985: National Computer Conference,
        !          1986: Vol. 48, 1979, pp. 345-353.
        !          1987: 
        !          1988: .ti 0
        !          1989: 4.  Crocker, David H., \fIFramework and Functions of the \*(lqMS\*(rq Personal
        !          1990: Message System\fR, The Rand Corporation, R-2134-ARPA, December 1977.
        !          1991: 
        !          1992: .ti 0
        !          1993: 5.  Thompson, K., and D. M. Ritchie, \fIUNIX Programmer's Manual\fR, 6th ed.,
        !          1994: Western Electric Company, May 1975 (available only to UNIX licensees).
        !          1995: 
        !          1996: .ti 0
        !          1997: 6. Crocker, D. H.,
        !          1998: \*(lqStandard for the Format of ARPA Internet Text Messages,\*(rq
        !          1999: \fIRFC822\fR,
        !          2000: August 1982.
        !          2001: .de $c
        !          2002: .ce
        !          2003: .b "\\s12\\$1\\s0"   \" 12 Point Bold Header
        !          2004: .(x y
        !          2005: .sp
        !          2006: \\$1
        !          2007: .)x
        !          2008: .sp 3
        !          2009: ..
        !          2010: .eh 'USD:8-%'The Rand MH Message Handling System''
        !          2011: .oh ''The Rand MH Message Handling System'USD:8-%'
        !          2012: .++ P
        !          2013: \".fo ''''
        !          2014: \".he ''-%-''
        !          2015: .pn 1
        !          2016: .+c "READ THIS"
        !          2017: .pp
        !          2018: Although the \fIMH\fR system was originally developed by the Rand Corporation,
        !          2019: and is now in the public domain,
        !          2020: the Rand Corporation assumes no responsibility for \fIMH\fR
        !          2021: or this particular version of \fIMH\fR.
        !          2022: .pp
        !          2023: In addition,
        !          2024: the Regents of the University of California issue the following
        !          2025: \fBdisclaimer\fR in regard to the UCI/UCB version of \fIMH\fR:
        !          2026: .sp 1
        !          2027: .in +.5i
        !          2028: \*(lqAlthough each program has been tested by its contributor,
        !          2029: no warranty, express or implied,
        !          2030: is made by the contributor or the University of California,
        !          2031: as to the accuracy and functioning of the program
        !          2032: and related program material,
        !          2033: nor shall the fact of distribution constitute any such warranty,
        !          2034: and no responsibility is assumed by the contributor
        !          2035: or the University of California in connection herewith.\*(rq
        !          2036: .in -.5i
        !          2037: .pp
        !          2038: This version of \fIMH\fR is in the public domain,
        !          2039: and as such,
        !          2040: there are no real restrictions on its use.
        !          2041: The \fIMH\fR source code and documentation have no licensing restrictions
        !          2042: whatsoever.
        !          2043: As a courtesy,
        !          2044: the authors ask only that you provide appropriate credit to the Rand
        !          2045: Corporation and the University of California for having developed the software.
        !          2046: .pp
        !          2047: \fIMH\fR is a software package that is supported neither by the Rand
        !          2048: Corporation nor the University of California.
        !          2049: However,
        !          2050: since we do use the software ourselves and plan to continue using
        !          2051: (and improving) \fIMH\fR,
        !          2052: bug reports and their associated fixes should be reported back to us so that
        !          2053: we may include them in future releases.
        !          2054: The current computer mailbox for \fIMH\fR is \fBBug\[email protected]\fR
        !          2055: (in the ARPA Internet),
        !          2056: and \fB...!ucbvax!ucivax!bug\-mh\fR (UUCP).
        !          2057: Presently,
        !          2058: there are two Internet discussion groups,
        !          2059: \fBMH\[email protected]\fR and \fBMH\[email protected]\fR.
        !          2060: If there is sufficient interest,
        !          2061: corresponding Usenet news groups may be established along with the
        !          2062: appropriate gateways.
        !          2063: .+c FOREWORD
        !          2064: .pp
        !          2065: This document describes the Rand \fIMH\fR Message Handling System.
        !          2066: Its primary purpose is to serve as a user's manual.
        !          2067: It has been heavily based on a previous version of the manual,
        !          2068: prepared by Bruce Borden, Stockton Gaines, and Norman Shapiro.
        !          2069: .pp
        !          2070: \fIMH\fR is a particularly novel system,
        !          2071: and thus it is often more prone to change than other pieces of production
        !          2072: software.
        !          2073: As such, some specific points in this manual may not be correct in the
        !          2074: future.
        !          2075: In all cases, the on\-line sections of this manual,
        !          2076: available through the UNIX\** \fIman\fR command,
        !          2077: should present the most current information.
        !          2078: .(f
        !          2079: \** UNIX is a trademark of AT&T Bell Laboratories.
        !          2080: .)f
        !          2081: .pp
        !          2082: When reading this document as a user's manual,
        !          2083: certain sections are more interesting than others.
        !          2084: The Preface and Summary are not particularly interesting to those
        !          2085: interested in learning \fIMH\fR.
        !          2086: The Introduction is slightly more interesting,
        !          2087: as it touches upon the organization of the remainder of this document.
        !          2088: The most useful sections are the Overview, Tutorial, and Detailed
        !          2089: Description.
        !          2090: The Overview should be read by all \fIMH\fR users, regardless of their
        !          2091: expertise (beginning, novice, advanced, or hacker).
        !          2092: The Tutorial should be read by all beginning and novice \fIMH\fR users,
        !          2093: as it presents a nice description of the \fIMH\fR system.
        !          2094: The Detailed Description should be read by the day\-to\-day user of \fIMH\fR,
        !          2095: as it spells out all of the realities of the \fIMH\fR system.
        !          2096: The Advanced Features section discusses some powerful \fIMH\fR capabilities for
        !          2097: advanced users.
        !          2098: Appendix A is particularly useful for novices,
        !          2099: as it summarizes the invocation syntax of all the \fIMH\fR commands.
        !          2100: .pp
        !          2101: There are also several other documents which may be useful to you:
        !          2102: \fIThe Rand MH Message Handling System: Tutorial\fR,
        !          2103: which is a tutorial for \fIMH\fR;
        !          2104: \fIThe Rand MH Message Handling System: The UCI BBoards Facility\fR,
        !          2105: which describes the BBoards handling under \fIMH\fR;
        !          2106: \fIMH.5: How to process 200 messages a day and still get some real work
        !          2107: done\fR,
        !          2108: which was presented at the 1985 Summer Usenix Conference and
        !          2109: Exhibition in Portland, Oregon;
        !          2110: \fIMH: A Multifarious User Agent\fR,
        !          2111: which has been accepted for publication by Computer Networks;
        !          2112: \fIMZnet: Mail Service for Personal Micro\-Computer Systems\fR,
        !          2113: which was presented at the First International Symposium on Computer Message
        !          2114: Systems in Nottingham, U.K.;
        !          2115: and,
        !          2116: \fIDesign of the TTI Prototype Trusted Mail Agent\fR,
        !          2117: which describes a proprietary \*(lqtrusted\*(rq mail system built on \fIMH\fR.
        !          2118: All of these documents exist in the \fImh.6\fR distribution sent to your
        !          2119: site.
        !          2120: There's also a document,
        !          2121: \fIChanges to the Rand MH Message Handling System: MH.6\fR,
        !          2122: which describes user\-visible changes made to \fIMH\fR since the last major
        !          2123: release.
        !          2124: .pp
        !          2125: This manual is very large, as it describes a large, powerful system in
        !          2126: gruesome detail.
        !          2127: The important thing to remember is:
        !          2128: .sp 2
        !          2129: .ce
        !          2130: .b "\s+4DON'T PANIC\s0\**"
        !          2131: .sp 2
        !          2132: As explained in the tutorial, you really need to know only 5 commands to
        !          2133: handle most of your mail.
        !          2134: .(f
        !          2135: \** Note the large, \fIfriendly\fR letters.
        !          2136: .)f
        !          2137: .pp
        !          2138: Very advanced users may wish to consult 
        !          2139: \fIThe Rand MH Message Handling System: Administrator's Guide\fR,
        !          2140: which is also present in the \fImh.6\fR distribution sent to your site.
        !          2141: .+c ACKNOWLEDGMENTS
        !          2142: .pp
        !          2143: The \fIMH\fR system described herein is based on the original Rand \fIMH\fR
        !          2144: system.
        !          2145: It has been extensively developed (perhaps too much so) by Marshall T. Rose and
        !          2146: John L. Romine at the University of California, Irvine.
        !          2147: Einar A. Stefferud, Jerry N. Sweet, and Terry P. Domae provided numerous
        !          2148: suggestions to improve the UCI version of \fIMH\fR.
        !          2149: Of course,
        !          2150: a large number of people have helped \MH/ along.
        !          2151: The list of ``\fIMH\fR immortals'' is too long to list here.
        !          2152: However, Van Jacobson deserves a special acknowledgement for his tireless
        !          2153: work in improving the performance of \fIMH\fR.
        !          2154: Some programs have been speeded-up by a factor of 10 or 20.
        !          2155: All of users of \fIMH\fR, everywhere, owe a special thanks to Van.
        !          2156: .pp
        !          2157: This manual is based on the original \fIMH\fR manual written at Rand by
        !          2158: Bruce Borden, Stockton Gaines, and Norman Shapiro.
        !          2159: .+c PREFACE
        !          2160: .pp
        !          2161: This report describes a system for dealing with messages transmitted on a
        !          2162: computer.  Such messages might originate with other users of the same
        !          2163: computer or might come from an outside source through a network to which the user's
        !          2164: computer is connected.  Such computer-based message systems are
        !          2165: becoming increasingly widely used, both within and outside the Department
        !          2166: of Defense.
        !          2167: .pp
        !          2168: The message handling system \fIMH\fR was developed for two reasons.
        !          2169: One was to investigate some
        !          2170: research ideas concerning how a message system might take advantage of
        !          2171: the architecture of the UNIX time-sharing operating system for
        !          2172: Digital Equipment Corporation PDP-11 and VAX computers, and the special
        !          2173: features of UNIX's command-level interface with the user (the
        !          2174: \*(lqshell\*(rq).  The other reason was to provide a better and more
        !          2175: adaptable base than that of conventional designs
        !          2176: on which to build a command and control message system.
        !          2177: The effort has succeeded in both
        !          2178: regards, although this report mainly describes the message system itself
        !          2179: and how it fits in with UNIX.
        !          2180: .pp
        !          2181: The present report should be of interest to three groups of readers.  First,
        !          2182: it is a complete reference manual for the users of \fIMH\fR.
        !          2183: Second, it should be
        !          2184: of interest to those who have a general knowledge of computer-based
        !          2185: message systems, both in civilian and military applications.  Finally,
        !          2186: it should be of interest to those who build large subsystems that
        !          2187: interface with users, since it illustrates a new approach to such
        !          2188: interfaces.
        !          2189: .pp
        !          2190: The original \fIMH\fR system was developed by Bruce Borden,
        !          2191: using an approach suggested by Stockton Gaines and Norman Shapiro.
        !          2192: Valuable assistance was provided by Phyllis Kantar in the later
        !          2193: stages of the system's implementation.
        !          2194: Several colleagues
        !          2195: contributed to the ideas included in this system, particularly
        !          2196: Robert Anderson and David Crocker.
        !          2197: In addition, valuable experience
        !          2198: in message systems, and a valuable source of ideas, was available
        !          2199: to us in the form of a previous message system for UNIX called
        !          2200: MS, designed at Rand by David Crocker.
        !          2201: .pp
        !          2202: This report was originally prepared as part of the Rand project entitled
        !          2203: \*(lqData Automation Research\*(rq, sponsored by Project AIR FORCE.
        !          2204: .+c SUMMARY
        !          2205: .pp
        !          2206: Electronic communication of text messages is becoming
        !          2207: commonplace.  Computer-based message systems\-software
        !          2208: packages that provide tools for dealing with messages\-are used in many
        !          2209: contexts.  In particular, message systems are becoming
        !          2210: increasingly important in command and control and intelligence
        !          2211: applications.
        !          2212: .pp
        !          2213: This report describes a message handling system called \fIMH\fR.
        !          2214: This system provides the user
        !          2215: with tools to compose, send, receive, store, retrieve, forward, and
        !          2216: reply to messages.  \fIMH\fR has been built on the UNIX time-sharing system,
        !          2217: a popular operating system developed for the DEC PDP-11 and VAX classes of
        !          2218: computers.
        !          2219: .pp
        !          2220: A complete description of \fIMH\fR is given for users of
        !          2221: the system.  For those who do not intend to use the system, this description
        !          2222: gives a general idea of what a message system is like.  The system involves
        !          2223: some new ideas about how large subsystems can be constructed.
        !          2224: .pp
        !          2225: The interesting and unusual features of \fIMH\fR include the
        !          2226: following:  The user command interface to \fIMH\fR is the UNIX \*(lqshell\*(rq
        !          2227: (the standard UNIX command interpreter).  Each separable
        !          2228: component of message handling, such as message composition or
        !          2229: message display, is a separate command.  Each program is driven from
        !          2230: and updates a private user environment, which is stored as a file
        !          2231: between program invocations.  This private environment also contains
        !          2232: information to \*(lqcustom tailor\*(rq \fIMH\fR to the individual's tastes.
        !          2233: \fIMH\fR stores each message as a separate file under UNIX, and it utilizes the
        !          2234: tree-structured UNIX file system to organize groups of files within
        !          2235: separate directories or \*(lqfolders\*(rq.  All of the UNIX facilities
        !          2236: for dealing with files and directories, such as
        !          2237: renaming, copying, deleting, cataloging, off-line printing, etc., are
        !          2238: applicable to messages and directories of messages (folders).  Thus,
        !          2239: important capabilities needed in a message system are available in \fIMH\fR
        !          2240: without the need (often seen in other message systems) for code that
        !          2241: duplicates the facilities of the supporting operating system.
        !          2242: It also allows users familiar with the shell to use \fIMH\fR with minimal
        !          2243: effort.
        !          2244: .he ''''
        !          2245: .fo ''''
        !          2246: .bp
        !          2247: .ce
        !          2248: .b \\s12CONTENTS\\s0
        !          2249: .sp 3
        !          2250: .xp y
        !          2251: .xp x
        !          2252: .bp
        !          2253: .\"    And now the COVER sheet
        !          2254: .po +.325i
        !          2255: .ll 32P
        !          2256: .nf
        !          2257:  
        !          2258: .sp 1.5in
        !          2259: .ps 24
        !          2260: .vs 32
        !          2261: .ft B
        !          2262: .ce 4
        !          2263: THE RAND MH
        !          2264: MESSAGE HANDLING
        !          2265: SYSTEM:
        !          2266: USER'S MANUAL
        !          2267: .ft R
        !          2268: .sp .8i
        !          2269: .ps 20
        !          2270: .vs 24
        !          2271: .ce
        !          2272: UCI/UCB Version
        !          2273: .sp 0.7i
        !          2274: .ce 2
        !          2275: Marshall T. Rose
        !          2276: John L. Romine
        !          2277: .sp 0.5i
        !          2278: .ce 2
        !          2279: Based on the original manual by
        !          2280: Borden, Gaines, and Shapiro
        !          2281: .vs
        !          2282: .sp 1i
        !          2283: .ps 18
        !          2284: .vs 22
        !          2285: .ce 2
        !          2286: \*(td
        !          2287: \*(MH

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.