|
|
1.1 ! root 1: % begin text ! 2: \banner ! 3: \section{Acknowledgements} ! 4: The \MH/ system described herein is based on the original Rand \MH/ system. ! 5: It has been extensively developed (perhaps too much so) by Marshall Rose and ! 6: John Romine at the University of California, Irvine. ! 7: Einar Stefferud, Jerry Sweet, and Terry Domae provided numerous suggestions ! 8: to improve the UCI version of \MH/. ! 9: ! 10: \section{Disclaimer} ! 11: The Regents of the University of California wish to make it known that: ! 12: \bigquote ! 13: Although each program has been tested by its contributor, ! 14: no warranty, express or implied, ! 15: is made by the contributor or the University of California, ! 16: as to the accuracy and functioning of the program ! 17: and related program material, ! 18: nor shall the fact of distribution constitute any such warranty, ! 19: and no responsibility is assumed by the contributor ! 20: or the University of California in connection herewith. ! 21: \endbigquote ! 22: ! 23: \section{Conventions} ! 24: In this document, ! 25: certain \TeX -formatting conventions are adhered to: ! 26: \smallskip ! 27: {\advance\leftskip by\parindent ! 28: \item{1.} The names of \unix/ commands, such as \pgm{comp}, ! 29: are presented in {\it text italics}. ! 30: \item{2.} Arguments to programs, such as \arg{msgs}, ! 31: are presented in {\tt typewriter style} and delimited by single-quotes. ! 32: \item{3.} \unix/ pathnames and envariables, ! 33: such as \file{/usr/uci/} and \file{\$SIGNATURE}, ! 34: are presented in {\sl slanted roman}. ! 35: \item{4.} Text presenting an example, such as ! 36: \example comp\ -editor\ zz\endexample ! 37: is presented in {\tt typewriter style}. ! 38: \smallskip} ! 39: ! 40: \bop\section{General Changes} ! 41: The author is pleased to announce that there are actually very few ! 42: user-visible changes to \mh5 from the \mh4 distribution. ! 43: The majority of \mh5 development was in the form of bug fixes and slight ! 44: generalizations. ! 45: In addition, \mh5 is somewhat faster than \mh4: ! 46: all programs have been speeded-up slightly, ! 47: a few, such as \pgm{msh}, have been speeded-up signficantly. ! 48: ! 49: \subsection{Library Paths} ! 50: When a filter or form file argument is given to an \MH/ program, ! 51: and the name specified is not absolute (doesn't start with a \file{/\/}), ! 52: then the \MH/ program will first check in the user's \MH/ directory. ! 53: If the file is not present, ! 54: then program will consult the standard \MH/ library for the file. ! 55: This convention allows the PostMaster to make available system-wide ! 56: templates and skeletons. ! 57: ! 58: \subsection{MH Directory} ! 59: If the \MH/ directory of a user doesn't exist, ! 60: then \MH/ will query the user if it should be created. ! 61: This is primarily useful when copying a \profile/ from one host to another, ! 62: or when the site administrator creates a \profile/ for a user when creating ! 63: the associated login. ! 64: ! 65: \subsection{Documentation} ! 66: Two new documents have been prepared for the \mh5 distribution: ! 67: {\sl The Rand MH Message Handling System: Tutorial}, ! 68: which is cited as \cite{MH.TUT}; ! 69: and, ! 70: {\sl The Rand MH Message Handling System: The UCI BBoards Facility}, ! 71: which is cited as \cite{MH.BB}. ! 72: The former is a useful tutorial for novice users of \MH/. ! 73: The latter describes BBoard handling and \MH/. ! 74: ! 75: \section{Draft Handling} ! 76: This section discusses how the handling of drafts has been changed in \mh5. ! 77: ! 78: The most important change is that the {\it draft-folder} notation ! 79: and the {\it push} option at \whatnow/ level have been explicitly made ! 80: visible in the \MH/ system. ! 81: There's a new profile entry called \eg{Draft-Folder} which defines the ! 82: default draft-folder for the \MH/ user. ! 83: By using this entry, such as \example Draft-Folder:\ +drafts\endexample ! 84: the \MH/ user needn't add \switch{draftfolder\ drafts} to the entries ! 85: for \pgm{comp}, \pgm{dist}, \pgm{forw}, and \pgm{repl} in the user's ! 86: \profile/ file. ! 87: ! 88: \subsection{What Happens if the Draft Exists} ! 89: A new option has been added to \pgm{comp}, \pgm{dist}, \pgm{forw}, and ! 90: \pgm{repl} when the draft already exists: \eg{refile\ +folder}. ! 91: This allows you to \pgm{refile} the draft into another folder and then get a ! 92: fresh draft. ! 93: ! 94: \subsection{Editing Environment} ! 95: In previous versions of \MH/, ! 96: when \pgm{comp}, \pgm{dist}, \pgm{forw}, and \pgm{repl} allowed the user to ! 97: edit the draft, ! 98: the \MH/ user's current working directory was somewhere inside of the user's ! 99: \MH/ directory. ! 100: This often lead to confusing results. ! 101: In \mh5, ! 102: when the user edits a draft, ! 103: the current working directory is unchanged. ! 104: Furthermore, two envariables are defined during the editing session for ! 105: \pgm{dist} and \pgm{forw}: ! 106: \file{\$editalt}, ! 107: which is the name of the message (\unix/ file) being distributed or replied-to; ! 108: and, ! 109: \file{\$mhfolder}, ! 110: which is the name of the folder (\unix/ directory) containing the message ! 111: being distributed or replied-to. ! 112: ! 113: \subsection{Rapid Composition} ! 114: The \pgm{prompter} command has two new switches \switch{rapid} and ! 115: \switch{norapid}. ! 116: If the \switch{rapid} option is given then \pgm{repl} won't display an ! 117: existing body of the draft being edited. ! 118: This is useful for using \pgm{forw} with a slow terminal. ! 119: ! 120: \subsection{Ultra Rapid Composition} ! 121: The \pgm{comp}, \pgm{dist}, \pgm{forw}, and \pgm{repl} commands have a new ! 122: option, \switch{noedit}. ! 123: If \switch{noedit} is given, ! 124: then the initial edit is supressed. ! 125: This is useful for various canned applications ! 126: (and perhaps more graceful than \switch{-editor /bin/true\/}). ! 127: ! 128: \subsection{Digest Generation} ! 129: The \pgm{forw} command has the beginnings of a digest-composition facility, ! 130: with the \switch{digest\ list}, \switch{issue\ number}, ! 131: and \switch{volume\ number} switches. ! 132: ! 133: If \pgm{forw} is given the argument \eg{list} to the \switch{digest} switch, ! 134: and the \switch{issue\ number} switch is not given, ! 135: then \pgm{forw} looks for a profile entry called ! 136: \eg{digest-issue-list:} and increments its value to use as the issue ! 137: number. ! 138: Similarly, ! 139: if the \switch{volume\ number} switch is not given, ! 140: then \pgm{forw} looks for \eg{digest-volume-list:} ! 141: (but does not increment its value) to use as the volume number. ! 142: ! 143: Having calculated the name of the digest and the volume and issue numbers, ! 144: \pgm{forw} will look for a profile entry called \eg{sedproc:} ! 145: (which defaults to \pgm{/bin/sed\/})and filter the components file ! 146: (as specified with the \switch{form\ formfile} switch) ! 147: with the following definitions: ! 148: \eg{@(digest)}, \eg{@(issue)}, \eg{@(volume)}, and \eg{@(date)}. ! 149: ! 150: \tagdiagram{1}{Sample skeleton for digest composition}{digestcomps} ! 151: A good components file to use, (which might be called \file{digestcomps\/}) is ! 152: shown in Figure~\digestcomps. ! 153: ! 154: \pgm{Forw} will now compose the draft, ! 155: using the standard digest encapsulation algorithm ! 156: (even putting a \eg{End of list Digest} trailer in the draft). ! 157: Once the draft is composed by \pgm{forw}, ! 158: it writes out the volume and issue profile entries for the digest, ! 159: and then invokes the editor. ! 160: ! 161: \tagdiagram{2}{Sample template for digest messages}{mhldigest} ! 162: Naturally, when composing the draft, ! 163: the \pgm{forw} program will honor the\hbreak ! 164: \switch{filter\ filterfile} switch, ! 165: which is given to \pgm{mhl} to filter each message being forwarded prior to ! 166: encapsulation in the draft. ! 167: A good filter file to use, (which might be called \file{mhl.digest\/}) ! 168: is shown in Figure~\mhldigest. ! 169: ! 170: \subsection{Replies} ! 171: The \pgm{repl} command has two new switches \switch{query} and ! 172: \switch{noquery}. ! 173: If the \switch{query} option is given then for each address that would go in ! 174: the \eg{cc:} field of the reply, ! 175: \pgm{repl} asks the user if the address should be included. ! 176: This is sometimes useful for replying to mail sent to a large number of people. ! 177: (Obviously, one could simply edit the draft produced by \pgm{repl}, ! 178: but the \switch{query} option is useful if \pgm{prompter} is the editor used ! 179: by \pgm{repl} and one doesn't want to invoke a second editor.) ! 180: ! 181: Previous versions of \pgm{repl} would terminate if a \eg{From:} or ! 182: \eg{Sender:} field was not found or could not be parsed. ! 183: The \pgm{repl} program in \mh5 will continue to compose the reply draft, ! 184: after advising you of this anomaly. ! 185: ! 186: \subsection{Blind Carbon Copies} ! 187: After much experimentation, \MH/ has finally stabilized on the format of ! 188: blind-carbon-copies. ! 189: As in \mh4, when \pgm{post} generates a draft for blind recipients, ! 190: a new draft is composed with a minimal set of headers. ! 191: In \mh5 however, the \eg{BCC-Disclaimer:} field is no longer used. ! 192: Instead, the draft for the blind recipients contains the original message as a ! 193: forwarded message. ! 194: This more clearly identifies a blind-carbon-copy to the blind recipient. ! 195: ! 196: \subsection{File Carbon Copies} ! 197: A message draft can now have more than one folder listed in a \eg{Fcc:} field. ! 198: Each folder should be separated by a comma, just like the addresses in a ! 199: \eg{cc:} field. ! 200: In addition, the folders listed in a \eg{Fcc:} field may use the ! 201: relative-folder addressing notation ! 202: (though this latter activity is not recommended). ! 203: ! 204: \subsection{Refiling the Draft} ! 205: At \whatnow/ level, there is a new option, \eg{refile}. ! 206: This options takes any arguments acceptable to the \pgm{refile} program, ! 207: and \pgm{refile\/}'s the message draft into the named folder(s). ! 208: ! 209: \subsection{Annotations} ! 210: If the \switch{annotate} switch is given to \pgm{dist}, \pgm{forw}, or ! 211: \pgm{repl}, and the message is (re)moved by the user prior to the successful ! 212: posting of the draft, the \MH/ program will not complain as before. ! 213: Hence, users of the \eg{push} option at \whatnow/ level need not worry about ! 214: asynchronous error messages. ! 215: ! 216: \section{Other Changes} ! 217: This last section describes the other more program-specific changes made to ! 218: \MH/. ! 219: ! 220: \subsection{Bursting} ! 221: The bursting mechanism in \MH/ has been made sufficiently general to allow ! 222: \pgm{burst} to work on forwarded messages and blind-carbon-copies in addition ! 223: to digests. ! 224: Although \pgm{burst} can not always successfully decapsulate messages ! 225: encapsulated by sites not running \MH/, ! 226: it handles forwarded messages and blind-carbon-copies, ! 227: as constructed by \pgm{forw} and \pgm{send}, easily. ! 228: ! 229: In addition, the \pgm{send} program has two new switches, ! 230: \switch{forward}, and \switch{noforward}. ! 231: If the \switch{forward} option is given, ! 232: then if a \pgm{send} which has been \pgm{push\/}'d in the background fails, ! 233: in addition to containing the reasons for the failure, ! 234: the failure notice contains the draft as a forwarded message. ! 235: This means one can simply \pgm{burst} the failure notice to get the draft ! 236: back, ! 237: instead of hunting around for it. ! 238: ! 239: \subsection{Incorporation of Mail} ! 240: There's a new profile entry called \eg{MailDrop} which can be used to define ! 241: the default maildrop that \pgm{inc} should use. ! 242: In addition, if the envariable \file{\$MAILDROP} is defined, ! 243: then \pgm{inc} will use its value as the default maildrop. ! 244: ! 245: The \pgm{inc} program also has a new option: ! 246: \switch{truncate} and \switch{notruncate}, ! 247: which indicates if the maildrop should be truncated. ! 248: By default, \switch{truncate} is used defualt maildrop is used, ! 249: otherwise \switch{notruncate} is used. ! 250: ! 251: \subsection{Clearing the Display} ! 252: The \switch{ff} and \switch{noff} switches have been removed from the ! 253: \pgm{scan} and \pgm{mhl} programs. ! 254: Instead, the \pgm{scan} has been given two switches, ! 255: \switch{clear} and \switch{noclear} ! 256: (\pgm{mhl} already has these switches). ! 257: The action of the \switch{clear} option is simple: ! 258: if the standard output to the \MH/ program is a terminal, ! 259: then the program will output the correct ``escape sequence'' to clear the ! 260: terminal's screen; ! 261: if the standard output is not a terminal, ! 262: then the program will output a formfeed. ! 263: ! 264: In addition, ! 265: both \pgm{scan} and \pgm{mhl} consult the \file{\$TERM} envariable to ! 266: determine such things as the length and width of your terminal. ! 267: The \pgm{scan} program uses this to determine how long each line of the scan ! 268: listing should be. ! 269: The \pgm{mhl} program uses this to determine the default length and width ! 270: of your terminal (instead of the $40$ by $80\/$), ! 271: prior to reading the template or consulting command line options. ! 272: ! 273: \subsection{Folder Handling} ! 274: If the \pgm{folder} command is given the name of a folder that does not exist, ! 275: \pgm{folder} will query the user if the folder should be created. ! 276: This is useful for creating a folder that the \MH/ user intends to access ! 277: later. ! 278: ! 279: In previous releases of \MH/, ! 280: the \pgm{rmf} program would consider a folder writable if it was writable by ! 281: the user. ! 282: Since \pgm{rmf} ultimately removes the folder itself, ! 283: \pgm{rmf} considers a folder writable if the folder and its parent are ! 284: writable by the user. ! 285: If not, the folder is treated as a read-only folder by \pgm{rmf}. ! 286: ! 287: \subsection{MailDrops} ! 288: The name of the \pgm{pack} program has been changed to \pgm{packf}. ! 289: The author didn't want to do this. ! 290: Some people don't know when to leave well enough alone. ! 291: ! 292: \subsection{Refiling} ! 293: The \pgm{refile} program now has a \switch{draft} switch saying to file the ! 294: current draft. ! 295: ! 296: \subsection{RcvMail Support} ! 297: In addition to the standard \pgm{rcvpack} and \pgm{rcvtty} receive mail hooks, ! 298: and the \pgm{rcvtrip} shell script, ! 299: there's a new rcvmail hook called \pgm{rcvdist}. ! 300: The \pgm{rcvdist} hook allows a user of \MH/ to have his/her mail forwarded ! 301: without the intervention of the PostMaster. ! 302: (By the way, the \pgm{rcvpack} hook used to be called \pgm{rcvcron\/}.) ! 303: ! 304: \subsection{Reading BBoards} ! 305: The \pgm{msh} program (which used to be called \pgm{bbr\/}) ! 306: implements an \MH/ shell. ! 307: In addition to the commands that the old \pgm{bbr} program had, ! 308: \pgm{msh} also has the ! 309: \pgm{inc}, \pgm{mhmail}, \pgm{pack}, \pgm{rmm} and \pgm{sortm} commands. ! 310: ! 311: In addition, \pgm{msh} uses a ``maildrop mapping'' mechanism to ! 312: significantly speed-up its start-up time compared to the old \pgm{bbr}. ! 313: The \pgm{pack} program supports this mechanism as well, ! 314: so \pgm{msh} starts quickly on ordinary \pgm{pack\/}'d files as well. ! 315: ! 316: Finally, \pgm{mhl} is now built-in to \pgm{msh}, ! 317: so with a \eg{showproc} of \pgm{mhl}, ! 318: the \pgm{msh} user gets speedy response in listing messages.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.