+
+
+
+MHN(1) BSD Reference Manual MHN(1)
+
+
+N\bNA\bAM\bME\bE
+ mhn - multi-media MH
+
+S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
+ mhn [[+folder] [msgs] | [-file file]]
+ [-part number]... [-type content]...
+ [-list [-headers] [-noheaders]
+ [-realsize] [-norealsize]] [-nolist]
+ [-show [-serialonly] [-noserialonly]
+ [-form formfile] [-pause] [-nopause]]
+ [-noshow]
+ [-store [-auto] [-noauto]] [-nostore]
+ [-cache] [-nocache] [-rcache policy] [-wcache policy]
+ [-check] [-nocheck]
+ [-ebcdicsafe] [-noebcdicsafe]
+ [-rfc934mode] [-norfc934mode]
+ [-verbose] [-noverbose]
+ [-help]
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+ The _\bm_\bh_\bn command manipulates multi-media messages as speci-
+ fied in RFC 1521.
+
+ Four action switches direct the operation of _\bm_\bh_\bn, namely
+ `-list', `-show', `-store', and `-cache'. Any of these
+ switches may be used concurrently. Normally these action
+ switches will operate on the content of each of the named
+ messages. However, by using the `-part' and `-type'
+ switches, the scope of the operation can be focused on
+ particular subparts (of a multipart content) and/or par-
+ ticular content types.
+
+ A part specification consists of a series of numbers sepa-
+ rated by dots. For example, in a multipart content con-
+ taining three parts, these would be named as 1, 2, and 3,
+ respectively. If part 2 was also a multipart content con-
+ taining two parts, these would be named as 2.1 and 2.2,
+ respectively. Note that the `-part' switch is effective
+ for only messages containing a multipart content. If a
+ message has some other kind of content, or if the part is
+ itself another multipart content, the `-part' switch will
+ not prevent the content from being acted upon.
+
+ A content specification consists of a content type and a
+ subtype. The initial list of "standard" content types and
+
+
+
+
+
+
+
+
+
+[mh.6] MH.6.8 1
+
+
+
+
+
+
+
+
+MHN(1) BSD Reference Manual MHN(1)
+
+
+ subtypes can be found in RFC 1521. A list of commonly
+ used contents is briefly reproduced here:
+
+ Type Subtypes
+ ---- --------
+ text plain
+ multipart mixed, alternative, digest, parallel
+ message rfc822, partial, external-body
+ application octet-stream, postscript
+ image jpeg, gif, x-pbm, x-pgm, x-ppm, x-xwd
+ audio basic
+ video mpeg
+
+ Subtypes are mandatory.
+
+ To specify a content, regardless of its subtype, just use
+ the name of the content, e.g., "audio". To specify a spe-
+ cific subtype, separate the two with a slash, e.g.,
+ "audio/basic". Note that regardless of the values given
+ to the `-type' switch, a multipart content (of any subtype
+ listed above) is always acted upon. Further note that if
+ the `-type' switch is used, and it is desirable to act on
+ a message/external-body content, then the `-type' switch
+ must be used twice: once for message/external-body and
+ once for the content externally referenced.
+
+ Each content may optionally have an integrity check asso-
+ ciated with it. If present and the `-check' switch is
+ given, then _\bm_\bh_\bn will attempt to verify the integrity of
+ the content.
+
+ The option `-file file' directs _\bm_\bh_\bn to use the specified
+ file as the source message, rather than a message from a
+ folder. Note that the file should be a validly formatted
+ message, just like any other _\bM_\bH message. It should N\bNO\bOT\bT be
+ in mail drop format (to convert a file in mail drop format
+ to a folder of _\bM_\bH messages, see _\bi_\bn_\bc (1)).
+
+
+ L\bLi\bis\bst\bti\bin\bng\bg t\bth\bhe\be C\bCo\bon\bnt\bte\ben\bnt\bts\bs
+ The `-list' switch tells _\bm_\bh_\bn to list the table of contents
+ associated with the named messages. The `-headers' switch
+ indicates that a one-line banner should be displayed above
+ the listing. The `-realsize' switch tells _\bm_\bh_\bn to evaluate
+ the "native" (decoded) format of each content prior to
+ listing. This provides an accurate count at the expense
+ of a small delay.
+
+
+
+
+
+
+
+[mh.6] MH.6.8 2
+
+
+
+
+
+
+
+
+MHN(1) BSD Reference Manual MHN(1)
+
+
+ S\bSh\bho\bow\bwi\bin\bng\bg t\bth\bhe\be C\bCo\bon\bnt\bte\ben\bnt\bts\bs
+ The `-show' switch tells _\bm_\bh_\bn to display the contents of
+ the named messages. The headers of the message are dis-
+ played with the _\bm_\bh_\bl_\bp_\br_\bo_\bc, using format file _\bm_\bh_\bl_\b._\bh_\be_\ba_\bd_\be_\br_\bs.
+ (The choice of format file can be overridden by the
+ `-form formfile' switch.)
+
+ _\bm_\bh_\bn will look for information in the user's profile to
+ determine how the different contents should be displayed.
+ This is accomplished by consulting a display string, and
+ executing it under /\b/b\bbi\bin\bn/\b/s\bsh\bh, with the standard input set to
+ the content. The display string may contain these
+ escapes:
+
+ %a additional arguments
+ %e exclusive execution
+ %f filename containing content
+ %F %e, %f, and stdin is terminal not content
+ %l display listing prior to displaying content
+ %p %l, and ask for confirmation
+ %s subtype
+ %d content description
+
+ For those display strings containing the e- or F-escape,
+ _\bm_\bh_\bn will execute at most one of these at any given time.
+ Although the F-escape expands to be the filename contain-
+ ing the content, the e-escape has no expansion as far as
+ the shell is concerned.
+
+ When the p-escape prompts for confirmation, typing INTR
+ (usually control-C) will tell _\bm_\bh_\bn not to display that con-
+ tent. (The p-escape can be disabled by specifying
+ `-nopause'.) Further, when _\bm_\bh_\bn is display a content, typ-
+ ing QUIT (usually control-\) will tell _\bm_\bh_\bn to wrap things
+ up immediately.
+
+ Note that if the content being displayed is multipart, but
+ not one of the subtypes listed above, then the f- and F-
+ escapes expand to multiple filenames, one for each subor-
+ dinate content. Further, stdin is not redirected from the
+ terminal to the content.
+
+ First, _\bm_\bh_\bn will look for an entry of the form:
+
+ mhn-show-<type>/<subtype>
+
+ to determine the command to use to display the content.
+ If this isn't found, _\bm_\bh_\bn will look for an entry of the
+ form:
+
+ mhn-show-<type>
+
+
+
+[mh.6] MH.6.8 3
+
+
+
+
+
+
+
+
+MHN(1) BSD Reference Manual MHN(1)
+
+
+ to determine the display command. If this isn't found,
+ _\bm_\bh_\bn has two default values:
+
+ mhn-show-text/plain: %pmoreproc '%F'
+ mhn-show-message/rfc822: %pshow -file '%F'
+
+ If neither apply, _\bm_\bh_\bn will check to see if the message has
+ a application/octet-stream content with parameter
+ "type=tar". If so, _\bm_\bh_\bn will use an appropriate command.
+ If not, _\bm_\bh_\bn will complain.
+
+ Example entries might be:
+
+ mhn-show-audio/basic: raw2audio 2>/dev/null | play
+ mhn-show-image: xv '%f'
+ mhn-show-application/PostScript: lpr -Pps
+
+ Note that when using the f- or F-escape, it's a good idea
+ to use single-quotes around the escape. This prevents
+ misinterpretation by the shell of any funny characters
+ that might be present in the filename.
+
+ Because the text content might be in a non-ASCII character
+ set, when _\bm_\bh_\bn encounters a "charset" parameter for this
+ content, it checks to see whether the environment variable
+ $MM_CHARSET is set and whether the value of this environ-
+ ment variable is equal to the value of the charset parame-
+ ter. If not, then _\bm_\bh_\bn will look for an entry of the form:
+
+ mhn-charset-<charset>
+
+ which should contain a command creating an environment to
+ render the character set. This command string should con-
+ taining a single "%s", which will be filled-in with the
+ command to display the content.
+
+ An example entry might be:
+
+ mhn-charset-iso-8859-1: xterm -fn '-*-*-medium-r-
+ normal-*-*-120-*-*-c-*-iso8859-*' -e %s
+
+ Note that many pagination programs strip off the high-
+ order bit. However, newer releases of the _\bl_\be_\bs_\bs program
+ have modest support for single-octet character sets. The
+ source to _\bl_\be_\bs_\bs version 177, which has such support, is
+ found in the MH source tree under m\bmi\bis\bsc\bce\bel\bll\bla\ban\bny\by/\b/l\ble\bes\bss\bs-\b-1\b17\b77\b7. In
+ order to view messages sent in the ISO 8859/1 character
+
+
+
+
+
+
+
+[mh.6] MH.6.8 4
+
+
+
+
+
+
+
+
+MHN(1) BSD Reference Manual MHN(1)
+
+
+ set using _\bl_\be_\bs_\bs, put these lines in your .login file:
+
+ setenv LESSCHARSET latin1
+ setenv LESS "-f"
+
+ The first line tells _\bl_\be_\bs_\bs to use 8859/1 definition for
+ determing whether a character is "normal", "control", or
+ "binary". The second line tells _\bl_\be_\bs_\bs not to warn you if
+ it encounters a file that has non-ASCII characters. Then,
+ simply set the m\bmo\bor\bre\bep\bpr\bro\boc\bc profile entry to _\bl_\be_\bs_\bs, and it will
+ get called automatically. (To handle other single-octet
+ character sets, look at the _\bl_\be_\bs_\bs (1) manual entry for
+ information about the L\bLE\bES\bSS\bSC\bCH\bHA\bAR\bRD\bDE\bEF\bF environment variable.)
+
+ Finally, _\bm_\bh_\bn will process each message serially -- it
+ won't start showing the next message until all the com-
+ mands executed to display the current message have termi-
+ nated. In the case of a multipart content (of any subtype
+ listed above), the content contains advice indicating if
+ the parts should be displayed serially or in parallel.
+ Because this may cause confusion, particularly on uni-
+ window displays, the `-serialonly' switch can be given to
+ tell _\bm_\bh_\bn to never display parts in parallel.
+
+
+ S\bSt\bto\bor\bri\bin\bng\bg t\bth\bhe\be C\bCo\bon\bnt\bte\ben\bnt\bts\bs
+ The `-store' switch tells _\bm_\bh_\bn to store the contents of the
+ named messages in "native" (decoded) format. Two things
+ must be determined: the directory to store the content,
+ and the filenames. Files are written in the directory
+ given by the m\bmh\bhn\bn-\b-s\bst\bto\bor\bra\bag\bge\be profile entry, e.g.,
+
+ mhn-storage: /tmp
+
+ If this entry isn't present, the current working directory
+ is used.
+
+ _\bm_\bh_\bn will look for information in the user's profile to
+ determine how the different contents should be stored.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[mh.6] MH.6.8 5
+
+
+
+
+
+
+
+
+MHN(1) BSD Reference Manual MHN(1)
+
+
+ This is achieved through the use of a formatting string,
+ which may contain these escapes:
+
+ %m message number
+ %P .part
+ %p part
+ %s subtype
+
+ If the content isn't part of a multipart (of any subtype
+ listed above) content, the p-escapes are ignored. Note
+ that if the formatting string starts with a "+" character,
+ then these escapes are ignored, and the content is stored
+ in the named folder. (A formatting string consisting
+ solely of a "+" character indicates the current folder.)
+ Further, a formatting string consisting solely of a "-"
+ character indicates the standard-output.
+
+ First, _\bm_\bh_\bn will look for an entry of the form:
+
+ mhn-store-<type>/<subtype>
+
+ to determine the formatting string. If this isn't found,
+ _\bm_\bh_\bn will look for an entry of the form:
+
+ mhn-store-<type>
+
+ to determine the formatting string. If this isn't found,
+ _\bm_\bh_\bn will check to see if the content is application/octet-
+ stream with parameter "type=tar". If so, _\bm_\bh_\bn will choose
+ an appropriate filename. If the content is not applica-
+ tion/octet-stream, then _\bm_\bh_\bn will check to see if the con-
+ tent is a message. If so, _\bm_\bh_\bn will use the value "+". If
+ not, _\bm_\bh_\bn will use the value "%m%P.%s".
+
+ Note that if the formatting string starts with a '/', then
+ content will be stored in the full path given (rather than
+ using the value of m\bmh\bhn\bn-\b-s\bst\bto\bor\bra\bag\bge\be or the current working
+ directory.) Similarly, if the formatting string starts
+ with a '|', then _\bm_\bh_\bn will execute a command which should
+ ultimately store the content. Note that before executing
+ the command, _\bm_\bh_\bn will change to the appropriate directory.
+ Also note that if the formatting string starts with a '|',
+ then _\bm_\bh_\bn will also honor the a-escape when processing the
+ formatting string.
+
+
+
+
+
+
+
+
+
+
+[mh.6] MH.6.8 6
+
+
+
+
+
+
+
+
+MHN(1) BSD Reference Manual MHN(1)
+
+
+ Example entries might be:
+
+ mhn-store-text: %m%P.txt
+ mhn-store-audio/basic: | raw2audio -e ulaw -s 8000 -c 1 > %m%P.au
+ mhn-store-application/PostScript: %m%P.ps
+
+ Further, note that when asked to store a content contain-
+ ing a partial message, _\bm_\bh_\bn will try to locate all of the
+ portions and combine them accordingly. Thus, if someone's
+ sent you a message in several parts, you might put them
+ all in their own folder and do:
+
+ mhn all -store
+
+ This will store exactly one message, containing the sum of
+ the parts. Note that if _\bm_\bh_\bn can not locate each part, it
+ will not store anything.
+
+ Finally, if the `-auto' switch is given and the content
+ contains information indicating the filename the content
+ should be stored as (and if the filename doesn't begin
+ with a '/'), then the filename from the content will be
+ used instead.
+
+
+ E\bEx\bxt\bte\ber\brn\bna\bal\bl A\bAc\bcc\bce\bes\bss\bs
+ For contents of type message/external-body, _\bm_\bh_\bn supports
+ these access-types:
+
+ afs
+ anon-ftp
+ ftp
+ local-file
+ mail-server
+
+ For the "anon-ftp" and "ftp" access types, if your system
+ supports a SOCKETs interface to TCP/IP, then _\bm_\bh_\bn will use
+ a built-in FTP client. Otherwise, _\bm_\bh_\bn will look for the
+ m\bmh\bhn\bn-\b-a\bac\bcc\bce\bes\bss\bs-\b-f\bft\btp\bp profile entry, e.g.,
+
+ mhn-access-ftp: myftp.sh
+
+ to determine the pathname of a program to perform the FTP
+
+
+
+
+
+
+
+
+
+
+
+[mh.6] MH.6.8 7
+
+
+
+
+
+
+
+
+MHN(1) BSD Reference Manual MHN(1)
+
+
+ retrieval. This program is invoked with these arguments:
+
+ domain name of FTP-site
+ username
+ password
+ remote directory
+ remote filename
+ local filename
+ "ascii" or "binary"
+
+ The program should terminate with a zero-valued exit-
+ status if the retrieval is successful.
+
+
+ T\bTh\bhe\be C\bCo\bon\bnt\bte\ben\bnt\bt C\bCa\bac\bch\bhe\be
+ When _\bm_\bh_\bn encounters an external content containing a "Con-
+ tent-ID:" field, and if the content allows caching, then
+ depending on the caching behavior of _\bm_\bh_\bn, the content
+ might be read from or written to a cache.
+
+ The caching behavior of _\bm_\bh_\bn is controlled with the
+ `-rcache' and `-wcache' switches, which define the policy
+ for reading from, and writing to, the cache, respectively.
+ One of four policies may be specified: "public", indicat-
+ ing that _\bm_\bh_\bn should make use of a publically-accessible
+ content cache; "private", indicating that _\bm_\bh_\bn should make
+ use of the user's private content cache; "never", indicat-
+ ing that _\bm_\bh_\bn should never make use of caching; and, "ask",
+ indicating that _\bm_\bh_\bn should ask the user.
+
+ There are two directories where contents may be cached:
+ the profile entry m\bmh\bhn\bn-\b-c\bca\bac\bch\bhe\be names a directory containing
+ world-readable contents, and, the profile entry m\bmh\bhn\bn-\b-
+ p\bpr\bri\biv\bva\bat\bte\be-\b-c\bca\bac\bch\bhe\be names a directory containing private con-
+ tents. The former should be an absolute (rooted) direc-
+ tory name. For example,
+
+ mhn-cache: /tmp
+
+ might be used if you didn't care that the cache got wiped
+ after each reboot of the system. The latter is inter-
+ preted relative to the user's MH directory, if not rooted,
+ e.g.,
+
+ mhn-private-cache: .cache
+
+ (which is the default value).
+
+
+
+
+
+
+
+[mh.6] MH.6.8 8
+
+
+
+
+
+
+
+
+MHN(1) BSD Reference Manual MHN(1)
+
+
+ C\bCa\bac\bch\bhi\bin\bng\bg t\bth\bhe\be C\bCo\bon\bnt\bte\ben\bnt\bts\bs
+ When you encounter a content of type message/external-body
+ with access type "mail-server", _\bm_\bh_\bn will ask you if may
+ send a message to a mail-server requesting the content,
+ e.g.,
+
+ % show 1
+ Retrieve content by asking mail-server@...
+
+ SEND file
+
+ ? yes
+ mhn: request sent
+
+ Regardless of your decision, _\bm_\bh_\bn can't perform any other
+ processing on the content.
+
+ However, if _\bm_\bh_\bn is allowed to request the content, then
+ when it arrives, there should be a top-level "Content-ID:"
+ field which corresponds to the value in the original mes-
+ sage/external-body content. You should now use the
+ `-cache' switch to tell _\bm_\bh_\bn to enter the arriving content
+ into the content cache, e.g.,
+
+ % mhn -cache 2
+ caching message 2 as file ...
+
+ You can then re-process the original message/external-body
+ content, and "the right thing should happen", e.g.,
+
+ % show 1
+ ...
+
+
+ C\bCo\bom\bmp\bpo\bos\bsi\bin\bng\bg t\bth\bhe\be C\bCo\bon\bnt\bte\ben\bnt\bts\bs
+ The _\bm_\bh_\bn program can also be used as a simple editor to aid
+ in composing multi-media messages. When invoked by a
+ _\bw_\bh_\ba_\bt_\bn_\bo_\bw program, _\bm_\bh_\bn will expect the body of the draft to
+ be formatted as an "_\bm_\bh_\bn composition file."
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[mh.6] MH.6.8 9
+
+
+
+
+
+
+
+
+MHN(1) BSD Reference Manual MHN(1)
+
+
+ The syntax of this is straight-forward:
+
+ body ::= 1*(content | EOL)
+
+ content ::= directive | plaintext
+
+ directive ::= "#" type "/" subtype
+ 0*(";" attribute "=" value)
+ [ "(" comment ")" ]
+ [ "<" id ">" ]
+ [ "[" description "]" ]
+ [ filename ]
+ EOL
+
+ | "#@" type "/" subtype
+ 0*(";" attribute "=" value)
+ [ "(" comment ")" ]
+ [ "<" id ">" ]
+ [ "[" description "]" ]
+ external-parameters
+ EOL
+
+ | "#forw"
+ [ "<" id ">" ]
+ [ "[" description "]" ]
+ [ "+"folder ] [ 0*msg ]
+ EOL
+
+ | "#begin"
+ [ "<" id ">" ]
+ [ "[" description "]" ]
+ [ "alternative"
+ | "parallel"
+ | something-else ]
+ EOL
+ 1*body
+ "#end" EOL
+
+ plaintext ::= [ "Content-Description:"
+ description EOL EOL ]
+ 1*line
+ [ "#" EOL ]
+
+ | "#<" type "/" subtype
+ 0*(";" attribute "=" value)
+ [ "(" comment ")" ]
+ [ "[" description "]" ]
+ EOL
+ 1*line
+ [ "#" EOL ]
+
+
+
+
+[mh.6] MH.6.8 10
+
+
+
+
+
+
+
+
+MHN(1) BSD Reference Manual MHN(1)
+
+
+ line ::= "##" text EOL
+ -- interpreted as "#"text EOL
+ | text EOL
+
+ Basically, the body contains one or more contents. A con-
+ tent consists of either a directive, indicated with a "#"
+ as the first character of a line; or, plaintext (one or
+ more lines of text). The continuation character, "\", may
+ be used to enter a single directive on more than one line,
+ e.g.,
+
+ #@application/octet-stream; \
+ type=tar; \
+ x-conversions=compress
+
+ There are four kinds of directives: "type" directives,
+ which name the type and subtype of the content; "external-
+ type" directives, which also name the type and subtype of
+ the content; the "forw" directive, which is used to for-
+ ward a digest of messages; and, the "begin" directive,
+ which is used to create a multipart content.
+
+ For the type directives, the user may optionally specify
+ the name of a file containing the contents in "native"
+ (decoded) format. (If the filename starts with the "|"
+ character, then this gives a command whose output is cap-
+ tured accordingly.) If a filename is not given, _\bm_\bh_\bn will
+ look for information in the user's profile to determine
+ how the different contents should be composed. This is
+ accomplished by consulting a composition string, and exe-
+ cuting it under /\b/b\bbi\bin\bn/\b/s\bsh\bh, with the standard output set to
+ the content. The composition string may contain these
+ escapes:
+
+ %a additional arguments
+ %f filename containing content
+ %F %f, and stdout is not re-directed
+ %s subtype
+
+ First, _\bm_\bh_\bn will look for an entry of the form:
+
+ mhn-compose-<type>/<subtype>
+
+ to determine the command to use to compose the content.
+ If this isn't found, _\bm_\bh_\bn will look for an entry of the
+ form:
+
+ mhn-compose-<type>
+
+ to determine the composition command. If this isn't
+ found, _\bm_\bh_\bn will complain.
+
+
+
+[mh.6] MH.6.8 11
+
+
+
+
+
+
+
+
+MHN(1) BSD Reference Manual MHN(1)
+
+
+ An example entry might be:
+
+ mhn-compose-audio/basic: record | raw2audio -F
+
+ Because commands like these will vary, depending on the
+ display environment used for login, composition strings
+ for different contents should probably be put in the file
+ specified by the $\b$M\bMH\bHN\bN environment variable, instead of
+ directly in your user profile.
+
+ The external-type directives are used to provide a refer-
+ ence to a content, rather than enclosing the contents
+ itself. Hence, instead of providing a filename as with
+ the type directives, external-parameters are supplied.
+ These look like regular parameters, so they must be sepa-
+ rated accordingly, e.g.,
+
+ #@application/octet-stream; \
+ type=tar; \
+ x-conversions=compress [] \
+ access-type=anon-ftp; \
+ name="mh-mime.tar.Z"; \
+ directory="mrose/mh-mime"; \
+ site="ftp.ics.uci.edu"
+
+ By specifying "[]", an empty description string is given,
+ and the start of the external-parameters is identified.
+ These parameters are of the form:
+
+ access-type= usually _\ba_\bn_\bo_\bn_\b-_\bf_\bt_\bp or _\bm_\ba_\bi_\bl_\b-_\bs_\be_\br_\bv_\be_\br
+ name= filename
+ permission= read-only or read-write
+ site= hostname
+ directory= directoryname (optional)
+ mode= usually _\ba_\bs_\bc_\bi_\bi or _\bi_\bm_\ba_\bg_\be (optional)
+ size= number of octets
+ server= mailbox
+ subject= subject to send
+ body= command to send for retrieval
+
+
+ For the forw directive, the user may optionally specify
+ the name of the folder and which messages are to be for-
+ warded. if a folder is not given, it defaults to the cur-
+ rent folder. Similarly, if a message is not given, it
+ defaults to the current message. Hence, the forw direc-
+ tive is similar to the _\bf_\bo_\br_\bw (1) command, except that the
+ former uses the MIME rules for encapsulation rather than
+ those specified in RFC 934. Usage of the `-rfc934mode'
+ switch indicates whether _\bm_\bh_\bn should attempt to utilize the
+ encapsulation rules in such a way as to appear that RFC
+
+
+
+[mh.6] MH.6.8 12
+
+
+
+
+
+
+
+
+MHN(1) BSD Reference Manual MHN(1)
+
+
+ 934 is being used. If given, then RFC 934-compliant user-
+ agents should be able to burst the message on
+ reception -- providing that the messages being encapsu-
+ lated do not contain encapsulated messages themselves.
+ The drawback of this approach is that the encapsulations
+ are generated by placing an extra newline at the end of
+ the body of each message.
+
+ For the begin directive, the user must specify at least
+ one content between the begin and end pairs.
+
+ For all of these directives, the user may include a brief
+ description of the content between the "[" character and
+ the "]" character. By default, _\bm_\bh_\bn will generate a unique
+ "Content-ID:" for each directive; however, the user may
+ override this by defining the ID using the "<" and ">"
+ characters. Putting this all together, here is a brief
+ example of what a user's components file might look like:
+
+ To:
+ cc:
+ Subject:
+ --------
+ #audio/basic [Flint phone] \
+ |raw2audio -F < /home/mrose/lib/multi-media/flint.au
+ #image/gif [MTR's photo] \
+ /home/mrose/lib/multi-media/mrose.gif
+
+ For a later example, we'll call this components file _\bm_\bh_\bn_\b-
+ _\bc_\bo_\bm_\bp_\bs.
+
+ As noted earlier, in addition to directives, plaintext can
+ be present. Plaintext is gathered, until a directive is
+ found or the draft is exhausted, and this is made to form
+ a text content. If the plaintext must contain a "#" at
+ the beginning of a line, simply double it, e.g.,
+
+ ##when sent, this line will start with only one #
+
+ If you want to end the plaintext prior to a directive,
+ e.g., to have two plaintext contents adjacent, simply
+ insert a line containing a single "#" character, e.g.,
+
+ this is the first content
+ #
+ and this is the second
+
+ Finally, if the plaintext starts with a line of the form:
+
+ Content-Description: text
+
+
+
+
+[mh.6] MH.6.8 13
+
+
+
+
+
+
+
+
+MHN(1) BSD Reference Manual MHN(1)
+
+
+ then this will be used to describe the plaintext content.
+ N\bNO\bOT\bTE\bE W\bWE\bEL\bLL\bL:\b: you must follow this line with a blank line
+ before starting your text.
+
+ By default, plaintext is captured as a text/plain content.
+ You can override this by starting the plaintext with "#<"
+ followed by a content-type specification, e.g.,
+
+ #<text/richtext
+ this content will be tagged as text/richtext
+ #
+ and this content will be tagged as text/plain
+
+ Note that if you use the "#<" plaintext-form, then the
+ content-description must be on the same line which identi-
+ fies the content type of the plaintext.
+
+ If _\bm_\bh_\bn is successful, it renames the original draft to
+ start with the "," character and end with the string
+ ".orig", e.g., if you are editing the file "draft", it
+ will be renamed to ",draft.orig". This allows you to eas-
+ ily recover the _\bm_\bh_\bn composition file.
+
+ If the `-check' switch is given, _\bm_\bh_\bn will associate an
+ integrity check with each content.
+
+
+ A\bAu\but\bto\bom\bma\bat\bti\bic\bc C\bCo\bom\bmp\bpo\bos\bsi\bit\bti\bio\bon\bn
+ Note that MH will not invoke _\bm_\bh_\bn automatically, unless you
+ add this line to your .mh_profile file:
+
+ automhnproc: mhn
+
+ Otherwise, you must specifically give the command
+
+ What now? edit mhn
+
+ prior to sending the draft.
+
+ You can easily tailor MH to help you remember to do this.
+ Suppose you have these lines in your profile:
+
+ mcomp: -editor mprompter -form mhncomps
+ mprompter: -noprepend -norapid
+ mprompter-next: mhn
+
+ where _\bm_\bc_\bo_\bm_\bp is a link to _\bc_\bo_\bm_\bp (1), and _\bm_\bp_\br_\bo_\bm_\bp_\bt_\be_\br is a link
+ to _\bp_\br_\bo_\bm_\bp_\bt_\be_\br (1). Then to send a message using the _\bm_\bh_\bn_\b-
+
+
+
+
+
+
+[mh.6] MH.6.8 14
+
+
+
+
+
+
+
+
+MHN(1) BSD Reference Manual MHN(1)
+
+
+ _\bc_\bo_\bm_\bp_\bs components file above, the sequence is:
+
+ % m\bmc\bco\bom\bmp\bp
+ To: u\bus\bse\ber\br@\b@h\bho\bos\bst\bt
+ cc:
+ Subject: m\bmu\bul\blt\bti\bi-\b-m\bme\bed\bdi\bia\ba m\bme\bes\bss\bsa\bag\bge\be
+ --------
+ #audio/basic [Flint phone] \
+ |raw2audio -F < /home/mrose/lib/multi-media/flint.au
+ #image/gif [MTR's photo] \
+ /home/mrose/lib/multi-media/mrose.gif
+
+ --------Enter additional text
+
+ T\bTh\bhi\bis\bs m\bme\bes\bss\bsa\bag\bge\be c\bco\bon\bnt\bta\bai\bin\bns\bs t\bth\bhr\bre\bee\be c\bco\bon\bnt\bte\ben\bnt\bts\bs.\b.
+ <\b<C\bCT\bTR\bRL\bL-\b-D\bD>\b>
+ --------
+
+ What now? e\bed\bdi\bit\bt (this invokes _\bm_\bh_\bn)
+
+ What now? s\bse\ben\bnd\bd
+
+ You have to remember to type the additional edit command,
+ but it should be fairly obvious from the interaction.
+
+ Finally, you should consider adding this line to your pro-
+ file:
+
+ lproc: show
+
+ This way, if you decide to l\bli\bis\bst\bt after invoking _\bm_\bh_\bn as your
+ editor, the command
+
+ What now? list
+
+ will work as you expect.
+
+
+ S\bSe\ben\bnd\bdi\bin\bng\bg F\bFi\bil\ble\bes\bs v\bvi\bia\ba M\bMa\bai\bil\bl
+ When you want to send a bunch of files to someone, you can
+ run the _\bv_\bi_\ba_\bm_\ba_\bi_\bl shell script, which is similar the tarmail
+ command:
+
+ /usr/contrib/mh-6.8/lib/viamail mailpath "subject"
+ files ...
+
+ _\bv_\bi_\ba_\bm_\ba_\bi_\bl will archive the directories/files you name with
+ _\bt_\ba_\br (1), and then mail the compressed archive to the
+ `mailpath' with the given `subject'. The archive will be
+ automatically split up into as many messages as necessary
+ in order to get past most mailers.
+
+
+
+[mh.6] MH.6.8 15
+
+
+
+
+
+
+
+
+MHN(1) BSD Reference Manual MHN(1)
+
+
+ Sometimes you want _\bv_\bi_\ba_\bm_\ba_\bi_\bl to pause after posting a par-
+ tial message. This is usually the case when you are run-
+ ning _\bs_\be_\bn_\bd_\bm_\ba_\bi_\bl and expect to generate a lot of partial mes-
+ sages. If the first argument given to _\bv_\bi_\ba_\bm_\ba_\bi_\bl starts with
+ a dash, then it is interpreted as the number of seconds to
+ pause in between postings, e.g.,
+
+ /usr/contrib/mh-6.8/lib/viamail -300 mailpath "sub-
+ ject" files ...
+
+ will pause 5 minutes in between each posting.
+
+ When these messages are received, invoke _\bm_\bh_\bn once, with
+ the list of messages, and the `-store' command. The _\bm_\bh_\bn
+ program will then store exactly one message containing the
+ archive. You can then use `-show' to find out what's
+ inside; possibly followed by `-store' to write the
+ archive to a file where you can subsequently uncompress
+ and untar it, e.g.,
+
+ % mhn -list all
+ msg part type/subtype size description
+ 1 message/partial 47K part 1 of 4
+ 2 message/partial 47K part 2 of 4
+ 3 message/partial 47K part 3 of 4
+ 4 message/partial 18K part 4 of 4
+ % mhn -store all
+ % mhn -list -verbose last
+ msg part type/subtype size description
+ 5 application/octet-stream 118K
+ (extract with uncompress | tar xvpf -)
+ type=tar
+ x-conversions=compress
+ % mhn -show last
+ msg part type/subtype size description
+ 5 application/octet-stream 118K
+ -- headers of message, followed by _\bt_\ba_\br listing appears here
+ % mhn -store last
+ % uncompress < 5.tar.Z | tar xvpf -
+
+ Alternately, by using the `-auto' switch, _\bm_\bh_\bn will auto-
+
+
+
+
+
+
+
+
+
+
+
+
+
+[mh.6] MH.6.8 16
+
+
+
+
+
+
+
+
+MHN(1) BSD Reference Manual MHN(1)
+
+
+ matically do the extraction for you, e.g.,
+
+ % mhn -list all
+ msg part type/subtype size description
+ 1 message/partial 47K part 1 of 4
+ 2 message/partial 47K part 2 of 4
+ 3 message/partial 47K part 3 of 4
+ 4 message/partial 18K part 4 of 4
+ % mhn -store all
+ % mhn -list -verbose last
+ msg part type/subtype size description
+ 5 application/octet-stream 118K
+ (extract with uncompress | tar xvpf -)
+ type=tar
+ x-conversions=compress
+ % mhn -show last
+ msg part type/subtype size description
+ 5 application/octet-stream 118K
+ -- headers of message, followed by _\bt_\ba_\br listing appears here
+ % mhn -store -auto last
+ -- _\bt_\ba_\br listing appears here as files are extracted
+
+ As the second _\bt_\ba_\br listing is generated, the files are
+ extracted. A prudent user will never put `-auto' in the
+ .mh_profile file. The correct procedure is to first use
+ `-show', to find out what will be extracted. Then _\bm_\bh_\bn can
+ be invoked with `-store' and `-auto' to perform the
+ extraction.
+
+
+ U\bUs\bse\ber\br E\bEn\bnv\bvi\bir\bro\bon\bnm\bme\ben\bnt\bt
+ Because the display environment in which _\bm_\bh_\bn operates may
+ vary for a user, _\bm_\bh_\bn will look for the environment vari-
+ able $\b$M\bMH\bHN\bN. If present, this specifies the name of an
+ additional user profile which should be read. Hence, when
+ a user logs in on a particular display device, this envi-
+ ronment variable should be set to refer to a file contain-
+ ing definitions useful for the display device. Normally,
+ only entries of the form
+
+ mhn-show-<type>/<subtype>
+ mhn-show-<type>
+
+ need be present. Finally, _\bm_\bh_\bn will attempt to consult one
+ other additional user profile, e.g.,
+
+ /usr/contrib/mh-6.8/lib/mhn_defaults
+
+ which is created automatically during MH installation.
+
+
+
+
+
+[mh.6] MH.6.8 17
+
+
+
+
+
+
+
+
+MHN(1) BSD Reference Manual MHN(1)
+
+
+F\bFI\bIL\bLE\bES\bS
+ $HOME/.mh_profile The user profile
+ $MHN Additional profile entries
+ /usr/contrib/mh-6.8/lib/mhn_defaults System-default profile entries
+ /usr/contrib/mh-6.8/lib/mhl.headers The headers template
+
+P\bPR\bRO\bOF\bFI\bIL\bLE\bE C\bCO\bOM\bMP\bPO\bON\bNE\bEN\bNT\bTS\bS
+ Path: To determine the user's MH directory
+ Current-Folder: To find the default current folder
+ mhlproc: Default program to display message headers
+ mhn-access-ftp: Program to retrieve contents via FTP
+ mhn-cache Public directory to store cached external contents
+ mhn-charset-<charset>Template for environment to render character sets
+ mhn-compose-<type>* Template for composing contents
+ mhn-private-cache Personal directory to store cached external contents
+ mhn-show-<type>* Template for displaying contents
+ mhn-storage Directory to store contents
+ mhn-store-<type>* Template for storing contents
+ moreproc: Default program to display text/plain content
+
+S\bSE\bEE\bE A\bAL\bLS\bSO\bO
+ mhl(1)
+ _\bM_\bI_\bM_\bE_\b: _\bM_\be_\bc_\bh_\ba_\bn_\bi_\bs_\bm_\bs _\bf_\bo_\br _\bS_\bp_\be_\bc_\bi_\bf_\by_\bi_\bn_\bg _\ba_\bn_\bd _\bD_\be_\bs_\bc_\br_\bi_\bb_\bi_\bn_\bg _\bt_\bh_\be _\bF_\bo_\br_\bm_\ba_\bt
+ _\bo_\bf _\bI_\bn_\bt_\be_\br_\bn_\be_\bt _\bM_\be_\bs_\bs_\ba_\bg_\be _\bB_\bo_\bd_\bi_\be_\bs (RFC 1521),
+ _\bP_\br_\bo_\bp_\bo_\bs_\be_\bd _\bS_\bt_\ba_\bn_\bd_\ba_\br_\bd _\bf_\bo_\br _\bM_\be_\bs_\bs_\ba_\bg_\be _\bE_\bn_\bc_\ba_\bp_\bs_\bu_\bl_\ba_\bt_\bi_\bo_\bn (RFC 934).
+
+D\bDE\bEF\bFA\bAU\bUL\bLT\bTS\bS
+ `+folder' defaults to the current folder
+ `msgs' defaults to cur
+ `-noauto'
+ `-nocache'
+ `-nocheck'
+ `-noebcdicsafe'
+ `-form mhl.headers'
+ `-headers'
+ `-pause'
+ `-rcache ask'
+ `-realsize'
+ `-rfc934mode'
+ `-noserialonly'
+ `-show'
+ `-noverbose'
+ `-wcache ask'
+
+C\bCO\bON\bNT\bTE\bEX\bXT\bT
+ If a folder is given, it will become the current folder.
+ The last message selected will become the current message.
+
+B\bBU\bUG\bGS\bS
+ Partial messages contained within a multipart content are
+ not reassembled with the `-store' switch.
+
+
+
+[mh.6] MH.6.8 18
+
+
+
+
+