From: David Levine Date: Wed, 29 Feb 2012 04:05:55 +0000 (-0600) Subject: Added docs/historical/. See README for where they were found. X-Git-Url: http://git.marmaro.de/?a=commitdiff_plain;h=9b152e23db633c49c43313a2ef26ebc0951cc874;p=mmh Added docs/historical/. See README for where they were found. --- diff --git a/docs/historical/ADMIN-19910201.txt b/docs/historical/ADMIN-19910201.txt new file mode 100644 index 0000000..47fde0d --- /dev/null +++ b/docs/historical/ADMIN-19910201.txt @@ -0,0 +1,2729 @@ + + + + + + + + + _d_i_s_c_a_r_d _t_h_i_s _p_a_g_e + + + + + The RAND _M_H + Message Handling + System: + Administrator's Guide + + UCI Version + + + February 1, 1991 + 6.7.1a #6[UCI] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +99 + + + + + + + + + + + + + _1. _I_N_T_R_O_D_U_C_T_I_O_N + + + +9 + + +9 _S_c_o_p_e _o_f _t_h_i_s _d_o_c_u_m_e_n_t + + This is the Administrator's Guide to _M_H. If you don't maintain an + _M_H system, don't read this; the information is entirely too technical. + If you are a maintainer, then read this guide until you understand it, + follow the advice it gives, and then forget about the guide. + + Before continuing, I'll point out two facts: + + + + _T_h_i_s _d_o_c_u_m_e_n_t _w_i_l_l _n_e_v_e_r _c_o_n_t_a_i_n _a_l_l _t_h_e _i_n_f_o_r_m_a_t_i_o_n + _y_o_u _n_e_e_d _t_o _m_a_i_n_t_a_i_n _M_H. + + _F_u_r_t_h_e_r_m_o_r_e, _t_h_i_s _d_o_c_u_m_e_n_t _w_i_l_l _n_e_v_e_r _c_o_n_t_a_i_n _e_v_e_r_y_t_h_i_n_g + _I _k_n_o_w _a_b_o_u_t _m_a_i_n_t_a_i_n_i_n_g _M_H. + + + + _M_H, and mailsystems in general, are more complex than most people real- + ize. A combination of experience, intuition, and tenacity is required + to maintain _M_H properly. This document can provide only guidelines for + bringing up an _M_H system and maintaining it. There is a sufficient + amount of customization possible that not all events or problems can be + forseen. + + + +9 _S_u_m_m_a_r_y + + During _M_H generation, you specify several configuration constants + to the _m_h_c_o_n_f_i_g program. These directives take into consideration such + issues as hardware and operating system dependencies in the source code. + They also factor out some major mailsystem administrative decisions that + are likely to be made consistantly at sites with more than one host. + The manual entry _m_h-_g_e_n (8) describes all the static configuration + directives. + + However, when you install _M_H you may wish to make some + site-specific or host-specific changes which aren't hardware or even + software related. Rather, they are administrative decisions. That's + what this guide is for: it describes all of the dynamically tailorable + directives. + +9 + + + + + + + + + + -2- + + + Usually, after installing _M_H, you'll want to edit the + /usr/local/lib/mh/mtstailor file. This file fine-tunes the way _M_H + interacts with the message transport system (MTS). Section 2 talks + about the MTS interface and MTS tailoring. + + After that, if you're running the UCI BBoards facility, or the POP + facility, you'll need to know how to maintain those systems. Sections 3 + and 4 talk about these. + + If for some reason you're not running an MTS that can handle both + Internet and _U_U_C_P traffic, you should read-up on mail filtering in Sec- + tion 5. Although this is considered "old technology" now, the mechan- + isms described in Section 5 were really quite useful when first intro- + duced way back in 1981. + + Finally, you may want to know how to modify the _M_H source tree. + Section 6 talks (a little bit) about that. + + The last two sections describe a few hidden features in _M_H, and the + configuration options that were in effect when this guide was generated. + + After _M_H is installed, you should define the address "Bug-MH" to + map to either you or the _P_o_s_t_M_a_s_t_e_r at your site. + + In addition, if you want to tailor the behavior of _M_H for new + users, you can create and edit the file /usr/local/lib/mh/mh.profile. + When the _i_n_s_t_a_l_l-_m_h program is run for a user, if this file exists, it + will copy it into the user's .mh_profile file. + + + + + + + + + + + + + + + + + + + + + + + +9 +9 + + + + + + + + + + + + + _2. _T_H_E _M_T_S _I_N_T_E_R_F_A_C_E + + + +9 + The file /usr/local/lib/mh/mtstailor customizes certain + host-specific parameters of _M_H related primarily to interactions with + the transport system. The parameters in this file override the + compiled-in defaults given during _M_H configuration. Rather than recom- + piling _M_H on each host to make minor customizations, it is easier simply + to modify the mtstailor file. All hosts at a given site normally use + the same mtstailor file, though this need not be the case. + + It is a good idea to run the _c_o_n_f_l_i_c_t (8) program each morning + under _c_r_o_n. The following line usually suffices: + + 00 05 * * * /usr/local/lib/mh/conflict -mail PostMaster + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 -3- + + + + + + + + + + MH-TAILOR(5) -4- MH-TAILOR(5) + + + _N_A_M_E + /usr/local/lib/mh/mtstailor - system customization for MH message + system + + _S_Y_N_O_P_S_I_S + any _M_H command that interacts with the MTS + + _D_E_S_C_R_I_P_T_I_O_N + + The file /usr/local/lib/mh/mtstailor defines run-time options for + those _M_H programs which interact (in some form) with the message + transport system. At present, these (user) programs are: _a_p, _c_o_n_- + _f_l_i_c_t, _i_n_c, _m_s_g_c_h_k, _m_s_h, _p_o_s_t, _r_c_v_d_i_s_t, and _r_c_v_p_a_c_k. + + The options available along with default values and a description + of their meanings are listed below: + + localname: + The host name _M_H considers local. If not set, depending on + the version of UNIX you're running, _M_H will query the system + for this value (e.g., , gethostname, etc.). This + has no equivalent in the _M_H configuration file. POP client + hosts have this value set to the name of the POP service host. + + systemname: + The name of the local host in the _U_U_C_P "domain". If not set, + depending on the version of UNIX you're running, _M_H will query + the system for this value. This has no equivalent in the _M_H + configuration file. + + mmdfldir: /usr/spool/mail + The directory where maildrops are kept. If this is empty, the + user's home directory is used. This overrides the "mail" + field in the _M_H configuration file. + + mmdflfil: + The name of the maildrop file in the directory where maildrops + are kept. If this is empty, the user's login name is used. + This overrides the "mail" field in the _M_H configuration file. + + mmdelim1: \001\001\001\001\n + The beginning-of-message delimiter for maildrops. + + mmdelim2: \001\001\001\001\n + The end-of-message delimiter for maildrops. + + mmailid: 0 + If non-zero, then support for MMailids in /etc/passwd is + enabled. Basically, the pw_gecos field in the password file + is of the form + + My Full Name + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-TAILOR(5) -5- MH-TAILOR(5) + + + The _M_H internal routines that deal with user and full names + will return "mailid" and "My Full Name" respectively. + + lockstyle: 0 + The locking-discipline to perform. A value of "0" means to + use _f_l_o_c_k if available, or _l_o_c_k_f if LOCKF was defined when + building _M_H. On non-BSD42 systems, standard _B_e_l_l_M_a_i_l locking + is used. A value of "1" means to use _B_e_l_l_M_a_i_l locking always + (the name of the lock is based on the file name). A value of + "2" means to use _M_M_D_F locking always (the name of the lock is + based on device/inode pairs). + + lockldir: + The name of the directory for making locks. If your system + doesn't have the _f_l_o_c_k or _l_o_c_k_f syscalls, then this directory + is used when creating locks. If the value is empty, then the + directory of the file to be locked is used. + + maildelivery: /usr/local/lib/mh/maildelivery + The name of the system-wide default ._m_a_i_l_d_e_l_i_v_e_r_y file. See + _m_h_o_o_k (1) for the details. + + everyone: 200 + The highest user-id which should NOT receive mail addressed to + "everyone". + + noshell: + If set, then each user-id greater than "everyone" that has a + login shell equivalent to the given value (e.g., "/bin/csh") + indicates that mail for "everyone" should not be sent to them. + This is useful for handling admin, dummy, and guest logins. + + _M_a_i_l _F_i_l_t_e_r_i_n_g + + These options are only available if you compiled _M_H with + "options MF". + + uucpchan: name of _U_U_C_P channel + Usually "UUCP". This has no equivalent in the _M_H configura- + tion file. + + uucpldir: /usr/spool/mail + The name of the directory where _U_U_C_P maildrops are kept. This + has no equivalent in the _M_H configuration file. + + uucplfil: + The name of the maildrop file in the directory where _U_U_C_P + maildrops are kept. If this is empty, the user's login name + is used. This has no equivalent in the _M_H configuration file. + + umincproc: /usr/local/lib/mh/uminc + The path to the program that filters _U_U_C_P-style maildrops to + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-TAILOR(5) -6- MH-TAILOR(5) + + + _M_M_D_F-style maildrops. + + _S_t_a_n_d-_A_l_o_n_e _D_e_l_i_v_e_r_y + + These options are only available if you compiled _M_H to use stand- + alone delivery (i.e., "mts: mh"). + + mailqdir: /usr/spool/netmail + The directory where network mail is queued. + + tmailqdir: /usr/tmp + The directory where network mail queue files are built. + + syscpy: 1 + If ON, unauthorized mail is copied to the overseer. + + overseer: root + The user that receives reports of unauthorized mail. + + mailer: root + The user acting for the mail system. + + fromtmp: /tmp/rml.f.XXXXXX + The _m_k_t_e_m_p template for storing from lines. + + msgtmp: /tmp/rml.m.XXXXXX + The _m_k_t_e_m_p template for storing the rest of the message. + + errtmp: /tmp/rml.e.XXXXXX + The _m_k_t_e_m_p template for storing error messages from other + mailers. + + tmpmode: 0600 + The octal mode which temporary files are set to. + + okhosts: /usr/local/lib/mh/Rmail.OKHosts + A file containing a list of hosts that can sent ARPAnet mail. + + okdests: /usr/local/lib/mh/RMail.OKDests + A file containing a list of hosts that can always receive + mail. + + _T_h_e `/_s_m_t_p' _M_T_S _S_u_f_f_i_x + + These options are only available if you compiled _M_H with the + "/smtp" suffix to your "mts:" configuration. + + hostable: /usr/local/lib/mh/hosts + The exceptions file for /etc/hosts used by _p_o_s_t to try to find + official names. The format of this file is quite simple: + + 1. Comments are surrounded by sharp (`#') and newline. + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-TAILOR(5) -7- MH-TAILOR(5) + + + 2. Words are surrounded by whitespace. + 3. The first word on the line is the official name of a + host. + 4. All words following the official names are aliases for + that host. + + servers: localhost \01localnet + A lists of hosts and networks which to look for SMTP servers + when posting local mail. It turns out this is a major win for + hosts which don't run an message transport system. The value + of "servers" should be one or more items. Each item is the + name of either a host or a net (in the latter case, precede + the name of the net by a \01). This list is searched when + looking for a smtp server to post mail. If a host is present, + the SMTP port on that host is tried. If a net is present, the + SMTP port on each host in that net is tried. Note that if you + are running with the BIND code, then any networks specified + are ignored (sorry, the interface went away under BIND). + + _S_e_n_d_M_a_i_l + + This option is only available if you compiled _M_H to use _S_e_n_d_M_a_i_l as + your delivery agent (i.e., "mts: sendmail"). + + sendmail: /usr/lib/sendmail + The pathname to the _s_e_n_d_m_a_i_l program. + + _P_o_s_t _O_f_f_i_c_e _P_r_o_t_o_c_o_l + + This option is only available if you compiled _M_H with POP support + enabled (i.e., "pop: on"). + + pophost: + The name of the default POP service host. If this is not set, + then _M_H looks in the standard maildrop areas for waiting mail, + otherwise the named POP service host is consulted. + + _B_B_o_a_r_d_s _D_e_l_i_v_e_r_y + + This option is only available if you compiled _M_H with + "bbdelivery: on". + + bbdomain: + The local BBoards domain (a UCI hack). + + _B_B_o_a_r_d_s & _T_h_e _P_O_P + + These options are only available if you compiled _M_H with + "bboards: pop" and "pop: on". + + popbbhost: + The POP service host which also acts as a BBoard server. This + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-TAILOR(5) -8- MH-TAILOR(5) + + + variable should be set on the POP BBoards client host. + + popbbuser: + The guest account on the POP/BB service host. This should be + a different login ID than either the POP user or the BBoards + user. (The user-id "ftp" is highly recommended.) This vari- + able should be set on both the POP BBoards client and service + hosts. + + popbblist: /usr/local/lib/mh/hosts.popbb + A file containing of lists of hosts that are allowed to use + the POP facility to access BBoards using the guest account. + If this file is not present, then no check is made. This + variable should be set on the POP BBoards service host. + + _B_B_o_a_r_d_s & _T_h_e _N_N_T_P + + This option is only available if you compiled _M_H with + "bboards: nntp" and "pop: on". + + nntphost: + The host which provides the NNTP service. This variable + should be set on the NNTP BBoards client host. + + _F_i_l_e _L_o_c_k_i_n_g + + A few words on locking: _M_H has a flexible locking system for making + locks on files. There are two mtstailor variables you should be + aware of "lockstyle" and "lockldir". The first controls the method + of locking, the second says where lock files should be created. + The "lockstyle" variable can take on three values: 0, 1, 2. A + value of 0 is useful on BSD42 systems. If you included the LOCKF + option when building _M_H, the _l_o_c_k_f syscall is used, otherwise the + _f_l_o_c_k syscall is used. If you're not on a 4.2BSD system, a locking + style of 0 is considered the same as locking style 1. + + A value of 1 or 2 specifies that a file should be created whose + existence means "locked" and whose non-existence means "unlocked". + A value of 1 says to construct the lockname by appending ".lock" to + the name of the file being locked. A value of 2 says to construct + the lockname by looking at the device and inode numbers of the file + being locked. If the "lockldir" variable is not specified, lock + files will be created in the directory where the file being locked + resides. Otherwise, lock files will be created in the directory + specified by "lockldir". Prior to installing _M_H, you should see + how locking is done at your site, and set the appropriate values. + + _F_i_l_e_s + /usr/local/lib/mh/mtstailor tailor file + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-TAILOR(5) -9- MH-TAILOR(5) + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + mh-gen(8), mh-mts(8) + + + _D_e_f_a_u_l_t_s + As listed above + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-MTS(8) -10- MH-MTS(8) + + + _N_A_M_E + mh-mts - the MH interface to the message transport system + + _S_Y_N_O_P_S_I_S + SendMail + + MMDF (any release) + + stand-alone + + _D_E_S_C_R_I_P_T_I_O_N + + _M_H can use a wide range of message transport systems to deliver + mail. Although the _M_H administrator usually doesn't get to choose + which MTS to use (since it's already in place), this document + briefly describes the interfaces. + + When communicating with _S_e_n_d_M_a_i_l, _M_H always uses the SMTP to post + mail. Depending on the _M_H configuration, _S_e_n_d_M_a_i_l may be invoked + directly (via a _f_o_r_k and an _e_x_e_c), or _M_H may open a TCP/IP connec- + tion to the SMTP server on the localhost. + + When communicating with _M_M_D_F, normally _M_H uses the "mm_" routines + to post mail. However, depending on the _M_H configuration, _M_H + instead may open a TCP/IP connection to the SMTP server on the + localhost. + + When using the stand-alone system (NOT recommended), _M_H delivers + local mail itself and queues _U_U_C_P and network mail. The network + mail portion will probably have to be modified to reflect the local + host's tastes, since there is no well-known practice in this area + for all types of UNIX hosts. + + If you are running a UNIX system with TCP/IP networking, then it is + felt that the best interface is achieved by using either _S_e_n_d_M_a_i_l + or _M_M_D_F with the SMTP option. This gives greater flexibility. To + enable this option you append the /smtp suffix to the mts option in + the _M_H configuration. This yields two primary advantages: First, + you don't have to know where _s_u_b_m_i_t or _S_e_n_d_M_a_i_l live. This means + that _M_H binaries (e.g., _p_o_s_t ) don't have to have this information + hard-coded, or can run different programs altogether; and, second, + you can post mail with the server on different systems, so you + don't need either _M_M_D_F or _S_e_n_d_M_a_i_l on your local host. Big win in + conserving cycles and disk space. Since _M_H supports the notion of + a server search-list in this respect, this approach can be tolerant + of faults. Be sure to set "servers:" as described in mh-tailor(8) + if you use this option. + + There are four disadvantages to using the SMTP option: First, only + UNIX systems with TCP/IP are supported. Second, you need to have + an SMTP server running somewhere on any network your local host can + reach. Third, this bypasses any authentication mechanisms in _M_M_D_F + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-MTS(8) -11- MH-MTS(8) + + + or _S_e_n_d_M_a_i_l. Fourth, the file /etc/hosts is used for hostname + lookups (although there is an exception file). In response to + these disadvantages though: First, there's got to be an SMTP server + somewhere around if you're in the Internet or have a local network. + Since the server search-list is very general, a wide-range of + options are possible. Second, SMTP should be fixed to have authen- + tication mechanisms in it, like POP. Third, _M_H won't choke on mail + to hosts whose official names it can't verify, it'll just plug + along (and besides if you enable the BERK or DUMB configuration + options, _M_H ignores the hosts file altogether). + + _F_i_l_e_s + /usr/local/lib/mh/mtstailor tailor file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + _M_M_D_F-_I_I: _A _T_e_c_h_n_i_c_a_l _R_e_v_i_e_w, Proceedings, Usenix Summer '84 Confer- + ence + _S_E_N_D_M_A_I_L -- _A_n _I_n_t_e_r_n_e_t_w_o_r_k _M_a_i_l _R_o_u_t_e_r + mh-tailor(8), post(8) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + The /usr/local/lib/mh/mtstailor file ignores the information in the + _M_M_D_F-_I_I tailoring file. It should not. + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + + + + _3. _B_B_O_A_R_D_S + + + +9 + The UCI BBoards facility has two aspects: message reading, and mes- + sage delivery. The configuration directives applicable to BBoards are + "bboards: on/off/pop/nntp" and "bbdelivery: on/off". + + +9 _B_B_o_a_r_d _D_e_l_i_v_e_r_y + + If you enabled BBoards delivery ("bbdelivery: on") during confi- + guration, then the initial environment for bboards delivery was set-up + during installation. A BBoard called "system" is established, which is + the BBoard for general discussion. + + To add more BBoards, become the "bboards" user, and edit the + /usr/bboards/BBoards file. The file support/bboards/Example is a copy + of the /usr/bboards/BBoards file that we use at UCI. When you add a + BBoard, you don't have to create the files associated with it, the + BBoards delivery system will do that automatically. + + Private BBoards may be created. To add the fictitious private + BBoard "hacks", add the appropriate entry to the BBoards file, create + the empty file /usr/bboards/hacks.mbox (or whatever), change the mode of + this file to 0640, and change the group of the file to be the groupid of + the people that you want to be able to read it. Also be sure to add the + "bboards" user to this group (in /etc/group), so the archives can be + owned correctly. + + By using the special INVIS flag for a BBoard, special purpose + BBoards may be set-up which are invisible to the _M_H user. For example, + if a site distributes a BBoard both locally to a number of machines and + to a number of distant machines. It might be useful to have two distri- + bution lists: one for all machines on the list, and the other for local + machines only. This is actually very simple to do. For the main list, + put the standard entry of information in the /usr/bboards/BBoards file, + with the complete distribution list. For the local machines list, and + add a similar entry to the /usr/bboards/BBoards file. All the fields + should be the same except three: the BBoard name should reflect a local + designation (e.g., "l-hacks"), the distribution list should contain only + machines at the local site, and the flags field should contain the INVIS + flag. Since the two entries share the same primary and archive files, + messages sent to either list are read by local users, while only thoses + messages sent to the main list are read by all users. + + Two automatic facilities for dealing with BBoards exist: automatic + archiving and automatic aliasing. The file support/bboards/crontab con- + tains some entries that you should add to your /usr/lib/crontab file to + run the specified programs at times that are convenient for you. The + + -12- + + + + + + + + + + -13- + + + bboards.daily file is run once a day and generates an alias file for _M_H. + By using this file, users of _M_H can use, for example, "unix-wizards" + instead of "unix-wizards@brl-vgr" when they want to send a message to + the "unix-wizards" discussion group. This is a major win, since you + just have to know the name of the group, not the address where it's + located. + + The bboards.weekly file is run once a week and handles old messages + (those received more than 12 days ago) in the BBoards area. In short, + those BBoards which are marked for automatic archiving will have their + old messages placed in the /usr/bboards/archive/ area, or have their old + messages removed. Not only does this make BBoards faster to read, but + it conveniently partitions the new messages from the old messages so you + can easily put the old messages on tape and then remove them. It turns + out that this automatic archiving capability is also a major win. + + At UCI, our policy is to save archived messages on tape (every two + months or so). We use a program called _b_b_t_a_r to implement our particu- + lar policy. Since some BBoards are private (see above), we save the + archives on two tapes: one containing the world-readable archives (this + tape is read-only accessible to all users by calling the operator), and + the other containing the non-world-readable ones (this tape is kept + locked-up somewhere). + + +9 _B_B_o_a_r_d_s _w_i_t_h _t_h_e _P_O_P + + If you configured _M_H with "bboards: pop" and "pop: on", then the _M_H + user is allowed to read BBoards on a server machine instead of the local + host (thus saving disk space). For completely transparent behavior, the + administrator may set certain variables in the mtstailor file on the + client host. The variable "popbbhost" indicates the host where BBoards + are kept (it doesn't have to be the POP service host, but this host must + run both a POP server and the BBoards system). The variable "popbbuser" + indicates the guest account on this host for BBoards. This username + should not be either the POP user or the BBoards user. Usually the + anonymous FTP user (ftp) is the best choice. Finally, the variable + "popbblist" indicates the name of a file which contains a list of hosts + (one to a line, official host names only) which should be allowed to use + the POP facility to access BBoards via the guest account. (If the file + is not present, then no check is made.) + + The "popbbuser" variable should be set on both the client and ser- + vice host. The "popbbhost" variable need be set only on the client host + (the value, of course, is the name of the service host). The + "popbblist" variable need be set only on the service host. + + Finally, on the client host, if a POP service host is not expli- + citly given by the user (i.e., "popbbhost" is implicitly used), then _b_b_c + will explicitly check the local host prior to contacting the service + host. This allows each POP client host to have a few local BBoards + +9 + + + + + + + + + + -14- + + + (e.g., each host could have one called "system"), and then have the POP + service host used for all the rest (a site-wide BBoard might be known as + "general"). + + +9 _B_B_o_a_r_d_s _w_i_t_h _t_h_e _N_N_T_P + + If you configured _M_H with "bboards: nntp" and "pop: on", then the + _M_H user is allowed to read the Network News on a server machine using + the standard _b_b_c command. For completely transparent behavior, the + administrator may set the "nntphost" variable in the mtstailor file to + indicate the host where the Network News is kept. The "nntphost" vari- + able should be set only on the client host Finally, on the client host, + if an NNTP service host is not explicitly given by the user (i.e., + "nntphost" is implicitly used), then _b_b_c will explicitly check the local + host prior to contacting the service host. This allows each NNTP client + host to have a few local BBoards (e.g., each host could have one called + "system"), and then have the NNTP service host used for to read the Net- + work News. + + Reading BBoards via the POP and via the NNTP are mutually + exclusive. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 + + + + + + + + + + BBOARDS(5) -15- BBOARDS(5) + + + _N_A_M_E + BBoards - BBoards database + + _S_Y_N_O_P_S_I_S + /usr/bboards/BBoards + + _D_E_S_C_R_I_P_T_I_O_N + + The BBoards database contains for each BBoard the following infor- + mation: + + _f_i_e_l_d _v_a_l_u_e + name the name of the BBoard + aliases local aliases for the BBoard + (separated by commas) + primary file the .mbox file + encrypted password leadership password + leaders local list maintainers (separated by commas) + usernames from the _p_a_s_s_w_d (5) file, + or groupnames preceded by `=' from the + _g_r_o_u_p (5) file + network address the list address + request address the list maintainer's address + relay the host acting as relay for the local domain + distribution sites (separated by commas) + flags special flags (see ) + + This is an ASCII file. Each field within each BBoard's entry is + separated from the next by a colon. Each BBoard entry is separated + from the next by a new-line. If the password field is null, no + password is demanded; if it contains a single asterisk, then no + password is valid. + + This file resides in the home directory of the login "bboards". + Because of the encrypted passwords, it can and does have general + read permission. + + _F_i_l_e_s + /usr/bboards/BBoards BBoards database + + + _S_e_e _A_l_s_o + bbaka(8), bbexp(8), bboards (8), bbtar(8) + + + _B_u_g_s + A binary indexed file format should be available for fast access. + + Appropriate precautions must be taken to lock the file against + changes if it is to be edited with a text editor. A _v_i_b_b program + is needed. +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + BBOARDS(5) -16- BBOARDS(5) + + + _N_A_M_E + bbaka - generate an alias list for BBoards + + _S_Y_N_O_P_S_I_S + /usr/bboards/bbaka [system] + + _D_E_S_C_R_I_P_T_I_O_N + + The _b_b_a_k_a program reads the BBoards database and produces on its + standard output a file suitable for inclusion in either the _M_M_D_F-_I_I + aliases file (if the argument `system' is given). If the argument + is not given, then _b_b_a_k_a produces on its standard output a file + suitable for becoming the /usr/local/lib/mh/BBoardsAliases file. + + _F_i_l_e_s + /usr/bboards/BBoards BBoards database + /usr/local/lib/mh/BBoardsAliases BBoards aliases file for _M_H + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + bboards(5) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + BBEXP(8) -17- BBEXP(8) + + + _N_A_M_E + bbexp - expunge the BBoards area + + _S_Y_N_O_P_S_I_S + /usr/bboards/bbexp [-_f_i_r_s_t-_m_e_t_r_i_c] [-_s_e_c_o_n_d-_m_e_t_r_i_c] [bboards ...] + + _D_E_S_C_R_I_P_T_I_O_N + + The _b_b_e_x_p program reads the BBoards database and calls _m_s_h to + archive the named BBoards (or all BBoards if none are specified). + + The first-metric (which defaults to 12) gives the age in days of + the "BB-Posted:" field for messages which should be expunged. The + second-metric (which defaults to 20) gives the age in days of the + "Date:" field for messages which should be expunged. Any message + which meets either metric will be either archived or removed, + depending on what the _B_B_o_a_r_d_s (5) file says. + + _F_i_l_e_s + /usr/bboards/BBoards BBoards database + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + msh(1), bboards(5) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + BBOARDS(8) -18- BBOARDS(8) + + + _N_A_M_E + bboards - BBoards channel/mailer + + _S_Y_N_O_P_S_I_S + /usr/mmdf/chans/bboards fd1 fd2 [y] + + /usr/local/lib/mh/sbboards bboard ... + + /usr/local/lib/mh/sbboards file maildrop directory bboards.bboard + + _D_E_S_C_R_I_P_T_I_O_N + + For _M_M_D_F, the BBoards channel delivers mail to the BBoards system. + For _S_e_n_d_M_a_i_l and stand-alone _M_H, the SBBoards mailer performs this + task. + + For each address given, these programs consult the _b_b_o_a_r_d_s (5) file + to ascertain information about the BBoard named by the address. + The programs then perform local delivery, if appropriate. After + that, with the exception of _s_b_b_o_a_r_d_s running under stand-alone _M_H, + the programs perform redistribution, if appropriate. + + For redistribution, the return address is set to be the request + address at the local host, so bad addresses down the line return to + the nearest point of authority. If any failures occur during + redistribution, a mail message is sent to the local request + address. + + _F_i_l_e_s + /usr/local/lib/mh/mtstailor tailor file + /usr/bboards/BBoards BBoards database + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + bboards(5), bbaka(8) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + BBTAR(8) -19- BBTAR(8) + + + _N_A_M_E + bbtar - generate the names of archive files to be put to tape + + _S_Y_N_O_P_S_I_S + /usr/bboards/bbtar [private] [public] + + _D_E_S_C_R_I_P_T_I_O_N + + The _b_b_t_a_r program reads the BBoards database and produces on its + standard output the names of BBoards archives which should be put + to tape, for direct use in a _t_a_r (1) command. + + If the argument `private' is given, only private BBoards are con- + sidered. If the argument `public' is given, only public BBoards + are considered. This lets the BBoards administrator write two + tapes, one for general read-access (the public BBoards), and one + for restricted access. The default is all BBoards + + For example: + + cd archive # change to the archive directory + tar cv `bbtar private` # save all private BBoard archives + + After the archives have been saved to tape, they are usually + removed. The archives are then filled again, usually automatically + by cron jobs which run _b_b_e_x_p (8). + + _F_i_l_e_s + /usr/bboards/BBoards BBoards database + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + bboards(5), bbexp(8) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + + + + _4. _P_O_P + + + +9 + For POP (Post Office Protocol) client hosts, you need to edit the + /usr/local/lib/mh/mtstailor file to know about two hosts: the SMTP ser- + vice host and the POP service host. Normally, these are the same. + Change the "localname" field of the mtstailor file of _M_H in the file to + be the name of the POP service host. This makes replies to mail gen- + erated on the POP client host possible, since _M_H will consider use the + hostname of the POP service host as the local hostname for outgoing + mail. Also set the value of "pophost" to this value. This tells _i_n_c + and _m_s_g_c_h_k to use POP instead of looking for mail locally. Finally, + make sure the value of "servers" includes the name of the SMTP service + host. The recommended value for "servers" is: + + servers: SMTP-service-host localhost \01localnet + + If you want more information on the Post Office Protocol used by + _M_H, consult the files support/pop/rfc1081.txt and + support/pop/rfc1082.txt which describe the _M_H version of the POP: POP3. + + For POP service hosts, you need to run a daemon, _p_o_p_d (8). The + daemon should start at multi-user boot time, so adding the lines: + + if [ -f /etc/popd ]; then + /etc/popd & echo -n ' pop' >/dev/console + fi + + to the /etc/rc.local file is sufficient. + + The port assigned to the POP3 protocol is "110". For historical + reasons, many sites are using port "109" which is the port assigned to + the "POP" (ver. 1) protocol. The configuration option "POPSERVICE" is + the name of the port number that _M_H POP will try to use, and defaults to + the name "pop". + + To generate _M_H to use newer assigned port number, in your _M_H config + file, add: + + options POPSERVICE='"pop3"' + + And on both the POP client and service hosts, you need to define the + port that the POP service uses. Add the line: + + pop3 110/tcp + + to the /etc/services file (if it's not already there). + + + +9 -20- + + + + + + + + + + -21- + + + There are two ways to administer POP: In "naive" mode, each user-id + in the _p_a_s_s_w_d (5) file is considered a POP subscriber. No changes are + required for the mailsystem on the POP service host. However, this + method requires that each POP subscriber have an entry in the password + file. The POP server will fetch the user's mail from wherever maildrops + are kept on the POP service host. This means that if maildrops are kept + in the user's home directory, then each POP subscriber must have a home + directory. + + In "smart" mode (enabled via "DPOP" being given as a configuration + option), the list of POP subscribers and the list of login users are + completely separate name spaces. A separate database (simple file simi- + lar to the _B_B_o_a_r_d_s (5) file) is used to record information about each + POP subscriber. Unfortunately, the local mailsystem must be changed to + reflect this. This requires two changes (both of which are simple): + First, the aliasing mechanism is augmented so that POP subscriber + addresses are diverted to a special delivery mechanism. _M_H comes with a + program, _p_o_p_a_k_a (8), which generates the additional information to be + put in the mailsystem's alias file. Second, a special POP channel (for + MMDF-II) or POP mailer (for SendMail) performs the actual delivery (_m_h._6 + supplies both). All it really does is just place the mail in the POP + spool area. + + These two different philosophies are not compatible on the same POP + service host: one or the other, but not both may be run. Clever mail- + system people will note that the POP mechanism is really a special case + of the more general BBoards mechanism. + + In addition, there is one user-visible difference, which the + administrator controls the availability of. The difference is whether + the POP subscriber must supply a password to the POP server: The first + method uses the standard ARPA technique of sending a username and a + password. The appropriate programs (_i_n_c, _m_s_g_c_h_k, and possibly _b_b_c ) + will prompt the user for this information. + + The second method (which is enabled via "RPOP" being given as a + configuration option) uses the Berkeley UNIX reserved port method for + authentication. This requires that the two or three mentioned above + programs be _s_e_t_u_i_d to root. (There are no known holes in any of these + programs.) + + To add a POP subscriber, for the first method, one simply follows + the usual procedures for adding a new user, which eventually results in + adding a line to the _p_a_s_s_w_d (5) file; for the second method, one must + edit the POP database file (kept in the home directory of the POP user), + and then run the _p_o_p_a_k_a program. The output of this program is placed + in the aliases file for the transport system (e.g., /usr/lib/aliases for + SendMail). + + These two different philosophies are compatible on the same POP + service host: to selectively disable RPOP for hosts which aren't + trusted, either modify the ._r_h_o_s_t_s file in the case of POP subscribers + + + + + + + + + + + + -22- + + + being UNIX logins, or zero the contents of network address field of the + _p_o_p (5) file for the desired POP subscribers. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 + + + + + + + + + + POP(5) -23- POP(5) + + + _N_A_M_E + POP - POP database of subscribers + + _S_Y_N_O_P_S_I_S + /usr/spool/pop/POP + + _D_E_S_C_R_I_P_T_I_O_N + + The POP database has exactly the same format as the _B_B_o_a_r_d_s (5) + database, although many fields are unused. Currently, only four + fields are examined: + + _f_i_e_l_d _v_a_l_u_e + name the POP subscriber + primary file the maildrop for the POP subscriber + (relative to the POP directory) + encrypted password the POP subscriber's password + network address the remote user allowed to RPOP + + This is an ASCII file. Each field within each POP subscriber's + entry is separated from the next by a colon. Each POP subscriber + is separated from the next by a new-line. If the password field is + null, then no password is valid. + + To add a new POP subscriber, edit the file adding a line such as + + mrose::mrose:::::::0 + + Then, use _p_o_p_w_r_d to set the password for the POP subscriber. If + you wish to allow POP subscribers to access their maildrops without + supplying a password (by using privileged ports), fill-in the net- + work address field, as in: + + mrose::mrose:::mrose@nrtc-isc::::0 + + which permits "mrose@nrtc-isc" to access the maildrop for the POP + subscriber "mrose". Multiple network addresses may be specified by + separating them with commas, as in: + + dave::dave:9X5/m4yWHvhCc::dave@romano.wisc.edu,dave@rsch.wisc.edu:::: + + To disable a POP subscriber from _r_e_c_e_i_v_i_n_g mail, set the primary + file name to the empty string. To prevent a POP subscriber from + _p_i_c_k_i_n_g-_u_p mail, set the encrypted password to "*" and set the net- + work address to the empty string. + + This file resides in home directory of the login "pop". Because of + the encrypted passwords, it can and does have general read permis- + sion. + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + POP(5) -24- POP(5) + + + _F_i_l_e_s + /usr/spool/pop/POP POP database + + + _S_e_e _A_l_s_o + bboards(5), pop(8), popaka(8), popd(8), popwrd(8) + + + _B_u_g_s + A binary indexed file format should be available for fast access. + + Appropriate precautions must be taken to lock the file against + changes if it is to be edited with a text editor. A _v_i_p_o_p program + is needed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + POP(8) -25- POP(8) + + + _N_A_M_E + pop - POP channel/mailer + + _S_Y_N_O_P_S_I_S + /usr/mmdf/chans/pop fd1 fd2 [y] + + /usr/local/lib/mh/spop POP-subscriber ... + + _D_E_S_C_R_I_P_T_I_O_N + + For _M_M_D_F-_I_I, the POP channel delivers mail to the POP spool area + for later retrieval by POP subscribers. For _S_e_n_d_M_a_i_l, the SPOP + mailer performs this task. + + For each address given, these programs consult the _p_o_p (5) file to + obtain information about the POP-subscriber named by the address. + The programs then deliver the message to the spool area for the + POP-subscriber. + + _F_i_l_e_s + /usr/local/lib/mh/mtstailor tailor file + /usr/spool/pop/POP POP database + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + bboards(5), bbaka(8) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + POPAKA(8) -26- POPAKA(8) + + + _N_A_M_E + popaka - generate POP entries for SendMail or MMDF-II alias file + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/popaka + + _D_E_S_C_R_I_P_T_I_O_N + + The _p_o_p_a_k_a program reads the POP database and produces on its stan- + dard output a file suitable for inclusion in the SendMail or + _M_M_D_F-_I_I aliases file. The contents of this file divert mail for + POP subscribers to the POP channel. + + _F_i_l_e_s + /usr/spool/pop/POP POP database + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + pop(5) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + POPD(8) -27- POPD(8) + + + _N_A_M_E + popd - the POP server + + _S_Y_N_O_P_S_I_S + /usr/etc/popd [-p portno] (under /etc/rc.local) + + _D_E_S_C_R_I_P_T_I_O_N + + The _p_o_p_d server implements the Post Office protocol, as described + in RFC1081 and RFC1082. Basically, the server listens on the TCP + port named "pop" for connections and enters the POP upon establish- + ing a connection. The `-p' option overrides the default TCP port. + + _F_i_l_e_s + /usr/spool/pop/POP POP database + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + _P_o_s_t _O_f_f_i_c_e _P_r_o_t_o_c_o_l - _v_e_r_s_i_o_n _3 (aka RFC-1081), + _P_o_s_t _O_f_f_i_c_e _P_r_o_t_o_c_o_l - _v_e_r_s_i_o_n _3: _E_x_t_e_n_d_e_d _s_e_r_v_i_c_e _o_f_f_e_r_i_n_g_s + (RFC-1082), + pop(5) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + _H_i_s_t_o_r_y + For historical reasons, the _M_H POP defaults to using the port named + "pop" (109) instead of its newly assigned port named "pop3" (110). + See the POPSERVICE configuration option for more details. + + Previous versions of the server (10/28/84) had the restriction that + the POP client may retrieve messages for login users only. This + restriction has been lifted, and true POB support is available + (sending mail to a mailbox on the POP service host which does not + map to a user-id in the password file). + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + POPWRD(8) -28- POPWRD(8) + + + _N_A_M_E + popwrd - set password for a POP subscriber + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/popwrd POP-subscriber + + _D_E_S_C_R_I_P_T_I_O_N + + The _p_o_p_w_r_d program lets the super-user or the master POP user or a + "leader" of a POP subscriber change the password field for the POP + subscriber in the POP database. This program is very similar to + the _p_a_s_s_w_d (1) program. + + Since only the super-user and the master POP user may change any + other fields of the POP database (using an ordinary editor), it is + possible for the system administrator to delegate responsibility to + others to manage groups of POP subscribers. + + _F_i_l_e_s + /usr/spool/pop/POP POP database + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + pop(5) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + Although _p_o_p_w_r_d does locking against other invocations of _p_o_p_w_r_d, + editor locking for the POP database in general is not implemented. + A _v_i_p_o_p program is needed. + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + + + + _5. _M_A_I_L _F_I_L_T_E_R_I_N_G + + + +9 + There was a time when users on a UNIX host might have had two mail- + drops: one from _M_M_D_F and the other from _U_U_C_P. This was really a bad + problem since it prevented using a single user-interface on all of your + mail. Furthermore, if you wanted to send a message to addresses on dif- + ferent mailsystems, you couldn't send just one message. To solve all + these problems, the notion of _m_a_i_l _f_i_l_t_e_r_i_n_g was developed that allowed + sophisticated munging and relaying between the two pseudo-domains. + + _M_H will perform mail filtering, transparently, if given the MF con- + figuration option. However, with the advent of _S_e_n_d_M_a_i_l and further + maturation of _M_M_D_F, _M_H doesn't really need to do this anymore, since + these message transport agents handle it. + + The mail-filtering stuff is too complicated. It should be simpler, + but, protocol translation really _i_s difficult. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 -29- + + + + + + + + + + MF(1) -30- MF(1) + + + _N_A_M_E + muinc, musift, uminc, umsift - mail filters + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/muinc + + /usr/local/lib/mh/musift [files ...] + + /usr/local/lib/mh/uminc + + /usr/local/lib/mh/umsift [files ...] + + _D_E_S_C_R_I_P_T_I_O_N + + The mail filters are a set of programs that filter mail from one + format to another. In particular, _U_U_C_P- and _M_M_D_F-style mail files + are handled. + + _m_u_i_n_c filters mail from the user's _M_M_D_F maildrop into the user's + _U_U_C_P maildrop; similarly, _u_m_i_n_c filters mail from the user's _U_U_C_P + maildrop into the user's _M_M_D_F maildrop. These two programs respect + each system's maildrop locking protocols. + + _m_u_s_i_f_t filters each file on the command line (or the standard input + if no arguments are given), and places the result on the standard + output in _U_U_C_P format. The files (or standard input) are expected + to be in _M_M_D_F format. _u_m_s_i_f_t does the same thing filtering _U_U_C_P + formatted files (or input), and places the _M_M_D_F formatted result on + the standard output. No locking protocols are used by these pro- + grams. + + If the files aren't in the expected format, the mail filters will + try to recover. In really bad cases, you may lose big. + + _F_i_l_e_s + /usr/spool/mail/ UUCP spool area for maildrops + /usr/spool/mail/$USER Location of standard maildrop + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + _P_r_o_p_o_s_e_d _S_t_a_n_d_a_r_d _f_o_r _M_e_s_s_a_g_e _H_e_a_d_e_r _M_u_n_g_i_n_g (aka RFC-886), + inc(1) + + + _D_e_f_a_u_l_t_s + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MF(1) -31- MF(1) + + + _C_o_n_t_e_x_t + + + _B_u_g_s + Numerous; protocol translation is very difficult. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + RMAIL(8) -32- RMAIL(8) + + + _N_A_M_E + rmail - UUCP interface to mail + + _S_Y_N_O_P_S_I_S + rmail address ... + + _D_E_S_C_R_I_P_T_I_O_N + + _R_m_a_i_l is intended as a replacement for those systems without _S_e_n_d_- + _M_a_i_l or _M_M_D_F. It is normally invoked by _u_u_x on behalf of the + remote _U_U_C_P site. For each address, it decides where to send it: + either locally, via another _U_U_C_P link, or via the Internet. + + _R_m_a_i_l implements a crude access control facility by consulting the + files Rmail.OkHosts and Rmail.OkDests in the /usr/local/lib/mh/ + directory. Hosts listed in the former file can send messages to + anywhere they please. Hosts listed in the latter file can receive + messages from anywhere. Note that a host listed in the first file + is implicitly listed in the second file. + + _F_i_l_e_s + /usr/local/lib/mh/mtstailor tailor file + /usr/local/lib/mh/Rmail.OkHosts list of privileged hosts + /usr/local/lib/mh/Rmail.OkDests list of privileged destinations + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + mf(1) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + + + + _6. _M_H _H_A_C_K_I_N_G + + + +9 + Finally, here's a little information on modifying the _M_H sources. + A word of advice however: + + + _D_O_N'_T + + + + If you really want new _M_H capabilities, write a shell script instead. + After all, that's what UNIX is all about, isn't it? + + Here's the organization of the _M_H source tree. + + conf/ configurator tree + config/ compiled configuration constants + dist/ distributor + doc/ manual entries + h/ include files + miscellany/ various sundries + mts/ MTS-specific areas + mh/ standalone delivery + mmdf/ MMDF-I, MMDF-II + sendmail/ SendMail, SMTP + papers/ papers about _M_H + sbr/ subroutines + support/ support programs and files + bboards/ UCI BBoards facility + general/ templates + pop/ POP facility + tma/ Trusted Mail Agent (not present in all distributions) + uip/ programs + zotnet/ MTS-independent areas + bboards/ UCI BBoards facility + mf/ Mail Filtering + mts/ MTS constants + tws/ date routines + + + + + + + + + + + +9 -33- + + + + + + + + + + MH-HACK(8) -34- MH-HACK(8) + + + _N_A_M_E + mh-hack - how to hack MH + + _S_Y_N_O_P_S_I_S + big hack attack + + _D_E_S_C_R_I_P_T_I_O_N + + This is a description of how one can modify the _M_H system. The _M_H + distribution has a lot of complex inter-relations, so before you go + modifying any code, you should read this and understand what is + going on. + + ADDING A NEW PROGRAM + Suppose you want to create a new _M_H command called "pickle". + First, create and edit "pickle.c" in the uip/ directory. Next + edit conf/makefiles/uip to include "pickle". This file has + directions at the end of it which explain how it should be + modified. Next, update any documentation (described below). + At this point you can re-configure _M_H. See _m_h-_g_e_n(_8) for + instructions on how to do this (basically, you want "mhconfig + MH"). + + ADDING A NEW SUBROUTINE + Suppose you want to create a new _M_H routine called "pickle". + First, create and edit "pickle.c" in the sbr/ directory. Next + edit conf/makefiles/sbr to include "pickle". This file has + directions at the end of it which explain how it should be + modified. You should modify config/mh.h to define "pickle + ();". Similarly, sbr/llib-lsbr should be modified for _l_i_n_t. + At this point you can re-configure _M_H. + + UPDATING DOCUMENTATION + Edit whatever files you want in conf/doc/. When documenting a + new program, such as "pickle", you should create a manual page + with the name "pickle.rf". The file conf/doc/template has a + manual page template that you can use. If you are documenting + a new program, then you should also update three other files: + The file conf/doc/mh.rf should be modified to include the + ".NA" section from "pickle.rf". The file conf/doc/mh-chart.rf + should be modified to include the ".SY" section from + "pickle.rf". Finally, the file conf/doc/MH.rf should be modi- + fied to include a ".so pickle.me". Naturally, none of these + changes will be reflected in the configuration until you actu- + ally run _m_h_c_o_n_f_i_g. + + _F_i_l_e_s + Too numerous to mention. Honest. + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-HACK(8) -35- MH-HACK(8) + + + _S_e_e _A_l_s_o + mh-gen(8) + + + _B_u_g_s + Hacking is an art, but most programmers are butchers, not artists. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + + + + _7. _H_I_D_D_E_N _F_E_A_T_U_R_E_S + + + +9 + The capabilities discussed here should not be used on a production + basis, as they are either experimental, are useful for debugging _M_H, or + are otherwise not recommended. + + + +9 _D_e_b_u_g _F_a_c_i_l_i_t_i_e_s + + The _m_a_r_k command has a `-debug' switch which essentially prints out + all the internal _M_H data structures for the folder you're looking at. + + The _p_o_s_t command has a `-debug' switch which does everything but + actually post the message for you. Instead of posting the draft, it + sends it to the standard output. Similarly, _s_e_n_d has a `-debug' switch + which gets passed to _p_o_s_t. + + Some _M_H commands look at envariables to determine debug-mode opera- + tion of certain new facilities. The current list of envariables is: + + MHFDEBUG OVERHEAD facility + MHLDEBUG mhl + MHPDEBUG pick + MHPOPDEBUG POP transactions + MHVDEBUG window management transactions + MHWDEBUG alternate-mailboxes + + + +9 _F_o_r_w_a_r_d_i_n_g _M_a_i_l + + The _f_o_r_w and _m_h_l commands have two switches, `-dashmunging' and + `-nodashmunging' which enable or disable the prepending of `- ' in for- + warded messages. To use `-nodashmunging', you must use an _m_h_l filter + file. + + + +9 _S_e_n_d + + The _s_e_n_d command has two switches, `-unique' and `-nounique', which + are useful to certain individuals who, for obscure reasons, do not use + draft-folders. + + "Distribution Carbon Copy" addresses may be specified in the _D_c_c: + header. This header is removed before posting the message,and a copy of + + -36- + + + + + + + + + + -37- + + + the message is distributed to each listed address. This could be con- + sidered a form of Blind Carbon Copy which is best used for sending to an + address which would never reply (such as an auto-archiver). + + + +9 _P_o_s_t_i_n_g _M_a_i_l + + If you're running a version of _M_H which talks directly to an _S_M_T_P + server (or perhaps an advanced _M_M_D_F submit process), there are lots of + interesting switches for your amusement which _s_e_n_d and _p_o_s_t understand: + -mail Use the _M_A_I_L command (default) + -saml Use the _S_A_M_L command + -send Use the _S_E_N_D command + -soml Use the _S_O_M_L command + -snoop Watch the _S_M_T_P transaction + -client host Claim to be "host" when posting mail + -server host Post mail with "host" + + The last switch is to be useful when _M_H resides on small worksta- + tions (or PC:s) in a network--they can post their outgoing mail with a + local relay, and reduce the load on the local system. On POP client + hosts, the `-server host' switch is defaulted appropriately using the + SMTP search-list mechanism. The _w_h_o_m command understands the last three + switches. + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 + + + + + + + + + + + + + _8. _C_O_N_F_I_G_U_R_A_T_I_O_N _O_P_T_I_O_N_S + + + +9 + This manual was generated with the following configuration options + in effect: + + + ________________________________________________________________________ + + Generation Date February 1, 1991 + Primary Directory /usr/local/ + Secondary Directory /usr/local/lib/mh/ + Maildrop Location /usr/spool/mail/$USER + POP Support Enabled + BBoards using NNTP Enabled + Transport System MMDF-II with SMTP + ________________________________________________________________________ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 -38- + + + + + + + + + + + + + _C_O_N_T_E_N_T_S + + + + + Section + + 1. INTRODUCTION ............................................... 1 +9 Scope of this document ....................................... 1 +9 Summary ...................................................... 1 + + 2. THE MTS INTERFACE .......................................... 3 + MH-TAILOR ................................................. 4 + MH-MTS .................................................... 10 + + 3. BBOARDS .................................................... 12 +9 BBoard Delivery .............................................. 12 +9 BBoards with the POP ......................................... 13 +9 BBoards with the NNTP ........................................ 14 + BBOARDS ................................................... 15 + BBAKA ..................................................... 16 + BBEXP ..................................................... 17 + BBOARDS ................................................... 18 + BBTAR ..................................................... 19 + + 4. POP ........................................................ 20 + POP ....................................................... 23 + POP ....................................................... 25 + POPAKA .................................................... 26 + POPD ...................................................... 27 + POPWRD .................................................... 28 + + 5. MAIL FILTERING ............................................. 29 + MF ........................................................ 30 + RMAIL ..................................................... 32 + + 6. MH HACKING ................................................. 33 + MH-HACK ................................................... 34 + + 7. HIDDEN FEATURES ............................................ 36 +9 Debug Facilities ............................................. 36 +9 Forwarding Mail .............................................. 36 +9 Send ......................................................... 36 +9 Posting Mail ................................................. 37 + + 8. CONFIGURATION OPTIONS ...................................... 38 + + +9 + + + + + + + + + + + + + + + + + + + + + + + +9 THE RAND MH + +9 MESSAGE HANDLING + +9 SYSTEM: + +9 ADMINISTRATOR'S GUIDE + + + + + + + UCI Version + + + + + + Marshall T. Rose + + + + + _F_i_r_s_t _E_d_i_t_i_o_n: + + _M_H _C_l_a_s_s_i_c + + (_N_o_t _t_o _b_e _c_o_n_f_u_s_e_d _w_i_t_h _a _w_e_l_l-_k_n_o_w_n _s_o_f_t _d_r_i_n_k) + + + + + + + + February 1, 1991 + + 6.7.1a #6[UCI] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 + + + + + diff --git a/docs/historical/ADMIN.pdf b/docs/historical/ADMIN.pdf new file mode 100644 index 0000000..f716c79 Binary files /dev/null and b/docs/historical/ADMIN.pdf differ diff --git a/docs/historical/ADMIN.txt b/docs/historical/ADMIN.txt new file mode 100644 index 0000000..8e4cda8 --- /dev/null +++ b/docs/historical/ADMIN.txt @@ -0,0 +1,2904 @@ + + + + + + + + + _d_i_s_c_a_r_d _t_h_i_s _p_a_g_e + + + + + The RAND _M_H + Message Handling + System: + Administrator's Guide + + UCI Version + + + November 30, 1993 + 6.8.3 #1[UCI] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _1. _I_N_T_R_O_D_U_C_T_I_O_N + + + + + + + + _S_c_o_p_e _o_f _t_h_i_s _d_o_c_u_m_e_n_t + + This is the Administrator's Guide to _M_H. If you don't maintain an + _M_H system, don't read this; the information is entirely too technical. + If you are a maintainer, then read this guide until you understand it, + follow the advice it gives, and then forget about the guide. + + Before continuing, I'll point out two facts: + + + + _T_h_i_s _d_o_c_u_m_e_n_t _w_i_l_l _n_e_v_e_r _c_o_n_t_a_i_n _a_l_l _t_h_e _i_n_f_o_r_m_a_t_i_o_n + _y_o_u _n_e_e_d _t_o _m_a_i_n_t_a_i_n _M_H. + + _F_u_r_t_h_e_r_m_o_r_e, _t_h_i_s _d_o_c_u_m_e_n_t _w_i_l_l _n_e_v_e_r _c_o_n_t_a_i_n _e_v_e_r_y_t_h_i_n_g + _I _k_n_o_w _a_b_o_u_t _m_a_i_n_t_a_i_n_i_n_g _M_H. + + + + _M_H, and mailsystems in general, are more complex than most people real- + ize. A combination of experience, intuition, and tenacity is required + to maintain _M_H properly. This document can provide only guidelines for + bringing up an _M_H system and maintaining it. There is a sufficient + amount of customization possible that not all events or problems can be + forseen. + + + + _S_u_m_m_a_r_y + + During _M_H generation, you specify several configuration constants + to the _m_h_c_o_n_f_i_g program. These directives take into consideration such + issues as hardware and operating system dependencies in the source code. + They also factor out some major mailsystem administrative decisions that + are likely to be made consistantly at sites with more than one host. + The manual entry _m_h-_g_e_n (8) describes all the static configuration + directives. + + However, when you install _M_H you may wish to make some + site-specific or host-specific changes which aren't hardware or even + software related. Rather, they are administrative decisions. That's + what this guide is for: it describes all of the dynamically tailorable + directives. + + + + + + + + + + + + + -2- + + + Usually, after installing _M_H, you'll want to edit the + /usr/local/lib/mh/mtstailor file. This file fine-tunes the way _M_H + interacts with the message transport system (MTS). Section 2 talks + about the MTS interface and MTS tailoring. + + After that, if you're running the UCI BBoards facility, or the POP + facility, you'll need to know how to maintain those systems. Sections 3 + and 4 talk about these. + + If for some reason you're not running an MTS that can handle both + Internet and _U_U_C_P traffic, you should read-up on mail filtering in Sec- + tion 5. Although this is considered "old technology" now, the mechan- + isms described in Section 5 were really quite useful when first intro- + duced way back in 1981. + + Finally, you may want to know how to modify the _M_H source tree. + Section 6 talks (a little bit) about that. + + The last two sections describe a few hidden features in _M_H, and the + configuration options that were in effect when this guide was generated. + + After _M_H is installed, you should define the address "Bug-MH" to + map to either you or the _P_o_s_t_M_a_s_t_e_r at your site. + + In addition, if you want to tailor the behavior of _M_H for new + users, you can create and edit the file /usr/local/lib/mh/mh.profile. + When the _i_n_s_t_a_l_l-_m_h program is run for a user, if this file exists, it + will copy it into the user's .mh_profile file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _2. _T_H_E _M_T_S _I_N_T_E_R_F_A_C_E + + + + + + The file /usr/local/lib/mh/mtstailor customizes certain + host-specific parameters of _M_H related primarily to interactions with + the transport system. The parameters in this file override the + compiled-in defaults given during _M_H configuration. Rather than recom- + piling _M_H on each host to make minor customizations, it is easier simply + to modify the mtstailor file. All hosts at a given site normally use + the same mtstailor file, though this need not be the case. + + It is a good idea to run the _c_o_n_f_l_i_c_t (8) program each morning + under _c_r_o_n. The following line usually suffices: + + 00 05 * * * /usr/local/lib/mh/conflict -mail PostMaster + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -3- + + + + + + + + + + MH-TAILOR(5) -4- MH-TAILOR(5) + + + _N_A_M_E + mh-tailor, mtstailor - system customization for MH message handler + + + _S_Y_N_O_P_S_I_S + /_u_s_r/_l_o_c_a_l/_l_i_b/_m_h/_m_t_s_t_a_i_l_o_r + + _D_E_S_C_R_I_P_T_I_O_N + + The file /usr/local/lib/mh/mtstailor defines run-time options for + those _M_H programs which interact (in some form) with the message + transport system. At present, these (user) programs are: _a_p, _c_o_n_- + _f_l_i_c_t, _i_n_c, _m_s_g_c_h_k, _m_s_h, _p_o_s_t, _r_c_v_d_i_s_t, and _r_c_v_p_a_c_k. + + Each option should be given on a single line. Blank lines and + lines which begin with `#' are ignored. The options available + along with default values and a description of their meanings are + listed below: + + localname: + The host name _M_H considers local. If not set, depending on + the version of UNIX you're running, _M_H will query the system + for this value (e.g., , gethostname, etc.). This + has no equivalent in the _M_H configuration file. POP client + hosts should set this value to the name of the POP service + host. + + localdomain: + If this is set, a `.' followed by this string will be appended + to your host name. This might be useful for sites where the + host name returned by the system (e.g., , gethost- + name, etc.), is not a "fully qualified domain name" (i.e., + does not contain a `.'). + + clientname: + The host name _M_H will give in the SMTP HELO (and EHLO) com- + mand, when posting mail. If not set, no HELO command will be + given. Although the HELO command is required by RFC 821, many + SMTP servers do not require it. + + Early versions of SendMail will fail if the host name given in + the HELO command is the local host; later versions of SendMail + will complain if you omit the HELO command. If you run Send- + Mail, find out what your system expects and set this field + accordingly. + + systemname: + The name of the local host in the _U_U_C_P "domain". If not set, + depending on the version of UNIX you're running, _M_H will query + the system for this value. This has no equivalent in the _M_H + configuration file. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-TAILOR(5) -5- MH-TAILOR(5) + + + mmdfldir: /usr/spool/mail + The directory where maildrops are kept. If this is empty, the + user's home directory is used. This overrides the "mail" + field in the _M_H configuration file. + + mmdflfil: + The name of the maildrop file in the directory where maildrops + are kept. If this is empty, the user's login name is used. + This overrides the "mail" field in the _M_H configuration file. + + mmdelim1: \001\001\001\001\n + The beginning-of-message delimiter for maildrops. + + mmdelim2: \001\001\001\001\n + The end-of-message delimiter for maildrops. + + mmailid: 0 + If non-zero, then support for MMailids in /etc/passwd is + enabled. Basically, the pw_gecos field in the password file + is of the form + + My Full Name + + The _M_H internal routines that deal with user and full names + will return "mailid" and "My Full Name" respectively. + + lockstyle: 0 + The locking discipline to perform. A value of "0" means to + use kernel-level locking if available. (See below for more + details.) On systems compiled without kernel-level locking, + standard _B_e_l_l_M_a_i_l locking is used. A value of "1" means to + use _B_e_l_l_M_a_i_l locking always (the name of the lock is based on + the file name). A value of "2" means to use _M_M_D_F locking + always (the name of the lock is based on device/inode pairs). + + lockldir: + The name of the directory for making locks. If your system + isn't configured to use kernel-level locking, then this direc- + tory is used when creating locks. If the value is empty, then + the directory of the file to be locked is used. + + maildelivery: /usr/local/lib/mh/maildelivery + The name of the system-wide default ._m_a_i_l_d_e_l_i_v_e_r_y file. See + _m_h_o_o_k (1) for the details. + + everyone: 200 + The highest user-id which should NOT receive mail addressed to + "everyone". + + noshell: + If set, then each user-id greater than "everyone" that has a + login shell equivalent to the given value (e.g., "/bin/csh") + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-TAILOR(5) -6- MH-TAILOR(5) + + + indicates that mail for "everyone" should not be sent to them. + This is useful for handling admin, dummy, and guest logins. + + _M_a_i_l _F_i_l_t_e_r_i_n_g + + These options are only available if you compiled _M_H with + "options MF". + + uucpchan: name of _U_U_C_P channel + Usually "UUCP". This has no equivalent in the _M_H configura- + tion file. + + uucpldir: /usr/spool/mail + The name of the directory where _U_U_C_P maildrops are kept. This + has no equivalent in the _M_H configuration file. + + uucplfil: + The name of the maildrop file in the directory where _U_U_C_P + maildrops are kept. If this is empty, the user's login name + is used. This has no equivalent in the _M_H configuration file. + + umincproc: /usr/local/lib/mh/uminc + The path to the program that filters _U_U_C_P-style maildrops to + _M_M_D_F-style maildrops. + + _S_t_a_n_d-_A_l_o_n_e _D_e_l_i_v_e_r_y + + These options are only available if you compiled _M_H to use stand- + alone delivery (i.e., "mts: mh"). + + mailqdir: /usr/spool/netmail + The directory where network mail is queued. + + tmailqdir: /usr/tmp + The directory where network mail queue files are built. + + syscpy: 1 + If ON, unauthorized mail is copied to the overseer. + + overseer: root + The user that receives reports of unauthorized mail. + + mailer: root + The user acting for the mail system. + + fromtmp: /tmp/rml.f.XXXXXX + The _m_k_t_e_m_p template for storing from lines. + + msgtmp: /tmp/rml.m.XXXXXX + The _m_k_t_e_m_p template for storing the rest of the message. + + errtmp: /tmp/rml.e.XXXXXX + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-TAILOR(5) -7- MH-TAILOR(5) + + + The _m_k_t_e_m_p template for storing error messages from other + mailers. + + tmpmode: 0600 + The octal mode which temporary files are set to. + + okhosts: /usr/local/lib/mh/Rmail.OKHosts + A file containing a list of hosts that can send ARPAnet mail. + + okdests: /usr/local/lib/mh/RMail.OKDests + A file containing a list of hosts that can always receive + mail. + + _T_h_e `/_s_m_t_p' _M_T_S _S_u_f_f_i_x + + These options are only available if you compiled _M_H with the + "/smtp" suffix to your "mts:" configuration. + + hostable: /usr/local/lib/mh/hosts + The exceptions file for /etc/hosts used by _p_o_s_t to try to find + official names. The format of this file is quite simple: + + 1. Comments are surrounded by sharp (`#') and newline. + 2. Words are surrounded by white space. + 3. The first word on the line is the official name of a + host. + 4. All words following the official names are aliases for + that host. + + servers: localhost \01localnet + A lists of hosts and networks which to look for SMTP servers + when posting local mail. It turns out this is a major win for + hosts which don't run an message transport system. The value + of "servers" should be one or more items. Each item is the + name of either a host or a net (in the latter case, precede + the name of the net by a \01). This list is searched when + looking for a smtp server to post mail. If a host is present, + the SMTP port on that host is tried. If a net is present, the + SMTP port on each host in that net is tried. Note that if you + are running with the BIND code, then any networks specified + are ignored (sorry, the interface went away under BIND). + + _S_e_n_d_M_a_i_l + + This option is only available if you compiled _M_H to use _S_e_n_d_M_a_i_l as + your delivery agent (i.e., "mts: sendmail"). + + sendmail: /usr/lib/sendmail + The pathname to the _s_e_n_d_m_a_i_l program. + + _P_o_s_t _O_f_f_i_c_e _P_r_o_t_o_c_o_l + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-TAILOR(5) -8- MH-TAILOR(5) + + + This option is only available if you compiled _M_H with POP support + enabled (i.e., "pop: on"). + + pophost: + The name of the default POP service host. If this is not set, + then _M_H looks in the standard maildrop areas for waiting mail, + otherwise the named POP service host is consulted. + + _B_B_o_a_r_d_s _D_e_l_i_v_e_r_y + + This option is only available if you compiled _M_H with + "bbdelivery: on". + + bbdomain: + The local BBoards domain (a UCI hack). + + _B_B_o_a_r_d_s & _T_h_e _P_O_P + + These options are only available if you compiled _M_H with + "bboards: pop" and "pop: on". + + popbbhost: + The POP service host which also acts as a BBoard server. This + variable should be set on the POP BBoards client host. + + popbbuser: + The guest account on the POP/BB service host. This should be + a different login ID than either the POP user or the BBoards + user. (The user-id "ftp" is highly recommended.) This vari- + able should be set on both the POP BBoards client and service + hosts. + + popbblist: /usr/local/lib/mh/hosts.popbb + A file containing of lists of hosts that are allowed to use + the POP facility to access BBoards using the guest account. + If this file is not present, then no check is made. This + variable should be set on the POP BBoards service host. + + _B_B_o_a_r_d_s & _T_h_e _N_N_T_P + + This option is only available if you compiled _M_H with + "bboards: nntp" and "pop: on". + + nntphost: + The host which provides the NNTP service. This variable + should be set on the NNTP BBoards client host. + + _F_i_l_e _L_o_c_k_i_n_g + + A few words on locking: _M_H has a flexible locking system for making + locks on files. There are two mtstailor variables you should be + aware of "lockstyle" and "lockldir". The first controls the method + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-TAILOR(5) -9- MH-TAILOR(5) + + + of locking, the second says where lock files should be created. + + The "lockstyle" variable can take on three values: 0, 1, 2. A + value of 0 is useful on systems with kernel-level locking. If you + are on a BSD42 system, _M_H assumes you have the _f_l_o_c_k system call. + On other systems: define FLOCK if you want to use the _f_l_o_c_k system + call; define LOCKF if you want to use the _l_o_c_k_f system call; or + define FCNTL if you want to use the _f_c_n_t_l system call for kernel- + level locking. If you haven't configured _M_H to use kernel-level + locking, a locking style of 0 is considered the same as locking + style 1. + + A value of 1 or 2 specifies that a file should be created whose + existence means "locked" and whose non-existence means "unlocked". + A value of 1 says to construct the lockname by appending ".lock" to + the name of the file being locked. A value of 2 says to construct + the lockname by looking at the device and inode numbers of the file + being locked. If the "lockldir" variable is not specified, lock + files will be created in the directory where the file being locked + resides. Otherwise, lock files will be created in the directory + specified by "lockldir". Prior to installing _M_H, you should see + how locking is done at your site, and set the appropriate values. + + _F_i_l_e_s + /usr/local/lib/mh/mtstailor tailor file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + mh-gen(8), mh-mts(8) + + + _D_e_f_a_u_l_t_s + As listed above + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-MTS(8) -10- MH-MTS(8) + + + _N_A_M_E + mh-mts - the MH interface to the message transport system + + _S_Y_N_O_P_S_I_S + SendMail + + Zmailer + + MMDF (any release) + + stand-alone + + _D_E_S_C_R_I_P_T_I_O_N + + _M_H can use a wide range of message transport systems to deliver + mail. Although the _M_H administrator usually doesn't get to choose + which MTS to use (since it's already in place), this document + briefly describes the interfaces. + + When communicating with _S_e_n_d_M_a_i_l, _M_H always uses the SMTP to post + mail. Depending on the _M_H configuration, _S_e_n_d_M_a_i_l may be invoked + directly (via a _f_o_r_k and an _e_x_e_c), or _M_H may open a TCP/IP connec- + tion to the SMTP server on the localhost. + + When communicating with _z_m_a_i_l_e_r, the _S_e_n_d_M_a_i_l compatibility program + is required to be installed in /usr/lib. _M_H communicates with + _z_m_a_i_l_e_r by using the SMTP. It does this by invoking the + /usr/lib/sendmail compatibility program directly, with the `-bs' + option. + + When communicating with _M_M_D_F, normally _M_H uses the "mm_" routines + to post mail. However, depending on the _M_H configuration, _M_H + instead may open a TCP/IP connection to the SMTP server on the + localhost. + + When using the stand-alone system (NOT recommended), _M_H delivers + local mail itself and queues _U_U_C_P and network mail. The network + mail portion will probably have to be modified to reflect the local + host's tastes, since there is no well-known practice in this area + for all types of UNIX hosts. + + If you are running a UNIX system with TCP/IP networking, then it is + felt that the best interface is achieved by using either _S_e_n_d_M_a_i_l + or _M_M_D_F with the SMTP option. This gives greater flexibility. To + enable this option you append the /smtp suffix to the mts option in + the _M_H configuration. This yields two primary advantages: First, + you don't have to know where _s_u_b_m_i_t or _S_e_n_d_M_a_i_l live. This means + that _M_H binaries (e.g., _p_o_s_t ) don't have to have this information + hard-coded, or can run different programs altogether; and, second, + you can post mail with the server on different systems, so you + don't need either _M_M_D_F or _S_e_n_d_M_a_i_l on your local host. Big win in + conserving cycles and disk space. Since _M_H supports the notion of + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-MTS(8) -11- MH-MTS(8) + + + a server search-list in this respect, this approach can be tolerant + of faults. Be sure to set "servers:" as described in mh-tailor(8) + if you use this option. + + There are four disadvantages to using the SMTP option: First, only + UNIX systems with TCP/IP are supported. Second, you need to have + an SMTP server running somewhere on any network your local host can + reach. Third, this bypasses any authentication mechanisms in _M_M_D_F + or _S_e_n_d_M_a_i_l. Fourth, the file /etc/hosts is used for hostname + lookups (although there is an exception file). In response to + these disadvantages though: First, there's got to be an SMTP server + somewhere around if you're in the Internet or have a local network. + Since the server search-list is very general, a wide-range of + options are possible. Second, SMTP should be fixed to have authen- + tication mechanisms in it, like POP. Third, _M_H won't choke on mail + to hosts whose official names it can't verify, it'll just plug + along (and besides if you enable the BERK or DUMB configuration + options, _M_H ignores the hosts file altogether). + + _F_i_l_e_s + /usr/local/lib/mh/mtstailor tailor file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + _M_M_D_F-_I_I: _A _T_e_c_h_n_i_c_a_l _R_e_v_i_e_w, Proceedings, Usenix Summer '84 Confer- + ence + _S_E_N_D_M_A_I_L -- _A_n _I_n_t_e_r_n_e_t_w_o_r_k _M_a_i_l _R_o_u_t_e_r + mh-tailor(8), post(8) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + The /usr/local/lib/mh/mtstailor file ignores the information in the + _M_M_D_F-_I_I tailoring file. It should not. + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + + + + _3. _B_B_O_A_R_D_S + + + + + + The UCI BBoards facility has two aspects: message reading, and mes- + sage delivery. The configuration directives applicable to BBoards are + "bboards: on/off/pop/nntp" and "bbdelivery: on/off". + + + _B_B_o_a_r_d _D_e_l_i_v_e_r_y + + If you enabled BBoards delivery ("bbdelivery: on") during confi- + guration, then the initial environment for bboards delivery was set-up + during installation. A BBoard called "system" is established, which is + the BBoard for general discussion. + + To add more BBoards, become the "bboards" user, and edit the + /usr/spool/bboards/BBoards file. The file support/bboards/Example is a + copy of the /usr/spool/bboards/BBoards file that we use at UCI. When + you add a BBoard, you don't have to create the files associated with it, + the BBoards delivery system will do that automatically. + + Private BBoards may be created. To add the fictitious private + BBoard "hacks", add the appropriate entry to the BBoards file, create + the empty file /usr/spool/bboards/hacks.mbox (or whatever), change the + mode of this file to 0640, and change the group of the file to be the + groupid of the people that you want to be able to read it. Also be sure + to add the "bboards" user to this group (in /etc/group), so the archives + can be owned correctly. + + By using the special INVIS flag for a BBoard, special purpose + BBoards may be set-up which are invisible to the _M_H user. For example, + if a site distributes a BBoard both locally to a number of machines and + to a number of distant machines. It might be useful to have two distri- + bution lists: one for all machines on the list, and the other for local + machines only. This is actually very simple to do. For the main list, + put the standard entry of information in the /usr/spool/bboards/BBoards + file, with the complete distribution list. For the local machines list, + and add a similar entry to the /usr/spool/bboards/BBoards file. All the + fields should be the same except three: the BBoard name should reflect a + local designation (e.g., "l-hacks"), the distribution list should con- + tain only machines at the local site, and the flags field should contain + the INVIS flag. Since the two entries share the same primary and + archive files, messages sent to either list are read by local users, + while only thoses messages sent to the main list are read by all users. + + Two automatic facilities for dealing with BBoards exist: automatic + archiving and automatic aliasing. The file support/bboards/crontab con- + tains some entries that you should add to your /usr/lib/crontab file to + run the specified programs at times that are convenient for you. The + + -12- + + + + + + + + + + -13- + + + bboards.daily file is run once a day and generates an alias file for _M_H. + By using this file, users of _M_H can use, for example, "unix-wizards" + instead of "unix-wizards@brl-vgr" when they want to send a message to + the "unix-wizards" discussion group. This is a major win, since you + just have to know the name of the group, not the address where it's + located. + + The bboards.weekly file is run once a week and handles old messages + (those received more than 12 days ago) in the BBoards area. In short, + those BBoards which are marked for automatic archiving will have their + old messages placed in the /usr/spool/bboards/archive/ area, or have + their old messages removed. Not only does this make BBoards faster to + read, but it conveniently partitions the new messages from the old mes- + sages so you can easily put the old messages on tape and then remove + them. It turns out that this automatic archiving capability is also a + major win. + + At UCI, our policy is to save archived messages on tape (every two + months or so). We use a program called _b_b_t_a_r to implement our particu- + lar policy. Since some BBoards are private (see above), we save the + archives on two tapes: one containing the world-readable archives (this + tape is read-only accessible to all users by calling the operator), and + the other containing the non-world-readable ones (this tape is kept + locked-up somewhere). + + + _B_B_o_a_r_d_s _w_i_t_h _t_h_e _P_O_P + + If you configured _M_H with "bboards: pop" and "pop: on", then the _M_H + user is allowed to read BBoards on a server machine instead of the local + host (thus saving disk space). For completely transparent behavior, the + administrator may set certain variables in the mtstailor file on the + client host. The variable "popbbhost" indicates the host where BBoards + are kept (it doesn't have to be the POP service host, but this host must + run both a POP server and the BBoards system). The variable "popbbuser" + indicates the guest account on this host for BBoards. This username + should not be either the POP user or the BBoards user. Usually the + anonymous FTP user (ftp) is the best choice. Finally, the variable + "popbblist" indicates the name of a file which contains a list of hosts + (one to a line, official host names only) which should be allowed to use + the POP facility to access BBoards via the guest account. (If the file + is not present, then no check is made.) + + The "popbbuser" variable should be set on both the client and ser- + vice host. The "popbbhost" variable need be set only on the client host + (the value, of course, is the name of the service host). The + "popbblist" variable need be set only on the service host. + + Finally, on the client host, if a POP service host is not expli- + citly given by the user (i.e., "popbbhost" is implicitly used), then _b_b_c + will explicitly check the local host prior to contacting the service + host. This allows each POP client host to have a few local BBoards + + + + + + + + + + + + -14- + + + (e.g., each host could have one called "system"), and then have the POP + service host used for all the rest (a site-wide BBoard might be known as + "general"). + + + _B_B_o_a_r_d_s _w_i_t_h _t_h_e _N_N_T_P + + If you configured _M_H with "bboards: nntp" and "pop: on", then the + _M_H user is allowed to read the Network News on a server machine using + the standard _b_b_c command. For completely transparent behavior, the + administrator may set the "nntphost" variable in the mtstailor file to + indicate the host where the Network News is kept. The "nntphost" vari- + able should be set only on the client host Finally, on the client host, + if an NNTP service host is not explicitly given by the user (i.e., + "nntphost" is implicitly used), then _b_b_c will explicitly check the local + host prior to contacting the service host. This allows each NNTP client + host to have a few local BBoards (e.g., each host could have one called + "system"), and then have the NNTP service host used for to read the Net- + work News. + + Reading BBoards via the POP and via the NNTP are mutually + exclusive. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + BBOARDS(5) -15- BBOARDS(5) + + + _N_A_M_E + BBoards - BBoards database + + _S_Y_N_O_P_S_I_S + /usr/spool/bboards/BBoards + + _D_E_S_C_R_I_P_T_I_O_N + + The BBoards database contains for each BBoard the following infor- + mation: + + _f_i_e_l_d _v_a_l_u_e + name the name of the BBoard + aliases local aliases for the BBoard + (separated by commas) + primary file the .mbox file + encrypted password leadership password + leaders local list maintainers (separated by commas) + usernames from the _p_a_s_s_w_d (5) file, + or groupnames preceded by `=' from the + _g_r_o_u_p (5) file + network address the list address + request address the list maintainer's address + relay the host acting as relay for the local domain + distribution sites (separated by commas) + flags special flags (see ) + + This is an ASCII file. Each field within each BBoard's entry is + separated from the next by a colon. Each BBoard entry is separated + from the next by a new-line. If the password field is null, no + password is demanded; if it contains a single asterisk, then no + password is valid. + + This file resides in the home directory of the login "bboards". + Because of the encrypted passwords, it can and does have general + read permission. + + _F_i_l_e_s + /usr/spool/bboards/BBoards BBoards database + + + _S_e_e _A_l_s_o + bbaka(8), bbexp(8), bboards (8), bbtar(8) + + + _B_u_g_s + A binary indexed file format should be available for fast access. + + Appropriate precautions must be taken to lock the file against + changes if it is to be edited with a text editor. A _v_i_b_b program + is needed. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + BBOARDS(5) -16- BBOARDS(5) + + + _N_A_M_E + bbaka - generate an alias list for BBoards + + _S_Y_N_O_P_S_I_S + /usr/spool/bboards/bbaka [system] + + _D_E_S_C_R_I_P_T_I_O_N + + The _b_b_a_k_a program reads the BBoards database and produces on its + standard output a file suitable for inclusion in either the _M_M_D_F-_I_I + aliases file (if the argument `system' is given). If the argument + is not given, then _b_b_a_k_a produces on its standard output a file + suitable for becoming the /usr/local/lib/mh/BBoardsAliases file. + + _F_i_l_e_s + /usr/spool/bboards/BBoards BBoards database + /usr/local/lib/mh/BBoardsAliases BBoards aliases file for _M_H + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + bboards(5) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + BBEXP(8) -17- BBEXP(8) + + + _N_A_M_E + bbexp - expunge the BBoards area + + _S_Y_N_O_P_S_I_S + /usr/spool/bboards/bbexp [-_f_i_r_s_t-_m_e_t_r_i_c] [-_s_e_c_o_n_d-_m_e_t_r_i_c] + [bboards ...] + + _D_E_S_C_R_I_P_T_I_O_N + + The _b_b_e_x_p program reads the BBoards database and calls _m_s_h to + archive the named BBoards (or all BBoards if none are specified). + + The first-metric (which defaults to 12) gives the age in days of + the "BB-Posted:" field for messages which should be expunged. The + second-metric (which defaults to 20) gives the age in days of the + "Date:" field for messages which should be expunged. Any message + which meets either metric will be either archived or removed, + depending on what the _B_B_o_a_r_d_s (5) file says. + + _F_i_l_e_s + /usr/spool/bboards/BBoards BBoards database + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + msh(1), bboards(5) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + BBOARDS(8) -18- BBOARDS(8) + + + _N_A_M_E + bboards - BBoards channel/mailer + + _S_Y_N_O_P_S_I_S + /usr/mmdf/chans/bboards fd1 fd2 [y] + + /usr/local/lib/mh/sbboards bboard ... + + /usr/local/lib/mh/sbboards file maildrop directory bboards.bboard + + _D_E_S_C_R_I_P_T_I_O_N + + For _M_M_D_F, the BBoards channel delivers mail to the BBoards system. + For _S_e_n_d_M_a_i_l and stand-alone _M_H, the SBBoards mailer performs this + task. + + For each address given, these programs consult the _b_b_o_a_r_d_s (5) file + to ascertain information about the BBoard named by the address. + The programs then perform local delivery, if appropriate. After + that, with the exception of _s_b_b_o_a_r_d_s running under stand-alone _M_H, + the programs perform redistribution, if appropriate. + + For redistribution, the return address is set to be the request + address at the local host, so bad addresses down the line return to + the nearest point of authority. If any failures occur during + redistribution, a mail message is sent to the local request + address. + + _F_i_l_e_s + /usr/local/lib/mh/mtstailor tailor file + /usr/spool/bboards/BBoards BBoards database + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + bboards(5), bbaka(8) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + BBTAR(8) -19- BBTAR(8) + + + _N_A_M_E + bbtar - generate the names of archive files to be put to tape + + _S_Y_N_O_P_S_I_S + /usr/spool/bboards/bbtar [private] [public] + + _D_E_S_C_R_I_P_T_I_O_N + + The _b_b_t_a_r program reads the BBoards database and produces on its + standard output the names of BBoards archives which should be put + to tape, for direct use in a _t_a_r (1) command. + + If the argument `private' is given, only private BBoards are con- + sidered. If the argument `public' is given, only public BBoards + are considered. This lets the BBoards administrator write two + tapes, one for general read-access (the public BBoards), and one + for restricted access. The default is all BBoards + + For example: + + cd archive # change to the archive directory + tar cv `bbtar private` # save all private BBoard archives + + After the archives have been saved to tape, they are usually + removed. The archives are then filled again, usually automatically + by cron jobs which run _b_b_e_x_p (8). + + _F_i_l_e_s + /usr/spool/bboards/BBoards BBoards database + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + bboards(5), bbexp(8) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + + + + _4. _P_O_P + + + + + + For POP (Post Office Protocol) client hosts, you need to edit the + /usr/local/lib/mh/mtstailor file to know about two hosts: the SMTP ser- + vice host and the POP service host. Normally, these are the same. + Change the "localname" field of the mtstailor file of _M_H in the file to + be the name of the POP service host. This makes replies to mail gen- + erated on the POP client host possible, since _M_H will consider use the + hostname of the POP service host as the local hostname for outgoing + mail. Also set the value of "pophost" to this value. This tells _i_n_c + and _m_s_g_c_h_k to use POP instead of looking for mail locally. Finally, + make sure the value of "servers" includes the name of the SMTP service + host. The recommended value for "servers" is: + + servers: SMTP-service-host localhost \01localnet + + If you want more information on the Post Office Protocol used by + _M_H, consult the files support/pop/rfc1081.txt and + support/pop/rfc1082.txt which describe the _M_H version of the POP: POP3. + + For POP service hosts, you need to run a daemon, _p_o_p_d (8). The + daemon should start at multi-user boot time, so adding the lines: + + if [ -f /etc/popd ]; then + /etc/popd & echo -n ' pop' >/dev/console + fi + + to the /etc/rc.local file is sufficient. + + The port assigned to the POP3 protocol is "110". For historical + reasons, many sites are using port "109" which is the port assigned to + the "POP" (version 1 and 2) protocol. The configuration option "POPSER- + VICE" is the name of the port number that _M_H POP will try to use, and + defaults to the name "pop". + + To generate _M_H to use newer assigned port number, in your _M_H config + file, add: + + options POPSERVICE='"pop3"' + + And on both the POP client and service hosts, you need to define the + port that the POP service uses. Add the line: + + pop3 110/tcp + + to the /etc/services file (if it's not already there). + + + + -20- + + + + + + + + + + -21- + + + There are two ways to administer POP: In "naive" mode, each user-id + in the _p_a_s_s_w_d (5) file is considered a POP subscriber. No changes are + required for the mailsystem on the POP service host. However, this + method requires that each POP subscriber have an entry in the password + file. The POP server will fetch the user's mail from wherever maildrops + are kept on the POP service host. This means that if maildrops are kept + in the user's home directory, then each POP subscriber must have a home + directory. + + In "smart" mode (enabled via "DPOP" being given as a configuration + option), the list of POP subscribers and the list of login users are + completely separate name spaces. A separate database (simple file simi- + lar to the _B_B_o_a_r_d_s (5) file) is used to record information about each + POP subscriber. Unfortunately, the local mailsystem must be changed to + reflect this. This requires two changes (both of which are simple): + First, the aliasing mechanism is augmented so that POP subscriber + addresses are diverted to a special delivery mechanism. _M_H comes with a + program, _p_o_p_a_k_a (8), which generates the additional information to be + put in the mailsystem's alias file. Second, a special POP channel (for + MMDF-II) or POP mailer (for SendMail) performs the actual delivery (_m_h._6 + supplies both). All it really does is just place the mail in the POP + spool area. + + These two different philosophies are not compatible on the same POP + service host: one or the other, but not both may be run. Clever mail- + system people will note that the POP mechanism is really a special case + of the more general BBoards mechanism. + + In addition, there is one user-visible difference, which the + administrator controls the availability of. The difference is whether + the POP subscriber must supply a password to the POP server: The first + method uses the standard ARPA technique of sending a username and a + password. The appropriate programs (_i_n_c, _m_s_g_c_h_k, and possibly _b_b_c ) + will prompt the user for this information. + + The second method (which is enabled via "RPOP" being given as a + configuration option) uses the Berkeley UNIX reserved port method for + authentication. This requires that the two or three mentioned above + programs be _s_e_t_u_i_d to root. (There are no known holes in any of these + programs.) + + To add a POP subscriber, for the first method, one simply follows + the usual procedures for adding a new user, which eventually results in + adding a line to the _p_a_s_s_w_d (5) file; for the second method, one must + edit the POP database file (kept in the home directory of the POP user), + and then run the _p_o_p_a_k_a program. The output of this program is placed + in the aliases file for the transport system (e.g., /usr/lib/aliases for + SendMail). + + Authentication for POP subscribers differs depending on the two + methods. When the user supplies a password for the POP session: under + the first method, the contents of the password field for the user's + + + + + + + + + + + + -22- + + + entry in the _p_a_s_s_w_d (5) is consulted; under the second method, the con- + tents of the password field for the subscriber's entry in the _p_o_p (5) + file is consulted. (To set this field, the _p_o_p_w_r_d (8) program is used.) + + If you are allowing RPOP, under the first method, the user's + ._r_h_o_s_t_s file is consulted; under the second method, the contents of the + network address field for the subscriber's entry in the _p_o_p (5) file is + consulted. + + In addition, a third authentication scheme is available. When the + APOP configuration option is given, e.g., + + options APOP='"/etc/pop.auth"' + + In this case, the server also allows a client to supply authentication + credentials to provide for origin authentication and reply protection, + but which do not involve sending a password in the clear over the net- + work. A POP authorization DB, having as its name the value of APOP con- + figuration option, is used to keep track of this information. This file + is created and manipulated by the _p_o_p_a_u_t_h (8) program. Because this + file contains secret information, it must be protected mode 0600 and + owned by the super-user. Hence, your first step after installing the + software is to issue + + # popauth -init + + which creates and initalizes the POP authorization DB. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + POP(5) -23- POP(5) + + + _N_A_M_E + POP - POP database of subscribers + + _S_Y_N_O_P_S_I_S + /usr/spool/pop/POP + + _D_E_S_C_R_I_P_T_I_O_N + + The POP database has exactly the same format as the _B_B_o_a_r_d_s (5) + database, although many fields are unused. Currently, only four + fields are examined: + + _f_i_e_l_d _v_a_l_u_e + name the POP subscriber + primary file the maildrop for the POP subscriber + (relative to the POP directory) + encrypted password the POP subscriber's password + network address the remote user allowed to RPOP + + This is an ASCII file. Each field within each POP subscriber's + entry is separated from the next by a colon. Each POP subscriber + is separated from the next by a new-line. If the password field is + null, then no password is valid. + + To add a new POP subscriber, edit the file adding a line such as + + mrose::mrose:::::::0 + + Then, use _p_o_p_w_r_d to set the password for the POP subscriber. If + you wish to allow POP subscribers to access their maildrops without + supplying a password (by using privileged ports), fill-in the net- + work address field, as in: + + mrose::mrose:::mrose@nrtc-isc::::0 + + which permits "mrose@nrtc-isc" to access the maildrop for the POP + subscriber "mrose". Multiple network addresses may be specified by + separating them with commas, as in: + + dave::dave:9X5/m4yWHvhCc::dave@romano.wisc.edu,dave@rsch.wisc.edu:::: + + To disable a POP subscriber from _r_e_c_e_i_v_i_n_g mail, set the primary + file name to the empty string. To prevent a POP subscriber from + _p_i_c_k_i_n_g-_u_p mail, set the encrypted password to "*" and set the net- + work address to the empty string. + + This file resides in home directory of the login "pop". Because of + the encrypted passwords, it can and does have general read permis- + sion. + + _F_i_l_e_s + /usr/spool/pop/POP POP database + + [mh.6] MH.6.8 UCI version + + + + + + + + + + POP(5) -24- POP(5) + + + _S_e_e _A_l_s_o + bboards(5), pop(8), popaka(8), popd(8), popwrd(8) + + + _B_u_g_s + A binary indexed file format should be available for fast access. + + Appropriate precautions must be taken to lock the file against + changes if it is to be edited with a text editor. A _v_i_p_o_p program + is needed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + POP(8) -25- POP(8) + + + _N_A_M_E + pop - POP channel/mailer + + _S_Y_N_O_P_S_I_S + /usr/mmdf/chans/pop fd1 fd2 [y] + + /usr/local/lib/mh/spop POP-subscriber ... + + _D_E_S_C_R_I_P_T_I_O_N + + For _M_M_D_F-_I_I, the POP channel delivers mail to the POP spool area + for later retrieval by POP subscribers. For _S_e_n_d_M_a_i_l, the SPOP + mailer performs this task. + + For each address given, these programs consult the _p_o_p (5) file to + obtain information about the POP-subscriber named by the address. + The programs then deliver the message to the spool area for the + POP-subscriber. + + _F_i_l_e_s + /usr/local/lib/mh/mtstailor tailor file + /usr/spool/pop/POP POP database + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + bboards(5), bbaka(8) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + POPAKA(8) -26- POPAKA(8) + + + _N_A_M_E + popaka - generate POP entries for SendMail or MMDF-II alias file + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/popaka + + _D_E_S_C_R_I_P_T_I_O_N + + The _p_o_p_a_k_a program reads the POP database and produces on its stan- + dard output a file suitable for inclusion in the SendMail or + _M_M_D_F-_I_I aliases file. The contents of this file divert mail for + POP subscribers to the POP channel. + + _F_i_l_e_s + /usr/spool/pop/POP POP database + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + pop(5) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + POPAUTH(8) -27- POPAUTH(8) + + + _N_A_M_E + popauth - manipulate POP authorization DB + + _S_Y_N_O_P_S_I_S + popauth [-init] [-list] [-user name] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + The _p_o_p_a_u_t_h program allows a POP-subscriber to change the secret + value used to generate their authentication credentials. In addi- + tion, the super-user or master POP user may use this program to + either initialize the database or to print public information from + it. _p_o_p_a_u_t_h is useful only when the APOP configuration option is + defined. (This configuration option defines the name of the POP + authorization DB.) + + Under normal usage, _p_o_p_a_u_t_h prompts for a new secret, just like the + _p_a_s_s_w_d program. It then updates the POP authorization DB accord- + ingly. + + With the `-init' switch, the super-user or master POP user can + create a new (or zero the existing) POP authorization DB. + + With the `-list' switch, the super-user or master POP user can + print out public information about the named subscriber (or all + subscribers). + + _F_i_l_e_s + /etc/pop.auth.* POP authorization DB + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + popd(8) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + POPD(8) -28- POPD(8) + + + _N_A_M_E + popd - the POP server + + _S_Y_N_O_P_S_I_S + /usr/etc/popd [-p portno] (under /etc/rc.local) + + _D_E_S_C_R_I_P_T_I_O_N + + The _p_o_p_d server implements the Post Office Protocol (version 3), as + described in RFC1081 and RFC1082. Basically, the server listens on + the TCP port named "pop" for connections and enters the POP upon + establishing a connection. The `-p' option overrides the default + TCP port. If the POP2 configuration option is defined, then the + server also implements version 2 of the protocol. If the APOP con- + figuration option is defined, then the server supports a non- + standard mechanism for identity-establishment in which authentica- + tion credentials are used to provide for origin authentication and + reply protection, but which do not involve sending a password in + the clear over the network. See _p_o_p_a_u_t_h(8) for more details. + + _F_i_l_e_s + /usr/spool/pop/POP POP database + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + _P_o_s_t _O_f_f_i_c_e _P_r_o_t_o_c_o_l - _v_e_r_s_i_o_n _3 (aka RFC-1081), + _P_o_s_t _O_f_f_i_c_e _P_r_o_t_o_c_o_l - _v_e_r_s_i_o_n _3: _E_x_t_e_n_d_e_d _s_e_r_v_i_c_e _o_f_f_e_r_i_n_g_s + (RFC-1082), + pop(5) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + POPD(8) -29- POPD(8) + + + _H_i_s_t_o_r_y + For historical reasons, the _M_H POP defaults to using the port named + "pop" (109) instead of its newly assigned port named "pop3" (110). + See the POPSERVICE configuration option for more details. + + Previous versions of the server (10/28/84) had the restriction that + the POP client may retrieve messages for login users only. This + restriction has been lifted, and true POB support is available + (sending mail to a mailbox on the POP service host which does not + map to a user-id in the password file). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + POPWRD(8) -30- POPWRD(8) + + + _N_A_M_E + popwrd - set password for a POP subscriber + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/popwrd POP-subscriber + + _D_E_S_C_R_I_P_T_I_O_N + + The _p_o_p_w_r_d program lets the super-user or the master POP user or a + "leader" of a POP subscriber change the password field for the POP + subscriber in the POP database. This program is very similar to + the _p_a_s_s_w_d (1) program. + + Since only the super-user and the master POP user may change any + other fields of the POP database (using an ordinary editor), it is + possible for the system administrator to delegate responsibility to + others to manage groups of POP subscribers. + + _F_i_l_e_s + /usr/spool/pop/POP POP database + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + pop(5) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + Although _p_o_p_w_r_d does locking against other invocations of _p_o_p_w_r_d, + editor locking for the POP database in general is not implemented. + A _v_i_p_o_p program is needed. + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + + + + _5. _M_A_I_L _F_I_L_T_E_R_I_N_G + + + + + + There was a time when users on a UNIX host might have had two mail- + drops: one from _M_M_D_F and the other from _U_U_C_P. This was really a bad + problem since it prevented using a single user-interface on all of your + mail. Furthermore, if you wanted to send a message to addresses on dif- + ferent mailsystems, you couldn't send just one message. To solve all + these problems, the notion of _m_a_i_l _f_i_l_t_e_r_i_n_g was developed that allowed + sophisticated munging and relaying between the two pseudo-domains. + + _M_H will perform mail filtering, transparently, if given the MF con- + figuration option. However, with the advent of _S_e_n_d_M_a_i_l and further + maturation of _M_M_D_F, _M_H doesn't really need to do this anymore, since + these message transport agents handle it. + + The mail-filtering stuff is too complicated. It should be simpler, + but, protocol translation really _i_s difficult. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -31- + + + + + + + + + + MF(1) -32- MF(1) + + + _N_A_M_E + muinc, musift, uminc, umsift - mail filters + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/muinc + + /usr/local/lib/mh/musift [files ...] + + /usr/local/lib/mh/uminc + + /usr/local/lib/mh/umsift [files ...] + + _D_E_S_C_R_I_P_T_I_O_N + + The mail filters are a set of programs that filter mail from one + format to another. In particular, _U_U_C_P- and _M_M_D_F-style mail files + are handled. + + _m_u_i_n_c filters mail from the user's _M_M_D_F maildrop into the user's + _U_U_C_P maildrop; similarly, _u_m_i_n_c filters mail from the user's _U_U_C_P + maildrop into the user's _M_M_D_F maildrop. These two programs respect + each system's maildrop locking protocols. + + _m_u_s_i_f_t filters each file on the command line (or the standard input + if no arguments are given), and places the result on the standard + output in _U_U_C_P format. The files (or standard input) are expected + to be in _M_M_D_F format. _u_m_s_i_f_t does the same thing filtering _U_U_C_P + formatted files (or input), and places the _M_M_D_F formatted result on + the standard output. No locking protocols are used by these pro- + grams. + + If the files aren't in the expected format, the mail filters will + try to recover. In really bad cases, you may lose big. + + _F_i_l_e_s + /usr/spool/mail/ UUCP spool area for maildrops + /usr/spool/mail/$USER Location of standard maildrop + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + _P_r_o_p_o_s_e_d _S_t_a_n_d_a_r_d _f_o_r _M_e_s_s_a_g_e _H_e_a_d_e_r _M_u_n_g_i_n_g (aka RFC-886), + inc(1) + + + _D_e_f_a_u_l_t_s + + + _C_o_n_t_e_x_t + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MF(1) -33- MF(1) + + + _B_u_g_s + Numerous; protocol translation is very difficult. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + RMAIL(8) -34- RMAIL(8) + + + _N_A_M_E + rmail - UUCP interface to mail + + _S_Y_N_O_P_S_I_S + rmail address ... + + _D_E_S_C_R_I_P_T_I_O_N + + _R_m_a_i_l is intended as a replacement for those systems without _S_e_n_d_- + _M_a_i_l or _M_M_D_F. It is normally invoked by _u_u_x on behalf of the + remote _U_U_C_P site. For each address, it decides where to send it: + either locally, via another _U_U_C_P link, or via the Internet. + + _R_m_a_i_l implements a crude access control facility by consulting the + files Rmail.OkHosts and Rmail.OkDests in the /usr/local/lib/mh/ + directory. Hosts listed in the former file can send messages to + anywhere they please. Hosts listed in the latter file can receive + messages from anywhere. Note that a host listed in the first file + is implicitly listed in the second file. + + _F_i_l_e_s + /usr/local/lib/mh/mtstailor tailor file + /usr/local/lib/mh/Rmail.OkHosts list of privileged hosts + /usr/local/lib/mh/Rmail.OkDests list of privileged destinations + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + mf(1) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + + + + _6. _M_H _H_A_C_K_I_N_G + + + + + + Finally, here's a little information on modifying the _M_H sources. + A word of advice however: + + + _D_O_N'_T + + + + If you really want new _M_H capabilities, write a shell script instead. + After all, that's what UNIX is all about, isn't it? + + Here's the organization of the _M_H source tree. + + conf/ configurator tree + config/ compiled configuration constants + dist/ distributor + doc/ manual entries + h/ include files + miscellany/ various sundries + mts/ MTS-specific areas + mh/ standalone delivery + mmdf/ MMDF-I, MMDF-II + sendmail/ SendMail, SMTP + papers/ papers about _M_H + sbr/ subroutines + support/ support programs and files + bboards/ UCI BBoards facility + general/ templates + pop/ POP facility + tma/ Trusted Mail Agent (not present in all distributions) + uip/ programs + zotnet/ MTS-independent areas + bboards/ UCI BBoards facility + mf/ Mail Filtering + mts/ MTS constants + tws/ date routines + + + + + + + + + + + + -35- + + + + + + + + + + MH-HACK(8) -36- MH-HACK(8) + + + _N_A_M_E + mh-hack - how to hack MH + + _S_Y_N_O_P_S_I_S + big hack attack + + _D_E_S_C_R_I_P_T_I_O_N + + This is a description of how one can modify the _M_H system. The _M_H + distribution has a lot of complex inter-relations, so before you go + modifying any code, you should read this and understand what is + going on. + + ADDING A NEW PROGRAM + Suppose you want to create a new _M_H command called "pickle". + First, create and edit "pickle.c" in the uip/ directory. Next + edit conf/makefiles/uip to include "pickle". This file has + directions at the end of it which explain how it should be + modified. Next, update any documentation (described below). + At this point you can re-configure _M_H. See _m_h-_g_e_n(_8) for + instructions on how to do this (basically, you want "mhconfig + MH"). + + ADDING A NEW SUBROUTINE + Suppose you want to create a new _M_H routine called "pickle". + First, create and edit "pickle.c" in the sbr/ directory. Next + edit conf/makefiles/sbr to include "pickle". This file has + directions at the end of it which explain how it should be + modified. You should modify config/mh.h to define "pickle + ();". Similarly, sbr/llib-lsbr should be modified for _l_i_n_t. + At this point you can re-configure _M_H. + + UPDATING DOCUMENTATION + Edit whatever files you want in conf/doc/. When documenting a + new program, such as "pickle", you should create a manual page + with the name "pickle.rf". The file conf/doc/template has a + manual page template that you can use. If you are documenting + a new program, then you should also update three other files: + The file conf/doc/mh.rf should be modified to include the + ".NA" section from "pickle.rf". The file conf/doc/mh-chart.rf + should be modified to include the ".SY" section from + "pickle.rf". Finally, the file conf/doc/MH.rf should be modi- + fied to include a ".so pickle.me". Naturally, none of these + changes will be reflected in the configuration until you actu- + ally run _m_h_c_o_n_f_i_g. + + _F_i_l_e_s + Too numerous to mention. Honest. + + + _S_e_e _A_l_s_o + mh-gen(8) + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-HACK(8) -37- MH-HACK(8) + + + _B_u_g_s + Hacking is an art, but most programmers are butchers, not artists. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + + + + _7. _H_I_D_D_E_N _F_E_A_T_U_R_E_S + + + + + + The capabilities discussed here should not be used on a production + basis, as they are either experimental, are useful for debugging _M_H, or + are otherwise not recommended. + + + + _D_e_b_u_g _F_a_c_i_l_i_t_i_e_s + + The _m_a_r_k command has a `-debug' switch which essentially prints out + all the internal _M_H data structures for the folder you're looking at. + + The _p_o_s_t command has a `-debug' switch which does everything but + actually post the message for you. Instead of posting the draft, it + sends it to the standard output. Similarly, _s_e_n_d has a `-debug' switch + which gets passed to _p_o_s_t. + + Some _M_H commands look at envariables to determine debug-mode opera- + tion of certain new facilities. The current list of envariables is: + + MHFDEBUG OVERHEAD facility + MHLDEBUG mhl + MHPDEBUG pick + MHPOPDEBUG POP transactions + MHVDEBUG window management transactions + MHWDEBUG alternate-mailboxes + + + + _F_o_r_w_a_r_d_i_n_g _M_a_i_l + + The _f_o_r_w and _m_h_l commands have two switches, `-dashmunging' and + `-nodashmunging' which enable or disable the prepending of `- ' in for- + warded messages. To use `-nodashmunging', you must use an _m_h_l filter + file. + + + + _S_e_n_d + + The _s_e_n_d command has two switches, `-unique' and `-nounique', which + are useful to certain individuals who, for obscure reasons, do not use + draft-folders. + + "Distribution Carbon Copy" addresses may be specified in the _D_c_c: + header. This header is removed before posting the message,and a copy of + the message is distributed to each listed address. This could be + + -38- + + + + + + + + + + -39- + + + considered a form of Blind Carbon Copy which is best used for sending to + an address which would never reply (such as an auto-archiver). + + + + _P_o_s_t_i_n_g _M_a_i_l + + If you're running a version of _M_H which talks directly to an _S_M_T_P + server (or perhaps an advanced _M_M_D_F submit process), there are lots of + interesting switches for your amusement which _s_e_n_d and _p_o_s_t understand: + -mail Use the _M_A_I_L command (default) + -saml Use the _S_A_M_L command + -send Use the _S_E_N_D command + -soml Use the _S_O_M_L command + -snoop Watch the _S_M_T_P transaction + -client host Claim to be "host" when posting mail + -server host Post mail with "host" + + The last switch is to be useful when _M_H resides on small worksta- + tions (or PC:s) in a network--they can post their outgoing mail with a + local relay, and reduce the load on the local system. On POP client + hosts, the `-server host' switch is defaulted appropriately using the + SMTP search-list mechanism. The _w_h_o_m command understands the last three + switches. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _8. _C_O_N_F_I_G_U_R_A_T_I_O_N _O_P_T_I_O_N_S + + + + + + This manual was generated with the following configuration options + in effect: + + + ________________________________________________________________________ + + Generation Date November 30, 1993 + Primary Directory /usr/local/ + Secondary Directory /usr/local/lib/mh/ + Maildrop Location /usr/spool/mail/$USER + Transport System SendMail + ________________________________________________________________________ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -40- + + + + + + + + + + + + + _C_O_N_T_E_N_T_S + + + + + Section + + 1. INTRODUCTION ............................................... 1 + Scope of this document ....................................... 1 + Summary ...................................................... 1 + + 2. THE MTS INTERFACE .......................................... 3 + MH-TAILOR ................................................. 4 + MH-MTS .................................................... 10 + + 3. BBOARDS .................................................... 12 + BBoard Delivery .............................................. 12 + BBoards with the POP ......................................... 13 + BBoards with the NNTP ........................................ 14 + BBOARDS ................................................... 15 + BBAKA ..................................................... 16 + BBEXP ..................................................... 17 + BBOARDS ................................................... 18 + BBTAR ..................................................... 19 + + 4. POP ........................................................ 20 + POP ....................................................... 23 + POP ....................................................... 25 + POPAKA .................................................... 26 + POPAUTH ................................................... 27 + POPD ...................................................... 28 + POPWRD .................................................... 30 + + 5. MAIL FILTERING ............................................. 31 + MF ........................................................ 32 + RMAIL ..................................................... 34 + + 6. MH HACKING ................................................. 35 + MH-HACK ................................................... 36 + + 7. HIDDEN FEATURES ............................................ 38 + Debug Facilities ............................................. 38 + Forwarding Mail .............................................. 38 + Send ......................................................... 38 + Posting Mail ................................................. 39 + + 8. CONFIGURATION OPTIONS ...................................... 40 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THE RAND MH + + + MESSAGE HANDLING + + + SYSTEM: + + + ADMINISTRATOR'S GUIDE + + + + + + + UCI Version + + + + + + Marshall T. Rose + + + + + _F_i_r_s_t _E_d_i_t_i_o_n: + + _M_H _C_l_a_s_s_i_c + + (_N_o_t _t_o _b_e _c_o_n_f_u_s_e_d _w_i_t_h _a _w_e_l_l-_k_n_o_w_n _s_o_f_t _d_r_i_n_k) + + + + + + + + November 30, 1993 + + + + + + + + + + + + + + + + 6.8.3 #1[UCI] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/historical/MH-19910201.txt b/docs/historical/MH-19910201.txt new file mode 100644 index 0000000..28701cb --- /dev/null +++ b/docs/historical/MH-19910201.txt @@ -0,0 +1,11145 @@ + + + + + + + + + _d_i_s_c_a_r_d _t_h_i_s _p_a_g_e + + + + + The RAND _M_H + Message Handling System: + User's Manual + + UCI Version + + + February 1, 1991 + 6.7.1a #6[UCI] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +99 + + + + + + + + + + + + + _1. _I_N_T_R_O_D_U_C_T_I_O_N + + + +9 + Although people can travel cross-country in hours and can reach + others by telephone in seconds, communications still depend heavily upon + paper, most of which is distributed through the mails. + + There are several major reasons for this continued dependence on + written documents. First, a written document may be proofread and + corrected prior to its distribution, giving the author complete control + over his words. Thus, a written document is better than a telephone + conversation in this respect. Second, a carefully written document is + far less likely to be misinterpreted or poorly translated than a phone + conversation. Third, a signature offers reasonable verification of + authorship, which cannot be provided with media such as telegrams. + + However, the need for fast____, accurate, and reproducible document + distribution is obvious. One solution in widespread use is the telefax. + Another that is rapidly gaining popularity is electronic mail. Elec- + tronic mail is similar to telefax in that the data to be sent are digi- + tized, transmitted via phone lines, and turned back into a document at + the receiver. The advantage of electronic mail is in its compression + factor. Whereas a telefax must scan a page in very fine lines and send + all of the black and white information, electronic mail assigns charac- + ters fixed codes which can be transmitted as a few bits of information. + Telefax presently has the advantage of being able to transmit an arbi- + trary page, including pictures, but electronic mail is beginning to deal + with this problem. Electronic mail also integrates well with current + directions in office automation, allowing documents prepared with + sophisticated equipment at one site to be quickly transferred and + printed at another site. + + Currently, most electronic mail is intraorganizational, with mail + transfer remaining within one computer. As computer networking becomes + more common, however, it is becoming more feasible to communicate with + anyone whose computer can be linked to your own via a network. + + The pioneering efforts on general-purpose electronic mail were by + organizations using the DoD ARPAnet[1]. The capability to send messages + between computers existed before the ARPAnet was developed, but it was + used only in limited ways. With the advent of the ARPAnet, tools began + to be developed which made it convenient for individuals or organiza- + tions to distribute messages over broad geographic areas, using diverse + computer facilities. The interest and activity in message systems has + now reached such proportions that steps have been taken within the DoD + to coordinate and unify the development of military message systems. + The use of electronic mail is expected to increase dramatically in the + next few years. The utility of such systems in the command and control + and intelligence environments is clear, and applications in these areas + +9 + + + + + + + + + + -2- + + + will probably lead the way. As the costs for sending and handling elec- + tronic messages continue their rapid decrease, such uses can be expected + to spread rapidly into other areas and, of course, will not be limited + to the DoD. + + A message system provides tools that help users (individuals or + organizations) deal with messages in various ways. Messages must be + composed, sent, received, stored, retrieved, forwarded, and replied to. + Today's best interactive computer systems provide a variety of word- + processing and information handling capabilities. The message handling + facilities should be well integrated with the rest of the system, so as + to be a graceful extension of overall system capability. + + The message system described in this report, _M_H, provides most of + the features that can be found in other message systems and also incor- + porates some new ones. It has been built on the UNIX time-sharing sys- + tem[2], a popular operating system for the DEC PDP-11[1] and VAX-11 + classes of computers. A "secure" operating system similar to UNIX is + currently being developed[3], and that system will also run _M_H. + + This report provides a complete description of _M_H and thus may + serve as a user's manual, although parts of the report will be of + interest to non-users as well. Sections 2 and 3, the Overview and + Tutorial, present the key ideas of _M_H and will give those not familiar + with message systems an idea of what such systems are like. + + _M_H consists of a set of commands which use some special files and + conventions. The final section is divided into three parts. The first + part covers the information a user needs to know in addition to the com- + mands. Then, each of the _M_H commands is described in detail. Finally, + other obscure details are revealed. A summary of the commands is given + in Appendix A, and the syntax of message sequences is given in Appendix + B. + + A novel approach has been taken in the design of _M_H. Instead of + creating a large subsystem that appears as a single command to the user + (such as MS[4]), _M_H is a collection of separate commands which are run + as separate programs. The file and directory system of UNIX are used + directly. Messages are stored as individual files (datasets), and col- + lections of them are grouped into directories. In contrast, most other + message systems store messages in a complicated data structure within a + monolithic file. With the _M_H approach, UNIX commands can be interleaved + with commands invoking the functions of the message handler. Con- + versely, existing UNIX commands can be used in connection with messages. + For example, all the usual UNIX editing, text-formatting, and printing + facilities can be applied directly to individual messages. MH, there- + fore, consists of a relatively small amount of new code; it makes + + +9 [1] PDP and VAX are trademarks of Digital Equipment Corporation. + + +9 + + + + + + + + + + -3- + + + extensive use of other UNIX software to provide the capabilities found + in other message systems. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 + + + + + + + + + + + + + _2. _O_V_E_R_V_I_E_W + + + +9 + There are three main aspects of _M_H : the way messages are + stored (the message database), the user's profile (which directs how + certain actions of the message handler take place), and the commands for + dealing with messages. + + Under _M_H, each message is stored as a separate file. A user can + take any action with a message that he could with an ordinary file in + UNIX. A UNIX directory in which messages are stored is called a folder. + Each folder contains some standard entries to support the message- + handling functions. The messages in a folder have numerical names. + These folders (directories) are entries in a particular directory path, + described in the user profile, through which _M_H can find message fold- + ers. Using the UNIX "link" facility, it is possible for one copy of a + message to be "filed" in more than one folder, providing a message index + facility. Also, using the UNIX tree-structured file system, it is pos- + sible to have a folder within a folder, nested arbitrarily deep, and + have the full power of the _M_H commands available. + + Each user of _M_H has a user profile, a file in his $HOME (initial + login) directory called ._m_h__p_r_o_f_i_l_e. This profile contains several + pieces of information used by the _M_H commands: a path name to the direc- + tory that contains the message folders and parameters that tailor _M_H + commands to the individual user's requirements. There is also another + file, called the user context, which contains information concerning + which folder the user last referenced (the "current" folder). It also + contains most of the necessary state information concerning how the user + is dealing with his messages, enabling _M_H to be implemented as a set of + individual UNIX commands, in contrast to the usual approach of a monol- + ithic subsystem. + + In _M_H, incoming mail is appended to the end of a file in a system + spooling area for the user. This area is called the mail drop direc- + tory, and the file is called the user's mail drop. Normally when the + user logins in, s/he is informed of new mail (or the _M_H program _m_s_g_c_h_k + may be run). The user adds the new messages to his/her collection of _M_H + messages by invoking the command _i_n_c. The _i_n_c (incorporate) command + adds the new messages to a folder called "inbox", assigning them names + which are consecutive integers starting with the next highest integer + available in inbox. _i_n_c also produces a _s_c_a_n summary of the messages + thus incorporated. A folder can be compacted into a single file, for + easy storage, by using the _p_a_c_k_f command. Also, messages within a + folder can be sorted by date and time with the _s_o_r_t_m command. + + + There are four commands for examining the messages in a folder: + _s_h_o_w, _p_r_e_v, _n_e_x_t, and _s_c_a_n. The _s_h_o_w command displays a message in a + +9 -4- + + + + + + + + + + -5- + + + folder, _p_r_e_v displays the message preceding the current message, and + _n_e_x_t displays the message following the current message. _M_H lets the + user choose the program that displays individual messages. A special + program, _m_h_l, can be used to display messages according to the user's + preferences. The _s_c_a_n command summarizes the messages in a folder, nor- + mally producing one line per message, showing who the message is from, + the date, the subject, etc. + + The user may move a message from one folder to another with the + command _r_e_f_i_l_e. Messages may be removed from a folder by means of the + command _r_m_m. In addition, a user may query what the current folder is + and may specify that a new folder become the current folder, through the + command _f_o_l_d_e_r. All folders may be summarized with the _f_o_l_d_e_r_s command. + A message folder (or subfolder) may be removed by means of the command + _r_m_f. + + A set of messages based on content may be selected by use of the + command _p_i_c_k. This command searches through messages in a folder and + selects those that match a given set of criteria. These messages are + then bound to a "sequence" name for use with other _M_H commands. The + _m_a_r_k command manipulates these sequences. + + There are five commands enabling the user to create new messages + and send them: _c_o_m_p, _d_i_s_t, _f_o_r_w, _r_e_p_l, and _s_e_n_d. The _c_o_m_p command pro- + vides the facility for the user to compose a new message; _d_i_s_t redistri- + butes mail to additional addressees; _f_o_r_w enables the user to forward + messages; and _r_e_p_l facilitates the generation of a reply to an incoming + message. The last three commands may optionally annotate the original + message. Messages may be arbitrarily annotated with the _a_n_n_o command. + Once a draft has been constructed by one of the four above composition + programs, a user-specifiable program is run to query the user as to the + disposition of the draft prior to sending. _M_H provides the simple _w_h_a_t_- + _n_o_w program to start users off. If a message is not sent directly by + one of these commands, it may be sent at a later time using the command + _s_e_n_d. _M_H allows the use of any UNIX editor when composing a message. + For rapid entry, a special editor, _p_r_o_m_p_t_e_r, is provided. For programs, + a special mail-sending program, _m_h_m_a_i_l, is provided. + + _M_H supports a personal aliasing facility which gives users the + capability to considerably shorten address typein and use meaningful + names for addresses. The _a_l_i program can be used to query _M_H as to the + expansion of a list of aliases. After composing a message, but prior to + sending, the _w_h_o_m command can be used to determine exactly who a message + would go to. + + _M_H provides a natural interface for telling the user's shell the + names of _M_H messages and folders. The _m_h_p_a_t_h program achieves this + capability. + + Finally, _M_H supports the UCI BBoards facility. _b_b_c can be used to + query the status of a group of BBoards, while _m_s_h can be used to read + them. The _b_u_r_s_t command can be used to "shred" digests of messages into + + + + + + + + + + + + -6- + + + individual messages. + + All of the elements summarized above are described in more detail + in the following sections. Many of the normal facilities of UNIX pro- + vide additional capabilities for dealing with messages in various ways. + For example, it is possible to print messages on the line-printer + without requiring any additional code within _M_H . Using standard UNIX + facilities, any terminal output can be redirected to a file for repeated + or future viewing. In general, the flexibility and capabilities of the + UNIX interface with the user are preserved as a result of the integra- + tion of _M_H into the UNIX structure. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 + + + + + + + + + + + + + _3. _T_U_T_O_R_I_A_L + + + +9 + This tutorial provides a brief introduction to the _M_H commands. It + should be sufficient to allow the user to read his mail, do some simple + manipulations of it, and create and send messages. + + A message has two major pieces: the header and the body. The body + consists of the text of the message (whatever you care to type in). It + follows the header and is separated from it by an empty line. (When you + compose a message, the form that appears on your terminal shows a line + of dashes after the header. This is for convenience and is replaced by + an empty line when the message is sent.) The header is composed of + several components, including the subject of the message and the person + to whom it is addressed. Each component starts with a name and a colon; + components must not start with a blank. The text of the component may + take more than one line, but each continuation line must start with a + blank. Messages typically have "To:", "cc:", and "Subject:" components. + When composing a message, you should include the "To:" and "Subject:" + components; the "cc:" (for people you want to send copies to) is not + necessary. + + The basic _M_H commands are _i_n_c, _s_c_a_n, _s_h_o_w, _n_e_x_t, _p_r_e_v, _r_m_m, _c_o_m_p, + and _r_e_p_l. These are described below. + + _i_n_c + + When you get the message "You have mail", type the command _i_n_c. + You will get a "scan listing" such as: + + 7+ 7/13 Cas revival of measurement work + 8 10/ 9 Norm NBS people and publications + 9 11/26 To:norm question < _x will copy the message to file x. + _s_h_o_w | _l_p_r will print the message, using the _l_p_r command. + _n_e_x_t will show the message that follows the current message. + _p_r_e_v will show the message previous to the current message. + _r_m_m will remove the current message. + _r_m_m _3 will remove message 3. + + + _c_o_m_p + + The _c_o_m_p command puts you in the editor to write or edit a message. + Fill in or delete the "To:", "cc:", and "Subject:" fields, as appropri- + ate, and type the body of the message. Then exit normally from the edi- + tor. You will be asked "What now?". Type a carriage return to see the + options. Typing send will cause the message to be sent; typing quit + will cause an exit from _c_o_m_p, with the message draft saved. + + If you quit without sending the message, it will be saved in a file + called /Mail/draft (where is your $HOME directory). You + can resume editing the message later with "comp -use"; or you can send + the message later, using the _s_e_n_d command. + + _c_o_m_p -_e_d_i_t_o_r _p_r_o_m_p_t_e_r + + This command uses a different editor and is useful for preparing + "quick and dirty" messages. It prompts you for each component of the + header. Type the information for that component, or type a carriage + return to omit the component. After that, type the body of the message. + Backspacing is the only form of editing allowed with this editor. When + the body is complete, type a carriage return followed by (usually + ). This completes the initial preparation of the message; from + then on, use the same procedures as with _c_o_m_p (above). + + + + + +9 +9 + + + + + + + + + + -9- + + + _r_e_p_l + _r_e_p_l n + + This command makes up an initial message form with a header that is + appropriate for replying to an existing message. The message being + answered is the current message if no message number is mentioned, or n + if a number is specified. After the header is completed, you can finish + the message as in _c_o_m_p (above). + + This is enough information to get you going using _M_H. There are + more commands, and the commands described here have more features. Sub- + sequent sections explain _M_H in complete detail. The system is quite + powerful if you want to use its sophisticated features, but the forego- + ing commands suffice for sending and receiving messages. + + There are numerous additional capabilities you may wish to explore. + For example, the _p_i_c_k command will select a subset of messages based on + specified criteria such as sender and/or subject. Groups of messages + may be designated, as described in Sec. IV, under Message Naming. The + file ._m_h__p_r_o_f_i_l_e can be used to tailor your use of the message system to + your needs and preferences, as described in Sec. IV, under The User Pro- + file. In general, you may learn additional features of the system + selectively, according to your requirements, by studying the relevant + sections of this manual. There is no need to learn all the details of + the system at once. + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 + + + + + + + + + + + + + _4. _D_E_T_A_I_L_E_D _D_E_S_C_R_I_P_T_I_O_N + + + +9 + This section describes the _M_H system in detail, including the com- + ponents of the user profile, the conventions for message naming, and + some of the other _M_H conventions. Readers who are generally familiar + with computer systems will be able to follow the principal ideas, + although some details may be meaningful only to those familiar with + UNIX. + + +9 _T_H_E _U_S_E_R _P_R_O_F_I_L_E + + The first time an _M_H command is issued by a new user, the system + prompts for a "Path" and creates an _M_H "profile". + + Each _M_H user has a profile which contains tailoring information for + each individual program. Other profile entries control the _M_H path + (where folders and special files are kept), folder and message protec- + tions, editor selection, and default arguments for each _M_H program. + Each user of _M_H also has a context file which contains current state + information for the _M_H package (the location of the context file is kept + in the user's _M_H directory, or may be named in the user profile). When + a folder becomes the current folder, it is recorded in the user's con- + text. (Other state information is kept in the context file, see the + manual entry for _m_h-_p_r_o_f_i_l_e (5) for more details.) In general, the term + "profile entry" refer to entries in either the profile or context file. + Users of _M_H needn't worry about the distinction, _M_H handles these things + automatically. + + The _M_H profile is stored in the file ._m_h__p_r_o_f_i_l_e in the user's + $HOME directory[1]. It has the format of a message without any body. + That is, each profile entry is on one line, with a keyword followed by a + colon (:) followed by text particular to the keyword. + => _T_h_i_s _f_i_l_e _m_u_s_t _n_o_t _h_a_v_e _b_l_a_n_k _l_i_n_e_s. + The keywords may have any combination of upper and lower case. (See the + information of _m_h-_m_a_i_l later on in this manual for a description of mes- + sage formats.) + + For the average _M_H user, the only profile entry of importance is + "Path". Path specifies a directory in which _M_H folders and certain + files such as "draft" are found. The argument to this keyword must be a + legal UNIX path that names an existing directory. If this path is not + + +9 [1] By defining the envariable $MH, you can specify an alternate pro- + file to be used by _M_H commands. + + +9 -10- + + + + + + + + + + -11- + + + absolute (i.e., does not begin with a / ), it will be presumed to start + from the user's $HOME directory. All folder and message references + within _M_H will relate to this path unless full path names are used. + + Message protection defaults to 644, and folder protection to 711. + These may be changed by profile entries "Msg-Protect" and "Folder- + Protect", respectively. The argument to these keywords is an octal + number which is used as the UNIX file mode[2]. + + When an _M_H program starts running, it looks through the user's pro- + file for an entry with a keyword matching the program's name. For exam- + ple, when _c_o_m_p is run, it looks for a "comp" profile entry. If one is + found, the text of the profile entry is used as the default switch set- + ting until all defaults are overridden by explicit switches passed to + the program as arguments. Thus the profile entry + "comp: -form standard.list" would direct _c_o_m_p to use the file + "standard.list" as the message skeleton. If an explicit form switch is + given to the _c_o_m_p command, it will override the switch obtained from the + profile. + + In UNIX, a program may exist under several names, either by linking + or aliasing. The actual invocation name is used by an _M_H program when + scanning for its profile defaults[3]. Thus, each _M_H program may have + several names by which it can be invoked, and each name may have a dif- + ferent set of default switches. For example, if _c_o_m_p is invoked by the + name _i_c_o_m_p, the profile entry "icomp" will control the default switches + for this invocation of the _c_o_m_p program. This provides a powerful + definitional facility for commonly used switch settings. + + The default editor for editing within _c_o_m_p, _r_e_p_l, _f_o_r_w, and _d_i_s_t, + is usually _p_r_o_m_p_t_e_r, but might be something else at your site, such as + /_u_s_r/_u_c_b/_e_x or /_b_i_n/_e. A different editor may be used by specifying the + profile entry "Editor: ". The argument to "Editor" is the name of an + executable program or shell command file which can be found via the + user's $PATH defined search path, excluding the current directory. The + "Editor:" profile specification may in turn be overridden by a + `-editor ' profile switch associated with _c_o_m_p, _r_e_p_l, _f_o_r_w, or + _d_i_s_t. Finally, an explicit editor switch specified with any of these + four commands will have ultimate precedence. + + + +9 [2] See _c_h_m_o_d (1) in the _U_N_I_X _P_r_o_g_r_a_m_m_e_r'_s _M_a_n_u_a_l [5]. + [3] Unfortunately, the shell does not preserve aliasing information + when calling a program, hence if a program is invoked by an alias dif- + ferent than its name, the program will examine the profile entry for + it's name, not the alias that the user invoked it as. The correct solu- + tion is to create a (soft) link in your $_H_O_M_E/_b_i_n directory to the _M_H + program of your choice. By giving this link a different name, you can + use an alternate set of defaults for the command. + + +9 + + + + + + + + + + -12- + + + During message composition, more than one editor may be used. For + example, one editor (such as _p_r_o_m_p_t_e_r ) may be used initially, and a + second editor may be invoked later to revise the message being composed + (see the discussion of _c_o_m_p in Section 5 for details). A profile entry + "-next: " specifies the name of the editor to be + used after a particular editor. Thus "comp: -e prompter" causes the + initial text to be collected by _p_r_o_m_p_t_e_r, and the profile entry + "prompter-next: ed" names ed as the editor to be invoked for the next + round of editing. + + Some of the _M_H commands, such as _s_h_o_w, can be used on message fold- + ers owned by others, if those folders are readable. However, you cannot + write in someone else's folder. All the _M_H command actions not requir- + ing write permission may be used with a "read-only" folder. + + Table 1 lists examples of some of the currently defined profile + entries, typical arguments, and the programs that reference the entries. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 + + + + + + + + + + -13- + + + Table 1 +9 PROFILE COMPONENTS + ______________________________________________________ + + _M_H Programs that + Keyword and Argument use Component9______________________________________________________ +9 Path: Mail All + Current-Folder: inbox Most + Editor: /usr/ucb/ex _c_o_m_p, _d_i_s_t, _f_o_r_w, _r_e_p_l + Msg-Protect: 644 _i_n_c + Folder-Protect: 711 _i_n_c, _p_i_c_k, _r_e_f_i_l_e + : default switches All + prompter-next: ed _c_o_m_p, _d_i_s_t, _f_o_r_w, _r_e_p_l + ______________________________________________________ + + + Path should______ be present. Current-Folder is maintained automatically + by many _M_H commands (see the Context sections of the individual commands + in Sec. IV). All other entries are optional, defaulting to the values + described above. + + +9 _M_E_S_S_A_G_E _N_A_M_I_N_G + + Messages may be referred to explicitly or implicitly when using _M_H + commands. A formal syntax of message names is given in Appendix B, but + the following description should be sufficient for most _M_H users. Some + details of message naming that apply only to certain commands are + included in the description of those commands. + + Most of the _M_H commands accept arguments specifying one or more + folders, and one or more messages to operate on. The use of the word + "msg" as an argument to a command means that exactly one message name + may be specified. A message name may be a number, such as 1, 33, or + 234, or it may be one of the "reserved" message names: first, last, + prev, next, and cur. (As a shorthand, a period (.) is equivalent to + cur.) The meanings of these names are straightforward: "first" is the + first message in the folder; "last" is the last message in the folder; + "prev" is the message numerically previous to the current message; + "next" is the message numerically following the current message; "cur" + (or ".") is the current message in the folder. In addition, _M_H supports + user-defined-sequences; see the description of the _m_a_r_k command for more + information. + + The default in commands that take a "msg" argument is always "cur". + + The word "msgs" indicates that several messages may be specified. + Such a specification consists of several message designations separated + by spaces. A message designation is either a message name or a message + range. A message range is a specification of the form name1-name2 or + + + + + + + + + + + + -14- + + + name1:n, where name1 and name2 are message names and n is an integer. + The first form designates all the messages from name1 to name2 + inclusive; this must be a non-empty range. The second form specifies up + to n messages, starting with name1 if name1 is a number, or first, cur, + or next, and ending with name1 if name1 is last or prev. This interpre- + tation of n is overridden if n is preceded by a plus sign or a minus + sign; +n always means up to n messages starting with name1, and -n + always means up to n messages ending with name1. Repeated specifica- + tions of the same message have the same effect as a single specification + of the message. Examples of specifications are: + + + 1 5 7-11 22 + first 6 8 next + first-10 + last:5 + + + The message name "all" is a shorthand for "first-last", indicating + all of the messages in the folder. + + In commands that accept "msgs" arguments, the default is either cur + or all, depending on which makes more sense. + + In all of the _M_H commands, a plus sign preceding an argument indi- + cates a folder name. Thus, "+inbox" is the name of the user's standard + inbox. If an explicit folder argument is given to an _M_H command, it + will become the current folder (that is, the "Current-Folder:" entry in + the user's profile will be changed to this folder). In the case of the + _r_e_f_i_l_e command, which can have multiple output folders, a new source + folder (other than the default current folder) is specified by + `-src +folder'. + + +9 _O_T_H_E_R _M_H _C_O_N_V_E_N_T_I_O_N_S + + One very powerful feature of _M_H is that the _M_H commands may be + issued from any current directory, and the proper path to the appropri- + ate folder(s) will be taken from the user's profile. If the _M_H path is + not appropriate for a specific folder or file, the automatic prepending + of the _M_H path can be avoided by beginning a folder or file name with /, + or with ./ or ../ component. Thus any specific absolute path may be + specified along with any path relative to the current working directory. + + Arguments to the various programs may be given in any order, with + the exception of a few switches whose arguments must follow immediately, + such as `-src +folder' for _r_e_f_i_l_e. + + Whenever an _M_H command prompts the user, the valid options will be + listed in response to a . (The first of the listed options is + the default if end-of-file is encountered, such as from a command file.) + +9 + + + + + + + + + + -15- + + + A valid response is any _u_n_i_q_u_e abbreviation of one of the listed + options. + + Standard UNIX documentation conventions are used in this report to + describe _M_H command syntax. Arguments enclosed in brackets ([ ]) are + optional; exactly one of the arguments enclosed within braces ({ }) must + be specified, and all other arguments are required. The use of ellipsis + dots (...) indicates zero or more repetitions of the previous item. For + example, "+folder ..." would indicate that one or more "+folder" argu- + ments is required and "[+folder ...]" indicates that 0 or more "+folder" + arguments may be given. + + _M_H departs from UNIX standards by using switches that consist of + more than one character, e.g. `-header'. To minimize typing, only a + unique abbreviation of a switch need be typed; thus, for `-header', + `-hea' is probably sufficient, depending on the other switches the com- + mand accepts. Each _M_H program accepts the switch `-help' (which must be + spelled out fully) and produces a syntax description and a list of + switches. In the list of switches, parentheses indicate required char- + acters. For example, all `-help' switches will appear as "-(help)", + indicating that no abbreviation is accepted. Furthermore, the `-help' + switch tells the version of the _M_H program you invoked. + + Many _M_H switches have both on and off forms, such as `-format' and + `-noformat'. In many of the descriptions which follow, only one form is + defined; the other form, often used to nullify profile switch settings, + is assumed to be the opposite. + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 + + + + + + + + + + -16- + + + _M_H _C_O_M_M_A_N_D_S + + The _M_H package comprises several programs: + + ali (1) - list mail aliases + anno (1) - annotate messages + bbc (1) - check on BBoards + bboards (1) - the UCI BBoards facility + burst (1) - explode digests into messages + comp (1) - compose a message + dist (1) - redistribute a message to additional addresses + folder (1) - set/list current folder/message + folders (1) - list all folders + forw (1) - forward messages + inc (1) - incorporate new mail + mark (1) - mark messages + mhl (1) - produce formatted listings of MH messages + mhmail (1) - send or read mail + mhook (1) - MH receive-mail hooks + mhpath (1) - print full pathnames of MH messages and folders + msgchk (1) - check for messages + msh (1) - MH shell (and BBoard reader) + next (1) - show the next message + packf (1) - compress a folder into a single file + pick (1) - select messages by content + prev (1) - show the previous message + prompter (1) - prompting editor front end + rcvstore (1) - incorporate new mail asynchronously + refile (1) - file messages in other folders + repl (1) - reply to a message + rmf (1) - remove folder + rmm (1) - remove messages + scan (1) - produce a one line per message scan listing + send (1) - send a message + show (1) - show (list) messages + sortm (1) - sort messages + vmh (1) - visual front-end to MH + whatnow (1) - prompting front-end for send + whom (1) - report to whom a message would go + + + These programs are described below. The form of the descriptions + conforms to the standard form for the description of UNIX commands. + + + + + + + + +9 +9 + + + + + + + + + + ALI(1) -17- ALI(1) + + + _N_A_M_E + ali - list mail aliases + + _S_Y_N_O_P_S_I_S + ali [-alias aliasfile] [-list] [-nolist] [-normalize] + [-nonormalize] [-user] [-nouser] aliases ... [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _A_l_i searches the named mail alias files for each of the given + _a_l_i_a_s_e_s. It creates a list of addresses for those _a_l_i_a_s_e_s, and + writes that list on standard output. If the `-list' option is + specified, each address appears on a separate line; otherwise, the + addresses are separated by commas and printed on as few lines as + possible. + + The `-user' option directs _a_l_i to perform its processing in an + inverted fashion: instead of listing the addresses that each given + alias expands to, _a_l_i will list the aliases that expand to each + given address. If the `-normalize' switch is given, _a_l_i will try + to track down the official hostname of the address. + + The file specified by the profile entry "Aliasfile:" and any addi- + tional alias files given by the `-alias aliasfile' switch will be + read. Each _a_l_i_a_s is processed as described in _m_h-_a_l_i_a_s (5). + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /etc/passwd List of users + /etc/group List of groups + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Aliasfile: For a default alias file + + + _S_e_e _A_l_s_o + mh-alias(5) + + + _D_e_f_a_u_l_t_s + `-alias /usr/local/lib/mh/MailAliases' + `-nolist' + `-nonormalize' + `-nouser' + + + _C_o_n_t_e_x_t + None + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + ALI(1) -18- ALI(1) + + + _B_u_g_s + The `-user' option with `-nonormalize' is not entirely accurate, as + it does not replace local nicknames for hosts with their official + site names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + ANNO(1) -19- ANNO(1) + + + _N_A_M_E + anno - annotate messages + + _S_Y_N_O_P_S_I_S + anno [+folder] [msgs] [-component field] [-inplace] [-noinplace] + [-date] [-nodate] [-text body] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _A_n_n_o annotates the specified messages in the named folder using the + field and body. Annotation is optionally performed by _d_i_s_t, _f_o_r_w, + and _r_e_p_l, to keep track of your distribution of, forwarding of, and + replies to a message. By using _a_n_n_o, you can perform arbitrary + annotations of your own. Each message selected will be annotated + with the lines + + field: date + field: body + + The `-nodate' switch inhibits the date annotation, leaving only the + body annotation. The `-inplace' switch causes annotation to be + done in place in order to preserve links to the annotated message. + + The field specified should be a valid 822-style message field name, + which means that it should consist of alphanumerics (or dashes) + only. The body specified is arbitrary text. + + If a `-component field' is not specified when _a_n_n_o is invoked, _a_n_n_o + will prompt the user for the name of field for the annotation. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + + + _S_e_e _A_l_s_o + dist (1), forw (1), repl (1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to cur + `-noinplace' + `-date' + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + ANNO(1) -20- ANNO(1) + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. The first + message annotated will become the current message. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + BBC(1) -21- BBC(1) + + + _N_A_M_E + bbc - check on BBoards + + _S_Y_N_O_P_S_I_S + bbc [bboards ...] [-topics] [-check] [-read] [-quiet] [-verbose] + [-archive] [-noarchive] [-protocol] [-noprotocol] + [-mshproc program] [switches for _m_s_h_p_r_o_c] [-rcfile rcfile] + [-norcfile] [-file BBoardsfile] [-user BBoardsuser] + [-host host] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _b_b_c is a BBoard reading/checking program that interfaces to the + BBoard channel. + + The _b_b_c program has three action switches which direct its opera- + tion: + + The `-read' switch invokes the _m_s_h program on the named _B_B_o_a_r_d_s. + If you also specify the `-archive' switch, then _b_b_c will invoke + the _m_s_h program on the archives of the named _B_B_o_a_r_d_s. If no + _B_B_o_a_r_d_s are given on the command line, and you specified + `-archive', _b_b_c will not read your `bboards' profile entry, but + will read the archives of the "system" _B_B_o_a_r_d instead. + + The `-check' switch types out status information for the named + _B_B_o_a_r_d_s. _b_b_c can print one of several messages depending on the + status of both the BBoard and the user's reading habits. As with + each of these messages, the number given is the item number of the + last item placed in the BBoard. This number (which is marked in + the messages as the "BBoard-Id") is ever increasing. Hence, when + _b_b_c says "n items", it really means that the highest BBoard-Id is + "n". There may, or may not actually be "n" items in the BBoard. + Some common messages are: + + BBoard -- n items unseen + This message tells how many items the user has not yet + seen. When invoked with the `-quiet' switch, this is the + only informative line that _b_b_c will possibly print out. + + BBoard -- empty + The BBoard is empty. + + BBoard -- n items (none seen) + The BBoard has items in it, but the user hasn't seen any. + + BBoard -- n items (all seen) + The BBoard is non-empty, and the user has seen everything + in it. + + BBoard -- n items seen out of m + The BBoard has at most m-n items that the user has not + + [mh.6] MH.6.7 UCI version + + + + + + + + + + BBC(1) -22- BBC(1) + + + seen. + + The `-topics' switch directs _b_b_c to print three items about the + named _B_B_o_a_r_d_s: it's official name, the number of items present, and + the date and time of the last update. If no _B_B_o_a_r_d_s are named, + then all BBoards are listed. If the `-verbose' switch is given, + more information is output. + + The `-quiet' switch specifies that _b_b_c should be silent if no + _B_B_o_a_r_d_s are found with new information. The `-verbose' switch + specifies that _b_b_c is to consider you to be interested in _B_B_o_a_r_d_s + that you've already seen everything in. + + To override the default _m_s_h_p_r_o_c and the profile entry, use the + `-mshproc program' switch. Any arguments not understood by _b_b_c are + passed to this program. The `-protocol' switch tells _b_b_c that your + _m_s_h_p_r_o_c knows about the special _b_b_c protocol for reporting back + information. _m_s_h (1), the default _m_s_h_p_r_o_c, knows all about this. + + The `-file BBoardsfile' switch tells _b_b_c to use a non-standard + _B_B_o_a_r_d_s file when performing its calculations. Similarly, the + `-user BBoardsuser' switch tells _b_b_c to use a non-standard user- + name. Both of these switches are useful for debugging a new + _B_B_o_a_r_d_s or _P_O_P file. + + If the local host is configured as an NNTP BBoards client, or if + the `-host host' switch is given, then _b_b_c will query the NNTP ser- + vice host as to the status of the BBoards. For NNTP BBoards + clients, the `-user user' and the `-rpop' switches are ignored. + + The `-rcfile rcfile' switch overrides the use of ._b_b_r_c for + user-specific BBoards information. If the value given to the + switch is not absolute, (i.e., does not begin with a / ), it will + be presumed to start from the current working directory. If this + switch is not given (or the `-norcfile' switch is given), then _b_b_c + consults the envariable $MHBBRC, and honors it similarly. If this + envariable is not set, then the file ._b_b_r_c in the user's $HOME + directory is used. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + $HOME/.bbrc BBoard information + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + bboards: To specify interesting BBoards + mshproc: Program to read a given BBoard + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + BBC(1) -23- BBC(1) + + + _S_e_e _A_l_s_o + bbl(1), bboards(1), msh(1) + + + _D_e_f_a_u_l_t_s + `-read' + `-noarchive' + `-protocol' + `bboards' defaults to "system" + `-file /usr/bboards/BBoards' + `-user bboards' + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + The `-user' switch takes effect only if followed by the `-file' + switch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + BBOARDS(1) -24- BBOARDS(1) + + + _N_A_M_E + bboards - the UCI BBoards facility + + _S_Y_N_O_P_S_I_S + bbc [-check] [-read] bboards ... [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + The home directory of _b_b_o_a_r_d_s is where the BBoard system is kept. + This documentation describes some of the nuances of the BBoard sys- + tem. + + BBoards, BBoard-IDs + A BBoard is just a file containing a group of messages relat- + ing to the same topic. These files live in the ~bboards home + directory. Each message in a BBoard file has in its header + the line "BBoard-Id: n", where "n" is an ascending decimal + number. This id-number is unique for each message in a + BBoards file. It should NOT be confused with the message + number of a message, which can change as messages are removed + from the BBoard. + + BBoard Handling + To read BBoards, use the _b_b_c and _m_s_h programs. The _m_s_h com- + mand is a monolithic program which contains all the func- + tionality of _M_H in a single program. The `-check' switch to + _b_b_c lets you check on the status of BBoards, and the `-read' + switch tells _b_b_c to invoke _m_s_h to read those BBoards. + + Creating a BBoard + Both public, and private BBoards are supported. Contact the + mail address _P_o_s_t_M_a_s_t_e_r if you'd like to have a BBoard + created. + + BBoard addresses + Each BBoard has associated with it 4 addresses, these are (for + the ficticious BBoard called ``hacks''): + hacks : The Internet wide distribution list. + dist-hacks : The local BBoard. + hacks-request : The people responsible for the BBoard at the + Internet level. + local-hacks-request : The people responsible for the BBoard + locally. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + $HOME/.bbrc BBoard information + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + BBOARDS(1) -25- BBOARDS(1) + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + bboards: To specify interesting BBoards + mshproc: Program to read a given BBoard + + + _S_e_e _A_l_s_o + bbc(1), bbl(1), bbleader(1), msh(1) + + + _D_e_f_a_u_l_t_s + The default bboard is "system" + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + BURST(1) -26- BURST(1) + + + _N_A_M_E + burst - explode digests into messages + + _S_Y_N_O_P_S_I_S + burst [+folder] [msgs] [-inplace] [-noinplace] [-quiet] [-noquiet] + [-verbose] [-noverbose] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _B_u_r_s_t considers the specified messages in the named folder to be + Internet digests, and explodes them in that folder. + + If `-inplace' is given, each digest is replaced by the "table of + contents" for the digest (the original digest is removed). _B_u_r_s_t + then renumbers all of the messages following the digest in the + folder to make room for each of the messages contained within the + digest. These messages are placed immediately after the digest. + + If `-noinplace' is given, each digest is preserved, no table of + contents is produced, and the messages contained within the digest + are placed at the end of the folder. Other messages are not tam- + pered with in any way. + + The `-quiet' switch directs _b_u_r_s_t to be silent about reporting mes- + sages that are not in digest format. + + The `-verbose' switch directs _b_u_r_s_t to tell the user the general + actions that it is taking to explode the digest. + + It turns out that _b_u_r_s_t works equally well on forwarded messages + and blind-carbon-copies as on Internet digests, provided that the + former two were generated by _f_o_r_w or _s_e_n_d. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Msg-Protect: To set mode when creating a new message + + + _S_e_e _A_l_s_o + _P_r_o_p_o_s_e_d _S_t_a_n_d_a_r_d _f_o_r _M_e_s_s_a_g_e _E_n_c_a_p_s_u_l_a_t_i_o_n (aka RFC-934), + inc(1), msh(1), pack(1) + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + BURST(1) -27- BURST(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to cur + `-noinplace' + `-noquiet' + `-noverbose' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. If `-in- + place' is given, then the first message burst becomes the current + message. This leaves the context ready for a _s_h_o_w of the table of + contents of the digest, and a _n_e_x_t to see the first message of the + digest. If `-noinplace' is given, then the first message extracted + from the first digest burst becomes the current message. This + leaves the context in a similar, but not identical, state to the + context achieved when using `-inplace'. + + + _B_u_g_s + The _b_u_r_s_t program enforces a limit on the number of messages which + may be _b_u_r_s_t from a single message. This number is on the order of + 1000 messages. There is usually no limit on the number of messages + which may reside in the folder after the _b_u_r_s_ting. + + Although _b_u_r_s_t uses a sophisticated algorithm to determine where + one encapsulated message ends and another begins, not all digesti- + fying programs use an encapsulation algorithm. In degenerate + cases, this usually results in _b_u_r_s_t finding an encapsulation boun- + dary prematurely and splitting a single encapsulated message into + two or more messages. These erroneous digestifying programs should + be fixed. + + Furthermore, any text which appears after the last encapsulated + message is not placed in a seperate message by _b_u_r_s_t. In the case + of digestified messages, this text is usally an "End of digest" + string. As a result of this possibly un-friendly behavior on the + part of _b_u_r_s_t, note that when the `-inplace' option is used, this + trailing information is lost. In practice, this is not a problem + since correspondents usually place remarks in text prior to the + first encapsulated message, and this information is not lost. + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + COMP(1) -28- COMP(1) + + + _N_A_M_E + comp - compose a message + + _S_Y_N_O_P_S_I_S + comp [+folder] [msg] [-draftfolder +folder] [-draftmessage msg] + [-nodraftfolder] [-editor editor] [-noedit] [-file file] + [-form formfile] [-use] [-nouse] [-whatnowproc program] + [-nowhatnowproc] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _C_o_m_p is used to create a new message to be mailed. It copies a + message form to the draft being composed and then invokes an editor + on the draft (unless `-noedit' is given, in which case the initial + edit is suppressed). + + The default message form contains the following elements: + + To: + cc: + Subject: + -------- + + If the file named "components" exists in the user's MH directory, + it will be used instead of this form. The file specified by + `-form formfile' will be used if given. You may also start _c_o_m_p + using the contents of an existing message as the form. If you sup- + ply either a `+folder' or `msg' argument, that message will be used + as the form. You may not supply both a `-form formfile' and a + `+folder' or `msg' argument. The line of dashes or a blank line + must be left between the header and the body of the message for the + message to be identified properly when it is sent (see _s_e_n_d (1)). + The switch `-use' directs _c_o_m_p to continue editing an already + started message. That is, if a _c_o_m_p (or _d_i_s_t, _r_e_p_l, or _f_o_r_w ) is + terminated without sending the draft, the draft can be edited again + via "comp -use". + + If the draft already exists, _c_o_m_p will ask you as to the disposi- + tion of the draft. A reply of quit will abort _c_o_m_p, leaving the + draft intact; replace will replace the existing draft with the + appropriate form; list will display the draft; use will use the + draft for further composition; and refile +folder will file the + draft in the given folder, and give you a new draft with the + appropriate form. (The `+folder' argument to refile is required.) + + The `-draftfolder +folder' and `-draftmessage msg' switches invoke + the _M_H draft folder facility. This is an advanced (and highly use- + ful) feature. Consult the Advanced Features section of the _M_H + manual for more information. + + The `-file file' switch says to use the named file as the message + draft. + + [mh.6] MH.6.7 UCI version + + + + + + + + + + COMP(1) -29- COMP(1) + + + The `-editor editor' switch indicates the editor to use for the + initial edit. Upon exiting from the editor, _c_o_m_p will invoke the + _w_h_a_t_n_o_w program. See _w_h_a_t_n_o_w (1) for a discussion of available + options. The invocation of this program can be inhibited by using + the `-nowhatnowproc' switch. (In truth of fact, it is the _w_h_a_t_n_o_w + program which starts the initial edit. Hence, `-nowhatnowproc' + will prevent any edit from occurring.) + + _F_i_l_e_s + /usr/local/lib/mh/components The message skeleton + or /components Rather than the standard skeleton + $HOME/.mh_profile The user profile + /draft The draft file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Draft-Folder: To find the default draft-folder + Editor: To override the default editor + Msg-Protect: To set mode when creating a new message + (draft) + fileproc: Program to refile the message + whatnowproc: Program to ask the "What now?" questions + + + _S_e_e _A_l_s_o + dist(1), forw(1), repl(1), send(1), whatnow(1), mh-profile(5) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msg' defaults to the current message + `-nodraftfolder' + `-nouse' + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + If _w_h_a_t_n_o_w_p_r_o_c is _w_h_a_t_n_o_w, then _c_o_m_p uses a built-in _w_h_a_t_n_o_w, it + does not actually run the _w_h_a_t_n_o_w program. Hence, if you define + your own _w_h_a_t_n_o_w_p_r_o_c, don't call it _w_h_a_t_n_o_w since _c_o_m_p won't run + it. + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + DIST(1) -30- DIST(1) + + + _N_A_M_E + dist - redistribute a message to additional addresses + + _S_Y_N_O_P_S_I_S + dist [+folder] [msg] [-annotate] [-noannotate] + [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [-editor editor] [-noedit] [-form formfile] [-inplace] + [-noinplace] [-whatnowproc program] [-nowhatnowproc] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _D_i_s_t is similar to _f_o_r_w. It prepares the specified message for + redistribution to addresses that (presumably) are not on the origi- + nal address list. + + The default message form contains the following elements: + + Resent-To: + Resent-cc: + + If the file named "distcomps" exists in the user's MH directory, it + will be used instead of this form. In either case, the file speci- + fied by `-form formfile' will be used if given. The form used will + be prepended to the message being resent. + + If the draft already exists, _d_i_s_t will ask you as to the disposi- + tion of the draft. A reply of quit will abort _d_i_s_t, leaving the + draft intact; replace will replace the existing draft with a blank + skeleton; and list will display the draft. + + Only those addresses in "Resent-To:", "Resent-cc:", and + "Resent-Bcc:" will be sent. Also, a "Resent-Fcc: folder" will be + honored (see _s_e_n_d (1)). Note that with _d_i_s_t, the draft should con- + tain only "Resent-xxx:" fields and no body. The headers and the + body of the original message are copied to the draft when the mes- + sage is sent. Use care in constructing the headers for the redis- + tribution. + + If the `-annotate' switch is given, the message being distributed + will be annotated with the lines: + + Resent: date + Resent: addrs + + where each address list contains as many lines as required. This + annotation will be done only if the message is sent directly from + _d_i_s_t. If the message is not sent immediately from _d_i_s_t, "comp + -use" may be used to re-edit and send the constructed message, but + the annotations won't take place. The '-inplace' switch causes + annotation to be done in place in order to preserve links to the + annotated message. +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + DIST(1) -31- DIST(1) + + + See _c_o_m_p (1) for a description of the `-editor' and `-noedit' + switches. Note that while in the editor, the message being resent + is available through a link named "@" (assuming the default _w_h_a_t_- + _n_o_w_p_r_o_c ). In addition, the actual pathname of the message is + stored in the envariable $editalt, and the pathname of the folder + containing the message is stored in the envariable $mhfolder. + + The `-draftfolder +folder' and `-draftmessage msg' switches invoke + the _M_H draft folder facility. This is an advanced (and highly use- + ful) feature. Consult the Advanced Features section of the _M_H + manual for more information. + + Upon exiting from the editor, _d_i_s_t will invoke the _w_h_a_t_n_o_w program. + See _w_h_a_t_n_o_w (1) for a discussion of available options. The invoca- + tion of this program can be inhibited by using the `-nowhatnowproc' + switch. (In truth of fact, it is the _w_h_a_t_n_o_w program which starts + the initial edit. Hence, `-nowhatnowproc' will prevent any edit + from occurring.) + + _F_i_l_e_s + /usr/local/lib/mh/distcomps The message skeleton + or /distcomps Rather than the standard skeleton + $HOME/.mh_profile The user profile + /draft The draft file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Draft-Folder: To find the default draft-folder + Editor: To override the default editor + fileproc: Program to refile the message + whatnowproc: Program to ask the "What now?" questions + + + _S_e_e _A_l_s_o + comp(1), forw(1), repl(1), send(1), whatnow(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msg' defaults to cur + `-noannotate' + `-nodraftfolder' + `-noinplace' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. The mes- + sage distributed will become the current message. + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + DIST(1) -32- DIST(1) + + + _H_i_s_t_o_r_y + _D_i_s_t originally used headers of the form "Distribute-xxx:" instead + of "Resent-xxx:". In order to conform with the ARPA Internet stan- + dard, RFC-822, the "Resent-xxx:" form is now used. _D_i_s_t will + recognize "Distribute-xxx:" type headers and automatically convert + them to "Resent-xxx:". + + + _B_u_g_s + _D_i_s_t does not _r_i_g_o_r_o_u_s_l_y check the message being distributed for + adherence to the transport standard, but _p_o_s_t called by _s_e_n_d does. + The _p_o_s_t program will balk (and rightly so) at poorly formatted + messages, and _d_i_s_t won't correct things for you. + + If _w_h_a_t_n_o_w_p_r_o_c is _w_h_a_t_n_o_w, then _d_i_s_t uses a built-in _w_h_a_t_n_o_w, it + does not actually run the _w_h_a_t_n_o_w program. Hence, if you define + your own _w_h_a_t_n_o_w_p_r_o_c, don't call it _w_h_a_t_n_o_w since _d_i_s_t won't run + it. + + If your current working directory is not writable, the link named + "@" is not available. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + FOLDER(1) -33- FOLDER(1) + + + _N_A_M_E + folder, folders - set/list current folder/message + + _S_Y_N_O_P_S_I_S + folder [+folder] [msg] [-all] [-fast] [-nofast] [-header] + [-noheader] [-pack] [-nopack] [-recurse] [-norecurse] [-total] + [-nototal] [-print] [-noprint] [-list] [-nolist] [-push] + [-pop] [-help] + + folders + + _D_E_S_C_R_I_P_T_I_O_N + + Since the _M_H environment is the shell, it is easy to lose track of + the current folder from day to day. + + When _f_o_l_d_e_r is given the `-print' switch (the default), the current + folder and/or message may be set, or all folders may be listed. + When a `+folder' argument is given, this corresponds to a "cd" + operation in the _C_S_h_e_l_l; when no `+folder' argument is given, this + corresponds roughly to a "pwd" operation in the _C_S_h_e_l_l. + + _F_o_l_d_e_r will list the current folder, the number of messages in it, + the range of the messages (low-high), and the current message + within the folder, and will flag extra files if they exist. An + example of the output is: + + inbox+ has 16 messages ( 3- 22); cur= 5. + + If a `+folder' and/or `msg' are specified, they will become the + current folder and/or message. Specifying `-all' will produce a + line for each folder in the user's MH directory, sorted alphabeti- + cally. These folders are preceded by the read-only folders, which + occur as "atr-cur-" entries in the user's _M_H context. For example, + + Folder # of messages ( range ) cur msg (other files) + /fsd/rs/m/tacc has 35 messages ( 1- 35); cur= 23. + /rnd/phyl/Mail/EP has 82 messages ( 1-108); cur= 82. + ff has no messages. + inbox+ has 16 messages ( 3- 22); cur= 5. + mh has 76 messages ( 1- 76); cur= 70. + notes has 2 messages ( 1- 2); cur= 1. + ucom has 124 messages ( 1-124); cur= 6; (others). + TOTAL= 339 messages in 7 folders + + The "+" after inbox indicates that it is the current folder. The + "(others)" indicates that the folder `ucom' has files which aren't + messages. These files may either be sub-folders, or files that + don't belong under the MH file naming scheme. + + The header is output if either an `-all' or a `-header' switch is + specified; it is suppressed by `-noheader'. Also, if _f_o_l_d_e_r is + + [mh.6] MH.6.7 UCI version + + + + + + + + + + FOLDER(1) -34- FOLDER(1) + + + invoked by a name ending with "s" (e.g., _f_o_l_d_e_r_s ), `-all' is + assumed. A `-total' switch will produce only the summary line. + + If a `+folder' and/or `msg' is given along with the `-all' switch, + _f_o_l_d_e_r will, in addition to setting the current folder and/or mes- + sage, list the top-level folders for the current folder (with + `-norecurse') or list all folders under the current folder recur- + sively (with `-recurse'). + + If `-fast' is given, only the folder name (or names in the case of + `-all') will be listed. (This is faster because the folders need + not be read.) + + The `-pack' switch will compress the message names in a folder, + removing holes in message numbering. + + The `-recurse' switch will list each folder recursively. Use of + this option effectively defeats the speed enhancement of the + `-fast' option, since each folder must be searched for subfolders. + Nevertheless, the combination of these options is useful. + + If the specified (or default) folder doesn't exist, the user will + be queried as to whether the folder should be created. When stan- + dard input is not a tty, the folder is created without any query. + (This is the easy way to create an empty folder for use later.) + + The `-push' switch directs _f_o_l_d_e_r to push the current folder onto + the _f_o_l_d_e_r-_s_t_a_c_k, and make the `+folder' argument the current + folder. If `+folder' is not given, the current folder and the top + of the _f_o_l_d_e_r-_s_t_a_c_k are exchanged. This corresponds to the "pushd" + operation in the _C_S_h_e_l_l. + + The `-pop' switch directs _f_o_l_d_e_r to discard the top of the + _f_o_l_d_e_r-_s_t_a_c_k, after setting the current folder to that value. No + `+folder' argument is allowed. This corresponds to the "popd" + operation in the _C_S_h_e_l_l. The `-push' switch and the `-pop' switch + are mutually exclusive: the last occurrence of either one overrides + any previous occurrence of the other. + + The `-list' switch directs _f_o_l_d_e_r to list the contents of the + _f_o_l_d_e_r-_s_t_a_c_k. No `+folder' argument is allowed. After a success- + ful `-push' or `-pop', the `-list' action is taken. This + corresponds to the "dirs" operation in the _C_S_h_e_l_l. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + FOLDER(1) -35- FOLDER(1) + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Folder-Protect: To set mode when creating a new folder + Folder-Stack: To determine the folder stack + lsproc: Program to list the contents of a folder + + + _S_e_e _A_l_s_o + refile(1), mhpath(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msg' defaults to none + `-nofast' + `-noheader' + `-nototal' + `-nopack' + `-norecurse' + `-print' is the default if no `-list', `-push', or `-pop' is specified + + + _C_o_n_t_e_x_t + If `+folder' and/or `msg' are given, they will become the current + folder and/or message. + + + _H_i_s_t_o_r_y + In previous versions of _M_H, the `-fast' switch prevented context + changes from occurring for the current folder. This is no longer + the case: if `+folder' is given, then _f_o_l_d_e_r will always change the + current folder to that. + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + FORW(1) -36- FORW(1) + + + _N_A_M_E + forw - forward messages + + _S_Y_N_O_P_S_I_S + forw [+folder] [msgs] [-annotate] [-noannotate] + [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [-editor editor] [-noedit] [-filter filterfile] + [-form formfile] [-format] [-noformat] [-inplace] [-noinplace] + [-whatnowproc program] [-nowhatnowproc] [-help] + + forw [+folder] [msgs] [-digest list] [-issue number] + [-volume number] [other switches for _f_o_r_w] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _F_o_r_w may be used to prepare a message containing other messages. + It constructs the new message from the components file or + `-form formfile' (see _c_o_m_p ), with a body composed of the + message(s) to be forwarded. An editor is invoked as in _c_o_m_p, and + after editing is complete, the user is prompted before the message + is sent. + + The default message form contains the following elements: + + To: + cc: + Subject: + -------- + + If the file named "forwcomps" exists in the user's MH directory, it + will be used instead of this form. In either case, the file speci- + fied by `-form formfile' will be used if given. + + If the draft already exists, _f_o_r_w will ask you as to the disposi- + tion of the draft. A reply of quit will abort _f_o_r_w, leaving the + draft intact; replace will replace the existing draft with a blank + skeleton; and list will display the draft. + + If the `-annotate' switch is given, each message being forwarded + will be annotated with the lines + + Forwarded: date + Forwarded: addrs + + where each address list contains as many lines as required. This + annotation will be done only if the message is sent directly from + _f_o_r_w. If the message is not sent immediately from _f_o_r_w, + "comp -use" may be used to re-edit and send the constructed mes- + sage, but the annotations won't take place. The '-inplace' switch + causes annotation to be done in place in order to preserve links to + the annotated message. +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + FORW(1) -37- FORW(1) + + + See _c_o_m_p (1) for a description of the `-editor' and `-noedit' + switches. + + Although _f_o_r_w uses the `-form formfile' switch to direct it how to + construct the beginning of the draft, the `-filter filterfile', + `-format', and `-noformat' switches direct _f_o_r_w as to how each for- + warded message should be formatted in the body of the draft. If + `-noformat' is specified, then each forwarded message is output + exactly as it appears. If `-format' or `-filter filterfile' is + specified, then each forwarded message is filtered (re-formatted) + prior to being output to the body of the draft. The filter file + for _f_o_r_w should be a standard form file for _m_h_l, as _f_o_r_w will + invoke _m_h_l to format the forwarded messages. The default message + filter (what you get with `-format') is: + + width=80,overflowtext=,overflowoffset=10 + leftadjust,compress,compwidth=9 + Date:formatfield="%<(nodate{text})%{text}%|%(tws{text})%>" + From: + To: + cc: + Subject: + : + body:nocomponent,overflowoffset=0,noleftadjust,nocompress + + If the file named "mhl.forward" exists in the user's MH directory, + it will be used instead of this form. In either case, the file + specified by `-filter filterfile' will be used if given. To sum- + marize: `-noformat' will reproduce each forwarded message exactly, + `-format' will use _m_h_l and a default filterfile, "mhl.forward", to + format each forwarded message, and `-filter filterfile' will use + the named filterfile to format each forwarded message with _m_h_l. + + Each forwarded message is separated with an encapsulation delimiter + and dashes in the first column of the forwarded messages will be + prepended with `- ' so that when received, the message is suitable + for bursting by _b_u_r_s_t (1). This follows the Internet RFC-934 + guidelines. + + For users of _p_r_o_m_p_t_e_r (1), by specifying prompter's `-prepend' + switch in the .mh_profile file, any commentary text is entered + before the forwarded messages. (A major win!) + + The `-draftfolder +folder' and `-draftmessage msg' switches invoke + the _M_H draft folder facility. This is an advanced (and highly use- + ful) feature. Consult the Advanced Features section of the _M_H + manual for more information. + + Upon exiting from the editor, _f_o_r_w will invoke the _w_h_a_t_n_o_w program. + See _w_h_a_t_n_o_w (1) for a discussion of available options. The invoca- + tion of this program can be inhibited by using the `-nowhatnowproc' + switch. (In truth of fact, it is the _w_h_a_t_n_o_w program which starts + + [mh.6] MH.6.7 UCI version + + + + + + + + + + FORW(1) -38- FORW(1) + + + the initial edit. Hence, `-nowhatnowproc' will prevent any edit + from occurring.) + + The `-digest list', `-issue number', and `-volume number' switches + implement a digest facility for _M_H. Specifying these switches + enables and/or overloads the following escapes: + + _T_y_p_e _E_s_c_a_p_e _R_e_t_u_r_n_s _D_e_s_c_r_i_p_t_i_o_n + _c_o_m_p_o_n_e_n_t _d_i_g_e_s_t string Argument to `-digest' + _f_u_n_c_t_i_o_n _c_u_r integer Argument to `-volume' + _f_u_n_c_t_i_o_n _m_s_g integer Argument to `-issue' + + Consult the Advanced Features section of the _M_H User's Manual for + more information on making digests. + + _F_i_l_e_s + /usr/local/lib/mh/forwcomps The message skeleton + or /forwcomps Rather than the standard skeleton + /usr/local/lib/mh/digestcomps The message skeleton if `-digest' is given + or /digestcomps Rather than the standard skeleton + /usr/local/lib/mh/mhl.forward The message filter + or /mhl.forward Rather than the standard filter + $HOME/.mh_profile The user profile + /draft The draft file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Draft-Folder: To find the default draft-folder + Editor: To override the default editor + Msg-Protect: To set mode when creating a new message + (draft) + fileproc: Program to refile the message + mhlproc: Program to filter messages being forwarded + whatnowproc: Program to ask the "What now?" questions + + + _S_e_e _A_l_s_o + _P_r_o_p_o_s_e_d _S_t_a_n_d_a_r_d _f_o_r _M_e_s_s_a_g_e _E_n_c_a_p_s_u_l_a_t_i_o_n (aka RFC-934), + comp(1), dist(1), repl(1), send(1), whatnow(1), mh-format(5) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to cur + `-noannotate' + `-nodraftfolder' + `-noformat' + `-noinplace' + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + FORW(1) -39- FORW(1) + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. The first + message forwarded will become the current message. + + + _B_u_g_s + If _w_h_a_t_n_o_w_p_r_o_c is _w_h_a_t_n_o_w, then _f_o_r_w uses a built-in _w_h_a_t_n_o_w, it + does not actually run the _w_h_a_t_n_o_w program. Hence, if you define + your own _w_h_a_t_n_o_w_p_r_o_c, don't call it _w_h_a_t_n_o_w since _f_o_r_w won't run + it. + + When _f_o_r_w is told to annotate the messages it forwards, it doesn't + actually annotate them until the draft is successfully sent. If + from the _w_h_a_t_n_o_w_p_r_o_c, you _p_u_s_h instead of _s_e_n_d, it's possible to + confuse _f_o_r_w by re-ordering the file (e.g., by using + `folder -pack') before the message is successfully sent. _D_i_s_t and + _r_e_p_l don't have this problem. + + To avoid prepending the leading dash characters in forwarded mes- + sages, there is a `-nodashmunging' option. See the "Hidden + Features" section of the _M_H _A_d_m_i_n_i_s_t_r_a_t_o_r'_s _G_u_i_d_e for more details. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + INC(1) -40- INC(1) + + + _N_A_M_E + inc - incorporate new mail + + _S_Y_N_O_P_S_I_S + inc [+folder] [-audit audit-file] [-noaudit] [-changecur] + [-nochangecur] [-form formatfile] [-format string] + [-file name] [-silent] [-nosilent] [-truncate] [-notruncate] + [-width columns] [-host host] [-user user] [-pack file] + [-nopack] [-rpop] [-norpop] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _I_n_c incorporates mail from the user's incoming mail drop into an _M_H + folder. If `+folder' isn't specified, the folder named "inbox" in + the user's _M_H directory will be used. The new messages being + incorporated are assigned numbers starting with the next highest + number in the folder. If the specified (or default) folder doesn't + exist, the user will be queried prior to its creation. As the mes- + sages are processed, a _s_c_a_n listing of the new mail is produced. + + If the user's profile contains a "Msg-Protect: nnn" entry, it will + be used as the protection on the newly created messages, otherwise + the _M_H default of 0644 will be used. During all operations on mes- + sages, this initially assigned protection will be preserved for + each message, so _c_h_m_o_d(1) may be used to set a protection on an + individual message, and its protection will be preserved + thereafter. + + If the switch `-audit audit-file' is specified (usually as a + default switch in the profile), then _i_n_c will append a header line + and a line per message to the end of the specified audit-file with + the format: + + <> date + + + + + This is useful for keeping track of volume and source of incoming + mail. Eventually, _r_e_p_l, _f_o_r_w, _c_o_m_p, and _d_i_s_t may also produce + audits to this (or another) file, perhaps with "Message-Id:" infor- + mation to keep an exact correspondence history. "Audit-file" will + be in the user's MH directory unless a full path is specified. + + _I_n_c will incorporate even improperly formatted messages into the + user's MH folder, inserting a blank line prior to the offending + component and printing a comment identifying the bad message. + + In all cases, the user's mail drop will be zeroed, unless the + `-notruncate' switch is given. + + If the profile entry "Unseen-Sequence" is present and non-empty, + + [mh.6] MH.6.7 UCI version + + + + + + + + + + INC(1) -41- INC(1) + + + then _i_n_c will add each of the newly incorporated messages to each + sequence named by the profile entry. This is similar to the + "Previous-Sequence" profile entry supported by all _M_H commands + which take `msgs' or `msg' arguments. Note that _i_n_c will not zero + each sequence prior to adding messages. + + The interpretation of the `-form formatfile', `-format string', and + `-width columns' switches is the same as in _s_c_a_n (1). + + By using the `-file name' switch, one can direct _i_n_c to incorporate + messages from a file other than the user's maildrop. Note that the + name file will NOT be zeroed, unless the `-truncate' switch is + given. + + If the envariable $MAILDROP is set, then _i_n_c uses it as the loca- + tion of the user's maildrop instead of the default (the `- + file name' switch still overrides this, however). If this envari- + able is not set, then _i_n_c will consult the profile entry "MailDrop" + for this information. If the value found is not absolute, then it + is interpreted relative to the user's _M_H directory. If the value + is not found, then _i_n_c will look in the standard system location + for the user's maildrop. + + The `-silent' switch directs _i_n_c to be quiet and not ask any ques- + tions at all. This is useful for putting _i_n_c in the background and + going on to other things. + + If the local host is configured as a POP client, or if the + `-host host' switch is given, then _i_n_c will query the POP service + host as to the status of mail waiting. The `-user user' switch may + be given to specify the name of the POP subscriber you wish to + check mail for on the POP service host. The `-rpop' switch uses + the UNIX _r_P_O_P (authentication done via trusted connections). In + contrast, the `-norpop' switch uses the ARPA _P_O_P (in which case _i_n_c + will prompt for a password). + + If _i_n_c uses POP, then the `-pack file' switch is considered. If + given, then _i_n_c simply uses the POP to _p_a_c_k_f (1) the user's mail- + drop from the POP service host to the named file. This switch is + provided for those users who prefer to use _m_s_h to read their mail- + drops. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /usr/local/lib/mh/mtstailor tailor file + /usr/spool/mail/$USER Location of mail drop + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + INC(1) -42- INC(1) + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Alternate-Mailboxes: To determine the user's mailboxes + Folder-Protect: To set mode when creating a new folder + Msg-Protect: To set mode when creating a new message and + audit-file + Unseen-Sequence: To name sequences denoting unseen messages + + + _S_e_e _A_l_s_o + _P_o_s_t _O_f_f_i_c_e _P_r_o_t_o_c_o_l - _v_e_r_s_i_o_n _3 (aka RFC-1081), + mhmail(1), scan(1), mh-mail(5), post(8) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to "inbox" + `-noaudit' + `-changecur' + `-format' defaulted as described above + `-nosilent' + `-truncate' if `-file name' not given, `-notruncate' otherwise + `-width' defaulted to the width of the terminal + `-nopack' + `-rpop' + + + _C_o_n_t_e_x_t + The folder into which messages are being incorporated will become + the current folder. The first message incorporated will become the + current message, unless the `-nochangecur' option is specified. + This leaves the context ready for a _s_h_o_w of the first new message. + + + _B_u_g_s + The argument to the `-format' switch must be interpreted as a sin- + gle token by the shell that invokes _i_n_c. Therefore, one must usu- + ally place the argument to this switch inside double-quotes. + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MARK(1) -43- MARK(1) + + + _N_A_M_E + mark - mark messages + + _S_Y_N_O_P_S_I_S + mark [+folder] [msgs] [-sequence name ...] [-add] [-delete] [-list] + [-public] [-nopublic] [-zero] [-nozero] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + The _m_a_r_k command manipulates message sequences by adding or delet- + ing message numbers from folder-specific message sequences, or by + listing those sequences and messages. A message sequence is a key- + word, just like one of the "reserved" message names, such as + "first" or "next". Unlike the "reserved" message names, which have + a fixed semantics on a per-folder basis, the semantics of a message + sequence may be defined, modified, and removed by the user. Mes- + sage sequences are folder-specific, e.g., the sequence name "seen" + in the context of folder "+inbox" need not have any relation what- + soever to the sequence of the same name in a folder of a different + name. + + Three action switches direct the operation of _m_a_r_k. These switches + are mutually exclusive: the last occurrence of any of them over- + rides any previous occurrence of the other two. + + The `-add' switch tells _m_a_r_k to add messages to sequences or to + create a new sequence. For each sequence named via the + `-sequence name' argument (which must occur at least once) the mes- + sages named via `msgs' (which defaults to "cur" if no `msgs' are + given), are added to the sequence. The messages to be added need + not be absent from the sequence. If the `-zero' switch is speci- + fied, the sequence will be emptied prior to adding the messages. + Hence, `-add -zero' means that each sequence should be initialized + to the indicated messages, while `-add -nozero' means that each + sequence should be appended to by the indicated messages. + + The `-delete' switch tells _m_a_r_k to delete messages from sequences, + and is the dual of `-add'. For each of the named sequences, the + named messages are removed from the sequence. These messages need + not be already present in the sequence. If the `-zero' switch is + specified, then all messages in the folder are appended to the + sequence prior to removing the messages. Hence, `-delete -zero' + means that each sequence should contain all messages except those + indicated, while `-delete -nozero' means that only the indicated + messages should be removed from each sequence. As expected, the + command `mark -sequence seen -delete all' deletes the sequence + "seen" from the current folder. + + When creating (or modifying) a sequence, the `-public' switch indi- + cates that the sequence should be made readable for other _M_H users. + In contrast, the `-nopublic' switch indicates that the sequence + should be private to the user's _M_H environment. + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MARK(1) -44- MARK(1) + + + The `-list' switch tells _m_a_r_k to list both the sequences defined + for the folder and the messages associated with those sequences. + _M_a_r_k will list each sequence named via `-sequence name' (or all of + them if `-sequence' isn't used), and the messages associated with + that sequence. The `-zero' switch does not affect the operation of + `-list'. + + The current restrictions on sequences are: + + The name used to denote a message sequence must consist of an + alphabetic character followed by zero or more alphanumeric char- + acters, and can not be one of the "reserved" message names (e.g., + "first", "cur", and so forth). + + Only a certain number of sequences may be defined for a given + folder. This number is usually limited to 10. + + Message ranges with user-defined sequence names are restricted to + the form "name:n" or "name:-n", and refer to the first or last + `n' messages of the sequence `name', respectively. Constructs of + the form "name1-name2" are forbidden. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + + + _S_e_e _A_l_s_o + pick (1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `-add' if `-sequence' is specified, `-list' otherwise + `msgs' defaults to cur (or all if `-list' is specified) + `-nopublic' if the folder is read-only, `-public' otherwise + `-nozero' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MHL(1) -45- MHL(1) + + + _N_A_M_E + mhl - produce formatted listings of MH messages + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/mhl [-bell] [-nobell] [-clear] [-noclear] + [-folder +folder] [-form formfile] [-length lines] + [-width columns] [-moreproc program] [-nomoreproc] [files ...] + [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _M_h_l is a formatted message listing program. It can be used as a + replacement for _m_o_r_e (1) (the default _s_h_o_w_p_r_o_c ). As with _m_o_r_e, + each of the messages specified as arguments (or the standard input) + will be output. If more than one message file is specified, the + user will be prompted prior to each one, and a or + will begin the output, with clearing the screen (if + appropriate), and (usually CTRL-D) suppressing the screen + clear. An (usually CTRL-C) will abort the current mes- + sage output, prompting for the next message (if there is one), and + a (usually CTRL-\) will terminate the program (without core + dump). + + The `-bell' option tells _m_h_l to ring the terminal's bell at the end + of each page, while the `-clear' option tells _m_h_l to clear the + scree at the end of each page (or output a formfeed after each mes- + sage). Both of these switches (and their inverse counterparts) + take effect only if the profile entry _m_o_r_e_p_r_o_c is defined but + empty, and _m_h_l is outputting to a terminal. If the _m_o_r_e_p_r_o_c entry + is defined and non-empty, and _m_h_l is outputting to a terminal, then + _m_h_l will cause the _m_o_r_e_p_r_o_c to be placed between the terminal and + _m_h_l and the switches are ignored. Furthermore, if the `-clear' + switch is used and _m_h_l'_s output is directed to a terminal, then _m_h_l + will consult the $TERM and $TERMCAP envariables to determine the + user's terminal type in order to find out how to clear the screen. + If the `-clear' switch is used and _m_h_l'_s output is not directed to + a terminal (e.g., a pipe or a file), then _m_h_l will send a formfeed + after each message. + + To override the default _m_o_r_e_p_r_o_c and the profile entry, use the + `-moreproc program' switch. Note that _m_h_l will never start a + _m_o_r_e_p_r_o_c if invoked on a hardcopy terminal. + + The `-length length' and `-width width' switches set the screen + length and width, respectively. These default to the values indi- + cated by $TERMCAP, if appropriate, otherwise they default to 40 and + 80, respectively. + + The default format file used by _m_h_l is called _m_h_l._f_o_r_m_a_t (which is + first searched for in the user's _M_H directory, and then sought in + the /_u_s_r/_l_o_c_a_l/_l_i_b/_m_h directory), this can be changed by using the + `-form formatfile' switch. + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MHL(1) -46- MHL(1) + + + Finally, the `-folder +folder' switch sets the _M_H folder name, + which is used for the "messagename:" field described below. The + envariable $mhfolder is consulted for the default value, which + _s_h_o_w, _n_e_x_t, and _p_r_e_v initialize appropriately. + + _M_h_l operates in two phases: 1) read and parse the format file, and + 2) process each message (file). During phase 1, an internal + description of the format is produced as a structured list. In + phase 2, this list is walked for each message, outputting message + information under the format constraints from the format file. + + The "mhl.format" form file contains information controlling screen + clearing, screen size, wrap-around control, transparent text, com- + ponent ordering, and component formatting. Also, a list of com- + ponents to ignore may be specified, and a couple of "special" com- + ponents are defined to provide added functionality. Message output + will be in the order specified by the order in the format file. + + Each line of mhl.format has one of the formats: + + ;comment + :cleartext + variable[,variable...] + component:[variable,...] + + A line beginning with a `;' is a comment, and is ignored. A line + beginning with a `:' is clear text, and is output exactly as is. A + line containing only a `:' produces a blank line in the output. A + line beginning with "component:" defines the format for the speci- + fied component, and finally, remaining lines define the global + environment. + + For example, the line: + + width=80,length=40,clearscreen,overflowtext="***",overflowoffset=5 + + defines the screen size to be 80 columns by 40 rows, specifies that + the screen should be cleared prior to each page, that the overflow + indentation is 5, and that overflow text should be flagged with + "***". + + Following are all of the current variables and their arguments. If + they follow a component, they apply only to that component, other- + wise, their affect is global. Since the whole format is parsed + before any output processing, the last global switch setting for a + variable applies to the whole message if that variable is used in a + global context (i.e., bell, clearscreen, width, length). + + _v_a_r_i_a_b_l_e _t_y_p_e _s_e_m_a_n_t_i_c_s + width integer screen width or component width + length integer screen length or component length + offset integer positions to indent "component: " + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MHL(1) -47- MHL(1) + + + overflowtext string text to use at the beginning of an + overflow line + overflowoffset integer positions to indent overflow lines + compwidth integer positions to indent component text + after the first line is output + uppercase flag output text of this component in all + upper case + nouppercase flag don't uppercase + clearscreen flag/G clear the screen prior to each page + noclearscreen flag/G don't clearscreen + bell flag/G ring the bell at the end of each page + nobell flag/G don't bell + component string/L name to use instead of "component" for + this component + nocomponent flag don't output "component: " for this + component + center flag center component on line (works for + one-line components only) + nocenter flag don't center + leftadjust flag strip off leading whitespace on each + line of text + noleftadjust flag don't leftadjust + compress flag change newlines in text to spaces + nocompress flag don't compress + split flag don't combine multiple fields into a single field + nosplit flag combine multiple fields into a single field + formatfield string format string for this component (see below) + addrfield flag field contains addresses + datefield flag field contains dates + + To specify the value of integer-valued and string-valued variables, + follow their name with an equals-sign and the value. + Integer-valued variables are given decimal values, while + string-valued variables are given arbirtray text bracketed by + double-quotes. If a value is suffixed by "/G" or "/L", then its + value is useful in a global-only or local-only context (respec- + tively). + + A line of the form: + + ignores=component,... + + specifies a list of components which are never output. + + The component "MessageName" (case-insensitive) will output the + actual message name (file name) preceded by the folder name if one + is specified or found in the environment. The format is identical + to that produced by the `-header' option to _s_h_o_w. + + The component "Extras" will output all of the components of the + message which were not matched by explicit components, or included + in the ignore list. If this component is not specified, an ignore + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MHL(1) -48- MHL(1) + + + list is not needed since all non-specified components will be + ignored. + + If "nocomponent" is NOT specified, then the component name will be + output as it appears in the format file. + + The default format is: + + : -- using template mhl.format -- + overflowtext="***",overflowoffset=5 + leftadjust,compwidth=9 + ignores=msgid,message-id,received + Date:formatfield="%<(nodate{text})%{text}%|%(pretty{text})%>" + To: + cc: + : + From: + Subject: + : + extras:nocomponent + : + body:nocomponent,overflowtext=,overflowoffset=0,noleftadjust + + The variable "formatfield" specifies a format string (see + _m_h-_f_o_r_m_a_t (5)). The flag variables "addrfield" and "datefield" + (which are mutually exclusive), tell _m_h_l to interpret the escapes + in the format string as either addresses or dates, respectively. + + By default, _m_h_l does not apply any formatting string to fields con- + taining address or dates (see _m_h-_m_a_i_l (5) for a list of these + fields). Note that this results in faster operation since _m_h_l must + parse both addresses and dates in order to apply a format string to + them. If desired, _m_h_l can be given a default format string for + either address or date fields (but not both). To do this, on a + global line specify: either the flag addrfield or datefield, along + with the apropriate formatfield variable string. + + _F_i_l_e_s + /usr/local/lib/mh/mhl.format The message template + or /mhl.format Rather than the standard template + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + moreproc: Program to use as interactive front-end + + + _S_e_e _A_l_s_o + show(1), ap(8), dp(8) + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MHL(1) -49- MHL(1) + + + _D_e_f_a_u_l_t_s + `-bell' + `-noclear' + `-length 40' + `-width 80' + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + There should be some way to pass `bell' and `clear' information to + the front-end. + + On hosts where _M_H was configured with the BERK option, address + parsing is not enabled. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MHMAIL(1) -50- MHMAIL(1) + + + _N_A_M_E + mhmail - send or read mail + + _S_Y_N_O_P_S_I_S + mhmail [ addrs ... [-body text] [-cc addrs ...] [-from addr] + [-subject subject]] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _M_H_m_a_i_l is intended as a replacement for the standard Bell mail pro- + gram (_b_e_l_l_m_a_i_l (1)), compatible with _M_H. When invoked without + arguments, it simply invokes _i_n_c (1) to incorporate new messages + from the user's maildrop. When one or more users is specified, a + message is read from the standard input and spooled to a temporary + file. _M_H_m_a_i_l then invokes _p_o_s_t (8) with the name of the temporary + file as its argument to deliver the message to the specified user. + + The `-subject subject' switch can be used to specify the "Subject:" + field of the message. The `-body text' switch can be used to + specify the text of the message; if it is specified, then the stan- + dard input is not read. Normally, addresses appearing as arguments + are put in the "To:" field. If the `-cc' switch is used, all + addresses following it are placed in the "cc:" field. + + By using `-from addr', you can specify the "From:" header of the + draft. Naturally, _p_o_s_t will fill-in the "Sender:" header + correctly. + + This program is intended for the use of programs such as _a_t (1), + which expect to send mail automatically to various users. Nor- + mally, real people (as opposed to the "unreal" ones) will prefer to + use _c_o_m_p (1) and _s_e_n_d (1) to send messages. + + _F_i_l_e_s + /usr/local/inc Program to incorporate a maildrop into a folder + /usr/local/lib/mh/post Program to deliver a message + /tmp/mhmail* Temporary copy of message + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + inc(1), post(8) + + + _D_e_f_a_u_l_t_s + None + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MHMAIL(1) -51- MHMAIL(1) + + + _C_o_n_t_e_x_t + If _i_n_c is invoked, then _i_n_c's context changes occur. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MHOOK(1) -52- MHOOK(1) + + + _N_A_M_E + mhook - MH receive-mail hooks + + _S_Y_N_O_P_S_I_S + $HOME/.maildelivery + + /usr/local/lib/mh/rcvdist [-form formfile] [switches for _p_o_s_t_p_r_o_c] + address ... [-help] + + /usr/local/lib/mh/rcvpack file [-help] + + /usr/local/lib/mh/rcvtty [command] [-form formatfile] + [-format string] [-bell] [-nobell] [-newline] [-nonewline] + [-biff] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + A receive-mail hook is a program that is run whenever you receive a + mail message. You do NOT invoke the hook yourself, rather the hook + is invoked on your behalf by _M_M_D_F. + + The ._m_a_i_l_d_e_l_i_v_e_r_y file, which is an ordinary ASCII file, controls + how local delivery is performed. This file is read by the local + channel. See _m_a_i_l_d_e_l_i_v_e_r_y (5) for the details. + + Four programs are currently standardly available, _r_c_v_d_i_s_t (redis- + tribute incoming messages to additional recipients), _r_c_v_p_a_c_k (save + incoming messages in a _p_a_c_k_f'd file), and _r_c_v_t_t_y (notify user of + incoming messages). The fourth program, _r_c_v_s_t_o_r_e (1) is described + separately. They all reside in the /_u_s_r/_l_o_c_a_l/_l_i_b/_m_h/ directory. + + The _r_c_v_d_i_s_t program will resend a copy of the message to all of the + addresses listed on its command line. It uses the format string + facility described in _m_h-_f_o_r_m_a_t (5). + + The _r_c_v_p_a_c_k program will append a copy of the message to the file + listed on its command line. Its use is obsoleted by the ._m_a_i_l_- + _d_e_l_i_v_e_r_y. + + The _r_c_v_t_t_y program executes the named file with the message as its + standard input, and writes the resulting output on your terminal. + + If no file is specified, or is bogus, etc., then _r_c_v_t_t_y will + instead write a one-line scan listing. Either the + `-form formatfile' or `-format string' option may be used to over- + ride the default output format (see _m_h-_f_o_r_m_a_t (5)). A newline is + output before the message output, and the terminal bell is rung + after the output. The `-nonewline' and `-nobell' options will + inhibit these functions. + + Normally, _r_c_v_t_t_y obeys write permission as granted by _m_e_s_g (1). + With the `-biff' option, _r_c_v_t_t_y will obey the notification status + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MHOOK(1) -53- MHOOK(1) + + + set by _b_i_f_f (1). If the terminal access daemon (TTYD) is available + on your system, then _r_c_v_t_t_y will give its output to the daemon for + output instead of writing on the user's terminal. + + _F_i_l_e_s + /usr/local/lib/mh/mtstailor tailor file + $HOME/.maildelivery The file controlling local delivery + /usr/local/lib/mh/maildelivery Rather than the standard file + + + _S_e_e _A_l_s_o + rcvstore (1), maildelivery(5), mh-format(5) + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + Only two return codes are meaningful, others should be. + + Versions of _M_M_D_F with the _m_a_i_l_d_e_l_i_v_e_r_y mechanism aren't entirely + backwards-compatible with earlier versions. If you have an + old-style hook, the best you can do is to have a one-line ._m_a_i_l- + _d_e_l_i_v_e_r_y file: + + default - pipe A "bin/rcvmail $(address) $(info) $(sender)" + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MHPATH(1) -54- MHPATH(1) + + + _N_A_M_E + mhpath - print full pathnames of MH messages and folders + + _S_Y_N_O_P_S_I_S + mhpath [+folder] [msgs] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _M_h_p_a_t_h expands and sorts the message list `msgs' and writes the + full pathnames of the messages to the standard output separated by + newlines. If no `msgs' are specified, _m_h_p_a_t_h outputs the folder + pathname instead. If the only argument is `+', your MH _P_a_t_h is + output; this can be useful is shell scripts. + + Contrasted with other MH commands, a message argument to _m_h_p_a_t_h may + often be intended for _w_r_i_t_i_n_g. Because of this: 1) the name "new" + has been added to _m_h_p_a_t_h's list of reserved message names (the oth- + ers are "first", "last", "prev", "next", "cur", and "all"). The + new message is equivalent to the message after the last message in + a folder (and equivalent to 1 in a folder without messages). The + "new" message may not be used as part of a message range. 2) + Within a message list, the following designations may refer to mes- + sages that do not exist: a single numeric message name, the single + message name "cur", and (obviously) the single message name "new". + All other message designations must refer to at least one existing + message. 3) An empty folder is not in itself an error. + + Message numbers greater than the highest existing message in a + folder as part of a range designation are replaced with the next + free message number. + + Examples: The current folder foo contains messages 3 5 6. Cur is + 4. + + % mhpath + /r/phyl/Mail/foo + + % mhpath all + /r/phyl/Mail/foo/3 + /r/phyl/Mail/foo/5 + /r/phyl/Mail/foo/6 + + % mhpath 2001 + /r/phyl/Mail/foo/7 + + % mhpath 1-2001 + /r/phyl/Mail/foo/3 + /r/phyl/Mail/foo/5 + /r/phyl/Mail/foo/6 + + % mhpath new + /r/phyl/Mail/foo/7 + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MHPATH(1) -55- MHPATH(1) + + + % mhpath last new + /r/phyl/Mail/foo/6 + /r/phyl/Mail/foo/7 + + % mhpath last-new + bad message list "last-new". + + % mhpath cur + /r/phyl/Mail/foo/4 + + % mhpath 1-2 + no messages in range "1-2". + + % mhpath first:2 + /r/phyl/Mail/foo/3 + /r/phyl/Mail/foo/5 + + % mhpath 1 2 + /r/phyl/Mail/foo/1 + /r/phyl/Mail/foo/2 + + _M_H_p_a_t_h is also useful in back-quoted operations: + + % cd `mhpath +inbox` + + % echo `mhpath +` + /r/phyl/Mail + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + + + _S_e_e _A_l_s_o + folder(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to none + + + _C_o_n_t_e_x_t + None + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MHPATH(1) -56- MHPATH(1) + + + _B_u_g_s + Like all MH commands, _m_h_p_a_t_h expands and sorts [msgs]. So don't + expect + + mv `mhpath 501 500` + + to move 501 to 500. Quite the reverse. But + + mv `mhpath 501` `mhpath 500` + + will do the trick. + + Out of range message 0 is treated far more severely than large out + of range message numbers. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MSGCHK(1) -57- MSGCHK(1) + + + _N_A_M_E + msgchk - check for messages + + _S_Y_N_O_P_S_I_S + msgchk [-date] [-nodate] [-notify all/mail/nomail] + [-nonotify all/mail/nomail] [-host host] [-user user] [-rpop] + [-norpop] [users ...] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + The _m_s_g_c_h_k program checks all known mail drops for mail waiting for + you. For those drops which have mail for you, _m_s_g_c_h_k will indicate + if it believes that you have seen the mail in question before. + + The `-notify type' switch indicates under what circumstances _m_s_g_c_h_k + should produce a message. The default is `-notify all' which says + that _m_s_g_c_h_k should always report the status of the users maildrop. + Other values for `type' include `mail' which says that _m_s_g_c_h_k + should report the status of waiting mail; and, `nomail' which says + that _m_s_g_c_h_k should report the status of empty maildrops. The + `-nonotify type' switch has the inverted sense, so `-nonotify all' + directs _m_s_g_c_h_k to never report the status of maildrops. This is + useful if the user wishes to check _m_s_g_c_h_k's exit status. A + non-zero exit status indicates that mail was not waiting for at + least one of the indicated users. + + If _m_s_g_c_h_k produces output, then the `-date' switch directs _m_s_g_c_h_k + to print out the last date mail was read, if this can be deter- + mined. + + If the local host is configured as a POP client, or if the + `-host host' switch is given, _m_s_g_c_h_k will query the POP service + host as to the status of mail waiting. The `-user user' switch may + be given to specify the name of the POP subscriber you wish to + check mail for on the POP service host. The `-rpop' switch uses + the UNIX _r_P_O_P (authentication done via trusted connections). In + contrast, the `-norpop' switch uses the ARPA _P_O_P (in which case + _m_s_g_c_h_k will prompt for a password). + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /usr/local/lib/mh/mtstailor tailor file + /usr/spool/mail/$USER Location of mail drop + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MSGCHK(1) -58- MSGCHK(1) + + + _S_e_e _A_l_s_o + _P_o_s_t _O_f_f_i_c_e _P_r_o_t_o_c_o_l - _v_e_r_s_i_o_n _3 (aka RFC-1081), + inc(1) + + + _D_e_f_a_u_l_t_s + `user' defaults to the current user + `-date' + `-notify all' + `-rpop' + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MSH(1) -59- MSH(1) + + + _N_A_M_E + msh - MH shell (and BBoard reader) + + _S_Y_N_O_P_S_I_S + msh [-prompt string] [-scan] [-noscan] [-topcur] [-notopcur] [file] + [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _m_s_h is an interactive program that implements a subset of the nor- + mal _M_H commands operating on a single file in _p_a_c_k_f'd format. That + is, _m_s_h is used to read a file that contains a number of messages, + as opposed to the standard _M_H style of reading a number of files, + each file being a separate message in a folder. _m_s_h's chief advan- + tage is that the normal _M_H style does not allow a file to have more + than one message in it. Hence, _m_s_h is ideal for reading _B_B_o_a_r_d_s, + as these files are delivered by the transport system in this for- + mat. In addition, _m_s_h can be used on other files, such as message + archives which have been _p_a_c_ked (see _p_a_c_k_f (1)). Finally, _m_s_h is + an excellent _M_H tutor. As the only commands available to the user + are _M_H commands, this allows _M_H beginners to concentrate on how + commands to _M_H are formed and (more or less) what they mean. + + When invoked, _m_s_h reads the named file, and enters a command loop. + The user may type most of the normal _M_H commands. The syntax and + semantics of these commands typed to _m_s_h are identical to their _M_H + counterparts. In cases where the nature of _m_s_h would be incon- + sistent (e.g., specifying a `+folder' with some commands), _m_s_h will + duly inform the user. The commands that _m_s_h currently supports (in + some slightly modified or restricted forms) are: + + ali + burst + comp + dist + folder + forw + inc + mark + mhmail + msgchk + next + packf + pick + prev + refile + repl + rmm + scan + send + show + sortm + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MSH(1) -60- MSH(1) + + + whatnow + whom + + In addition, _m_s_h has a "help" command which gives a brief overview. + To terminate _m_s_h, type CTRL-D, or use the "quit" command. If _m_s_h + is being invoked from _b_b_c, then typing CTRL-D will also tell _b_b_c to + exit as well, while using the "quit" command will return control to + _b_b_c, and _b_b_c will continue examining the list of BBoards that it is + scanning. + + If the file is writable and has been modified, then using "quit" + will query the user if the file should be updated. + + The `-prompt string' switch sets the prompting string for _m_s_h. + + You may wish to use an alternate _M_H profile for the commands that + _m_s_h executes; see _m_h-_p_r_o_f_i_l_e (5) for details about the $MH envari- + able. + + When invoked from _b_b_c, two special features are enabled: First, the + `-scan' switch directs _m_s_h to do a `scan unseen' on start-up if new + items are present in the BBoard. This feature is best used from + _b_b_c, which correctly sets the stage. Second, the _m_a_r_k command in + _m_s_h acts specially when you are reading a BBoard, since _m_s_h will + consult the sequence "unseen" in determining what messages you have + actually read. When _m_s_h exits, it reports this information to _b_b_c. + In addition, if you give the _m_a_r_k command with no arguments, _m_s_h + will interpret it as `mark -sequence unseen -delete -nozero all' + Hence, to discard all of the messages in the current BBoard you're + reading, just use the _m_a_r_k command with no arguments. + + Normally, the "exit" command is identical to the "quit" command in + _m_s_h. When run under _b_b_c however, "exit" directs _m_s_h to mark all + messages as seen and then "quit". For speedy type-in, this command + is often abbreviated as just "e". + + When invoked from _v_m_h, another special feature is enabled: The + `topcur' switch directs _m_s_h to have the current message "track" the + top line of the _v_m_h scan window. Normally, _m_s_h has the current + message "track" the center of the window (under `-notopcur', which + is the default). + + _m_s_h supports an output redirection facility. Commands may be fol- + lowed by one of + + > _f_i_l_e write output to _f_i_l_e + >> _f_i_l_e append output to _f_i_l_e + | _c_o_m_m_a_n_d pipe output to UNIX _c_o_m_m_a_n_d + + If _f_i_l_e starts with a `~' (tilde), then a _c_s_h-like expansion takes + place. Note that _c_o_m_m_a_n_d is interpreted by _s_h (1). Also note that + _m_s_h does NOT support history substitutions, variable substitutions, + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MSH(1) -61- MSH(1) + + + or alias substitutions. + + When parsing commands to the left of any redirection symbol, _m_s_h + will honor `\' (back-slash) as the quote next-character symbol, and + `"' (double-quote) as quote-word delimiters. All other input + tokens are separated by whitespace (spaces and tabs). + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /usr/local/lib/mh/mtstailor tailor file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Msg-Protect: To set mode when creating a new `file' + fileproc: Program to file messages + showproc: Program to show messages + + + _S_e_e _A_l_s_o + bbc(1) + + + _D_e_f_a_u_l_t_s + `file' defaults to "./msgbox" + `-prompt (msh) ' + `-noscan' + `-notopcur' + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MSH(1) -62- MSH(1) + + + _B_u_g_s + The argument to the `-prompt' switch must be interpreted as a sin- + gle token by the shell that invokes _m_s_h. Therefore, one must usu- + ally place the argument to this switch inside double-quotes. + + There is a strict limit of messages per file in _p_a_c_k_f'd format + which _m_s_h can handle. Usually, this limit is 1000 messages. + + Please remember that _m_s_h is not the _C_S_h_e_l_l, and that a lot of the + nice facilities provided by the latter are not present in the form- + er. + + In particular, _m_s_h does not understand back-quoting, so the only + effective way to use _p_i_c_k inside _m_s_h is to always use the + `-seq select' switch. Clever users of _M_H will put the line + + pick: -seq select -list + + in their .mh_profile file so that _p_i_c_k works equally well from both + the shell and _m_s_h. + + _s_o_r_t_m always uses "-noverbose" and if "-textfield field" is used, + "-limit 0". + + The _m_s_h program inherits most (if not all) of the bugs from the _M_H + commands it implements. + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + NEXT(1) -63- NEXT(1) + + + _N_A_M_E + next - show the next message + + _S_Y_N_O_P_S_I_S + next [+folder] [-header] [-noheader] [-showproc program] + [-noshowproc] [switches for _s_h_o_w_p_r_o_c] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _N_e_x_t performs a _s_h_o_w on the next message in the specified (or + current) folder. Like _s_h_o_w, it passes any switches on to the pro- + gram _s_h_o_w_p_r_o_c, which is called to list the message. This command + is almost exactly equivalent to "show next". Consult the manual + entry for _s_h_o_w (1) for all the details. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + showproc: Program to show the message + + + _S_e_e _A_l_s_o + show(1), prev(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `-header' + + + _C_o_n_t_e_x_t + If a folder is specified, it will become the current folder. The + message that is shown (i.e., the next message in sequence) will be- + come the current message. + + + _B_u_g_s + _n_e_x_t is really a link to the _s_h_o_w program. As a result, if you + make a link to _n_e_x_t and that link is not called _n_e_x_t, your link + will act like _s_h_o_w instead. To circumvent this, add a + profile-entry for the link to your _M_H profile and add the argument + _n_e_x_t to the entry. + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + PACKF(1) -64- PACKF(1) + + + _N_A_M_E + packf - compress a folder into a single file + + _S_Y_N_O_P_S_I_S + packf [+folder] [msgs] [-file name] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _P_a_c_k_f takes messages from a folder and copies them to a single + file. Each message in the file is separated by four CTRL-A's and a + newline (identical to the way messages are stored in your receiving + mail drop). Messages packed can be unpacked using _i_n_c. + + If the _n_a_m_e given to the `-file name' switch exists, then the mes- + sages specified will be appended to the end of the file, otherwise + the file will be created and the messages appended. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Msg-Protect: To set mode when creating a new `file' + + + _S_e_e _A_l_s_o + inc(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to all + `-file ./msgbox' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. The first + message packed will become the current message. + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + PICK(1) -65- PICK(1) + + + _N_A_M_E + pick - select messages by content + + _S_Y_N_O_P_S_I_S + pick [+folder] [msgs] [-and ...] [-or ...] [-not ...] + [-lbrace ... -rbrace] [--component pattern] [-after date] + [-before date] [-datefield field] [-sequence name ...] + [-public] [-nopublic] [-zero] [-nozero] [-list] [-nolist] + [-help] + + typically: + scan `pick -from jones` + pick -to holloway -sequence select + show `pick -before friday` + + _D_E_S_C_R_I_P_T_I_O_N + + _P_i_c_k searches messages within a folder for the specified contents, + and then identifies those messages. Two types of search primitives + are available: pattern matching and date constraint operations. + + A modified _g_r_e_p(1) is used to perform the matching, so the full + regular expression (see _e_d(1)) facility is available within `pat- + tern'. With `-search', `pattern' is used directly, and with the + others, the grep pattern constructed is: + + "component[ \t]*:.*pattern" + + This means that the pattern specified for a `-search' will be found + everywhere in the message, including the header and the body, while + the other pattern matching requests are limited to the single + specified component. The expression + + `--component pattern' + + is a shorthand for specifying + + `-search "component[ \t]*:.*pattern" ' + + It is used to pick a component which is not one of "To:", "cc:", + "Date:", "From:", or "Subject:". An example is + `pick --reply-to pooh'. + + Pattern matching is performed on a per-line basis. Within the + header of the message, each component is treated as one long line, + but in the body, each line is separate. Lower-case letters in the + search pattern will match either lower or upper case in the mes- + sage, while upper case will match only upper case. + + Note that since the `-date' switch is a pattern matching operation + (as described above), to find messages sent on a certain date the + pattern string must match the text of the "Date:" field of the + + [mh.6] MH.6.7 UCI version + + + + + + + + + + PICK(1) -66- PICK(1) + + + message. + + Independent of any pattern matching operations requested, the + switches `-after date' or `-before date' may also be used to intro- + duce date/time contraints on all of the messages. By default, the + "Date:" field is consulted, but if another date yielding field + (such as "BB-Posted:" or "Delivery-Date:") should be used, the + `-datefield field' switch may be used. + + With `-before' and `-after', _p_i_c_k will actually parse the date + fields in each of the messages specified in `msgs' and compare them + to the date/time specified. If `-after' is given, then only those + messages whose "Date:" field value is chronologically after the + date specified will be considered. The `-before' switch specifies + the complimentary action. + + Both the `-after' and `-before' switches take legal 822-style date + specifications as arguments. _P_i_c_k will default certain missing + fields so that the entire date need not be specified. These fields + are (in order of defaulting): timezone, time and timezone, date, + date and timezone. All defaults are taken from the current date, + time, and timezone. + + In addition to 822-style dates, _p_i_c_k will also recognize any of the + days of the week ("sunday", "monday", and so on), and the special + dates "today", "yesterday" (24 hours ago), and "tomorrow" (24 hours + from now). All days of the week are judged to refer to a day in + the past (e.g., telling _p_i_c_k "saturday" on a "tuesday" means + "last saturday" not "this saturday"). + + Finally, in addition to these special specifications, _p_i_c_k will + also honor a specification of the form "-dd", which means "dd days + ago". + + _P_i_c_k supports complex boolean operations on the searching primi- + tives with the `-and', `-or', `-not', and `-lbrace ... -rbrace' + switches. For example, + + pick -after yesterday -and -lbrace -from freida -or -from fear -rbrace + + identifies messages recently sent by "frieda" or "fear". + + The matching primitives take precedence over the `-not' switch, + which in turn takes precedence over `-and' which in turn takes pre- + cedence over `-or'. To override the default precedence, the + `-lbrace' and `-rbrace' switches are provided, which act just like + opening and closing parentheses in logical expressions. + + Once the search has been performed, if the `-list' switch is given, + the message numbers of the selected messages are written to the + standard output separated by newlines. This is _e_x_t_r_e_m_e_l_y useful + for quickly generating arguments for other _M_H programs by using the + + [mh.6] MH.6.7 UCI version + + + + + + + + + + PICK(1) -67- PICK(1) + + + "backquoting" syntax of the shell. For example, the command + + scan `pick +todo -after "31 Mar 83 0123 PST"` + + says to _s_c_a_n those messages in the indicated folder which meet the + appropriate criterion. Note that since _p_i_c_k 's context changes are + written out prior to _s_c_a_n 's invocation, you need not give the + folder argument to _s_c_a_n as well. + + Regardless of the operation of the `-list' switch, the `-sequence + name' switch may be given once for each sequence the user wishes to + define. For each sequence named, that sequence will be defined to + mean exactly those messages selected by _p_i_c_k. For example, + + pick -from frated -seq fred + + defines a new message sequence for the current folder called "fred" + which contains exactly those messages that were selected. + + Note that whenever _p_i_c_k processes a `-sequence name' switch, it + sets `-nolist'. + + By default, _p_i_c_k will zero the sequence before adding it. This + action can be disabled with the `-nozero' switch, which means that + the messages selected by _p_i_c_k will be added to the sequence, if it + already exists, and any messages already a part of that sequence + will remain so. + + The `-public' and `-nopublic' switches are used by _p_i_c_k in the same + way _m_a_r_k uses them. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + + + _S_e_e _A_l_s_o + mark(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to all + `-datefield date' + `-nopublic' if the folder is read-only, `-public' otherwise + `-zero' + `-list' is the default if no `-sequence', `-nolist' otherwise +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + PICK(1) -68- PICK(1) + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. + + + _H_i_s_t_o_r_y + In previous versions of _M_H, the _p_i_c_k command would _s_h_o_w, _s_c_a_n, or + _r_e_f_i_l_e the selected messages. This was rather "inverted logic" + from the UNIX point of view, so _p_i_c_k was changed to define se- + quences and output those sequences. Hence, _p_i_c_k can be used to + generate the arguments for all other _M_H commands, instead of giving + _p_i_c_k endless switches for invoking those commands itself. + + Also, previous versions of _p_i_c_k balked if you didn't specify a + search string or a date/time constraint. The current version does + not, and merely matches the messages you specify. This lets you + type something like: + + show `pick last:20 -seq fear` + + instead of typing + + mark -add -nozero -seq fear last:20 + show fear + + Finally, timezones used to be ignored when comparing dates: they + aren't any more. + + + _B_u_g_s + The argument to the `-after' and `-before' switches must be inter- + preted as a single token by the shell that invokes _p_i_c_k. There- + fore, one must usually place the argument to this switch inside + double-quotes. Furthermore, any occurance of `-datefield' must oc- + cur prior to the `-after' or `-before' switch it applies to. + + If _p_i_c_k is used in a back-quoted operation, such as + + scan `pick -from jones` + + and _p_i_c_k fails (e.g., no messages are from "jones"), then the shell + will still run the outer command (e.g., "scan"). Since no messages + were matched, _p_i_c_k produced no output, and the argument given to + the outer command as a result of backquoting _p_i_c_k is empty. In the + case of _M_H programs, the outer command now acts as if the default + `msg' or `msgs' should be used (e.g., "all" in the case of _s_c_a_n ). + To prevent this unexpected behavior, if `-list' was given, and if + its standard output is not a tty, then _p_i_c_k outputs the illegal + message number "0" when it fails. This lets the outer command fail + gracefully as well. + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + PREV(1) -69- PREV(1) + + + _N_A_M_E + prev - show the previous message + + _S_Y_N_O_P_S_I_S + prev [+folder] [-header] [-noheader] [-showproc program] + [-noshowproc] [-switches for _s_h_o_w_p_r_o_c] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _P_r_e_v performs a _s_h_o_w on the previous message in the specified (or + current) folder. Like _s_h_o_w, it passes any switches on to the pro- + gram named by _s_h_o_w_p_r_o_c, which is called to list the message. This + command is almost exactly equivalent to "show prev". Consult the + manual entry for _s_h_o_w (1) for all the details. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + showproc: Program to show the message + + + _S_e_e _A_l_s_o + show(1), next(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `-header' + + + _C_o_n_t_e_x_t + If a folder is specified, it will become the current folder. The + message that is shown (i.e., the previous message in sequence) will + become the current message. + + + _B_u_g_s + _p_r_e_v is really a link to the _s_h_o_w program. As a result, if you + make a link to _p_r_e_v and that link is not called _p_r_e_v, your link + will act like _s_h_o_w instead. To circumvent this, add a + profile-entry for the link to your _M_H profile and add the argument + _p_r_e_v to the entry. + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + PROMPTER(1) -70- PROMPTER(1) + + + _N_A_M_E + prompter - prompting editor front-end + + _S_Y_N_O_P_S_I_S + prompter [-erase chr] [-kill chr] [-prepend] [-noprepend] [-rapid] + [-norapid] [-doteof] [-nodoteof] file [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + This program is normally not invoked directly by users but takes + the place of an editor and acts as an editor front-end. It + operates on an 822-style message draft skeleton specified by file, + normally provided by _c_o_m_p, _d_i_s_t, _f_o_r_w, or _r_e_p_l. + + _P_r_o_m_p_t_e_r is an editor which allows rapid composition of messages. + It is particularly useful to network and low-speed (less than 2400 + baud) users of _M_H. It is an _M_H program in that it can have its own + profile entry with switches, but it is not invoked directly by the + user. The commands _c_o_m_p, _d_i_s_t, _f_o_r_w, and _r_e_p_l invoke _p_r_o_m_p_t_e_r as + an editor, either when invoked with `-editor prompter', or by the + profile entry "Editor: prompter", or when given the command + `edit prompter' at "What now?" level. + + For each empty component _p_r_o_m_p_t_e_r finds in the draft, the user is + prompted for a response; A will cause the whole component + to be left out. Otherwise, a `\' preceding a will con- + tinue the response on the next line, allowing for multiline com- + ponents. Continuation lines must begin with a space or tab. + + Each non-empty component is copied to the draft and displayed on + the terminal. + + The start of the message body is denoted by a blank line or a line + of dashes. If the body is non-empty, the prompt, which isn't writ- + ten to the file, is + + "--------Enter additional text", + + or (if `-prepend' was given) + + "--------Enter initial text". + + Message-body typing is terminated with an end-of-file (usually + CTRL-D). With the `-doteof' switch, a period on a line all by + itself also signifies end-of-file. At this point control is + returned to the calling program, where the user is asked "What + now?". See _w_h_a_t_n_o_w for the valid options to this query. + + By using the `-prepend' switch, the user can add type-in to the + beginning of the message body and have the rest of the body follow. + This is useful for the _f_o_r_w command. +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + PROMPTER(1) -71- PROMPTER(1) + + + By using the `-rapid' switch, if the draft already contains text in + the message-body, it is not displayed on the user's terminal. This + is useful for low-speed terminals. + + The line editing characters for kill and erase may be specified by + the user via the arguments `-kill chr' and `-erase chr', where chr + may be a character; or `\nnn', where "nnn" is the octal value for + the character. + + An interrupt (usually CTRL-C) during component typing will abort + _p_r_o_m_p_t_e_r and the _M_H command that invoked it. An interrupt during + message-body typing is equivalent to CTRL-D, for historical rea- + sons. This means that _p_r_o_m_p_t_e_r should finish up and exit. + + The first non-flag argument to _p_r_o_m_p_t_e_r is taken as the name of the + draft file, and subsequent non-flag arguments are ignored. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /tmp/prompter* Temporary copy of message + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + prompter-next: To name the editor to be used on exit from + _p_r_o_m_p_t_e_r + Msg-Protect: To set mode when creating a new draft + + + _S_e_e _A_l_s_o + comp(1), dist(1), forw(1), repl(1), whatnow(1) + + + _D_e_f_a_u_l_t_s + `-prepend' + `-norapid' + `-nodoteof' + + + _C_o_n_t_e_x_t + None + + _H_e_l_p_f_u_l _H_i_n_t_s + + The `-rapid' option is particularly useful with _f_o_r_w, and + `-noprepend' is useful with _c_o_m_p -_u_s_e. + + The user may wish to link _p_r_o_m_p_t_e_r under several names (e.g., "ra- + pid") and give appropriate switches in the profile entries under + these names (e.g., "rapid: -rapid"). This facilitates invoking + prompter differently for different _M_H commands (e.g., "forw: -edi- + tor rapid"). +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + PROMPTER(1) -72- PROMPTER(1) + + + _B_u_g_s + _P_r_o_m_p_t_e_r uses _s_t_d_i_o (3), so it will lose if you edit files with + nulls in them. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + RCVSTORE(1) -73- RCVSTORE(1) + + + _N_A_M_E + rcvstore - incorporate new mail asynchronously + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/rcvstore [+folder] [-create] [-nocreate] + [-sequence name ...] [-public] [-nopublic] [-zero] [-nozero] + [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _R_c_v_s_t_o_r_e incorporates a message from the standard input into an _M_H + folder. If `+folder' isn't specified, the folder named "inbox" in + the user's _M_H directory will be used instead. The new message + being incorporated is assigned the next highest number in the + folder. If the specified (or default) folder doesn't exist, then + it will be created if the `-create' option is specified, otherwise + _r_c_v_s_t_o_r_e will exit. + + If the user's profile contains a "Msg-Protect: nnn" entry, it will + be used as the protection on the newly created messages, otherwise + the _M_H default of 0644 will be used. During all operations on mes- + sages, this initially assigned protection will be preserved for + each message, so _c_h_m_o_d(1) may be used to set a protection on an + individual message, and its protection will be preserved + thereafter. + + _R_c_v_s_t_o_r_e will incorporate anything except zero length messages into + the user's MH folder. + + If the profile entry "Unseen-Sequence" is present and non-empty, + then _r_c_v_s_t_o_r_e will add the newly incorporated message to each + sequence named by the profile entry. This is similar to the + "Previous-Sequence" profile entry supported by all _M_H commands + which take `msgs' or `msg' arguments. Note that _r_c_v_s_t_o_r_e will not + zero each sequence prior to adding messages. + + Furthermore, the incoming messages may be added to user-defined + sequences as they arrive by appropriate use of the `-sequence' + option. As with _p_i_c_k, use of the `-zero' and `-nozero' switches + can also be used to zero old sequences or not. Similarly, use of + the `-public' and `-nopublic switches may be used to force addi- + tions to public and private sequences. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + RCVSTORE(1) -74- RCVSTORE(1) + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Folder-Protect: To set mode when creating a new folder + Msg-Protect: To set mode when creating a new message + Unseen-Sequence: To name sequences denoting unseen messages + + + _S_e_e _A_l_s_o + inc(1), pick(1), mh-mail(5) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to "inbox" + `-create' + `-nopublic' if the folder is read-only, `-public' otherwise + `-nozero' + + + _C_o_n_t_e_x_t + No context changes will be attempted, with the exception of se- + quence manipulation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + REFILE(1) -75- REFILE(1) + + + _N_A_M_E + refile - file message in other folders + + _S_Y_N_O_P_S_I_S + refile [msgs] [-draft] [-link] [-nolink] [-preserve] [-nopreserve] + [-src +folder] [-file file] [-rmmproc program] [-normmproc] + +folder ... [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _R_e_f_i_l_e moves (_m_v (1)) or links (_l_n (1)) messages from a source + folder into one or more destination folders. If you think of a + message as a sheet of paper, this operation is not unlike filing + the sheet of paper (or copies) in file cabinet folders. When a + message is filed, it is linked into the destination folder(s) if + possible, and is copied otherwise. As long as the destination + folders are all on the same file system, multiple filing causes + little storage overhead. This facility provides a good way to + cross-file or multiply-index messages. For example, if a message + is received from Jones about the ARPA Map Project, the command + + refile cur +jones +Map + + would allow the message to be found in either of the two folders + `jones' or `Map'. + + The option `-file file' directs _r_e_f_i_l_e to use the specified file as + the source message to be filed, rather than a message from a + folder. Note that the file should be a validly formatted message, + just like any other _M_H message. It should NOT be in mail drop for- + mat (to convert a file in mail drop format to a folder of _M_H mes- + sages, see _i_n_c (1)). + + If a destination folder doesn't exist, _r_e_f_i_l_e will ask if you want + to create it. A negative response will abort the file operation. + + The option `-link' preserves the source folder copy of the message + (i.e., it does a _l_n(1) rather than a _m_v(1)), whereas, `-nolink' + deletes the filed messages from the source folder. Normally, when + a message is filed, it is assigned the next highest number avail- + able in each of the destination folders. Use of the `-preserve' + switch will override this message renaming, but name conflicts may + occur, so use this switch cautiously. + + If `-link' is not specified (or `-nolink' is specified), the filed + messages will be removed from the source folder, by renaming them + with a site-dependent prefix (usually a comma). + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + REFILE(1) -76- REFILE(1) + + + If the user has a profile component such as + + rmmproc: /bin/rm + + then _r_e_f_i_l_e will instead call the named program to delete the mes- + sage files. The user may specify `-rmmproc program' on the command + line to override this profile specification. The `-normmproc' + option forces the message files to be deleted by renaming them as + described above. + + The `-draft' switch tells _r_e_f_i_l_e to file the /draft. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Folder-Protect: To set mode when creating a new folder + rmmproc: Program to delete the message + + + _S_e_e _A_l_s_o + folder(1) + + + _D_e_f_a_u_l_t_s + `-src +folder' defaults to the current folder + `msgs' defaults to cur + `-nolink' + `-nopreserve' + + + _C_o_n_t_e_x_t + If `-src +folder' is given, it will become the current folder. If + neither `-link' nor `all' is specified, the current message in the + source folder will be set to the last message specified; otherwise, + the current message won't be changed. + + If the Previous-Sequence profile entry is set, in addition to de- + fining the named sequences from the source folder, _r_e_f_i_l_e will also + define those sequences for the destination folders. See + _m_h-_p_r_o_f_i_l_e (1) for information concerning the previous sequence. + + + _B_u_g_s + Since _r_e_f_i_l_e uses your _r_m_m_p_r_o_c to delete the message, the _r_m_m_p_r_o_c + must NOT call _r_e_f_i_l_e without specifying `-normmproc', or you will + create an infinte loop. + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + REPL(1) -77- REPL(1) + + + _N_A_M_E + repl - reply to a message + + _S_Y_N_O_P_S_I_S + repl [+folder] [msg] [-annotate] [-noannotate] [-cc all/to/cc/me] + [-nocc all/to/cc/me] [-draftfolder +folder] + [-draftmessage msg] [-nodraftfolder] [-editor editor] + [-noedit] [-fcc +folder] [-filter filterfile] [-form formfile] + [-inplace] [-noinplace] [-query] [-noquery] [-width columns] + [-whatnowproc program] [-nowhatnowproc] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _R_e_p_l aids a user in producing a reply to an existing message. _R_e_p_l + uses a reply template to guide its actions when constructing the + message draft of the reply. In its simplest form (with no argu- + ments), it will set up a message-form skeleton in reply to the + current message in the current folder, and invoke the whatnow + shell. The default reply template will direct _r_e_p_l to construct + the composed message as follows: + + To: or + cc: , , and yourself + Subject: Re: + In-reply-to: Your message of . + + + where field names enclosed in angle brackets (< >) indicate the + contents of the named field from the message to which the reply is + being made. A reply template is simply a format file. See + _m_h-_f_o_r_m_a_t (5) for the details. + + The `-cc type' switch takes an argument which specifies who gets + placed on the "cc:" list of the reply. The `-query' switch modi- + fies the action of `-cc type' switch by interactively asking you if + each address that normally would be placed in the "To:" and "cc:" + list should actually be sent a copy. (This is useful for + special-purpose replies.) Note that the position of the `-cc' and + `-nocc' switches, like all other switches which take a positive and + negative form, is important. + + Lines beginning with the fields "To:", "cc:", and "Bcc:" will be + standardized and have duplicate addresses removed. In addition, + the `-width columns' switch will guide _r_e_p_l's formatting of these + fields. + + If the file named "replcomps" exists in the user's MH directory, it + will be used instead of the default form. In either case, the file + specified by `-form formfile' will be used if given. + + If the draft already exists, _r_e_p_l will ask you as to the disposi- + tion of the draft. A reply of quit will abort _r_e_p_l, leaving the + + [mh.6] MH.6.7 UCI version + + + + + + + + + + REPL(1) -78- REPL(1) + + + draft intact; replace will replace the existing draft with a blank + skeleton; and list will display the draft. + + See _c_o_m_p (1) for a description of the `-editor' and `-noedit' + switches. Note that while in the editor, the message being replied + to is available through a link named "@" (assuming the default + _w_h_a_t_n_o_w_p_r_o_c ). In addition, the actual pathname of the message is + stored in the envariable $editalt, and the pathname of the folder + containing the message is stored in the envariable $mhfolder. + + Although _r_e_p_l uses the `-form formfile' switch to direct it how to + construct the beginning of the draft, the `-filter filterfile' + switch directs _r_e_p_l as to how the message being replied-to should + be formatted in the body of the draft. If `-filter' is not speci- + fied, then the message being replied-to is not included in the body + of the draft. If `-filter filterfile' is specified, then the mes- + sage being replied-to is filtered (re-formatted) prior to being + output to the body of the draft. The filter file for _r_e_p_l should + be a standard form file for _m_h_l, as _r_e_p_l will invoke _m_h_l to format + the message being replied-to. There is no default message filter + (`-filter' must be followed by a file name). A filter file that is + commonly used is: + + : + body:nocomponent,compwidth=9,offset=9 + + which says to output a blank line and then the body of the message + being replied-to, indented by one tab-stop. Another format popular + on USENET is: + + message-id:nocomponent,formatfield=\ + "In message %{text}you write:" + body:component=">",overflowtext=">",overflowoffset=0 + + Which cites the Message-ID of the message being replied-to, and + then outputs each line of the body prefaced with the ">" character. + + If the `-annotate' switch is given, the message being replied-to + will be annotated with the lines + + Replied: date + Replied: addrs + + where the address list contains one line for each addressee. The + annotation will be done only if the message is sent directly from + _r_e_p_l. If the message is not sent immediately from _r_e_p_l, + "comp -use" may be used to re-edit and send the constructed mes- + sage, but the annotations won't take place. The `-inplace' switch + causes annotation to be done in place in order to preserve links to + the annotated message. + + The `-fcc +folder' switch can be used to automatically specify a + + [mh.6] MH.6.7 UCI version + + + + + + + + + + REPL(1) -79- REPL(1) + + + folder to receive Fcc:s. More than one folder, each preceeded by + `-fcc' can be named. + + In addition to the standard _m_h-_f_o_r_m_a_t (5) escapes, _r_e_p_l also recog- + nizes the following additional _c_o_m_p_o_n_e_n_t escape: + + _E_s_c_a_p_e _R_e_t_u_r_n_s _D_e_s_c_r_i_p_t_i_o_n + _f_c_c string Any folders specified with `-fcc folder' + + To avoid reiteration, _r_e_p_l strips any leading `Re: ' strings from + the _s_u_b_j_e_c_t component. + + The `-draftfolder +folder' and `-draftmessage msg' switches invoke + the _M_H draft folder facility. This is an advanced (and highly use- + ful) feature. Consult the Advanced Features section of the _M_H + manual for more information. + + Upon exiting from the editor, _r_e_p_l will invoke the _w_h_a_t_n_o_w program. + See _w_h_a_t_n_o_w (1) for a discussion of available options. The invoca- + tion of this program can be inhibited by using the `-nowhatnowproc' + switch. (In truth of fact, it is the _w_h_a_t_n_o_w program which starts + the initial edit. Hence, `-nowhatnowproc' will prevent any edit + from occurring.) + + _F_i_l_e_s + /usr/local/lib/mh/replcomps The reply template + or /replcomps Rather than the standard template + $HOME/.mh_profile The user profile + /draft The draft file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Alternate-Mailboxes: To determine the user's mailboxes + Current-Folder: To find the default current folder + Draft-Folder: To find the default draft-folder + Editor: To override the default editor + Msg-Protect: To set mode when creating a new message + (draft) + fileproc: Program to refile the message + mhlproc: Program to filter message being replied-to + whatnowproc: Program to ask the "What now?" questions + + + _S_e_e _A_l_s_o + comp(1), dist(1), forw(1), send(1), whatnow(1), mh-format(5) + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + REPL(1) -80- REPL(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msg' defaults to cur + `-nocc all' at ATHENA sites, `-cc all' otherwise + `-noannotate' + `-nodraftfolder' + `-noinplace' + `-noquery' + `-width 72' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. The mes- + sage replied-to will become the current message. + + + _H_i_s_t_o_r_y + Prior to using the format string mechanism, `-noformat' used to + cause address headers to be output as-is. Now all address fields + are formatted using Internet standard guidelines. + + + _B_u_g_s + If any addresses occur in the reply template, addresses in the tem- + plate that do not contain hosts are defaulted incorrectly. Instead + of using the localhost for the default, _r_e_p_l uses the sender's + host. Moral of the story: if you're going to include addresses in + a reply template, include the host portion of the address. + + The `-width columns' switch is only used to do address-folding; + other headers are not line-wrapped. + + If _w_h_a_t_n_o_w_p_r_o_c is _w_h_a_t_n_o_w, then _r_e_p_l uses a built-in _w_h_a_t_n_o_w, it + does not actually run the _w_h_a_t_n_o_w program. Hence, if you define + your own _w_h_a_t_n_o_w_p_r_o_c, don't call it _w_h_a_t_n_o_w since _r_e_p_l won't run + it. + + If your current working directory is not writable, the link named + "@" is not available. + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + RMF(1) -81- RMF(1) + + + _N_A_M_E + rmf - remove folder + + _S_Y_N_O_P_S_I_S + rmf [+folder] [-interactive] [-nointeractive] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _R_m_f removes all of the messages (files) within the specified (or + default) folder, and then removes the folder (directory) itself. + If there are any files within the folder which are not a part of + _M_H, they will _n_o_t be removed, and an error will be produced. If + the folder is given explicitly or the `-nointeractive' option is + given, then the folder will be removed without confirmation. Oth- + erwise, the user will be asked for confirmation. If _r_m_f can't find + the current folder, for some reason, the folder to be removed + defaults to `+inbox' with confirmation. + + _R_m_f irreversibly deletes messages that don't have other links, so + use it with caution. + + If the folder being removed is a subfolder, the parent folder will + become the new current folder, and _r_m_f will produce a message tel- + ling the user this has happened. This provides an easy mechanism + for selecting a set of messages, operating on the list, then remov- + ing the list and returning to the current folder from which the + list was extracted. + + _R_m_f of a read-only folder will delete the private sequence and cur + information (i.e., "atr-_s_e_q-_f_o_l_d_e_r" entries) from the profile + without affecting the folder itself. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + + + _S_e_e _A_l_s_o + rmm(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder, usually with confirmation + `-interactive' if +folder' not given, `-nointeractive' otherwise + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + RMF(1) -82- RMF(1) + + + _C_o_n_t_e_x_t + _R_m_f will set the current folder to the parent folder if a subfolder + is removed; or if the current folder is removed, it will make "in- + box" current. Otherwise, it doesn't change the current folder or + message. + + + _B_u_g_s + Although intuitively one would suspect that _r_m_f works recursively, + it does not. Hence if you have a sub-folder within a folder, in + order to _r_m_f the parent, you must first _r_m_f each of the children. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + RMM(1) -83- RMM(1) + + + _N_A_M_E + rmm - remove messages + + _S_Y_N_O_P_S_I_S + rmm [+folder] [msgs] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _R_m_m removes the specified messages by renaming the message files + with preceding commas. Many sites consider files that start with a + comma to be a temporary backup, and arrange for _c_r_o_n (8) to remove + such files once a day. + + If the user has a profile component such as + + rmmproc: /bin/rm + + then instead of simply renaming the message file, _r_m_m will call the + named program to delete the file. Note that at most installations, + _c_r_o_n (8) is told to remove files that begin with a comma once a + night. + + Some users of csh prefer the following: + + alias rmm 'refile +d' + + where folder +d is a folder for deleted messages, and + + alias mexp 'rm `mhpath +d all`' + + is used to "expunge" deleted messages. + + The current message is not changed by _r_m_m, so a _n_e_x_t will advance + to the next message in the folder as expected. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + rmmproc: Program to delete the message + + + _S_e_e _A_l_s_o + rmf(1) + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + RMM(1) -84- RMM(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to cur + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. + + _H_e_l_p_f_u_l _H_i_n_t_s + + If you're not a csh user, and you have an _r_m_m_p_r_o_c script which + _r_e_f_i_l_es messages, be sure you use something like: + + mv `mhpath msgs` `mhpath new +folder` + + Other work-arounds are possible, such as: + + cd `mhpath +` + MH=/dev/null MHCONTEXT=/dev/null refile $* +folder + + + _B_u_g_s + Since _r_e_f_i_l_e uses your _r_m_m_p_r_o_c to delete the message, the _r_m_m_p_r_o_c + must NOT call _r_e_f_i_l_e without specifying `-normmproc', or you will + create an infinte loop. + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + SCAN(1) -85- SCAN(1) + + + _N_A_M_E + scan - produce a one line per message scan listing + + _S_Y_N_O_P_S_I_S + scan [+folder] [msgs] [-clear] [-noclear] [-form formatfile] + [-format string] [-header] [-noheader] [-width columns] + [-reverse] [-noreverse] [-file filename] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _S_c_a_n produces a one-line-per-message listing of the specified mes- + sages. Each _s_c_a_n line contains the message number (name), the + date, the "From:" field, the "Subject" field, and, if room allows, + some of the body of the message. For example: + + 15+ 7/ 5 Dcrocker nned <> if the body is sufficiently short. _S_c_a_n + actually reads each of the specified messages and parses them to + extract the desired fields. During parsing, appropriate error mes- + sages will be produced if there are format errors in any of the + messages. + + The `-header' switch produces a header line prior to the _s_c_a_n list- + ing. Currently, the name of the folder and the current date and + time are output (see the HISTORY section for more information). + + If the `-clear' switch is used and _s_c_a_n'_s output is directed to a + terminal, then _s_c_a_n will consult the $TERM and $TERMCAP envariables + to determine your terminal type in order to find out how to clear + the screen prior to exiting. If the `-clear' switch is used and + _s_c_a_n'_s output is not directed to a terminal (e.g., a pipe or a + file), then _s_c_a_n will send a formfeed prior to exiting. + + For example, the command: + + (scan -clear -header; show all -show pr -f) | lpr + + produces a scan listing of the current folder, followed by a + formfeed, followed by a formatted listing of all messages in the + folder, one per page. Omitting `-show pr -f' will cause the mes- + sages to be concatenated, separated by a one-line header and two + + [mh.6] MH.6.7 UCI version + + + + + + + + + + SCAN(1) -86- SCAN(1) + + + blank lines. + + If _s_c_a_n encounters a message without a "Date:" field, rather than + leaving that portion of the scan listing blank, the date is + filled-in with the last write date of the message, and post-fixed + with a `*'. This is particularly handy for scanning a _d_r_a_f_t + _f_o_l_d_e_r, as message drafts usually aren't allowed to have dates in + them. + + To override the output format used by _s_c_a_n, the `-format string' or + `-format file' switches are used. This permits individual fields + of the scan listing to be extracted with ease. The string is sim- + ply a format string and the file is simply a format file. See + _m_h-_f_o_r_m_a_t (5) for the details. + + In addition to the standard _m_h-_f_o_r_m_a_t (5) escapes, _s_c_a_n also recog- + nizes the following additional _c_o_m_p_o_n_e_n_t escape: + + _E_s_c_a_p_e _R_e_t_u_r_n_s _D_e_s_c_r_i_p_t_i_o_n + body string the (compressed) first part of the body + + Also, if no date header was present in the message, the _f_u_n_c_t_i_o_n + escapes which operate on {_d_a_t_e} will return values for the date of + last modification of the message file itself. + + + _s_c_a_n will update the _M_H context prior to starting the listing, so + interrupting a long _s_c_a_n listing preserves the new context. _M_H + purists hate this idea. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Alternate-Mailboxes: To determine the user's mailboxes + Current-Folder: To find the default current folder + + + _S_e_e _A_l_s_o + inc(1), pick(1), show(1), mh-format(5) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the folder current + `msgs' defaults to all + `-format' defaulted as described above + `-noheader' + `-width' defaulted to the width of the terminal + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + SCAN(1) -87- SCAN(1) + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. + + + _H_i_s_t_o_r_y + Prior to using the format string mechanism, `-header' used to gen- + erate a heading saying what each column in the listing was. Format + strings prevent this from happening. + + + _B_u_g_s + The argument to the `-format' switch must be interpreted as a sin- + gle token by the shell that invokes _s_c_a_n. Therefore, one must usu- + ally place the argument to this switch inside double-quotes. + The value of each _c_o_m_p_o_n_e_n_t escape is set by _s_c_a_n to the contents + of the first message header _s_c_a_n encounters with the corresponding + component name; any following headers with the same component name + are ignored. + + The switch `-reverse', makes _s_c_a_n list the messages in reverse ord- + er; this should be considered a bug. + + The `-file filename' switch allows the user to obtain a _s_c_a_n list- + ing of a maildrop file as produced by _p_a_c_k_f. This listing includes + every message in the file. The user should use _m_s_h for more selec- + tive processing of the file. `-reverse' is ignored with this op- + tion. + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + SEND(1) -88- SEND(1) + + + _N_A_M_E + send - send a message + + _S_Y_N_O_P_S_I_S + send [-alias aliasfile] [-draft] [-draftfolder +folder] + [-draftmessage msg] [-nodraftfolder] [-filter filterfile] + [-nofilter] [-format] [-noformat] [-forward] [-noforward] + [-msgid] [-nomsgid] [-push] [-nopush] [-verbose] [-noverbose] + [-watch] [-nowatch] [-width columns] [file ...] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _S_e_n_d will cause each of the specified files to be delivered (via + _p_o_s_t (8)) to each of the destinations in the "To:", "cc:", "Bcc:", + and "Fcc:" fields of the message. If _s_e_n_d is re-distributing a + message, as invoked from _d_i_s_t, then the corresponding "Resent-xxx" + fields are examined instead. + + If `-push' is specified, _s_e_n_d will detach itself from the user's + terminal and perform its actions in the background. If _p_u_s_h 'd and + the draft can't be sent, then the `-forward' switch says that draft + should be forwarded with the failure notice sent to the user. This + differs from putting _s_e_n_d in the background because the output is + trapped and analyzed by _M_H. + + If `-verbose' is specified, _s_e_n_d will indicate the interactions + occurring with the transport system, prior to actual delivery. If + `-watch' is specified _s_e_n_d will monitor the delivery of local and + network mail. Hence, by specifying both switches, a large detail + of information can be gathered about each step of the message's + entry into the transport system. + + The `-draftfolder +folder' and `-draftmessage msg' switches invoke + the _M_H draft folder facility. This is an advanced (and highly use- + ful) feature. Consult the Advanced Features section of the _M_H + manual for more information. + + _S_e_n_d with no _f_i_l_e argument will query whether the draft is the + intended file, whereas `-draft' will suppress this question. Once + the transport system has successfully accepted custody of the mes- + sage, the file will be renamed with a leading comma, which allows + it to be retrieved until the next draft message is sent. If there + are errors in the formatting of the message, _s_e_n_d will abort with a + (hopefully) helpful error message. + + If a "Bcc:" field is encountered, its addresses will be used for + delivery, and the "Bcc:" field will be removed from the message + sent to sighted recipients. The blind recipients will receive an + entirely new message with a minimal set of headers. Included in + the body of the message will be a copy of the message sent to the + sighted recipients. If `-filter filterfile' is specified, then + this copy is filtered (re-formatted) prior to being sent to the + + [mh.6] MH.6.7 UCI version + + + + + + + + + + SEND(1) -89- SEND(1) + + + blind recipients. + + Prior to sending the message, the fields "From: user@local", and + "Date: now" will be appended to the headers in the message. If the + envariable $SIGNATURE is set, then its value is used as your per- + sonal name when constructing the "From:" line of the message. If + this envariable is not set, then _s_e_n_d will consult the profile + entry "Signature" for this information. On hosts where _M_H was con- + figured with the UCI option, if $SIGNATURE is not set and the "Sig- + nature" profile entry is not present, then the file + $HOME/.signature is consulted. If `-msgid' is specified, then a + "Message-ID:" field will also be added to the message. + + If _s_e_n_d is re-distributing a message (when invoked by _d_i_s_t ), then + "Resent-" will be prepended to each of these fields: "From:", + "Date:", and "Message-ID:". If the message already contains a + "From:" field, then a "Sender: user@local" field will be added as + well. (An already existing "Sender:" field is an error!) + + By using the `-format' switch, each of the entries in the "To:" and + "cc:" fields will be replaced with "standard" format entries. This + standard format is designed to be usable by all of the message + handlers on the various systems around the Internet. If `-nofor- + mat' is given, then headers are output exactly as they appear in + the message draft. + + If an "Fcc: folder" is encountered, the message will be copied to + the specified folder for the sender in the format in which it will + appear to any non-Bcc receivers of the message. That is, it will + have the appended fields and field reformatting. The "Fcc:" fields + will be removed from all outgoing copies of the message. + + By using the `-width columns' switch, the user can direct _s_e_n_d as + to how long it should make header lines containing addresses. + + The file specified by the profile entry "Aliasfile:" and any addi- + tional alias files given by the `-alias aliasfile' switch will be + read (more than one file, each preceeded by `-alias', can be + named). See _m_h-_a_l_i_a_s (5) for more information. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Draft-Folder: To find the default draft-folder + Aliasfile: For a default alias file + Signature: To determine the user's mail signature + mailproc: Program to post failure notices + postproc: Program to post the message +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + SEND(1) -90- SEND(1) + + + _S_e_e _A_l_s_o + comp(1), dist(1), forw(1), repl(1), mh-alias(5), post(8) + + + _D_e_f_a_u_l_t_s + `file' defaults to /draft + `-alias /usr/local/lib/mh/MailAliases' + `-nodraftfolder' + `-nofilter' + `-format' + `-forward' + `-nomsgid' + `-nopush' + `-noverbose' + `-nowatch' + `-width 72' + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + SHOW(1) -91- SHOW(1) + + + _N_A_M_E + show - show (list) messages + + _S_Y_N_O_P_S_I_S + show [+folder] [msgs] [-draft] [-header] [-noheader] + [-showproc program] [-noshowproc] [switches for _s_h_o_w_p_r_o_c] + [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _S_h_o_w lists each of the specified messages to the standard output + (typically, the terminal). Typically, the messages are listed + exactly as they are, with no reformatting. A program named by the + _s_h_o_w_p_r_o_c profile component is invoked to do the listing, and any + switches not recognized by _s_h_o_w are passed along to that program. + The default program is known as _m_o_r_e (1). To override the default + and the _s_h_o_w_p_r_o_c profile component, use the `-showproc program' + switch. For example, `-show pr' will cause the _p_r (1) program to + list the messages. The _M_H command _m_h_l can be used as a _s_h_o_w_p_r_o_c to + show messages in a more uniform format. Normally, this program is + specified as the _s_h_o_w_p_r_o_c is the user's .mh_profile. See _m_h_l (1) + for the details. If the `-noshowproc' option is specified, + `/bin/cat' is used instead of _s_h_o_w_p_r_o_c. + + The `-header' switch tells _s_h_o_w to display a one-line description + of the message being shown. This description includes the folder + and the message number. + + If no `msgs' are specified, the current message is used. If more + than one message is specified, _m_o_r_e will prompt for a + prior to listing each message. _m_o_r_e will list each message, a page + at a time. When the end of page is reached, _m_o_r_e will ring the + bell and wait for a or . If a is entered, + _m_o_r_e will print the next line, whereas will print the next + screenful. To exit _m_o_r_e, type "q". + + If the standard output is not a terminal, no queries are made, and + each file is listed with a one-line header and two lines of separa- + tion. + + "show -draft" will list the file /draft if it exists. + + If the profile entry "Unseen-Sequence" is present and non-empty, + then _s_h_o_w will remove each of the messages shown from each sequence + named by the profile entry. This is similar to the + "Previous-Sequence" profile entry supported by all _M_H commands + which take `msgs' or `msg' arguments. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + SHOW(1) -92- SHOW(1) + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Unseen-Sequence: To name sequences denoting unseen messages + showproc: Program to show messages + + + _S_e_e _A_l_s_o + mhl(1), more(1), next(1), pick(1), prev(1), scan(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to cur + `-header' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. The last + message shown will become the current message. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + SHOW(1) -93- SHOW(1) + + + _B_u_g_s + The `-header' switch doesn't work when `msgs' expands to more than + one message. If the _s_h_o_w_p_r_o_c is _m_h_l, then is problem can be cir- + cumvented by referencing the "messagename" field in the _m_h_l format + file. + + _S_h_o_w updates the user's context before showing the message. Hence + _s_h_o_w will mark messages as seen prior to the user actually seeing + them. This is generally not a problem, unless the user relies on + the "unseen" messages mechanism, and interrupts _s_h_o_w while it is + showing "unseen" messages. + + If _s_h_o_w_p_r_o_c is _m_h_l, then _s_h_o_w uses a built-in _m_h_l: it does not ac- + tually run the _m_h_l program. Hence, if you define your own + _s_h_o_w_p_r_o_c, don't call it _m_h_l since _s_h_o_w won't run it. + + If _m_o_r_e (1) is your showproc (the default), then avoid running _s_h_o_w + in the background with only its standard output piped to another + process, as in + + show | imprint & + + Due to a bug in _m_o_r_e, show will go into a "tty input" state. To + avoid this problem, re-direct _s_h_o_w's diagnostic output as well. + For users of _c_s_h: + + show |& imprint & + + For users of _s_h: + + show 2>&1 | imprint & + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + SORTM(1) -94- SORTM(1) + + + _N_A_M_E + sortm - sort messages + + _S_Y_N_O_P_S_I_S + sortm [+folder] [msgs] [-datefield field] [-textfield field] + [-notextfield] [-limit days] [-nolimit] [-verbose] + [-noverbose] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _S_o_r_t_m sorts the specified messages in the named folder according to + the chronological order of the "Date:" field of each message. + + The `-verbose' switch directs _s_o_r_t_m to tell the user the general + actions that it is taking to place the folder in sorted order. + + The `-datefield field' switch tells _s_o_r_t_m the name of the field to + use when making the date comparison. If the user has a special + field in each message, such as "BB-Posted:" or "Delivery-Date:", + then the `-datefield' switch can be used to direct _s_o_r_t_m which + field to examine. + + The `-textfield field' switch causes _s_o_r_t_m to sort messages by the + specified text field. If this field is "subject", any leading + "re:" is stripped off. In any case, all characters except letters + and numbers are stripped and the resulting strings are sorted + datefield-major, textfield-minor, using a case insensitive com- + parison. + + With `-textfield field', if `-limit days' is specified, messages + with similar textfields that are dated within `days' of each other + appear together. Specifying `-nolimit' makes the limit infinity. + With `-limit 0', the sort is instead made textfield-major, + date-minor. + + For example, to order a folder by date-major, subject-minor, use: + + sortm -textfield subject +folder + + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + + + _S_e_e _A_l_s_o + folder (1) +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + SORTM(1) -95- SORTM(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to all + `-datefield date' + `-notextfield' + `-noverbose' + `-nolimit' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. If the + current message is moved, _s_o_r_t_m will preserve its status as + current. + + + _H_i_s_t_o_r_y + Timezones used to be ignored when comparing dates: they aren't any + more. + + Messages which were in the folder, but not specified by `msgs', + used to be moved to the end of the folder; now such messages are + left untouched. + + Previously, _s_o_r_t_m would try to fill any gaps in a folder within the + range of messages it sorted. To improve performance, _s_o_r_t_m now + minimizes the number of message moves. To pack a folder, use + "_f_o_l_d_e_r -_p_a_c_k" instead. + + + _B_u_g_s + If _s_o_r_t_m encounters a message without a date-field, or if the mes- + sage has a date-field that _s_o_r_t_m cannot parse, then _s_o_r_t_m attempts + to keep the message in the same relative position. This does not + always work. For instance, if the first message encountered lacks + a date which can be parsed, then it will usually be placed at the + end of the messages being sorted. + + When _s_o_r_t_m complains about a message which it can't temporally ord- + er, it complains about the message number _p_r_i_o_r to sorting. It + should indicate what the message number will be _a_f_t_e_r sorting. + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + VMH(1) -96- VMH(1) + + + _N_A_M_E + vmh - visual front-end to MH + + _S_Y_N_O_P_S_I_S + vmh [-prompt string] [-vmhproc program] [-novmhproc] + [switches for _v_m_h_p_r_o_c] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _v_m_h is a program which implements the server side of the _M_H window + management protocol and uses _c_u_r_s_e_s (3) routines to maintain a + split-screen interface to any program which implements the client + side of the protocol. This latter program, called the _v_m_h_p_r_o_c, is + specified using the `-vmhproc program' switch. + + The upshot of all this is that one can run _m_s_h on a display termi- + nal and get a nice visual interface. To do this, for example, just + add the line + + mshproc: vmh + + to your .mh_profile. (This takes advantage of the fact that _m_s_h is + the default _v_m_h_p_r_o_c for _v_m_h.) + + In order to facilitate things, if the `-novmhproc' switch is given, + and _v_m_h can't run on the user's terminal, the _v_m_h_p_r_o_c is run + directly without the window management protocol. + + After initializing the protocol, _v_m_h prompts the user for a command + to be given to the client. Usually, this results in output being + sent to one or more windows. If a output to a window would cause + it to scroll, _v_m_h prompts the user for instructions, roughly per- + mitting the capabilities of _l_e_s_s or _m_o_r_e (e.g., the ability to + scroll backwards and forwards): + + SPACE advance to the next windowful + RETURN * advance to the next line + y * retreat to the previous line + d * advance to the next ten lines + u * retreat to the previous ten lines + g * go to an arbitrary line + (preceed g with the line number) + G * go to the end of the window + (if a line number is given, this acts like `g') + CTRL-L refresh the entire screen + h print a help message + q abort the window + + (A `*' indicates that a numeric prefix is meaningful for this com- + mand.) + + Note that if a command resulted in more than one window's worth of + + [mh.6] MH.6.7 UCI version + + + + + + + + + + VMH(1) -97- VMH(1) + + + information being displayed, and you allow the command which is + generating information for the window to gracefully finish (i.e., + you don't use the `q' command to abort information being sent to + the window), then _v_m_h will give you one last change to peruse the + window. This is useful for scrolling back and forth. Just type + `q' when you're done. + + To abnormally terminate _v_m_h (without core dump), use (usu- + ally CTRL-\). For instance, this does the "right" thing with _b_b_c + and _m_s_h. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + + + _S_e_e _A_l_s_o + msh(1) + + + _D_e_f_a_u_l_t_s + `-prompt (vmh) ' + `-vmhproc msh' + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + The argument to the `-prompt' switch must be interpreted as a sin- + gle token by the shell that invokes _v_m_h. Therefore, one must usu- + ally place the argument to this switch inside double-quotes. + + At present, there is no way to pass signals (e.g., interrupt, quit) + to the client. However, generating QUIT when _v_m_h is reading a com- + mand from the terminal is sufficient to tell the client to go away + quickly. + + Acts strangely (loses peer or botches window management protocol + with peer) on random occasions. + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + WHATNOW(1) -98- WHATNOW(1) + + + _N_A_M_E + whatnow - prompting front-end for send + + _S_Y_N_O_P_S_I_S + whatnow [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [-editor editor] [-noedit] [-prompt string] [file] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _W_h_a_t_n_o_w is the default program that queries the user about the + disposition of a composed draft. It is normally invoked by one of + _c_o_m_p, _d_i_s_t, _f_o_r_w, or _r_e_p_l after the initial edit. + + When started, the editor is started on the draft (unless `-noedit' + is given, in which case the initial edit is suppressed). Then, + _w_h_a_t_n_o_w repetitively prompts the user with "What now?" and awaits a + response. The valid responses are: + + display to list the message being distributed/replied-to on + the terminal + edit to re-edit using the same editor that was used on the + preceding round unless a profile entry + "-next: " names an alternate editor + edit to invoke for further editing + list to list the draft on the terminal + push to send the message in the background + quit to terminate the session and preserve the draft + quit -delete to terminate, then delete the draft + refile +folder to refile the draft into the given folder + send to send the message + send -watch to cause the delivery process to be monitored + whom to list the addresses that the message will go to + whom -check to list the addresses and verify that they are + acceptable to the transport service + + For the edit response, any valid switch to the editor is valid. + Similarly, for the send and whom responses, any valid switch to + _s_e_n_d (1) and _w_h_o_m (1) commands, respectively, are valid. For the + push response, any valid switch to _s_e_n_d (1) is valid (as this + merely invokes _s_e_n_d with the `-push' option). For the _r_e_f_i_l_e + response, any valid switch to the _f_i_l_e_p_r_o_c is valid. For the + display and list responses, any valid argument to the _l_p_r_o_c is + valid. If any non-switch arguments are present, then the pathname + of the draft will be excluded from the argument list given to the + _l_p_r_o_c (this is useful for listing another _M_H message). + + See _m_h-_p_r_o_f_i_l_e (5) for further information about how editors are + used by MH. It also discusses how complex envariables can be used + to direct _w_h_a_t_n_o_w's actions. + + The `-prompt string' switch sets the prompting string for _w_h_a_t_n_o_w. +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + WHATNOW(1) -99- WHATNOW(1) + + + The `-draftfolder +folder' and `-draftmessage msg' switches invoke + the _M_H draft folder facility. This is an advanced (and highly use- + ful) feature. Consult the Advanced Features section of the _M_H + manual for more information. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /draft The draft file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Draft-Folder: To find the default draft-folder + Editor: To override the default editor + -next: To name an editor to be used after exit from + + fileproc: Program to refile the message + lproc: Program to list the contents of a message + sendproc: Program to use to send the message + whomproc: Program to determine who a message would go to + + + _S_e_e _A_l_s_o + send(1), whom(1) + + + _D_e_f_a_u_l_t_s + `-prompt "What Now? "' + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + The argument to the `-prompt' switch must be interpreted as a sin- + gle token by the shell that invokes _w_h_a_t_n_o_w. Therefore, one must + usually place the argument to this switch inside double-quotes. + + If the initial edit fails, _w_h_a_t_n_o_w deletes your draft (by renaming + it with a leading comma); failure of a later edit preverves the + draft. + + If _w_h_a_t_n_o_w_p_r_o_c is _w_h_a_t_n_o_w, then _c_o_m_p, _d_i_s_t, _f_o_r_w, and _r_e_p_l use a + built-in _w_h_a_t_n_o_w, and do not actually run the _w_h_a_t_n_o_w program. + Hence, if you define your own _w_h_a_t_n_o_w_p_r_o_c, don't call it _w_h_a_t_n_o_w + since it won't be run. + + If _s_e_n_d_p_r_o_c is _s_e_n_d, then _w_h_a_t_n_o_w uses a built-in _s_e_n_d, it does not + actually run the _s_e_n_d program. Hence, if you define your own + _s_e_n_d_p_r_o_c, don't call it _s_e_n_d since _w_h_a_t_n_o_w won't run it. +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + WHATNOW(1) -100- WHATNOW(1) + + + _N_A_M_E + whom - report to whom a message would go + + _S_Y_N_O_P_S_I_S + whom [-alias aliasfile] [-check] [-nocheck] [-draft] + [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [file] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _W_h_o_m is used to expand the headers of a message into a set of + addresses and optionally verify that those addresses are deliver- + able at that time (if `-check' is given). + + The `-draftfolder +folder' and `-draftmessage msg' switches invoke + the _M_H draft folder facility. This is an advanced (and highly use- + ful) feature. Consult the Advanced Features section of the _M_H + manual for more information. + + The file specified by the profile entry "Aliasfile:" and any addi- + tional alias files given by the `-alias aliasfile' switch will be + read (more than one file, each preceeded by `-alias', can be + named). See _m_h-_a_l_i_a_s (5) for more information. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Draft-Folder: To find the default draft-folder + Aliasfile: For a default alias file + postproc: Program to post the message + + + _S_e_e _A_l_s_o + mh-alias(5), post(8) + + + _D_e_f_a_u_l_t_s + `file' defaults to /draft + `-nocheck' + `-alias /usr/local/lib/mh/MailAliases' + + + _C_o_n_t_e_x_t + None + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + WHOM(1) -101- WHOM(1) + + + _B_u_g_s + With the `-check' option, _w_h_o_m makes no guarantees that the ad- + dresses listed as being ok are really deliverable, rather, an ad- + dress being listed as ok means that at the time that _w_h_o_m was run + the address was thought to be deliverable by the transport service. + For local addresses, this is absolute; for network addresses, it + means that the host is known; for uucp addresses, it (often) means + that the _U_U_C_P network is available for use. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + -102- + + + _M_O_R_E _D_E_T_A_I_L_S + + This section describes some of the more intense points of the _M_H + system, by expanding on topics previously discussed. The format + presented conforms to the standard form for the description of UNIX + documentation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 + + + + + + + + + + MH-ALIAS(5) -103- MH-ALIAS(5) + + + _N_A_M_E + mh-alias - alias file for MH message system + + _S_Y_N_O_P_S_I_S + any _M_H command + + _D_E_S_C_R_I_P_T_I_O_N + + This describes both _M_H personal alias files and the (primary) alias + file for mail delivery, the file + + /usr/local/lib/mh/MailAliases + + It does not describe aliases files used by the message transport + system. Each line of the alias file has the format: + + alias : address-group + or + alias ; address-group + or + < alias-file + or + ; comment + + where: + + address-group := address-list + | "<" file + | "=" UNIX-group + | "+" UNIX-group + | "*" + + address-list := address + | address-list, address + + Continuation lines in alias files end with `\' followed by the new- + line character. + + Alias-file and file are UNIX file names. UNIX-group is a group + name (or number) from /_e_t_c/_g_r_o_u_p. An address is a "simple" + Internet-style address. Througout this file, case is ignored, + except for alias-file names. + + If the line starts with a `<', then the file named after the `<' is + read for more alias definitions. The reading is done recursively, + so a `<' may occur in the beginning of an alias file with the + expected results. + + If the address-group starts with a `<', then the file named after + the `<' is read and its contents are added to the address-list for + the alias. +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-ALIAS(5) -104- MH-ALIAS(5) + + + If the address-group starts with an `=', then the file /_e_t_c/_g_r_o_u_p + is consulted for the UNIX-group named after the `='. Each login + name occurring as a member of the group is added to the + address-list for the alias. + + In contrast, if the address-group starts with a `+', then the file + /_e_t_c/_g_r_o_u_p is consulted to determine the group-id of the UNIX-group + named after the `+'. Each login name occurring in the /_e_t_c/_p_a_s_s_w_d + file whose group-id is indicated by this group is added to the + address-list for the alias. + + If the address-group is simply `*', then the file /_e_t_c/_p_a_s_s_w_d is + consulted and all login names with a userid greater than some magic + number (usually 200) are added to the address-list for the alias. + + In match, a trailing * on an alias will match just about anything + appropriate. (See example below.) + + An approximation of the way aliases are resolved at posting time is + (it's not really done this way): + + 1) Build a list of all addresses from the message to be + delivered, eliminating duplicate addresses. + + 2) If this draft originated on the local host, then for those + addresses in the message that have no host specified, perform + alias resolution. + + 3) For each line in the alias file, compare "alias" against + all of the existing addresses. If a match, remove the matched + "alias" from the address list, and add each new address in the + address-group to the address list if it is not already on the + list. The alias itself is not usually output, rather the + address-group that the alias maps to is output instead. If + "alias" is terminated with a `;' instead of a `:', then both + the "alias" and the address are output in the correct format. + (This makes replies possible since _M_H aliases and personal + aliases are unknown to the mail transport system.) + + Since the alias file is read line by line, forward references work, + but backward references are not recognized, thus, there is no + recursion. + + Example: + " are defined to be "news". + + The key thing to understand about aliasing in _M_H is that aliases in + _M_H alias files are expanded into the headers of messages posted. + This aliasing occurs first, at posting time, without the knowledge + of the message transport system. In contrast, once the message + transport system is given a message to deliver to a list of + addresses, for each address that appears to be local, a system-wide + alias file is consulted. These aliases are NOT expanded into the + headers of messages delivered. + + _H_e_l_p_f_u_l _H_i_n_t_s + + To use aliasing in _M_H quickly, do the following: + + First, in your ._m_h__p_r_o_f_i_l_e, choose a name for your primary + alias file, say "aliases", and add the line: + + Aliasfile: aliases + + Second, create the file "aliases" in your _M_H directory. + + Third, start adding aliases to your "aliases" file as + appropriate. + + _F_i_l_e_s + /usr/local/lib/mh/MailAliases Primary alias file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Aliasfile: For a default alias file + + + _S_e_e _A_l_s_o + ali(1), send(1), whom(1), group(5), passwd(5), conflict(8), post(8) + + + _D_e_f_a_u_l_t_s + None + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-ALIAS(5) -106- MH-ALIAS(5) + + + _C_o_n_t_e_x_t + None + + + _H_i_s_t_o_r_y + In previous releases of _M_H, only a single, system-wide mh-alias + file was supported. Now that _M_H uses _M_M_D_F as a transport system, + the system-wide aliasing facility can be more consistently con- + trolled by the latter. This means that at most sites, the + system-wide mh-alias file will be empty (or trivial at best). + Hence, the semantics of mh-alias were extended to support personal + alias files. Users of _M_H no longer need to bother mail-system ad- + ministrators for keeping information in the system-wide alias file, + as each _M_H user can create/modify/remove aliases at will from any + number of personal files. + + + _B_u_g_s + Although the forward-referencing semantics of _m_h-_a_l_i_a_s files + prevent recursion, the "< alias-file" command may defeat this. + Since the number of file descriptors is finite (and very limited), + such infinite recursion will terminate with a meaningless diagnos- + tic when all the fds are used up. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-FORMAT(5) -107- MH-FORMAT(5) + + + _N_A_M_E + mh-format - format file for MH message system + + _S_Y_N_O_P_S_I_S + some _M_H commands + + _D_E_S_C_R_I_P_T_I_O_N + + Several _M_H commands utilize either a _f_o_r_m_a_t string or a _f_o_r_m_a_t file + during their execution. For example, _s_c_a_n (1) uses a format string + which directs it how to generate the scan listing for each message; + _r_e_p_l (1) uses a format file which directs it how to generate the + reply to a message, and so on. + + Format strings are designed to be efficiently parsed by _M_H which + means they are not necessarily simple to write and understand. + This means that novice, casual, or even advanced users of _M_H should + not have to deal with them. Some canned scan listing formats are + in /usr/local/lib/mh/scan.time, /usr/local/lib/mh/scan.size, and + /usr/local/lib/mh/scan.timely. Look in /usr/local/lib/mh for other + _s_c_a_n and _r_e_p_l format files which may have been written at your + site. + + It suffices to have your local _M_H expert actually write new format + commands or modify existing ones. This manual section explains how + to do that. Note: familiarity with the C _p_r_i_n_t_f routine is + assumed. + + A format string consists of ordinary text, and special multi- + character _e_s_c_a_p_e sequences which begin with `%'. When specifying a + format string, the usual C backslash characters are honored: `\b', + `\f', `\n', `\r', and `\t'. Continuation lines in format files end + with `\' followed by the newline character. There are three types + of _e_s_c_a_p_e sequences: header _c_o_m_p_o_n_e_n_t_s, built-in _f_u_n_c_t_i_o_n_s, and, + flow _c_o_n_t_r_o_l. + + A _c_o_m_p_o_n_e_n_t escape is specified as `%{_c_o_m_p_o_n_e_n_t}', and exists for + each header found in the message being processed. For example + `%{date}' refers to the "Date:" field of the appropriate message. + All component escapes have a string value. Normally, component + values are compressed by converting any control characters (tab and + newline included) to spaces, then eliding any leading or multiple + spaces. However, commands may give different interpretations to + some component escapes; be sure to refer to each command's manual + entry for complete details. + + A _f_u_n_c_t_i_o_n escape is specified as `%(_f_u_n_c_t_i_o_n)'. All functions are + built-in, and most have a string or numeric value. + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-FORMAT(5) -108- MH-FORMAT(5) + + + _C_o_n_t_r_o_l-_f_l_o_w _e_s_c_a_p_e_s + + A _c_o_n_t_r_o_l escape is one of: `%<', `%?', `%|', or `%>'. These are + combined into the conditional execution construct: + + % + + Extra white space is shown here only for clarity. These constructs + may be nested without ambiguity. They form a general + if-elseif-else-endif block where only one of the _f_o_r_m_a_t _t_e_x_t seg- + ments is interpreted. + + The `%<' and `%?' control escapes causes a condition to be + evaluated. This condition may be either a _c_o_m_p_o_n_e_n_t or a _f_u_n_c_t_i_o_n. + The four constructs have the following syntax: + + %<{component} + %<(function) + %?{component} + %?(function) + + These control escapes test whether the function or component value + is non-zero (for integer-valued escapes), or non-empty (for + string-valued escapes). + + If this test evaulates true, then the format text up to the next + corresponding control escape (one of `%|', `%?', or `%>') is inter- + preted normally. Next, all format text up to the corresponding + `%>' control escape (if any) is skipped. The `%>' control escape + is not interpreted; normal interpretation resumes after the `%>' + escape. + + If the test evaluates false, however, then the format text up to + the next corresponding control escape (again, one of `%|', `%?', or + `%>') is skipped, instead of being interpreted. If the control + escape encountered was `%?', then the condition associated with + that control escape is evaluated, and interpretation proceeds after + that test as described in the previous paragraph. If the control + escape encountered was `%|', then the format text up to the + corresponding `%>' escape is interpreted normally. As above, the + `%>' escape is not interpreted and normal interpretation resumes + after the `%>' escape. +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-FORMAT(5) -109- MH-FORMAT(5) + + + The `%?' control escape and its following format text is optional, + and may be included zero or more times. The `%|' control escape + and its following format text is also optional, and may be included + zero or one times. + + + _F_u_n_c_t_i_o_n _e_s_c_a_p_e_s + + Most functions expect an argument of a particular type: + + _A_r_g_u_m_e_n_t _D_e_s_c_r_i_p_t_i_o_n _E_x_a_m_p_l_e _S_y_n_t_a_x + literal A literal number, %(_f_u_n_c 1234) + or string %(_f_u_n_c text string) + comp Any header component %(_f_u_n_c{_i_n-_r_e_p_l_y-_t_o}) + date A date component %(_f_u_n_c{_d_a_t_e}) + addr An address component %(_f_u_n_c{_f_r_o_m}) + expr An optional component, %(_f_u_n_c(_f_u_n_c_2)) + function or control, %(_f_u_n_c %<{_r_e_p_l_y-_t_o}%|%{_f_r_o_m}%>) + perhaps nested %(_f_u_n_c(_f_u_n_c_2{_c_o_m_p})) + + The types _d_a_t_e and _a_d_d_r have the same syntax as _c_o_m_p, but require + that the header component be a date string, or address string, + respectively. + + All arguments except those of type _e_x_p_r are required. For the _e_x_p_r + argument type, the leading `%' must be omitted for component and + function escape arguments, and must be present (with a leading + space) for control escape arguments. + + The evaluation of format strings is based on a simple machine with + an integer register _n_u_m, and a text string register _s_t_r. When a + function escape is processed, if it accepts an optional _e_x_p_r argu- + ment which is not present, it reads the current value of either _n_u_m + or _s_t_r as appropriate. + + + _R_e_t_u_r_n _v_a_l_u_e_s + + Component escapes write the value of their message header in _s_t_r. + Function escapes write their return value in _n_u_m for functions + returning _i_n_t_e_g_e_r or _b_o_o_l_e_a_n values, and in _s_t_r for functions + returning string values. (The _b_o_o_l_e_a_n type is a subset of integers + with usual values 0=false and 1=true.) + + All component escapes, and those function escapes which return an + _i_n_t_e_g_e_r or _s_t_r_i_n_g value, pass this value back to their caller in + addition to setting _s_t_r or _n_u_m. These escapes will print out this + value unless called as part of an argument to another escape + sequence. Function escapes which return a _b_o_o_l_e_a_n value do pass + this value back to their caller, but will never print out the + value. +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-FORMAT(5) -110- MH-FORMAT(5) + + + _F_u_n_c_t_i_o_n _A_r_g_u_m_e_n_t _R_e_t_u_r_n _D_e_s_c_r_i_p_t_i_o_n + msg integer message number + cur integer message is current + size integer size of message + strlen integer length of _s_t_r + width integer output buffer size in bytes + charleft integer bytes left in output buffer + timenow integer seconds since the UNIX epoch + me string the user's mailbox + eq literal boolean _n_u_m == _a_r_g + ne literal boolean _n_u_m != _a_r_g + gt literal boolean _n_u_m > _a_r_g + match literal boolean _s_t_r contains _a_r_g + amatch literal boolean _s_t_r starts with _a_r_g + plus literal integer _a_r_g plus _n_u_m + minus literal integer _a_r_g minus _n_u_m + divide literal integer _n_u_m divided by _a_r_g + num literal integer Set _n_u_m to _a_r_g + lit literal string Set _s_t_r to _a_r_g + nonzero expr boolean _n_u_m is non-zero + zero expr boolean _n_u_m is zero + null expr boolean _s_t_r is empty + nonnull expr boolean _s_t_r is non-empty + void expr Set _s_t_r or _n_u_m + comp comp string Set _s_t_r to component text + compval comp integer _n_u_m set to "atoi(_s_t_r)" + trim expr trim trailing white-space from _s_t_r + putstr expr print _s_t_r + putstrf expr print _s_t_r in a fixed width + putnum expr print _n_u_m + putnumf expr print _n_u_m in a fixed width + + These functions require a date component as an argument: + + _F_u_n_c_t_i_o_n _A_r_g_u_m_e_n_t _R_e_t_u_r_n _D_e_s_c_r_i_p_t_i_o_n + sec date integer seconds of the minute + min date integer minutes of the hour + hour date integer hours of the day (0-23) + wday date integer day of the week (Sun=0) + day date string day of the week (abbrev.) + weekday date string day of the week + sday date integer day of the week known? + (0=implicit,-1=unknown) + mday date integer day of the month + yday date integer day of the year + mon date integer month of the year + month date string month of the year (abbrev.) + lmonth date string month of the year + year date integer year of the century + zone date integer timezone in hours + tzone date string timezone string + szone date integer timezone explicit? + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-FORMAT(5) -111- MH-FORMAT(5) + + + (0=implicit,-1=unknown) + date2local date coerce date to local timezone + date2gmt date coerce date to GMT + dst date integer daylight savings in effect? + clock date integer seconds since the UNIX epoch + rclock date integer seconds prior to current time + tws date string official 822 rendering + pretty date string user-friendly rendering + nodate date integer _s_t_r not a date string + + These functions require an address component as an argument. The + return value of functions noted with `*' pertain only to the first + address present in the header component. + + _F_u_n_c_t_i_o_n _A_r_g_u_m_e_n_t _R_e_t_u_r_n _D_e_s_c_r_i_p_t_i_o_n + proper addr string official 822 rendering + friendly addr string user-friendly rendering + addr addr string mbox@host or host!mbox rendering* + pers addr string the personal name* + note addr string commentary text* + mbox addr string the local mailbox* + mymbox addr integer the user's addresses? (0=no,1=yes) + host addr string the host domain* + nohost addr integer no host was present* + type addr integer host type* (0=local,1=network, + -1=uucp,2=unknown) + path addr string any leading host route* + ingrp addr integer address was inside a group* + gname addr string name of group* + formataddr expr append _a_r_g to _s_t_r as a + (comma separated) address list + putaddr literal print _s_t_r address list with + _a_r_g as optional label; + get line width from _n_u_m + + When escapes are nested, evaluation is done from inner-most to + outer-most. The outer-most escape must begin with `%'; the inner + escapes must not. For example, + + %<(mymbox{from}) To: %{to}%> + + writes the value of the header component "From:" to _s_t_r; then (_m_y_m_- + _b_o_x) reads _s_t_r and writes its result to _n_u_m; then the control + escape evaluates _n_u_m. If _n_u_m is non-zero, the string "To: " is + printed followed by the value of the header component "To:". + + A minor explanation of (_m_y_m_b_o_x{_c_o_m_p}) is in order. In general, it + checks each of the addresses in the header component "_c_o_m_p" against + the user's mailbox name and any _A_l_t_e_r_n_a_t_e-_M_a_i_l_b_o_x_e_s. It returns + true if any address matches, however, it also returns true if the + "_c_o_m_p" header is not present in the message. If needed, the (_n_u_l_l) + function can be used to explicitly test for this condition. + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-FORMAT(5) -112- MH-FORMAT(5) + + + When a function or component escape is interpreted and the result + will be immediately printed, an optional field width can be speci- + fied to print the field in exactly a given number of characters. + For example, a numeric escape like %4(_s_i_z_e) will print at most 4 + digits of the message size; overflow will be indicated by a `?' in + the first position (like `?234'). A string escape like %4(_m_e) will + print the first 4 characters and truncate at the end. Short fields + are padded at the right with the fill character (normally, a + blank). If the field width argument begins with a leading zero, + then the fill character is set to a zero. + + As above, the functions (_p_u_t_n_u_m_f) and (_p_u_t_s_t_r_f) print their result + in exactly the number of characters specified by their leading + field width argument. For example, %06(_p_u_t_n_u_m_f(_s_i_z_e)) will print + the message size in a field six characters wide filled with leading + zeros; %14(_p_u_t_s_t_r_f{_f_r_o_m}) will print the "From:" header component + in fourteen characters with trailing spaces added as needed. For + _p_u_t_s_t_r_f, using a negative value for the field width causes right- + justification of the string within the field, with padding on the + left up to the field width. The functions (_p_u_t_n_u_m) and (_p_u_t_s_t_r) + print their result in the minimum number of characters required, + and ignore any leading field width argument. + + The available output width is kept in an internal register; any + output past this width will be truncated. + + With all this in mind, here's the default format string for _s_c_a_n. + It's been divided into several pieces for readability. The first + part is: + + %4(putnumf(msg))%<(cur)+%| %>%<{replied}-%| %> + + which says that the message number should be printed in four + digits, if the message is the current message then a `+' else a + space should be printed, and if a "Replied:" field is present then + a `-' else a space should be printed. Next: + + %02(putnumf(mon{date}))/%02(putnumf(mday{date})) + + the month and date are printed in two digits (zero filled) + separated by a slash. Next, + + %<{date} %|*> + + If a "Date:" field was present, then a space is printed, otherwise + a `*'. Next, + + %<(mymbox{from})To:%14(putstrf(friendly{to})) + + if the message is from me, print `To:' followed by a "user- + friendly" rendering of the first address in the "To:" field. Con- + tinuing, + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-FORMAT(5) -113- MH-FORMAT(5) + + + %|%17(putstrf(friendly{from}))%> + + if the message isn't from me, then the print the "From:" address is + printed. And finally, + + %{subject}%<{body}<<%{body}%> + + the subject and initial body (if any) are printed. + + For a more complicated example, next consider the default _r_e_p_l_c_o_m_p_s + format file. + + %(lit)%(formataddr %<{reply-to}%| + + This clears _s_t_r and formats the "Reply-To:" header if present. If + not present, the else clause is executed: + + %<{from}%|%<{sender}%|%<{return-path}%>%>%>%>)\ + + This formats the "From:", "Sender:" and "Return-Path:" headers, + stopping as soon as one of them is present. Next: + + %<(nonnull)%(void(width))%(putaddr To: )\n%>\ + + If the _f_o_r_m_a_t_a_d_d_r result is non-null, it is printed as an address + (with line folding if needed) in a field _w_i_d_t_h wide with a leading + label of "To: ". + + %(lit)%(formataddr{to})%(formataddr{cc})%(formataddr(me))\ + + _s_t_r is cleared, and the "To:" and "Cc:" headers, along with the + user's address (depending on what was specified with the "-cc" + switch to _r_e_p_l) are formatted. + + %<(nonnull)%(void(width))%(putaddr cc: )\n%>\ + + If the result is non-null, it is printed as above with a leading + label of "cc: ". + + %<{fcc}Fcc: %{fcc}\n%>\ + + If a "-fcc folder" switch was given to _r_e_p_l (see _r_e_p_l (1) for more + details about %{_f_c_c}), an "Fcc:" header is output. + + %<{subject}Subject: Re: %{subject}\n%>\ + + If a subject component was present, a suitable reply subject is + output. + + %<{date}In-reply-to: Your message of "\ + %<(nodate{date})%{date}%|%(tws{date})%>."%<{message-id} + %{message-id}%>\n%>\ + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-FORMAT(5) -114- MH-FORMAT(5) + + + -------- + + If a date component was present, an "In-Reply-To:" header is output + with the preface "Your message of ". If the date was parseable, it + is output in official format, otherwise it is output as-is. The + message-id is included if present. As with all plain-text, the row + of dashes are output as-is. + + This last part is a good example for a little more elaboration. + Here's that part again in pseudo-code: + + if (comp_exists(date)) then + print ("In-reply-to: Your message of \"") + if (not_date_string(date.value) then + print (date.value) + else + print (rfc822(date.value)) + endif + print ("\"") + if (comp_exists(message-id)) then + print ("\n\t") + print (message-id.value) + endif + print ("\n") + endif + + Although this seems complicated, in point of fact, this method is + flexible enough to extract individual fields and print them in any + format the user desires. + + _F_i_l_e_s + None + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + scan(1), repl(1), ap(8), dp(8) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-FORMAT(5) -115- MH-FORMAT(5) + + + _H_i_s_t_o_r_y + This software was contributed for MH 6.3. Prior to this, output + format specifications were much easier to write, but considerably + less flexible. + + + _B_u_g_s + On hosts where _M_H was configured with the BERK option, address + parsing is not enabled. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-MAIL(5) -116- MH-MAIL(5) + + + _N_A_M_E + mh-mail - message format for MH message system + + _S_Y_N_O_P_S_I_S + any _M_H command + + _D_E_S_C_R_I_P_T_I_O_N + + _M_H processes messages in a particular format. It should be noted + that although neither Bell nor Berkeley mailers produce message + files in the format that _M_H prefers, _M_H can read message files in + that antiquated format. + + Each user possesses a mail drop box which initially receives all + messages processed by _p_o_s_t (8). _I_n_c (1) will read from that drop + box and incorporate the new messages found there into the user's + own mail folders (typically `+inbox'). The mail drop box consists + of one or more messages. To facilitate the separation of messages, + each message begins and ends with a line consisting of nothing but + four CTRL-A (octal 001) characters. + + Messages are expected to consist of lines of text. Graphics and + binary data are not handled. No data compression is accepted. All + text is clear ASCII 7-bit data. + + The general "memo" framework of RFC-822 is used. A message con- + sists of a block of information in a rigid format, followed by gen- + eral text with no specified format. The rigidly formatted first + part of a message is called the header, and the free-format portion + is called the body. The header must always exist, but the body is + optional. These parts are separated by an empty line, i.e., two + consecutive newline characters. Within _M_H, the header and body may + be separated by a line consisting of dashes: + + To: + cc: + Subject: + -------- + + The header is composed of one or more header items. Each header + item can be viewed as a single logical line of ASCII characters. + If the text of a header item extends across several real lines, the + continuation lines are indicated by leading spaces or tabs. + + Each header item is called a component and is composed of a keyword + or name, along with associated text. The keyword begins at the + left margin, may NOT contain spaces or tabs, may not exceed 63 + characters (as specified by RFC-822), and is terminated by a colon + (`:'). Certain components (as identified by their keywords) must + follow rigidly defined formats in their text portions. + + The text for most formatted components (e.g., "Date:" and + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-MAIL(5) -117- MH-MAIL(5) + + + "Message-Id:") is produced automatically. The only ones entered by + the user are address fields such as "To:", "cc:", etc. Internet + addresses are assigned mailbox names and host computer specifica- + tions. The rough format is "local@domain", such as "MH@UCI", or + "MH@UCI-ICSA.ARPA". Multiple addresses are separated by commas. A + missing host/domain is assumed to be the local host/domain. + + As mentioned above, a blank line (or a line of dashes) signals that + all following text up to the end of the file is the body. No for- + matting is expected or enforced within the body. + + Following is a list of header components that are considered mean- + ingful to various MH programs. + Date: + Added by _p_o_s_t (8), contains date and time of the message's + entry into the transport system. + + From: + Added by _p_o_s_t (8), contains the address of the author or + authors (may be more than one if a "Sender:" field is + present). Replies are typically directed to addresses in the + "Reply-To:" or "From:" field (the former has precedence if + present). + + Sender: + Added by _p_o_s_t (8) in the event that the message already has a + "From:" line. This line contains the address of the actual + sender. Replies are never sent to addresses in the "Sender:" + field. + + To: + Contains addresses of primary recipients. + + cc: + Contains addresses of secondary recipients. + + Bcc: + Still more recipients. However, the "Bcc:" line is not copied + onto the message as delivered, so these recipients are not + listed. _M_H uses an encapsulation method for blind copies, see + _s_e_n_d (1). + + Fcc: + Causes _p_o_s_t (8) to copy the message into the specified folder + for the sender, if the message was successfully given to the + transport system. + + Message-ID: + A unique message identifier added by _p_o_s_t (8) if the `-msgid' + flag is set. + + Subject: + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-MAIL(5) -118- MH-MAIL(5) + + + Sender's commentary. It is displayed by _s_c_a_n (1). + + In-Reply-To: + A commentary line added by _r_e_p_l (1) when replying to a mes- + sage. + + Resent-Date: + Added when redistributing a message by _p_o_s_t (8). + + Resent-From: + Added when redistributing a message by _p_o_s_t (8). + + Resent-To: + New recipients for a message resent by _d_i_s_t (1). + + Resent-cc: + Still more recipients. See "cc:" and "Resent-To:". + + Resent-Bcc: + Even more recipients. See "Bcc:" and "Resent-To:". + + Resent-Fcc: + Copy resent message into a folder. See "Fcc:" and + "Resent-To:". + + Resent-Message-Id: + A unique identifier glued on by _p_o_s_t (8) if the `-msgid' flag + is set. See "Message-Id:" and "Resent-To:". + + Resent: + Annotation for _d_i_s_t (1) under the `-annotate' option. + + Forwarded: + Annotation for _f_o_r_w (1) under the `-annotate' option. + + Replied: + Annotation for _r_e_p_l (1) under the `-annotate' option. + + + _F_i_l_e_s + /usr/spool/mail/$USER Location of mail drop + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + _S_t_a_n_d_a_r_d _f_o_r _t_h_e _F_o_r_m_a_t _o_f _A_R_P_A _I_n_t_e_r_n_e_t _T_e_x_t _M_e_s_s_a_g_e_s (aka + RFC-822) + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-MAIL(5) -119- MH-MAIL(5) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-PROFILE(5) -120- MH-PROFILE(5) + + + _N_A_M_E + .mh_profile - user customization for MH message system + + _S_Y_N_O_P_S_I_S + any _M_H command + + _D_E_S_C_R_I_P_T_I_O_N + + Each user of _M_H is expected to have a file named ._m_h__p_r_o_f_i_l_e in his + or her home directory. This file contains a set of user parameters + used by some or all of the _M_H family of programs. Each line of the + file is of the format + + _p_r_o_f_i_l_e-_c_o_m_p_o_n_e_n_t: _v_a_l_u_e + + The possible profile components are exemplified below. Only + `Path:' is mandatory. The others are optional; some have default + values if they are not present. In the notation used below, (pro- + file, default) indicates whether the information is kept in the + user's _M_H profile or _M_H context, and indicates what the default + value is. + + Path: Mail + Locates _M_H transactions in directory "Mail". (profile, + no default) + + context: context + Declares the location of the _M_H context file, see the + HISTORY section below. (profile, default: + /context) + + Current-Folder: inbox + Keeps track of the current open folder. (context, + default: +inbox) + + Previous-Sequence: pseq + Names the sequences which should be defined as the `msgs' + or `msg' argument given to the program. If not present, + or empty, no sequences are defined. Otherwise, for each + name given, the sequence is first zero'd and then each + message is added to the sequence. (profile, no default) + + Sequence-Negation: not + Defines the string which, when prefixed to a sequence + name, negates that sequence. Hence, "notseen" means all + those messages that are not a member of the sequence + "seen". (profile, no default) + + Unseen-Sequence: unseen + Names the sequences which should be defined as those mes- + sages recently incorporated by _i_n_c. _S_h_o_w knows to remove + messages from this sequence once it thinks they have been + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-PROFILE(5) -121- MH-PROFILE(5) + + + seen. If not present, or empty, no sequences are + defined. Otherwise, for each name given, the sequence is + first zero'd and then each message is added to the + sequence. (profile, no default) + + mh-sequences: .mh_sequences + The name of the file in each folder which defines public + sequences. To disable the use of public sequences, leave + the value portion of this entry blank. (profile, + default: .mh_sequences) + + atr-_s_e_q-_f_o_l_d_e_r: 172 178-181 212 + Keeps track of the private sequence called _s_e_q in the + specified folder. (context, no default) + + Editor: /usr/ucb/ex + Defines editor to be used by _c_o_m_p (1), _d_i_s_t (1), + _f_o_r_w (1), and _r_e_p_l (1). (profile, default: prompter) + + Msg-Protect: 644 + Defines octal protection bits for message files. See + _c_h_m_o_d (1) for an explanation of the octal number. (pro- + file, default: 0644) + + Folder-Protect: 711 + Defines protection bits for folder directories. (pro- + file, default: 0711) + + _p_r_o_g_r_a_m: default switches + Sets default switches to be used whenever the mh program + _p_r_o_g_r_a_m is invoked. For example, one could override the + _E_d_i_t_o_r: profile component when replying to messages by + adding a component such as: + repl: -editor /bin/ed + (profile, no defaults) + + _l_a_s_t_e_d_i_t_o_r-next: nexteditor + Names "nexteditor" to be the default editor after using + "lasteditor". This takes effect at "What now?" level in + _c_o_m_p, _d_i_s_t, _f_o_r_w, and _r_e_p_l. After editing the draft with + "lasteditor", the default editor is set to be "nextedi- + tor". If the user types "edit" without any arguments to + "What now?", then "nexteditor" is used. (profile, no + default) + + bboards: system + Tells _b_b_c which BBoards you are interested in. (profile, + default: system) + + Folder-Stack: _f_o_l_d_e_r_s + The contents of the folder-stack for the _f_o_l_d_e_r command. + (context, no default) + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-PROFILE(5) -122- MH-PROFILE(5) + + + mhe: + If present, tells _i_n_c to compose an _M_H_E auditfile in + addition to its other tasks. _M_H_E is Brian Reid's _E_m_a_c_s + front-end for _M_H. An early version is supplied with the + _m_h._6 distribution. (profile, no default) + + Alternate-Mailboxes: mh@uci-750a, bug-mh* + Tells _r_e_p_l and _s_c_a_n which addresses are really yours. In + this way, _r_e_p_l knows which addresses should be included + in the reply, and _s_c_a_n knows if the message really ori- + ginated from you. Addresses must be separated by a + comma, and the hostnames listed should be the "official" + hostnames for the mailboxes you indicate, as local nick- + names for hosts are not replaced with their official site + names. For each address, if a host is not given, then + that address on any host is considered to be you. In + addition, an asterisk (`*') may appear at either or both + ends of the mailbox and host to indicate wild-card match- + ing. (profile, default: your user-id) + + Aliasfile: aliases + Indicates a default aliases file for _a_l_i, _w_h_o_m, and _s_e_n_d. + This may be used instead of the `-alias file' switch. + (profile, no default) + + Draft-Folder: drafts + Indicates a default draft folder for _c_o_m_p, _d_i_s_t, _f_o_r_w, + and _r_e_p_l. (profile, no default) + + digest-issue-_l_i_s_t: 1 + Tells _f_o_r_w the last issue of the last volume sent for the + digest _l_i_s_t. (context, no default) + + digest-volume-_l_i_s_t: 1 + Tells _f_o_r_w the last volume sent for the digest _l_i_s_t. + (context, no default) + + MailDrop: .mail + Tells _i_n_c your maildrop, if different from the default. + This is superceded by the $MAILDROP envariable. (pro- + file, default: /usr/spool/mail/$USER) + + Signature: RAND MH System (agent: Marshall Rose) + Tells _s_e_n_d your mail signature. This is superceded by + the $SIGNATURE envariable. On hosts where _M_H was config- + ured with the UCI option, if $SIGNATURE is not set and + this profile entry is not present, the file + $HOME/.signature is consulted. Your signature will be + added to the address _s_e_n_d puts in the "From:" header; do + not include an address in the signature text. (profile, + no default) +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-PROFILE(5) -123- MH-PROFILE(5) + + + The following profile elements are used whenever an _M_H program + invokes some other program such as _m_o_r_e (1). The ._m_h__p_r_o_f_i_l_e can + be used to select alternate programs if the user wishes. The + default values are given in the examples. + + fileproc: /usr/local/refile + incproc: /usr/local/inc + installproc: /usr/local/lib/mh/install-mh + lproc: /usr/ucb/more + mailproc: /usr/local/mhmail + mhlproc: /usr/local/lib/mh/mhl + moreproc: /usr/ucb/more + mshproc: /usr/local/msh + packproc: /usr/local/packf + postproc: /usr/local/lib/mh/post + rmmproc: none + rmfproc: /usr/local/rmf + sendproc: /usr/local/send + showproc: /usr/ucb/more + whatnowproc: /usr/local/whatnow + whomproc: /usr/local/whom + + If you define the envariable $MH, you can specify a profile other + than ._m_h__p_r_o_f_i_l_e to be read by the _M_H programs that you invoke. If + the value of $MH is not absolute, (i.e., does not begin with a / ), + it will be presumed to start from the current working directory. + This is one of the very few exceptions in _M_H where non-absolute + pathnames are not considered relative to the user's _M_H directory. + + Similarly, if you define the envariable $MHCONTEXT, you can specify + a context other than the normal context file (as specified in the + _M_H profile). As always, unless the value of $MHCONTEXT is abso- + lute, it will be presumed to start from your _M_H directory. + + _M_H programs also support other envariables: + + $MAILDROP : tells _i_n_c the default maildrop + This supercedes the "MailDrop:" profile entry. + + $SIGNATURE : tells _s_e_n_d and _p_o_s_t your mail signature + This supercedes the "Signature:" profile entry. + + $HOME : tells all _M_H programs your home directory + + $SHELL : tells _b_b_l the default shell to run + + $TERM : tells _M_H your terminal type + The $TERMCAP envariable is also consulted. In particular, + these tells _s_c_a_n and _m_h_l how to clear your terminal, and how + many columns wide your terminal is. They also tell _m_h_l how + many lines long your terminal screen is. +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-PROFILE(5) -124- MH-PROFILE(5) + + + $editalt : the alternate message + This is set by _d_i_s_t and _r_e_p_l during edit sessions so you can + peruse the message being distributed or replied-to. The mes- + sage is also available through a link called "@" in the + current directory if your current working directory and the + folder the message lives in are on the same UNIX filesystem. + + $mhdraft : the path to the working draft + This is set by _c_o_m_p, _d_i_s_t, _f_o_r_w, and _r_e_p_l to tell the _w_h_a_t_- + _n_o_w_p_r_o_c which file to ask "What now?" questions about. In + addition, _d_i_s_t, _f_o_r_w, and _r_e_p_l set $mhfolder if appropriate. + Further, _d_i_s_t and _r_e_p_l set $mhaltmsg to tell the _w_h_a_t_n_o_w_p_r_o_c + about an alternate message associated with the draft (the mes- + sage being distributed or replied-to), and _d_i_s_t sets $mhdist + to tell the _w_h_a_t_n_o_w_p_r_o_c that message re-distribution is occur- + ring. Also, $mheditor is set to tell the _w_h_a_t_n_o_w_p_r_o_c the + user's choice of editor (unless overridden by `-noedit'). + Similarly, $mhuse may be set by _c_o_m_p. Finally, $mhmessages is + set by _d_i_s_t, _f_o_r_w, and _r_e_p_l if annotations are to occur (along + with $mhannotate, and $mhinplace). It's amazing all the + information that has to get passed via envariables to make the + "What now?" interface look squeaky clean to the _M_H user, isn't + it? The reason for all this is that the _M_H user can select + _a_n_y program as the _w_h_a_t_n_o_w_p_r_o_c, including one of the standard + shells. As a result, it's not possible to pass information + via an argument list. + If the WHATNOW option was set during _M_H configuration (type + `-help' to an _M_H command to find out), and if this envariable + is set, if the commands _r_e_f_i_l_e, _s_e_n_d, _s_h_o_w, or _w_h_o_m are not + given any `msgs' arguments, then they will default to using + the file indicated by $mhdraft. This is useful for getting + the default behavior supplied by the default _w_h_a_t_n_o_w_p_r_o_c. + + $mhfolder : the folder containing the alternate message + This is set by _d_i_s_t and _r_e_p_l during edit sessions so you can + peruse other messages in the current folder besides the one + being distributed or replied-to. The $mhfolder envariable is + also set by _s_h_o_w, _p_r_e_v, and _n_e_x_t for use by _m_h_l. + + $MHBBRC : + If you define the envariable $MHBBRC, you can specify a + BBoards information file other than ._b_b_r_c to be read by _b_b_c. + If the value of $MHBBRC is not absolute, (i.e., does not begin + with a / ), it will be presumed to start from the current + working directory. + + $MHFD : + If the OVERHEAD option was set during _M_H configuration (type + `-help' to an _M_H command to find out), then if this envariable + is set, _M_H considers it to be the number of a file-descriptor + which is opened, read-only to the _M_H profile. Similarly, if + the envariable $MHCONTEXTFD is set, this is the number of a + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-PROFILE(5) -125- MH-PROFILE(5) + + + file-descriptor which is opened read-only to the _M_H context. + This feature of _M_H is experimental, and is used to examine + possible speed improvements for _M_H startup. Note that these + envariables must be set and non-empty to enable this feature. + However, if OVERHEAD is enabled during _M_H configuration, then + when _M_H programs call other _M_H programs, this scheme is used. + These file-descriptors are not closed throughout the execution + of the _M_H program, so children may take advantage of this. + This approach is thought to be completely safe and does result + in some performance enhancements. + + + _F_i_l_e_s + $HOME/.mh_profile The user profile + or $MH Rather than the standard profile + /context The user context + or $CONTEXT Rather than the standard context + /.mh_sequences Public sequences for + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + All + + + _S_e_e _A_l_s_o + mh(1), environ(5) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + All + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-PROFILE(5) -126- MH-PROFILE(5) + + + _H_i_s_t_o_r_y + In previous versions of _M_H, the current-message value of a writable + folder was kept in a file called "cur" in the folder itself. In + _m_h._3, the ._m_h__p_r_o_f_i_l_e contained the current-message values for all + folders, regardless of their writability. + + In all versions of _M_H since _m_h._4, the ._m_h__p_r_o_f_i_l_e contains only + static information, which _M_H programs will NOT update. Changes in + context are made to the _c_o_n_t_e_x_t file kept in the users MH _d_i_r_e_c_t_o- + _r_y. This includes, but is not limited to: the "Current-Folder" en- + try and all private sequence information. Public sequence informa- + tion is kept in a file called ._m_h__s_e_q_u_e_n_c_e_s in each folder. + + To convert from the format used in releases of _M_H prior to the for- + mat used in the _m_h._4 release, _i_n_s_t_a_l_l-_m_h should be invoked with the + `-compat' switch. This generally happens automatically on _M_H sys- + tems generated with the "COMPAT" option during _M_H configuration. + + The ._m_h__p_r_o_f_i_l_e may override the path of the _c_o_n_t_e_x_t file, by + specifying a "context" entry (this must be in lower-case). If the + entry is not absolute (does not start with a / ), then it is inter- + preted relative to the user's _M_H directory. As a result, you can + actually have more than one set of private sequences by using dif- + ferent context files. + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-PROFILE(5) -127- MH-PROFILE(5) + + + _B_u_g_s + The shell quoting conventions are not available in the .mh_profile. + Each token is separated by whitespace. + + There is some question as to what kind of arguments should be + placed in the profile as options. In order to provide a clear + answer, recall command line semantics of all _M_H programs: conflict- + ing switches (e.g., `-header and `-noheader') may occur more than + one time on the command line, with the last switch taking effect. + Other arguments, such as message sequences, filenames and folders, + are always remembered on the invocation line and are not superseded + by following arguments of the same type. Hence, it is safe to + place only switches (and their arguments) in the profile. + + If one finds that an _M_H program is being invoked again and again + with the same arguments, and those arguments aren't switches, then + there are a few possible solutions to this problem. The first is + to create a (soft) link in your $_H_O_M_E/_b_i_n directory to the _M_H pro- + gram of your choice. By giving this link a different name, you can + create a new entry in your profile and use an alternate set of de- + faults for the _M_H command. Similarly, you could create a small + shell script which called the _M_H program of your choice with an al- + ternate set of invocation line switches (using links and an alter- + nate profile entry is preferable to this solution). + + Finally, the _c_s_h user could create an alias for the command of the + form: + + alias cmd 'cmd arg1 arg2 ...' + + In this way, the user can avoid lengthy type-in to the shell, and + still give _M_H commands safely. (Recall that some _M_H commands in- + voke others, and that in all cases, the profile is read, meaning + that aliases are disregarded beyond an initial command invocation) + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-SEQUENCE(5) -128- MH-SEQUENCE(5) + + + _N_A_M_E + mh-sequence - sequence specification for MH message system + + _S_Y_N_O_P_S_I_S + most _M_H commands + + _D_E_S_C_R_I_P_T_I_O_N + + Most _M_H commands accept a `msg' or `msgs' specification, where + `msg' indicates one message and `msgs' indicates one or more mes- + sages. To designate a message, you may use either its number + (e.g., 1, 10, 234) or one of these "reserved" message names: + + _N_a_m_e _D_e_s_c_r_i_p_t_i_o_n + first the first message in the folder + last the last message in the folder + cur the most recently accessed message + prev the message numerically preceding "cur" + next the message numerically following "cur" + + In commands that take a `msg' argument, the default is "cur". As a + shorthand, "." is equivalent to "cur". + + For example: In a folder containing five messages numbered 5, 10, + 94, 177 and 325, "first" is 5 and "last" is 325. If "cur" is 94, + then "prev" is 10 and "next" is 177. + + The word `msgs' indicates that one or more messages may be speci- + fied. Such a specification consists of one message designation or + of several message designations separated by spaces. A message + designation consists either of a message name as defined above, or + a message range. + + A message range is specified as "name1-name2" or "name:n", where + `name', `name1' and `name2' are message names, and `n' is an + integer. + + The specification "name1-name2" designates all currently-existing + messages from `name1' to `name2' inclusive. The message name "all" + is a shorthand for the message range "first-last". + + The specification "name:n" designates up to `n' messages. These + messages start with `name' if `name' is a message number or one of + the reserved names "first" "cur", or "next", The messages end with + `name' if `name' is "prev" or "last". The interpretation of `n' + may be overridden by preceding `n' with a plus or minus sign; `+n' + always means up to `n' messages starting with `name', and `-n' + always means up to `n' messages ending with `name'. + + In commands which accept a `msgs' argument, the default is either + "cur" or "all", depending on which makes more sense. Repeated + specifications of the same message have the same effect as a single + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-SEQUENCE(5) -129- MH-SEQUENCE(5) + + + specification of the message. + + + _U_s_e_r-_D_e_f_i_n_e_d _M_e_s_s_a_g_e _S_e_q_u_e_n_c_e_s + + In addition to the "reserved" (pre-defined) message names given + above, _M_H supports user-defined sequence names. User-defined + sequences allow the _M_H user a tremendous amount of power in dealing + with groups of messages in the same folder by allowing the user to + bind a group of messages to a meaningful symbolic name. + + The name used to denote a message sequence must consist of an + alphabetic character followed by zero or more alphanumeric charac- + ters, and can not be one of the "reserved" message names above. + After defining a sequence, it can be used wherever an _M_H command + expects a `msg' or `msgs' argument. + + Some forms of message ranges are allowed with user-defined + sequences. The specification "name:n" may be used, and it desig- + nates up to the first `n' messages (or last `n' messages for `-n') + which are elements of the user-defined sequence `name'. + + The specifications "name:next" and "name:prev" may also be used, + and they designate the next or previous message (relative to the + current message) which is an element of the user-defined sequence + `name'. The specificaitions "name:first" and "name:last" are + equivalent to "name:1" and "name:-1", respectively. The specifica- + tion "name:cur" is not allowed (use just "cur" instead). The syn- + tax of these message range specifcations is subject to change in + the future. + + User-defined sequence names are specific to each folder. They are + defined using the _p_i_c_k and _m_a_r_k commands. + + + _P_u_b_l_i_c _a_n_d _P_r_i_v_a_t_e _U_s_e_r-_D_e_f_i_n_e_d _S_e_q_u_e_n_c_e_s + + There are two varieties of sequences: _p_u_b_l_i_c sequences and _p_r_i_v_a_t_e + sequences. _P_u_b_l_i_c sequences of a folder are accessible to any _M_H + user that can read that folder and are kept in the .mh_sequences + file in the folder. _P_r_i_v_a_t_e sequences are accessible only to the + _M_H user that defined those sequences and are kept in the user's _M_H + context file. By default, _p_i_c_k and _m_a_r_k create _p_u_b_l_i_c sequences if + the folder for which the sequences are being defined is writable by + the _M_H user. Otherwise, _p_r_i_v_a_t_e sequences are created. This can + be overridden with the `-public' and `-private' switches to _m_a_r_k. + + + _S_e_q_u_e_n_c_e _N_e_g_a_t_i_o_n + + _M_H provides the ability to select all messages not elements of a + user-defined sequence. To do this, the user should define the + + [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-SEQUENCE(5) -130- MH-SEQUENCE(5) + + + entry "Sequence-Negation" in the _M_H profile file; its value may be + any string. This string is then used to preface an existing user- + defined sequence name. This specification then refers to those + messages not elements of the specified sequence name. For example, + if the profile entry is: + + Sequence-Negation: not + + then anytime an _M_H command is given "notfoo" as a `msg' or `msgs' + argument, it would substitute all messages that are not elements of + the sequence "foo". + + Obviously, the user should beware of defining sequences with names + that begin with the value of the "Sequence-Negation" profile entry. + + + _T_h_e _P_r_e_v_i_o_u_s _S_e_q_u_e_n_c_e + + _M_H provides the ability to remember the `msgs' or `msg' argument + last given to an _M_H command. The entry "Previous-Sequence" should + be defined in the _M_H profile; its value should be a sequence name + or multiple sequence names separated by spaces. If this entry is + defined, when when an _M_H command finishes, it will define the + sequence(s) named in the value of this entry to be those messages + that were specified to the command. Hence, a profile entry of + + Previous-Sequence: pseq + + directs any _M_H command that accepts a `msg' or `msgs' argument to + define the sequence "pseq" as those messages when it finishes. + + Note: there can be a performance penalty in using the + "Previous-Sequence" facility. If it is used, all _M_H programs have + to write the sequence information to the .mh_sequences file for the + folder each time they run. If the "Previous-Sequence" profile + entry is not included, only _p_i_c_k and _m_a_r_k will write to the + .mh_sequences file. + + + _T_h_e _U_n_s_e_e_n _S_e_q_u_e_n_c_e + + Finally, some users like to indicate messages which have not been + previously seen by them. Both _i_n_c and _s_h_o_w honor the profile entry + "Unseen-Sequence" to support this activity. This entry in the + .mh_profile should be defined as one or more sequence names + separated by spaces. If there is a value for "Unseen-Sequence" in + the profile, then whenever _i_n_c places new messages in a folder, the + new messages will also be added to the sequence(s) named in the + value of this entry. Hence, a profile entry of + + Unseen-Sequence: unseen +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + MH-SEQUENCE(5) -131- MH-SEQUENCE(5) + + + directs _i_n_c to add new messages to the sequence "unseen". Unlike + the behavior of the "Previous-Sequence" entry in the profile, how- + ever, the sequence(s) will not be zeroed by _i_n_c. + + Similarly, whenever _s_h_o_w (or _n_e_x_t or _p_r_e_v) displays a message, that + message will be removed from any sequences named by the + "Unseen-Sequence" entry in the profile. + + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /context The user context + /.mh_sequences Public sequences for + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Sequence-Negation: To designate messages not in a sequence + Previous-Sequence: The last message specification given + Unseen-Sequence: Those messages not yet seen by the user + + + _S_e_e _A_l_s_o + mh(1), mark(1), pick(1), mh-profile(5) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + All + + + _B_u_g_s + User-defined sequences are stored in the .mh_sequences file as a + series of message specifications separated by spaces. If a user- + defined sequence contains too many individual message specifica- + tions, that line in the file may become too long for _M_H to handle. + This will generate the error message ".mh_sequences is poorly for- + matted". You'll have to edit the file by hand to remove the of- + fending line. + + This can happen to users who define the "Previous-Sequence" entry + in the _M_H profile and have a folder containing many messages with + gaps in the numbering. A workaround for large folders is to minim- + ize numbering gaps by using "folder -pack" often. + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + AP(8) -132- AP(8) + + + _N_A_M_E + ap - parse addresses 822-style + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/ap [-form formatfile] [-format string] + [-normalize] [-nonormalize] [-width columns] addrs ... + [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _A_p is a program that parses addresses according to the ARPA Inter- + net standard. It also understands many non-standard formats. It + is useful for seeing how _M_H will interpret an address. + + The _a_p program treats each argument as one or more addresses, and + prints those addresses out in the official 822-format. Hence, it + is usually best to enclose each argument in double-quotes for the + shell. + + To override the output format used by _a_p, the `-format string' or + `-format file' switches are used. This permits individual fields + of the address to be extracted with ease. The string is simply a + format stringand thefile is simply a format file. See + _m_h-_f_o_r_m_a_t (5) for the details. + + In addition to the standard escapes, _a_p also recognizes the follow- + ing additional escape: + + _E_s_c_a_p_e _R_e_t_u_r_n_s _D_e_s_c_r_i_p_t_i_o_n + error string A diagnostic if the parse failed + + If the `-normalize' switch is given, _a_p will try to track down the + official hostname of the address. + + Here is the default format string used by _a_p: + + %<{error}%{error}: %{text}%|%(putstr(proper{text}))%> + + which says that if an error was detected, print the error, a `:', + and the address in error. Otherwise, output the 822-proper format + of the address. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /usr/local/lib/mh/mtstailor tailor file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + AP(8) -133- AP(8) + + + _S_e_e _A_l_s_o + dp(8), + _S_t_a_n_d_a_r_d _f_o_r _t_h_e _F_o_r_m_a_t _o_f _A_R_P_A _I_n_t_e_r_n_e_t _T_e_x_t _M_e_s_s_a_g_e_s (aka + RFC-822) + + + _D_e_f_a_u_l_t_s + `-format' defaults as described above + `-normalize' + `-width' defaults to the width of the terminal + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + The argument to the `-format' switch must be interpreted as a sin- + gle token by the shell that invokes _a_p. Therefore, one must usual- + ly place the argument to this switch inside double-quotes. + + On hosts where _M_H was configured with the BERK option, address + parsing is not enabled. + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + CONFLICT(8) -134- CONFLICT(8) + + + _N_A_M_E + conflict - search for alias/password conflicts + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/conflict [-mail name] [-search directory] + [aliasfiles...] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _C_o_n_f_l_i_c_t is a program that checks to see if the interface between + _M_H and transport system is in good shape + + _C_o_n_f_l_i_c_t also checks for maildrops in /usr/spool/mail which do not + belong to a valid user. It assumes that no user name will start + with `.', and thus ignores files in /usr/spool/mail which begin + with `.'. It also checks for entries in the _g_r_o_u_p (5) file which + do not belong to a valid user, and for users who do not have a + valid group number. In addition duplicate users and groups are + noted. + + If the `-mail name' switch is used, then the results will be sent + to the specified _n_a_m_e. Otherwise, the results are sent to the + standard output. + + The `-search directory' switch can be used to search directories + other than /usr/spool/mail and to report anomalies in those direc- + tories. The `-search directory' switch can appear more than one + time in an invocation to _c_o_n_f_l_i_c_t. + + _C_o_n_f_l_i_c_t should be run under _c_r_o_n (8), or whenever system account- + ing takes place. + + _F_i_l_e_s + /usr/local/lib/mh/mtstailor tailor file + /etc/passwd List of users + /etc/group List of groups + /usr/local/mhmail Program to send mail + /usr/spool/mail/ Directory of mail drop + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + mh-alias(5) + + + _D_e_f_a_u_l_t_s + `aliasfiles' defaults to /usr/local/lib/mh/MailAliases + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + CONFLICT(8) -135- CONFLICT(8) + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + DP(8) -136- DP(8) + + + _N_A_M_E + dp - parse dates 822-style + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/dp [-form formatfile] [-format string] + [-width columns] dates ... [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _D_p is a program that parses dates according to the ARPA Internet + standard. It also understands many non-standard formats, such as + those produced by TOPS-20 sites and some UNIX sites using + _c_t_i_m_e (3). It is useful for seeing how _M_H will interpret a date. + + The _d_p program treats each argument as a single date, and prints + the date out in the official 822-format. Hence, it is usually best + to enclose each argument in double-quotes for the shell. + + To override the output format used by _d_p, the `-format string' or + `-format file' switches are used. This permits individual fields + of the address to be extracted with ease. The string is simply a + format stringand thefile is simply a format file. See + _m_h-_f_o_r_m_a_t (5) for the details. + + Here is the default format string used by _d_p: + + %<(nodate{text})error: %{text}%|%(putstr(pretty{text}))%> + + which says that if an error was detected, print the error, a `:', + and the date in error. Otherwise, output the 822-proper format of + the date. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + ap(8) + _S_t_a_n_d_a_r_d _f_o_r _t_h_e _F_o_r_m_a_t _o_f _A_R_P_A _I_n_t_e_r_n_e_t _T_e_x_t _M_e_s_s_a_g_e_s (aka + RFC-822) + + + _D_e_f_a_u_l_t_s + `-format' default as described above + `-width' default to the width of the terminal + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + DP(8) -137- DP(8) + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + The argument to the `-format' switch must be interpreted as a sin- + gle token by the shell that invokes _d_p. Therefore, one must usual- + ly place the argument to this switch inside double-quotes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + INSTALL-MH(8) -138- INSTALL-MH(8) + + + _N_A_M_E + install-mh - initialize the MH environment + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/install-mh [-auto] [-compat] + + _D_E_S_C_R_I_P_T_I_O_N + + When a user runs any _M_H program for the first time, the program + will invoke _i_n_s_t_a_l_l-_m_h (with the `-auto' switch) to query the user + for the initial _M_H environment. The user does NOT invoke this pro- + gram directly. The user is asked for the name of the directory + that will be designated as the user's _M_H directory. If this direc- + tory does not exist, the user is asked if it should be created. + Normally, this directory should be under the user's home directory, + and has the default name of Mail/. After _i_n_s_t_a_l_l-_m_h has written + the initial .mh_profile for the user, control returns to the origi- + nal _M_H program. + + As with all _M_H commands, _i_n_s_t_a_l_l-_m_h first consults the $HOME + envariable to determine the user's home directory. If $HOME is not + set, then the /_e_t_c/_p_a_s_s_w_d file is consulted. + + When converting from _m_h._3 to _m_h._4, _i_n_s_t_a_l_l-_m_h is automatically + invoked with the `-compat' switch. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To set the user's MH directory + + + _C_o_n_t_e_x_t + With `-auto', the current folder is changed to "inbox". + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + POST(8) -139- POST(8) + + + _N_A_M_E + post - deliver a message + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/post [-alias aliasfile] [-filter filterfile] + [-nofilter] [-format] [-noformat] [-msgid] [-nomsgid] + [-verbose] [-noverbose] [-watch] [-nowatch] [-width columns] + file [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _P_o_s_t is the program called by _s_e_n_d (1) to deliver the message in + _f_i_l_e to local and remote users. In fact, all of the functions + attributed to _s_e_n_d on its manual page are performed by _p_o_s_t, with + _s_e_n_d acting as a relatively simple preprocessor. Thus, it is _p_o_s_t + which parses the various header fields, appends From: and Date: + lines, and interacts with the _M_M_D_F transport system. _P_o_s_t will not + normally be called directly by the user. + + _P_o_s_t searches the "To:", "cc:", "Bcc:", "Fcc:", and "Resent-xxx:" + header lines of the specified message for destination addresses, + checks these addresses for validity, and formats them so as to con- + form to ARPAnet Internet Message Format protocol, unless the + `-noformat' flag is set. This will normally cause "@_l_o_c_a_l-_s_i_t_e" to + be appended to each local destination address, as well as any local + return addresses. The `-width columns' switch can be used to indi- + cate the preferred length of the header components that contain + addresses. + + If a "Bcc:" field is encountered, its addresses will be used for + delivery, and the "Bcc:" field will be removed from the message + sent to sighted recipients. The blind recipients will receive an + entirely new message with a minimal set of headers. Included in + the body of the message will be a copy of the message sent to the + sighted recipients. If `-filter filterfile' is specified, then + this copy is filtered (re-formatted) prior to being sent to the + blind recipients. + + The `-alias aliasfile' switch can be used to specify a file that + post should take aliases from. More than one file can be speci- + fied, each being preceded with `-alias'. In any event, the primary + alias file is read first. + + The `-msgid' switch indicates that a "Message-ID:" or + "Resent-Message-ID:" field should be added to the header. + + The `-verbose' switch indicates that the user should be informed of + each step of the posting/filing process. + + The `-watch' switch indicates that the user would like to watch the + transport system's handling of the message (e.g., local and "fast" + delivery). + + [mh.6] MH.6.7 UCI version + + + + + + + + + + POST(8) -140- POST(8) + + + _P_o_s_t consults the envariable $SIGNATURE to determine the sender's + personal name in constructing the "From:" line of the message. + + _F_i_l_e_s + /usr/local/lib/mh/mtstailor tailor file + /usr/local/refile Program to process Fcc:s + /usr/local/lib/mh/mhl Program to process Bcc:s + /usr/local/lib/mh/MailAliases Primary alias file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + _p_o_s_t does NOT consult the user's .mh_profile + + + _S_e_e _A_l_s_o + _S_t_a_n_d_a_r_d _f_o_r _t_h_e _F_o_r_m_a_t _o_f _A_R_P_A _I_n_t_e_r_n_e_t _T_e_x_t _M_e_s_s_a_g_e_s (aka + RFC-822), + mhmail(1), send(1), mh-mail(5), mh-alias(5) + + + _D_e_f_a_u_l_t_s + `-alias /usr/local/lib/mh/MailAliases' + `-format' + `-nomsgid' + `-noverbose' + `-width 72' + `-nofilter' + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + "Reply-To:" fields are allowed to have groups in them according to + the 822 specification, but _p_o_s_t won't let you use them. + + + + + + + + + + + + + + + +9 +9 [mh.6] MH.6.7 UCI version + + + + + + + + + + + + + _5. _R_E_P_O_R_T_I_N_G _P_R_O_B_L_E_M_S + + + +9 + If problems are encountered with an _M_H program, the problems should + be reported to the local maintainers of _M_H. When doing this, the name + of the program should be reported, along with the version information + for the program. To find out what version of an _M_H program is being + run, invoke the program with the `-help' switch. In addition to listing + the syntax of the command, the program will list information pertaining + to its version. This information includes the version of _M_H, the host + it was generated on, and the date the program was loaded. A second line + of information, found on versions of _M_H after #5.380 include _M_H confi- + guration options. For example, + + version: MH 6.1 #1[UCI] (nrtc-gremlin) of Wed Nov 6 01:13:53 PST + 1985 + options: [BSD42] [MHE] [NETWORK] [SENDMTS] [MMDFII] [SMTP] [POP] + + The `6.1 #1[UCI]' indicates that the program is from the UCI _m_h._6 ver- + sion of _M_H. The program was generated on the host `nrtc-gremlin' on + `Wed Nov 6 01:13:53 PST 1985'. It's usually a good idea to send the + output of the `-help' switch along with your report. + + If there is no local _M_H maintainer, try the address Bug-MH. If that + fails, use the Internet mailbox Bug-MH@ICS.UCI.EDU. + + + + + + + + + + + + + + + + + + + + + + + + + +9 -141- + + + + + + + + + + + + + _6. _A_D_V_A_N_C_E_D _F_E_A_T_U_R_E_S + + + +9 + This section describes some features of _M_H that were included + strictly for advanced _M_H users. These capabilities permit _M_H to exhibit + more powerful behavior for the seasoned _M_H users. + + +9 _U_S_E_R-_D_E_F_I_N_E_D _S_E_Q_U_E_N_C_E_S + + User-defined sequences allow the _M_H user a tremendous amount of + power in dealing with groups of messages in the same folder by allowing + the user to bind a group of messages to a meaningful symbolic name. The + user may choose any name for a message sequence, as long as it consists + of alphanumeric characters and does not conflict with the standard _M_H + reserved message names (e.g., "first", etc). After defining a sequence, + it can be used wherever an _M_H command expects a `msg' or `msgs' argu- + ment. + + A restricted form of message ranges are allowed with user-defined + sequences. The form "name:n", specifies up to the first `n' messages + which are part of the user-defined sequence `name'. A leading plus sign + is allowed on `n', but is ignored. The interpretation of n is overrid- + den if n is preceded by a minus sign; `-n' always means up to the last + `n' messages which are part of the sequence `name'. + + Although all _M_H commands expand user-defined sequences as appropri- + ate, there are two commands that allow the user to define and manipulate + them: _p_i_c_k and _m_a_r_k. + + _P_i_c_k _a_n_d _U_s_e_r-_D_e_f_i_n_e_d _S_e_q_u_e_n_c_e_s + + Most users of _M_H will use user-defined sequences only with the _p_i_c_k + command. By giving the `-sequence name' switch to _p_i_c_k (which can occur + more than once on the command line), each sequence named is defined as + those messages which _p_i_c_k matched according the the selection criteria + it was given. Hence, + + pick -from frated -seq fred + + finds all those messages in the current folder which were from "frated", + creates a sequence called "fred", and then adds them to the sequence. + The user could then invoke + + scan fred + + to get a _s_c_a_n listing of those messages. Note that by default, _p_i_c_k + creates the named sequences before it adds the selected messages to the + sequence. Hence, if the named sequence already existed, the sequence is + + -142- + + + + + + + + + + -143- + + + destroyed prior to being re-defined (nothing happens to the messages + that were a part of this sequence, they simply cease to be members of + that sequence). By using the `-nozero' switch, this behavior can be + inhibited, as in + + pick -from frated -seq sgroup + pick -from fear -seq sgroup -nozero + pick -from freida -seq sgroup -nozero + + finds all those messages in the current folder which were from "frated", + "fear", or "freida", and defines the sequence called "sgroup" as exactly + those messages. These operations amounted to an "inclusive-or" of three + selection criteria, using _p_i_c_k, one can also generate the "and" of some + selection criteria as well: + + pick -from frated -seq fred + pick -before friday -seq fred fred + + This example defines the sequence called "fred" as exactly those mes- + sages from "frated" that were dated prior to "friday".[1] + + _P_i_c_k is normally used as a back-quoted command, for example, + + scan `pick -from postmaster` + + Now suppose that the user decides that another command should be issued, + using exactly those messages. Since, _p_i_c_k wasn't given a + `-sequence name' argument in this example, the user would end-up typing + the entire back-quoted command again. A simpler way is to add a default + sequence name to the .mh_profile. For example, + + pick: -seq select -list + + will tell _p_i_c_k to always define the sequence "select" whenever it's run. + The `-list' is necessary since the `-sequence name' switch sets `-nol- + ist' whenever the former is encountered. Hence, this profile entry + + +9 [1] Of course, it is much easier to simply use the built-in boolean + operation of _p_i_c_k to get the desired results: + + pick -from frated -or -from fear -or -from freida -seq sgroup + + and + + pick -from frated -and -before friday -seq fred + + do exactly the same thing as the five commands listed above. Hence, the + `-nozero' option to _p_i_c_k is only useful to manipulate existing se- + quences. + + +9 + + + + + + + + + + -144- + + + makes _p_i_c_k define the "select" sequence and otherwise behave exactly as + if there was no profile entry at all. + + _M_a_r_k _a_n_d _U_s_e_r-_D_e_f_i_n_e_d _S_e_q_u_e_n_c_e_s + + The _m_a_r_k command lets the user perform low-level manipulation of + sequences, and also provides a well-needed debug facility to the + implementors/developers/maintainers of _M_H (the _M_H-hacks). In the + future, a user-friendly "front-end" for _m_a_r_k will probably be developed + to give the _M_H user a way to take better advantage of the underlying + facilities. + + _P_u_b_l_i_c _a_n_d _P_r_i_v_a_t_e _U_s_e_r-_D_e_f_i_n_e_d _S_e_q_u_e_n_c_e_s + + There are two kinds of sequences: _p_u_b_l_i_c sequences, and _p_r_i_v_a_t_e + sequences. _P_u_b_l_i_c sequences of a folder are accessible to any _M_H user + that can read that folder and are kept in the .mh_sequences file in the + folder. _P_r_i_v_a_t_e sequences are accessible only to the _M_H user that + defined those sequences and are kept in the user's _M_H context file. By + default, _p_i_c_k (and _m_a_r_k ) create _p_u_b_l_i_c sequences if the folder for + which the sequences are being defined is writable by the _M_H user. Oth- + erwise, _p_r_i_v_a_t_e sequences are created. This can be overridden with the + `-public' and `-private' switches. + + _S_e_q_u_e_n_c_e _N_e_g_a_t_i_o_n + + In addition to telling an _M_H command to use the messages in the + sequence "seen", as in + + refile seen +old + + it would be useful to be easily able to tell an _M_H command to use all + messages _e_x_c_e_p_t those in the sequence. One way of doing this would be + to use _m_a_r_k and define the sequence explicitly, as in + + mark -delete -zero seen -seq notseen + + which, owing to _m_a_r_k 's cryptic interpretation of `-delete' and `-zero', + defines the sequence "notseen" to be all messages not in the sequence + "seen". Naturally, anytime the sequence "seen" is changed, "notseen" + will have to be updated. Another way to achieve this is to define the + entry "Sequence-Negation:" in the .mh_profile. If the entry was + + Sequence-Negation: not + + then anytime an _M_H command was given "notseen" as a `msg' or `msgs' + argument, it would substitute all messages that are not a member of the + sequence "seen". That is, + + refile notseen +new + + does just that. The value of the "Sequence-Negation:" entry in the + + + + + + + + + + + + -145- + + + profile can be any string. Hence, experienced users of _M_H do not use a + word, but rather a special character which their shell does not inter- + pret (users of the _C_S_h_e_l_l use a single caret or circumflex (usually + shift-6), while users of the Bourne shell use an exclamation-mark). + This is because there is nothing to prevent a user of _M_H from defining a + sequence with this string as its prefix, if the string is nothing by + letters and digits. Obviously, this could lead to confusing behavior if + the "Sequence-Negation:" entry leads _M_H to believe that two sequences + are opposites by virtue of their names differing by the prefix string. + + _T_h_e _P_r_e_v_i_o_u_s _S_e_q_u_e_n_c_e + + Many times users find themselves issuing a series of commands on + the same sequences of messages. If the user first defined these mes- + sages as a sequence, then considerable typing may be saved. If the user + doesn't have this foresight, _M_H provides a handy way of having _M_H + remember the `msgs' or `msg' argument last given to an _M_H command. If + the entry "Previous-Sequence:" is defined in the .mh_profile, then when + the command finishes, it will define the sequence(s) named in the value + of this entry as being exactly those messages that were specified. + Hence, a profile entry of + + Previous-Sequence: pseq + + directs any _M_H command that accepts a `msg' or `msgs' argument to define + the sequence "pseq" as those messages when it finishes. More than one + sequence name may be placed in this entry, separated with spaces. The + one disadvantage of this approach is that the _M_H progams have to update + the sequence information for the folder each time they run (although + most programs read this information, usually only _p_i_c_k and _m_a_r_k have to + write this information out). + + _T_h_e _U_n_s_e_e_n _S_e_q_u_e_n_c_e + + Finally, some users like to distinguish between messages which have + been previously seen by them. Both _i_n_c and _s_h_o_w honorthe profile entry + "Unseen-Sequence" to support this activity. Whenever _i_n_c places new + messages in a folder, if the entry "Unseen-Sequence" is defined in the + .mh_profile, then when the command finishes, _i_n_c will add the new mes- + sages to the sequence(s) named in the value of this entry. Hence, a + profile entry of + + Unseen-Sequence: unseen + + directs _i_n_c to add new messages to the sequence "unseen". Unlike the + behavior of the "Previous-Sequence" entry in the profile however, the + sequence(s) will not be zero'd. + + Similarly, whenever _s_h_o_w (or _n_e_x_t or _p_r_e_v ) displays a message, + they remove those messages from any sequences named by the + "Unseen-Sequence" entry in the profile. +9 +9 + + + + + + + + + + -146- + + + _C_O_M_P_O_S_I_T_I_O_N _O_F _M_A_I_L + + There are a number of interesting advanced facilities for the com- + position of outgoing mail. + + + _T_h_e _D_r_a_f_t _F_o_l_d_e_r + + The _c_o_m_p, _d_i_s_t, _f_o_r_w, and _r_e_p_l commands have two switches, + `-draftfolder +folder' and `-draftmessage msg'. If + `-draftfolder +folder' is used, these commands are directed to construct + a draft message in the indicated folder. (The "Draft-Folder:" profile + entry may be used to declare a default draft folder for use with _c_o_m_p, + _d_i_s_t, _f_o_r_w, and _r_e_p_l) If `-draftmessage msg' is not used, it defaults to + `new' (unless the user invokes _c_o_m_p with `-use', in which case the + default is `cur'). Hence, the user may have several message composi- + tions in progress simultaneously. Now, all of the _M_H tools are avail- + able on each of the user's message drafts (e.g., _s_h_o_w, _s_c_a_n, _p_i_c_k, and + so on). If the folder does not exist, the user is asked if it should be + created (just like with _r_e_f_i_l_e ). Also, the last draft message the user + was composing is known as `cur' in the draft folder. + + Furthermore, the _s_e_n_d command has these switches as well. Hence, + from the shell, the user can send off whatever drafts desired using the + standard _M_H `msgs' convention with `-draftmessage msgs'. If no `msgs' + are given, it defaults to `cur'. + + In addition, all five programs have a `-nodraftfolder' switch, + which undoes the last occurrence of `-draftfolder folder' (useful if the + latter occurs in the user's _M_H profile). + + If the user does not give the `-draftfolder +folder' switch, then + all these commands act ``normally''. Note that the `-draft' switch to + _s_e_n_d and _s_h_o_w still refers to the file called `draft' in the user's _M_H + directory. In the interests of economy of expression, when using _c_o_m_p + or _s_e_n_d, the user needn't prefix the draft `msg' or `msgs' with `-draft- + message'. Both of these commands accept a `file' or `files' argument, + and they will, if given `-draftfolder +folder' treat these arguments as + `msg' or `msgs'.[2] Hence, + + send -draftf +drafts first + + is the same as + + send -draftf +drafts -draftm first + + + +9 [2] This may appear to be inconsistent, at first, but it saves a lot + of typing. + + +9 + + + + + + + + + + -147- + + + To make all this a bit more clear, here are some examples. Let's + assume that the following entries are in the _M_H profile: + + Draft-Folder: +drafts + sendf: -draftfolder +drafts + + Furthermore, let's assume that the program _s_e_n_d_f is a (symbolic) link in + the user's $HOME/bin/ directory to _s_e_n_d. Then, any of the commands + + comp + dist + forw + repl + + constructs the message draft in the `draft' folder using the `new' mes- + sage number. Furthermore, they each define `cur' in this folder to be + that message draft. If the user were to use the _q_u_i_t option at `What + now?' level, then later on, if no other draft composition was done, the + draft could be sent with simply + + sendf + + Or, if more editing was required, the draft could be edited with + + comp -use + + Instead, if other drafts had been composed in the meantime, so that this + message draft was no longer known as `cur' in the `draft' folder, then + the user could _s_c_a_n the folder to see which message draft in the folder + should be used for editing or sending. Clever users could even employ a + back-quoted _p_i_c_k to do the work: + + comp -use `pick +drafts -to bug-mh` + + or + + sendf `pick +drafts -to bug-mh` + + Note that in the _c_o_m_p example, the output from _p_i_c_k must resolve to a + single message draft (it makes no sense to talk about composing two or + more drafts with one invocation of _c_o_m_p ). In contrast, in the _s_e_n_d + example, as many message drafts as desired can appear, since _s_e_n_d + doesn't mind sending more than one draft at a time. + + Note that the argument `-draftfolder +folder' is not included in + the profile entry for _s_e_n_d, since when _c_o_m_p, et. al., invoke _s_e_n_d + directly, they supply _s_e_n_d with the UNIX pathname of the message draft, + and not a `draftmessage msg' argument. As far as _s_e_n_d is concerned, a + _d_r_a_f_t _f_o_l_d_e_r is not being used. + + It is important to realize that _M_H treats the draft folder like a + standard _M_H folder in nearly all respects. There are two exceptions: + + + + + + + + + + + + -148- + + + first_____, under no circumstancs will the `-draftfolder folder' switch cause + the named folder to become the current folder.[3] Second______, although con- + ceptually _s_e_n_d deletes the `msgs' named in the draft folder, it does not + call `delete-prog' to perform the deletion. + + + _W_h_a_t _H_a_p_p_e_n_s _i_f _t_h_e _D_r_a_f_t _E_x_i_s_t_s + + When the _c_o_m_p, _d_i_s_t, _f_o_r_w, and _r_e_p_l commands are invoked and the + draft you indicated already exists, these programs will prompt the user + for a reponse directing the program's action. The prompt is + + Draft ``/usr/src/uci/mh/mhbox/draft'' exists (xx bytes). + Disposition? + + The appropriate responses and their meanings are: replace_______: deletes the + draft and starts afresh; list____: lists the draft; refile______: files the draft + into a folder and starts afresh; and, quit____: leaves the draft intact and + exits. In addition, if you specified `-draftfolder folder' to the com- + mand, then one other response will be accepted: new___: finds a new draft, + just as if `-draftmessage new' had been given. Finally, the _c_o_m_p com- + mand will accept one more response: use___: re-uses the draft, just as if + `-use' had been given. + + + _T_h_e _P_u_s_h _O_p_t_i_o_n _a_t _W_h_a_t _n_o_w? _L_e_v_e_l + + The _p_u_s_h option to the "What now?" query in the _c_o_m_p, _d_i_s_t, _f_o_r_w, + and _r_e_p_l commands, directs the command to _s_e_n_d the draft in a special + detached fashion, with all normal output discarded. If _p_u_s_h is used and + the draft can not be sent, then _M_H will send the user a message, indi- + cating the name of the draft file, and an explanation of the failure. + + The user can also invoke _s_e_n_d from the shell with the `-push' + switch, which makes _s_e_n_d act like it had been _p_u_s_h 'd by one of the com- + position commands. + + By using _p_u_s_h, the user can free the shell to do other things, + because it appears to the shell that the _M_H command has finished. As a + result the shell will immediately prompt for another command, despite + the fact that the command is really still running. Note that if the + + +9 [3] Obviously, if the folder appeared in the context of a standard + `+folder' argument to an _M_H program, as in + + scan +drafts + + it might become the current folder, depending on the context changes of + the _M_H program in question. + + +9 + + + + + + + + + + -149- + + + user indicates that annotations are to be performed (with `-annotate' to + _d_i_s_t, _f_o_r_w, or _r_e_p_l), the annotations will be performed after the mes- + sage has been successfully sent. This action will appear to occur asyn- + chronously. Obviously, if one of the messages that is to be annotated + is removed before the draft has been successfully sent, then when _M_H + tries to make the annotations, it won't be able to do so. In previous + versions of _M_H, this resulted in an error message mysteriously appearing + on the user's terminal. In _m_h._5 and later versions, in this special + circumstance, no error will be generated. + + If send is _p_u_s_h 'd, then the `-forward' switch is examined if a + failure notice is generated. If given, then the draft is forwarded with + the failure notice sent to the user. This allows rapid _b_u_r_s_t 'ing of + the failure notice to retrieve the unsent draft. + + + _O_p_t_i_o_n_s _a_t _W_h_a_t _n_o_w? _L_e_v_e_l + + By default, the message composition programs call a program called + _w_h_a_t_n_o_w before the initial draft composition. The _M_H user can specify + any program for this. Following is some information about the default + "What now?" level. More detailed information can be found in the _w_h_a_t_- + _n_o_w (1) manual entry. + + When using the _c_o_m_p, _d_i_s_t, _f_o_r_w, and _r_e_p_l commands at "What now?" + level, the _e_d_i_t, _l_i_s_t, _h_e_a_d_e_r_s, _r_e_f_i_l_e, and (for the _d_i_s_t and _r_e_p_l com- + mands) the _d_i_s_p_l_a_y options will pass on any additional arguments given + them to whatever program they invoke. + + In _m_h._1 (the original RAND _M_H ) and _m_h._2 (the first UCI version of + _M_H ), _M_H used a complicated heuristic to determine if the draft should + be deleted or preserved after an unsuccessful edit. In _m_h._3, _M_H was + changed to preserve the draft always, since _c_o_m_p, et. al., could usually + look at a draft, apply another set of heuristics, and decide if it was + important or not. With the notion of a _d_r_a_f_t _f_o_l_d_e_r, in which one by + default gets a `new' message draft, the edit deletion/preservation algo- + rithm was re-implemented, to keep the draft folder from being cluttered + with aborted edits. + + Also, note that by default, if the draft cannot be successfully + sent, these commands return to "What now?" level. But, when _p_u_s_h is + used, this does not happen (obviously). Hence, if these commands were + expected to annotate any messages, this will have to be done by hand, + later on, with the _a_n_n_o command. + + Finally, if the `-delete' switch is not given to the _q_u_i_t option, + then these commands will inform the user of the name of the unsent draft + file. + + + _D_i_g_e_s_t_s +9 +9 + + + + + + + + + + -150- + + + The _f_o_r_w command has the beginnings of a digestifying facility, + with the `-digest list', `-issue number', and `-volume number' switches. + + If _f_o_r_w is given "list" to the `-digest' switch as the name of the dis- + cussion group, and the `-issue number' switch is not given, then _f_o_r_w + looks for an entry in the user's _M_H context called "_d_i_g_e_s_t-issue-list" + and increments its value to use as the issue number. Similarly, if the + `-volume number' switch is not given, then _f_o_r_w looks for + "_d_i_g_e_s_t-volume-list" (but does not increment its value) to use as the + volume number. + + Having calculated the name of the digest and the volume and issue + numbers, _f_o_r_w will now process the components file using the same format + string mechanism used by _r_e_p_l. The current `%'-escapes are: + + _e_s_c_a_p_e _t_y_p_e _s_u_b_s_t_i_t_u_t_i_o_n + digest string digest name + msg integer issue number + cur integer volume number + + In addition, to capture the current date, any of the escapes valid for + _d_p (8) are also valid for _f_o_r_w. + + The default components file used by _f_o_r_w when in digest mode is: + + From: %{digest}-Request + To: %{digest} Distribution: dist-%{digest}; + Subject: %{digest} Digest V%(cur) #%(msg) + Reply-To: %{digest} + -------- + %{digest} Digest %(weekday{date}), %2(mday{date}) %(month{date}) 19%02(year{date}) + Volume %(cur) : Issue %(msg) + + Today's Topics: + + Hence, when the `-digest' switch is present, the first step taken by + _f_o_r_w is to expand the format strings in the component file. The next + step is to compose the draft using the standard digest encapsulation + algorithm (even putting an "End of list Digest" trailer in the draft). + Once the draft is composed by _f_o_r_w, _f_o_r_w writes out the volume and issue + profile entries for the digest, and then invokes the editor. + + Naturally, when composing the draft, _f_o_r_w will honor the + `-filter filterfile' switch, which is given to _m_h_l to filter each mes- + sage being forwarded prior to encapsulation in the draft. A good filter + file to use, which is called _m_h_l._d_i_g_e_s_t, is: + + + + + +9 +9 + + + + + + + + + + -151- + + + width=80,overflowoffset=10 + leftadjust,compress,compwidth=9 + Date:formatfield="%<(nodate{text})%{text}%|%(tws{text})%>" + From: + Subject: + : + body:nocomponent,overflowoffset=0,noleftadjust,nocompress + + + +9 _F_O_L_D_E_R _H_A_N_D_L_I_N_G + + There are two interesting facilities for manipulating folders: + relative folder addressing, which allows a user to shorten the typing of + long folder names; and the folder-stack, which permits a user to keep a + stack of current folders. + + + _R_e_l_a_t_i_v_e _F_o_l_d_e_r _A_d_d_r_e_s_s_i_n_g + + By default, when `+folder' is given, and the folder name is not + absolute (does not start with /, ./, or ../), then the UNIX pathname of + the folder is interpreted relative to the user's _M_H directory. Although + this mechanism works fine for top-level folders and their immediate + sub-folders, once the depth of the sub-folder tree grows, it becomes + rather unwieldly: + + scan +mh/mh.4/draft/flames + + is a lot of typing. _M_H can't do anything if the current folder was + "+inbox", but if the current folder was, say, "+mh/mh.4/draft", _M_H has a + short-hand notation to reference a sub-folder of the current folder. + Using the `@folder' notation, the _M_H user can direct any _M_H program + which expects a `+folder' argument to look for the folder relative to + the current folder instead of the user's _M_H directory. Hence, if the + current folder _w_a_s "+mh/mh.4/draft", then + + scan @flames + + would do the trick handily. In addition, if the current folder _w_a_s + "+mh/mh.4/draft", + + scan @../pick + + would scan the folder "+mh/mh.4/pick", since, in the UNIX fashion, it + references the folder "pick" which is a sub-folder of the folder that is + the parent of the current folder. Since most advanced _M_H users seem to + exhibit a large degree of locality in referencing folders when they pro- + cess mail, this convention should receive a wide range of uses. + + + +9 + + + + + + + + + + -152- + + + _T_h_e _F_o_l_d_e_r-_S_t_a_c_k + + The _f_o_l_d_e_r-_s_t_a_c_k mechanism in _M_H gives the _M_H user a facility simi- + lar to the _C_S_h_e_l_l 's directory-stack. Simply put, + + folder -push +foo + + makes "foo" the current folder, saving the folder that was previously + the current folder on the _f_o_l_d_e_r-_s_t_a_c_k. As expected, + + folder -pop + + takes the top of the _f_o_l_d_e_r-_s_t_a_c_k and makes it the current folder. Each + of these switches lists the _f_o_l_d_e_r-_s_t_a_c_k when they execute. It is sim- + ple to write a _p_u_s_h_f command as a shell script. It's one line: + + exec folder -push $@ + + Probably a better way is to link _f_o_l_d_e_r to the $HOME/bin/ directory + under the name of _p_u_s_h_f and then add the entry + + pushf: -push + + to the .mh_profile. + + The manual page for _f_o_l_d_e_r discusses the analogy between the _C_S_h_e_l_l + directory stack commands and the switches in _f_o_l_d_e_r which manipulate the + _f_o_l_d_e_r-_s_t_a_c_k. The _f_o_l_d_e_r command uses the context entry `Folder-Stack:' + to keep track of the folders in the user's stack of folders. + + + + + + + + + + + + + + + + + + + + + + +9 +9 + + + + + + + + + + + + + Appendix A + _C_O_M_M_A_N_D _S_U_M_M_A_R_Y + + + +9 ali [-alias aliasfile] [-list] [-nolist] [-normalize] + [-nonormalize] [-user] [-nouser] aliases ... [-help] + + anno [+folder] [msgs] [-component field] [-inplace] [-noinplace] + [-date] [-nodate] [-text body] [-help] + + bbc [bboards ...] [-topics] [-check] [-read] [-quiet] [-verbose] + [-archive] [-noarchive] [-protocol] [-noprotocol] + [-mshproc program] [switches for _m_s_h_p_r_o_c] [-rcfile rcfile] + [-norcfile] [-file BBoardsfile] [-user BBoardsuser] + [-host host] [-help] + + burst [+folder] [msgs] [-inplace] [-noinplace] [-quiet] [-noquiet] + [-verbose] [-noverbose] [-help] + + comp [+folder] [msg] [-draftfolder +folder] [-draftmessage msg] + [-nodraftfolder] [-editor editor] [-noedit] [-file file] + [-form formfile] [-use] [-nouse] [-whatnowproc program] + [-nowhatnowproc] [-help] + + dist [+folder] [msg] [-annotate] [-noannotate] + [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [-editor editor] [-noedit] [-form formfile] [-inplace] + [-noinplace] [-whatnowproc program] [-nowhatnowproc] [-help] + + folder [+folder] [msg] [-all] [-fast] [-nofast] [-header] + [-noheader] [-pack] [-nopack] [-recurse] [-norecurse] [-total] + [-nototal] [-print] [-noprint] [-list] [-nolist] [-push] + [-pop] [-help] + + folders + + forw [+folder] [msgs] [-annotate] [-noannotate] + [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [-editor editor] [-noedit] [-filter filterfile] + [-form formfile] [-format] [-noformat] [-inplace] [-noinplace] + [-whatnowproc program] [-nowhatnowproc] [-help] + + forw [+folder] [msgs] [-digest list] [-issue number] + [-volume number] [other switches for _f_o_r_w] [-help] + + + + + + + +9 -153- + + + + + + + + + + + + + inc [+folder] [-audit audit-file] [-noaudit] [-changecur] + [-nochangecur] [-file name] [-form formatfile] + [-format string] [-silent] [-nosilent] [-truncate] + [-notruncate] [-width columns] [-host host] [-user user] + [-pack file] [-nopack] [-rpop] [-norpop] [-help] + + mark [+folder] [msgs] [-sequence name ...] [-add] [-delete] [-list] + [-public] [-nopublic] [-zero] [-nozero] [-help] + + /usr/local/lib/mh/mhl [-bell] [-nobell] [-clear] [-noclear] + [-folder +folder] [-form formfile] [-length lines] + [-width columns] [-moreproc program] [-nomoreproc] [files ...] + [-help] + + mhmail [ addrs ... [-body text] [-cc addrs ...] [-from addr] + [-subject subject]] [-help] + + mhpath [+folder] [msgs] [-help] + + msgchk [-date] [-nodate] [-notify all/mail/nomail] + [-nonotify all/mail/nomail] [-host host] [-user user] [-rpop] + [-norpop] [users ...] [-help] + + msh [-prompt string] [-scan] [-noscan] [-topcur] [-notopcur] [file] + [-help] + + next [+folder] [-header] [-noheader] [-showproc program] + [-noshowproc] [switches for _s_h_o_w_p_r_o_c] [-help] + + packf [+folder] [msgs] [-file name] [-help] + + pick [+folder] [msgs] [-and ...] [-or ...] [-not ...] + [-lbrace ... -rbrace] [--component pattern] [-after date] + [-before date] [-datefield field] [-sequence name ...] + [-public] [-nopublic] [-zero] [-nozero] [-list] [-nolist] + [-help] + + prev [+folder] [-header] [-noheader] [-showproc program] + [-noshowproc] [switches for _s_h_o_w_p_r_o_c] [-help] + + prompter [-erase chr] [-kill chr] [-prepend] [-noprepend] [-rapid] + [-norapid] [-doteof] [-nodoteof] file [-help] + + /usr/local/lib/mh/rcvstore [+folder] [-create] [-nocreate] + [-sequence name ...] [-public] [-nopublic] [-zero] [-nozero] + [-help] + + + + + +9 +9 -154- + + + + + + + + + + + + + refile [msgs] [-draft] [-link] [-nolink] [-preserve] [-nopreserve] + [-src +folder] [-file file] +folder ... [-help] + + repl [+folder] [msg] [-annotate] [-noannotate] [-cc all/to/cc/me] + [-nocc all/to/cc/me] [-draftfolder +folder] + [-draftmessage msg] [-nodraftfolder] [-editor editor] + [-noedit] [-fcc +folder] [-filter filterfile] [-form formfile] + [-inplace] [-noinplace] [-query] [-noquery] + [-whatnowproc program] [-nowhatnowproc] [-width columns] + [-help] + + rmf [+folder] [-interactive] [-nointeractive] [-help] + + rmm [+folder] [msgs] [-help] + + scan [+folder] [msgs] [-clear] [-noclear] [-form formatfile] + [-format string] [-header] [-noheader] [-width columns] + [-reverse] [-noreverse] [-file filename] [-help] + + send [-alias aliasfile] [-draft] [-draftfolder +folder] + [-draftmessage msg] [-nodraftfolder] [-filter filterfile] + [-nofilter] [-format] [-noformat] [-forward] [-noforward] + [-msgid] [-nomsgid] [-push] [-nopush] [-verbose] [-noverbose] + [-watch] [-nowatch] [-width columns] [file ...] [-help] + + show [+folder] [msgs] [-draft] [-header] [-noheader] + [-showproc program] [-noshowproc] [switches for _s_h_o_w_p_r_o_c] + [-help] + + sortm [+folder] [msgs] [-datefield field] [-textfield field] + [-notextfield] [-limit days] [-nolimit] [-verbose] + [-noverbose] [-help] + + vmh [-prompt string] [-vmhproc program] [-novmhproc] + [switches for _v_m_h_p_r_o_c] [-help] + + whatnow [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [-editor editor] [-noedit] [-prompt string] [file] [-help] + + whom [-alias aliasfile] [-check] [-nocheck] [-draft] + [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [file] [-help] + + /usr/local/lib/mh/ap [-form formatfile] [-format string] + [-normalize] [-nonormalize] [-width columns] addrs ... + [-help] + + + + + +9 +9 -155- + + + + + + + + + + + + + /usr/local/lib/mh/conflict [-mail name] [-search directory] + [aliasfiles ...] [-help] + + /usr/local/lib/mh/dp [-form formatfile] [-format string] + [-width columns] dates ... [-help] + + /usr/local/lib/mh/install-mh [-auto] [-compat] + + /usr/local/lib/mh/post [-alias aliasfile] [-filter filterfile] + [-nofilter] [-format] [-noformat] [-msgid] [-nomsgid] + [-verbose] [-noverbose] [-watch] [-nowatch] [-width columns] + file [-help] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 -156- + + + + + + + + + + + + + Appendix B + _M_E_S_S_A_G_E _N_A_M_E _B_N_F + + + +9 + msgs := msgspec | + msgs msgspec + + msgspec := msg | + msg-range | + msg-sequence | + user-defined-sequence + + msg := msg-name | + + + msg-name := "first" | + "last" | + "cur" | + "." | + "next" | + "prev" + + msg-range := msg"-"msg | + "all" + + msg-sequence := msg":"signed-number + + signed-number := "+" | + "-" | + + + user-defined-sequence := | + * + + + Where is a decimal number greater than zero. + + Msg-range specifies all of the messages in the given range and must not + be empty. + + Msg-sequence specifies up to of messages, beginning with "msg" + (in the case of first, cur, next, or ), or ending with "msg" (in + the case of prev or last). + forces "starting with msg", and + - forces "ending with number". In all cases, "msg" must exist. + + User-defined sequences are defined and manipulated with the _p_i_c_k and + _m_a_r_k commands. + + + +9 -157- + + + + + + + + + + + + + _R_E_F_E_R_E_N_C_E_S + + + + 1. Crocker, D. H., J. J. Vittal, K. T. Pogran, and D. A. Henderson, + Jr., "Standard for the Format of ARPA Network Text Messages," + _R_F_C_7_3_3, November 1977. + + 2. Thompson, K., and D. M. Ritchie, "The UNIX Time-sharing System," + _C_o_m_m_u_n_i_c_a_t_i_o_n_s _o_f _t_h_e _A_C_M, Vol. 17, July 1974, pp. 365-375. + + 3. McCauley, E. J., and P. J. Drongowski, "KSOS-The Design of a Secure + Operating System," _A_F_I_P_S _C_o_n_f_e_r_e_n_c_e _P_r_o_c_e_e_d_i_n_g_s, National Computer + Conference, Vol. 48, 1979, pp. 345-353. + + 4. Crocker, David H., _F_r_a_m_e_w_o_r_k _a_n_d _F_u_n_c_t_i_o_n_s _o_f _t_h_e "_M_S" _P_e_r_s_o_n_a_l _M_e_s_- + _s_a_g_e _S_y_s_t_e_m, The RAND Corporation, R-2134-ARPA, December 1977. + + 5. Thompson, K., and D. M. Ritchie, _U_N_I_X _P_r_o_g_r_a_m_m_e_r'_s _M_a_n_u_a_l, 6th ed., + Western Electric Company, May 1975 (available only to UNIX licen- + sees). + + 6. Crocker, D. H., "Standard for the Format of ARPA Internet Text Mes- + sages," _R_F_C_8_2_2, August 1982. + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 -158- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 -i- + + + + + + + + + + + + + _R_E_A_D _T_H_I_S + + + + + Although the _M_H system was originally developed by the RAND Cor- + poration, and is now in the public domain, the RAND Corporation assumes + no responsibility for _M_H or this particular version of _M_H. + + In addition, the Regents of the University of California issue the + following disclaimer in regard to the UCI version of _M_H: + + "Although each program has been tested by its contributor, no war- + ranty, express or implied, is made by the contributor or the + University of California, as to the accuracy and functioning of the + program and related program material, nor shall the fact of distri- + bution constitute any such warranty, and no responsibility is + assumed by the contributor or the University of California in con- + nection herewith." + + This version of _M_H is in the public domain, and as such, there are + no real restrictions on its use. The _M_H source code and documentation + have no licensing restrictions whatsoever. As a courtesy, the authors + ask only that you provide appropriate credit to the RAND Corporation and + the University of California for having developed the software. + + _M_H is a software package that is supported neither by the RAND Cor- + poration nor the University of California. However, since we do use the + software ourselves and plan to continue using (and improving) _M_H, bug + reports and their associated fixes should be reported back to us so that + we may include them in future releases. The current computer mailbox + for _M_H is Bug-MH@ICS.UCI.EDU (in the ARPA Internet), and + ...!ucbvax!ucivax!bug-mh (UUCP). Presently, there are two Internet dis- + cussion groups, MH-Users@ICS.UCI.EDU and MH-Workers@ICS.UCI.EDU. + MH-Workers is for people discussing code changes to _M_H. MH-Users is for + general discussion about how to use _M_H. MH-Users is bi-directionally + gatewayed into USENET as comp.mail.mh. + + _H_O_W _T_O _G_E_T _M_H + + Since you probably already have _M_H, you may not need to read this + unless you suspect you have an old version. There are two ways to get + the latest release: + + 1. If you can FTP to the ARPA Internet, use anonymous FTP to + ics.uci.edu [128.195.1.1] and retrieve the file pub/mh/mh-6.7.tar.Z. + This is a tar image after being run through the compress program + (approximately 1.5MB). There should also be a README file in that + directory which tells what the current release of _M_H is, and how to get + updates. + +9 +9 -i- + + + + + + + + + + -ii- + + + This tar file is also available on louie.udel.edu [128.175.1.3] in + portal/mh-6.7.tar.Z. You may also find MH on various other hosts; to + make sure you get the latest version and don't waste your time re-fixing + bugs, it's best to get it from either ics.uci.edu or louie.udel.edu. + + 2. You can send $75 US to the address below. This covers the cost + of a 6250 BPI 9-track magtape, handling, and shipping. In addition, + you'll get a laser-printed hard-copy of the entire MH documentation set. + Be sure to include your USPS address with your check. Checks must be + drawn on U.S. funds and should be made payable to: + + Regents of the University of California + + The distribution address is: + + Computing Support Group + Attn: MH distribution + Department of Information and Computer Science + University of California, Irvine + Irvine, CA 92717 + + 714/856-7554 + + If you just want the hard-copies of the documentation, you still + have to pay the $75. The tar image has the documentation source (the + manual is in roff format, but the rest are in TeX format). Postscript + formatted versions of the TeX papers are available, as are crude tty- + conversions of those papers. + + + + + + + + + + + + + + + + + + + + + + + +9 +9 + + + + + + + + + + + + + _F_O_R_E_W_O_R_D + + + + + This document describes the RAND _M_H Message Handling System. Its + primary purpose is to serve as a user's manual. It has been heavily + based on a previous version of the manual, prepared by Bruce Borden, + Stockton Gaines, and Norman Shapiro. + + _M_H is a particularly novel system, and thus it is often more prone + to change than other pieces of production software. As such, some + specific points in this manual may not be correct in the future. In all + cases, the on-line sections of this manual, available through the + UNIX[1] _m_a_n command, should present the most current information. + + When reading this document as a user's manual, certain sections are + more interesting than others. The Preface and Summary are not particu- + larly interesting to those interested in learning _M_H. The Introduction + is slightly more interesting, as it touches upon the organization of the + remainder of this document. The most useful sections are the Overview, + Tutorial, and Detailed Description. The Overview should be read by all + _M_H users, regardless of their expertise (beginning, novice, advanced, or + hacker). The Tutorial should be read by all beginning and novice _M_H + users, as it presents a nice description of the _M_H system. The Detailed + Description should be read by the day-to-day user of _M_H, as it spells + out all of the realities of the _M_H system. The Advanced Features sec- + tion discusses some powerful _M_H capabilities for advanced users. Appen- + dix A is particularly useful for novices, as it summarizes the invoca- + tion syntax of all the _M_H commands. + + There are also several other documents which may be useful to you: + _T_h_e _R_A_N_D _M_H _M_e_s_s_a_g_e _H_a_n_d_l_i_n_g _S_y_s_t_e_m: _T_u_t_o_r_i_a_l, which is a tutorial for + _M_H; _T_h_e _R_A_N_D _M_H _M_e_s_s_a_g_e _H_a_n_d_l_i_n_g _S_y_s_t_e_m: _T_h_e _U_C_I _B_B_o_a_r_d_s _F_a_c_i_l_i_t_y, which + describes the BBoards handling under _M_H; _M_H._5: _H_o_w _t_o _p_r_o_c_e_s_s _2_0_0 _m_e_s_- + _s_a_g_e_s _a _d_a_y _a_n_d _s_t_i_l_l _g_e_t _s_o_m_e _r_e_a_l _w_o_r_k _d_o_n_e, which was presented at + the 1985 Summer Usenix Conference and Exhibition in Portland, Oregon; + _M_H: _A _M_u_l_t_i_f_a_r_i_o_u_s _U_s_e_r _A_g_e_n_t, which has been accepted for publication + by Computer Networks; _M_Z_n_e_t: _M_a_i_l _S_e_r_v_i_c_e _f_o_r _P_e_r_s_o_n_a_l _M_i_c_r_o-_C_o_m_p_u_t_e_r + _S_y_s_t_e_m_s, which was presented at the First International Symposium on + Computer Message Systems in Nottingham, U.K.; and, _D_e_s_i_g_n _o_f _t_h_e _T_T_I + _P_r_o_t_o_t_y_p_e _T_r_u_s_t_e_d _M_a_i_l _A_g_e_n_t, which describes a proprietary "trusted" + mail system built on _M_H. There are also documents, mostly specific to + U.C. Irvine which you may find interesting: _M_H _f_o_r _B_e_g_i_n_n_e_r_s, and _M_H _f_o_r + _M_M _U_s_e_r_s. All of these documents exist in the _m_h._6 distribution sent to + your site. There's also a document, _C_h_a_n_g_e_s _t_o _t_h_e _R_A_N_D _M_H _M_e_s_s_a_g_e _H_a_n_- + _d_l_i_n_g _S_y_s_t_e_m: _M_H._6, which describes user-visible changes made to _M_H + + +9 [1] UNIX is a trademark of AT&T Bell Laboratories. + + +9 -iii- + + + + + + + + + + -iv- + + + since the last major release. + + This manual is very large, as it describes a large, powerful system + in gruesome detail. The important thing to remember is: + + + _D_O_N'_T _P_A_N_I_C[_2] + + + As explained in the tutorial, you really need to know only 5 commands to + handle most of your mail. + + Very advanced users may wish to consult _T_h_e _R_A_N_D _M_H _M_e_s_s_a_g_e _H_a_n_- + _d_l_i_n_g _S_y_s_t_e_m: _A_d_m_i_n_i_s_t_r_a_t_o_r'_s _G_u_i_d_e, which is also present in the _m_h._6 + distribution sent to your site. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 [2] Note the large, _f_r_i_e_n_d_l_y letters. + + +9 + + + + + + + + + + + + + _A_C_K_N_O_W_L_E_D_G_M_E_N_T_S + + + + + The _M_H system described herein is based on the original RAND _M_H + system. It has been extensively developed (perhaps too much so) by + Marshall T. Rose and John L. Romine at the University of California, + Irvine. Einar A. Stefferud, Jerry N. Sweet, and Terry P. Domae provided + numerous suggestions to improve the UCI version of _M_H. Of course, a + large number of people have helped _M_H along. The list of ``_M_H immor- + tals'' is too long to list here. However, Van Jacobson deserves a spe- + cial acknowledgement for his tireless work in improving the performance + of _M_H. Some programs have been speeded-up by a factor of 10 or 20. All + of users of _M_H, everywhere, owe a special thanks to Van. For this + release, numerous _M_H-_W_o_r_k_e_r_s sent in fixes and other changes. A handful + of courageous _M_H-_W_o_r_k_e_r_s volunteered to beta-test these changes; their + help is particularly appreciated. + + This manual is based on the original _M_H manual written at RAND by + Bruce Borden, Stockton Gaines, and Norman Shapiro. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 -v- + + + + + + + + + + + + + _P_R_E_F_A_C_E + + + + + This report describes a system for dealing with messages transmit- + ted on a computer. Such messages might originate with other users of + the same computer or might come from an outside source through a network + to which the user's computer is connected. Such computer-based message + systems are becoming increasingly widely used, both within and outside + the Department of Defense. + + The message handling system _M_H was developed for two reasons. One + was to investigate some research ideas concerning how a message system + might take advantage of the architecture of the UNIX time-sharing + operating system for Digital Equipment Corporation PDP-11 and VAX com- + puters, and the special features of UNIX's command-level interface with + the user (the "shell"). The other reason was to provide a better and + more adaptable base than that of conventional designs on which to build + a command and control message system. The effort has succeeded in both + regards, although this report mainly describes the message system itself + and how it fits in with UNIX. + + The present report should be of interest to three groups of + readers. First, it is a complete reference manual for the users of _M_H. + Second, it should be of interest to those who have a general knowledge + of computer-based message systems, both in civilian and military appli- + cations. Finally, it should be of interest to those who build large + subsystems that interface with users, since it illustrates a new + approach to such interfaces. + + The original _M_H system was developed by Bruce Borden, using an + approach suggested by Stockton Gaines and Norman Shapiro. Valuable + assistance was provided by Phyllis Kantar in the later stages of the + system's implementation. Several colleagues contributed to the ideas + included in this system, particularly Robert Anderson and David Crocker. + In addition, valuable experience in message systems, and a valuable + source of ideas, was available to us in the form of a previous message + system for UNIX called MS, designed at RAND by David Crocker. + + This report was originally prepared as part of the RAND project + entitled "Data Automation Research", sponsored by Project AIR FORCE. + + + + + + + + + +9 +9 -vi- + + + + + + + + + + + + + _S_U_M_M_A_R_Y + + + + + Electronic communication of text messages is becoming commonplace. + Computer-based message systems-software packages that provide tools for + dealing with messages-are used in many contexts. In particular, message + systems are becoming increasingly important in command and control and + intelligence applications. + + This report describes a message handling system called _M_H. This + system provides the user with tools to compose, send, receive, store, + retrieve, forward, and reply to messages. _M_H has been built on the UNIX + time-sharing system, a popular operating system developed for the DEC + PDP-11 and VAX classes of computers. + + A complete description of _M_H is given for users of the system. For + those who do not intend to use the system, this description gives a gen- + eral idea of what a message system is like. The system involves some + new ideas about how large subsystems can be constructed. + + The interesting and unusual features of _M_H include the following: + The user command interface to _M_H is the UNIX "shell" (the standard UNIX + command interpreter). Each separable component of message handling, + such as message composition or message display, is a separate command. + Each program is driven from and updates a private user environment, + which is stored as a file between program invocations. This private + environment also contains information to "custom tailor" _M_H to the + individual's tastes. _M_H stores each message as a separate file under + UNIX, and it utilizes the tree-structured UNIX file system to organize + groups of files within separate directories or "folders". All of the + UNIX facilities for dealing with files and directories, such as renam- + ing, copying, deleting, cataloging, off-line printing, etc., are appli- + cable to messages and directories of messages (folders). Thus, impor- + tant capabilities needed in a message system are available in _M_H without + the need (often seen in other message systems) for code that duplicates + the facilities of the supporting operating system. It also allows users + familiar with the shell to use _M_H with minimal effort. + + + + + + + + + + + + +9 +9 -vii- + + + + + + + + + + + + + _C_O_N_T_E_N_T_S + + + + + READ THIS ......................................................... i + + FOREWORD .......................................................... iii + + ACKNOWLEDGMENTS ................................................... v + + PREFACE ........................................................... vi + + SUMMARY ........................................................... vii + + Section + + 1. INTRODUCTION ............................................... 1 + + 2. OVERVIEW ................................................... 4 + + 3. TUTORIAL ................................................... 7 + + 4. DETAILED DESCRIPTION ....................................... 10 +9 THE USER PROFILE ............................................. 10 +9 MESSAGE NAMING ............................................... 13 +9 OTHER MH CONVENTIONS ......................................... 14 +9 MH COMMANDS .................................................. 16 + ALI ....................................................... 17 + ANNO ...................................................... 19 + BBC ....................................................... 21 + BBOARDS ................................................... 24 + BURST ..................................................... 26 + COMP ...................................................... 28 + DIST ...................................................... 30 + FOLDER .................................................... 33 + FORW ...................................................... 36 + INC ....................................................... 40 + MARK ...................................................... 43 + MHL ....................................................... 45 + MHMAIL .................................................... 50 + MHOOK ..................................................... 52 + MHPATH .................................................... 54 + MSGCHK .................................................... 57 + MSH ....................................................... 59 + NEXT ...................................................... 63 + PACKF ..................................................... 64 + PICK ...................................................... 65 + PREV ...................................................... 69 + PROMPTER .................................................. 70 + + + + + + + + + + + + + + + RCVSTORE .................................................. 73 + REFILE .................................................... 75 + REPL ...................................................... 77 + RMF ....................................................... 81 + RMM ....................................................... 83 + SCAN ...................................................... 85 + SEND ...................................................... 88 + SHOW ...................................................... 91 + SORTM ..................................................... 94 + VMH ....................................................... 96 + WHATNOW ................................................... 98 + WHOM ...................................................... 100 +9 MORE DETAILS ................................................. 102 + MH-ALIAS .................................................. 103 + MH-FORMAT ................................................. 107 + MH-MAIL ................................................... 116 + MH-PROFILE ................................................ 120 + MH-SEQUENCE ............................................... 128 + AP ........................................................ 132 + CONFLICT .................................................. 134 + DP ........................................................ 136 + INSTALL-MH ................................................ 138 + POST ...................................................... 139 + + 5. REPORTING PROBLEMS ......................................... 141 + + 6. ADVANCED FEATURES .......................................... 142 +9 USER-DEFINED SEQUENCES ....................................... 142 + Pick and User-Defined Sequences ........................... 142 + Mark and User-Defined Sequences ........................... 144 + Public and Private User-Defined Sequences ................. 144 + Sequence Negation ......................................... 144 + The Previous Sequence ..................................... 145 + The Unseen Sequence ....................................... 145 +9 COMPOSITION OF MAIL .......................................... 146 + The Draft Folder .......................................... 146 + What Happens if the Draft Exists .......................... 148 + The Push Option at What now? Level ........................ 148 + Options at What now? Level ................................ 149 + Digests ................................................... 150 +9 FOLDER HANDLING .............................................. 151 + Relative Folder Addressing ................................ 151 + The Folder-Stack .......................................... 152 + + Appendix + A. Command Summary ............................................ 153 + B. Message Name BNF ........................................... 157 + + REFERENCES ........................................................ 158 +9 +9 + + + + + + + + + + + + + + + + + + + + + + + +9 THE RAND MH + +9 MESSAGE HANDLING + +9 SYSTEM: + +9 USER'S MANUAL + + + + + + + UCI Version + + + + + + Marshall T. Rose + + John L. Romine + + + + + Based on the original manual by + + Borden, Gaines, and Shapiro + + + + + + + + February 1, 1991 + + 6.7.1a #6[UCI] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +9 +9 + + + + + diff --git a/docs/historical/MH-19921214.pdf b/docs/historical/MH-19921214.pdf new file mode 100644 index 0000000..431c46b Binary files /dev/null and b/docs/historical/MH-19921214.pdf differ diff --git a/docs/historical/MH-19921214.txt b/docs/historical/MH-19921214.txt new file mode 100644 index 0000000..2ee97f5 --- /dev/null +++ b/docs/historical/MH-19921214.txt @@ -0,0 +1,13134 @@ + + + + + + + + + _d_i_s_c_a_r_d _t_h_i_s _p_a_g_e + + + + + The RAND _M_H + Message Handling System: + User's Manual + + UCI Version + + + December 14, 1992 + 6.6 #1[UCI] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _1. _I_N_T_R_O_D_U_C_T_I_O_N + + + + + + Although people can travel cross-country in hours and can reach + others by telephone in seconds, communications still depend heavily upon + paper, most of which is distributed through the mails. + + There are several major reasons for this continued dependence on + written documents. First, a written document may be proofread and + corrected prior to its distribution, giving the author complete control + over his words. Thus, a written document is better than a telephone + conversation in this respect. Second, a carefully written document is + far less likely to be misinterpreted or poorly translated than a phone + conversation. Third, a signature offers reasonable verification of + authorship, which cannot be provided with media such as telegrams. + + However, the need for fast____, accurate, and reproducible document + distribution is obvious. One solution in widespread use is the telefax. + Another that is rapidly gaining popularity is electronic mail. Elec- + tronic mail is similar to telefax in that the data to be sent are digi- + tized, transmitted via phone lines, and turned back into a document at + the receiver. The advantage of electronic mail is in its compression + factor. Whereas a telefax must scan a page in very fine lines and send + all of the black and white information, electronic mail assigns charac- + ters fixed codes which can be transmitted as a few bits of information. + Telefax presently has the advantage of being able to transmit an arbi- + trary page, including pictures, but electronic mail is beginning to deal + with this problem. Electronic mail also integrates well with current + directions in office automation, allowing documents prepared with + sophisticated equipment at one site to be quickly transferred and + printed at another site. + + Currently, most electronic mail is intraorganizational, with mail + transfer remaining within one computer. As computer networking becomes + more common, however, it is becoming more feasible to communicate with + anyone whose computer can be linked to your own via a network. + + The pioneering efforts on general-purpose electronic mail were by + organizations using the DoD ARPAnet[1]. The capability to send messages + between computers existed before the ARPAnet was developed, but it was + used only in limited ways. With the advent of the ARPAnet, tools began + to be developed which made it convenient for individuals or organiza- + tions to distribute messages over broad geographic areas, using diverse + computer facilities. The interest and activity in message systems has + now reached such proportions that steps have been taken within the DoD + to coordinate and unify the development of military message systems. + The use of electronic mail is expected to increase dramatically in the + next few years. The utility of such systems in the command and control + and intelligence environments is clear, and applications in these areas + + + + + + + + + + + + -2- + + + will probably lead the way. As the costs for sending and handling elec- + tronic messages continue their rapid decrease, such uses can be expected + to spread rapidly into other areas and, of course, will not be limited + to the DoD. + + A message system provides tools that help users (individuals or + organizations) deal with messages in various ways. Messages must be + composed, sent, received, stored, retrieved, forwarded, and replied to. + Today's best interactive computer systems provide a variety of word- + processing and information handling capabilities. The message handling + facilities should be well integrated with the rest of the system, so as + to be a graceful extension of overall system capability. + + The message system described in this report, _M_H, provides most of + the features that can be found in other message systems and also incor- + porates some new ones. It has been built on the UNIX time-sharing sys- + tem[2], a popular operating system for the DEC PDP-11[1] and VAX-11 + classes of computers. A "secure" operating system similar to UNIX is + currently being developed[3], and that system will also run _M_H. + + This report provides a complete description of _M_H and thus may + serve as a user's manual, although parts of the report will be of + interest to non-users as well. Sections 2 and 3, the Overview and + Tutorial, present the key ideas of _M_H and will give those not familiar + with message systems an idea of what such systems are like. + + _M_H consists of a set of commands which use some special files and + conventions. The final section is divided into three parts. The first + part covers the information a user needs to know in addition to the com- + mands. Then, each of the _M_H commands is described in detail. Finally, + other obscure details are revealed. A summary of the commands is given + in Appendix A, and the syntax of message sequences is given in Appendix + B. + + A novel approach has been taken in the design of _M_H. Instead of + creating a large subsystem that appears as a single command to the user + (such as MS[4]), _M_H is a collection of separate commands which are run + as separate programs. The file and directory system of UNIX are used + directly. Messages are stored as individual files (datasets), and col- + lections of them are grouped into directories. In contrast, most other + message systems store messages in a complicated data structure within a + monolithic file. With the _M_H approach, UNIX commands can be interleaved + with commands invoking the functions of the message handler. Con- + versely, existing UNIX commands can be used in connection with messages. + For example, all the usual UNIX editing, text-formatting, and printing + facilities can be applied directly to individual messages. MH, there- + fore, consists of a relatively small amount of new code; it makes exten- + sive use of other UNIX software to provide the capabilities found in + + + [1] PDP and VAX are trademarks of Digital Equipment Corporation. + + + + + + + + + + + + + -3- + + + other message systems. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _2. _O_V_E_R_V_I_E_W + + + + + + There are three main aspects of _M_H : the way messages are + stored (the message database), the user's profile (which directs how + certain actions of the message handler take place), and the commands for + dealing with messages. + + Under _M_H, each message is stored as a separate file. A user can + take any action with a message that he could with an ordinary file in + UNIX. A UNIX directory in which messages are stored is called a folder. + Each folder contains some standard entries to support the message- + handling functions. The messages in a folder have numerical names. + These folders (directories) are entries in a particular directory path, + described in the user profile, through which _M_H can find message fold- + ers. Using the UNIX "link" facility, it is possible for one copy of a + message to be "filed" in more than one folder, providing a message index + facility. Also, using the UNIX tree-structured file system, it is pos- + sible to have a folder within a folder, nested arbitrarily deep, and + have the full power of the _M_H commands available. + + Each user of _M_H has a user profile, a file in his $HOME (initial + login) directory called ._m_h__p_r_o_f_i_l_e. This profile contains several + pieces of information used by the _M_H commands: a path name to the direc- + tory that contains the message folders and parameters that tailor _M_H + commands to the individual user's requirements. There is also another + file, called the user context, which contains information concerning + which folder the user last referenced (the "current" folder). It also + contains most of the necessary state information concerning how the user + is dealing with his messages, enabling _M_H to be implemented as a set of + individual UNIX commands, in contrast to the usual approach of a monol- + ithic subsystem. + + In _M_H, incoming mail is appended to the end of a file in a system + spooling area for the user. This area is called the mail drop direc- + tory, and the file is called the user's mail drop. Normally when the + user logins in, s/he is informed of new mail (or the _M_H program _m_s_g_c_h_k + may be run). The user adds the new messages to his/her collection of _M_H + messages by invoking the command _i_n_c. The _i_n_c (incorporate) command + adds the new messages to a folder called "inbox", assigning them names + which are consecutive integers starting with the next highest integer + available in inbox. _i_n_c also produces a _s_c_a_n summary of the messages + thus incorporated. A folder can be compacted into a single file, for + easy storage, by using the _p_a_c_k_f command. Also, messages within a + folder can be sorted by date and time with the _s_o_r_t_m command. + + + There are four commands for examining the messages in a folder: + _s_h_o_w, _p_r_e_v, _n_e_x_t, and _s_c_a_n. The _s_h_o_w command displays a message in a + + -4- + + + + + + + + + + -5- + + + folder, _p_r_e_v displays the message preceding the current message, and + _n_e_x_t displays the message following the current message. _M_H lets the + user choose the program that displays individual messages. A special + program, _m_h_l, can be used to display messages according to the user's + preferences. The _s_c_a_n command summarizes the messages in a folder, nor- + mally producing one line per message, showing who the message is from, + the date, the subject, etc. + + The user may move a message from one folder to another with the + command _r_e_f_i_l_e. Messages may be removed from a folder by means of the + command _r_m_m. In addition, a user may query what the current folder is + and may specify that a new folder become the current folder, through the + command _f_o_l_d_e_r. All folders may be summarized with the _f_o_l_d_e_r_s command. + A message folder (or subfolder) may be removed by means of the command + _r_m_f. + + A set of messages based on content may be selected by use of the + command _p_i_c_k. This command searches through messages in a folder and + selects those that match a given set of criteria. These messages are + then bound to a "sequence" name for use with other _M_H commands. The + _m_a_r_k command manipulates these sequences. + + There are five commands enabling the user to create new messages + and send them: _c_o_m_p, _d_i_s_t, _f_o_r_w, _r_e_p_l, and _s_e_n_d. The _c_o_m_p command pro- + vides the facility for the user to compose a new message; _d_i_s_t redistri- + butes mail to additional addressees; _f_o_r_w enables the user to forward + messages; and _r_e_p_l facilitates the generation of a reply to an incoming + message. The last three commands may optionally annotate the original + message. Messages may be arbitrarily annotated with the _a_n_n_o command. + Once a draft has been constructed by one of the four above composition + programs, a user-specifiable program is run to query the user as to the + disposition of the draft prior to sending. _M_H provides the simple _w_h_a_t_- + _n_o_w program to start users off. If a message is not sent directly by + one of these commands, it may be sent at a later time using the command + _s_e_n_d. _M_H allows the use of any UNIX editor when composing a message. + For rapid entry, a special editor, _p_r_o_m_p_t_e_r, is provided. For programs, + a special mail-sending program, _m_h_m_a_i_l, is provided. + + _M_H supports a personal aliasing facility which gives users the + capability to considerably shorten address typein and use meaningful + names for addresses. The _a_l_i program can be used to query _M_H as to the + expansion of a list of aliases. After composing a message, but prior to + sending, the _w_h_o_m command can be used to determine exactly who a message + would go to. + + _M_H provides a natural interface for telling the user's shell the + names of _M_H messages and folders. The _m_h_p_a_t_h program achieves this + capability. + + Finally, _M_H supports the UCI BBoards facility. _b_b_c can be used to + query the status of a group of BBoards, while _m_s_h can be used to read + them. The _b_u_r_s_t command can be used to "shred" digests of messages into + + + + + + + + + + + + -6- + + + individual messages. + + All of the elements summarized above are described in more detail + in the following sections. Many of the normal facilities of UNIX pro- + vide additional capabilities for dealing with messages in various ways. + For example, it is possible to print messages on the line-printer + without requiring any additional code within _M_H . Using standard UNIX + facilities, any terminal output can be redirected to a file for repeated + or future viewing. In general, the flexibility and capabilities of the + UNIX interface with the user are preserved as a result of the integra- + tion of _M_H into the UNIX structure. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _3. _T_U_T_O_R_I_A_L + + + + + + This tutorial provides a brief introduction to the _M_H commands. It + should be sufficient to allow the user to read his mail, do some simple + manipulations of it, and create and send messages. + + A message has two major pieces: the header and the body. The body + consists of the text of the message (whatever you care to type in). It + follows the header and is separated from it by an empty line. (When you + compose a message, the form that appears on your terminal shows a line + of dashes after the header. This is for convenience and is replaced by + an empty line when the message is sent.) The header is composed of + several components, including the subject of the message and the person + to whom it is addressed. Each component starts with a name and a colon; + components must not start with a blank. The text of the component may + take more than one line, but each continuation line must start with a + blank. Messages typically have "To:", "cc:", and "Subject:" components. + When composing a message, you should include the "To:" and "Subject:" + components; the "cc:" (for people you want to send copies to) is not + necessary. + + The basic _M_H commands are _i_n_c, _s_c_a_n, _s_h_o_w, _n_e_x_t, _p_r_e_v, _r_m_m, _c_o_m_p, + and _r_e_p_l. These are described below. + + _i_n_c + + When you get the message "You have mail", type the command _i_n_c. + You will get a "scan listing" such as: + + 7+ 7/13 Cas revival of measurement work + 8 10/ 9 Norm NBS people and publications + 9 11/26 To:norm question < _x will copy the message to file x. + _s_h_o_w | _l_p_r will print the message, using the _l_p_r command. + _n_e_x_t will show the message that follows the current message. + _p_r_e_v will show the message previous to the current message. + _r_m_m will remove the current message. + _r_m_m _3 will remove message 3. + + + _c_o_m_p + + The _c_o_m_p command puts you in the editor to write or edit a message. + Fill in or delete the "To:", "cc:", and "Subject:" fields, as appropri- + ate, and type the body of the message. Then exit normally from the edi- + tor. You will be asked "What now?". Type a carriage return to see the + options. Typing send will cause the message to be sent; typing quit + will cause an exit from _c_o_m_p, with the message draft saved. + + If you quit without sending the message, it will be saved in a file + called /Mail/draft (where is your $HOME directory). You + can resume editing the message later with "comp -use"; or you can send + the message later, using the _s_e_n_d command. + + _c_o_m_p -_e_d_i_t_o_r _p_r_o_m_p_t_e_r + + This command uses a different editor and is useful for preparing + "quick and dirty" messages. It prompts you for each component of the + header. Type the information for that component, or type a carriage + return to omit the component. After that, type the body of the message. + Backspacing is the only form of editing allowed with this editor. When + the body is complete, type a carriage return followed by (usually + ). This completes the initial preparation of the message; from + then on, use the same procedures as with _c_o_m_p (above). + + _r_e_p_l + _r_e_p_l n + + This command makes up an initial message form with a header that is + appropriate for replying to an existing message. The message being + + + + + + + + + + + + -9- + + + answered is the current message if no message number is mentioned, or n + if a number is specified. After the header is completed, you can finish + the message as in _c_o_m_p (above). + + This is enough information to get you going using _M_H. There are + more commands, and the commands described here have more features. Sub- + sequent sections explain _M_H in complete detail. The system is quite + powerful if you want to use its sophisticated features, but the forego- + ing commands suffice for sending and receiving messages. + + There are numerous additional capabilities you may wish to explore. + For example, the _p_i_c_k command will select a subset of messages based on + specified criteria such as sender and/or subject. Groups of messages + may be designated, as described in Sec. IV, under Message Naming. The + file ._m_h__p_r_o_f_i_l_e can be used to tailor your use of the message system to + your needs and preferences, as described in Sec. IV, under The User Pro- + file. In general, you may learn additional features of the system + selectively, according to your requirements, by studying the relevant + sections of this manual. There is no need to learn all the details of + the system at once. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _4. _D_E_T_A_I_L_E_D _D_E_S_C_R_I_P_T_I_O_N + + + + + + This section describes the _M_H system in detail, including the com- + ponents of the user profile, the conventions for message naming, and + some of the other _M_H conventions. Readers who are generally familiar + with computer systems will be able to follow the principal ideas, + although some details may be meaningful only to those familiar with + UNIX. + + + _T_H_E _U_S_E_R _P_R_O_F_I_L_E + + The first time an _M_H command is issued by a new user, the system + prompts for a "Path" and creates an _M_H "profile". + + Each _M_H user has a profile which contains tailoring information for + each individual program. Other profile entries control the _M_H path + (where folders and special files are kept), folder and message protec- + tions, editor selection, and default arguments for each _M_H program. + Each user of _M_H also has a context file which contains current state + information for the _M_H package (the location of the context file is kept + in the user's _M_H directory, or may be named in the user profile). When + a folder becomes the current folder, it is recorded in the user's con- + text. (Other state information is kept in the context file, see the + manual entry for _m_h-_p_r_o_f_i_l_e (5) for more details.) In general, the term + "profile entry" refer to entries in either the profile or context file. + Users of _M_H needn't worry about the distinction, _M_H handles these things + automatically. + + The _M_H profile is stored in the file ._m_h__p_r_o_f_i_l_e in the user's + $HOME directory[1]. It has the format of a message without any body. + That is, each profile entry is on one line, with a keyword followed by a + colon (:) followed by text particular to the keyword. + => _T_h_i_s _f_i_l_e _m_u_s_t _n_o_t _h_a_v_e _b_l_a_n_k _l_i_n_e_s. + The keywords may have any combination of upper and lower case. (See the + information of _m_h-_m_a_i_l later on in this manual for a description of mes- + sage formats.) + + For the average _M_H user, the only profile entry of importance is + "Path". Path specifies a directory in which _M_H folders and certain + files such as "draft" are found. The argument to this keyword must be a + legal UNIX path that names an existing directory. If this path is not + absolute (i.e., does not begin with a / ), it will be presumed to start + + + [1] By defining the envariable $MH, you can specify an alternate pro- + file to be used by _M_H commands. + + + -10- + + + + + + + + + + -11- + + + from the user's $HOME directory. All folder and message references + within _M_H will relate to this path unless full path names are used. + + Message protection defaults to 644, and folder protection to 711. + These may be changed by profile entries "Msg-Protect" and "Folder- + Protect", respectively. The argument to these keywords is an octal + number which is used as the UNIX file mode[2]. + + When an _M_H program starts running, it looks through the user's pro- + file for an entry with a keyword matching the program's name. For exam- + ple, when _c_o_m_p is run, it looks for a "comp" profile entry. If one is + found, the text of the profile entry is used as the default switch set- + ting until all defaults are overridden by explicit switches passed to + the program as arguments. Thus the profile entry + "comp: -form standard.list" would direct _c_o_m_p to use the file + "standard.list" as the message skeleton. If an explicit form switch is + given to the _c_o_m_p command, it will override the switch obtained from the + profile. + + In UNIX, a program may exist under several names, either by linking + or aliasing. The actual invocation name is used by an _M_H program when + scanning for its profile defaults[3]. Thus, each _M_H program may have + several names by which it can be invoked, and each name may have a dif- + ferent set of default switches. For example, if _c_o_m_p is invoked by the + name _i_c_o_m_p, the profile entry "icomp" will control the default switches + for this invocation of the _c_o_m_p program. This provides a powerful + definitional facility for commonly used switch settings. + + The default editor for editing within _c_o_m_p, _r_e_p_l, _f_o_r_w, and _d_i_s_t, + is usually _p_r_o_m_p_t_e_r, but might be something else at your site, such as + /_u_s_r/_u_c_b/_e_x or /_b_i_n/_e. A different editor may be used by specifying the + profile entry "Editor: ". The argument to "Editor" is the name of an + executable program or shell command file which can be found via the + user's $PATH defined search path, excluding the current directory. The + "Editor:" profile specification may in turn be overridden by a + `-editor ' profile switch associated with _c_o_m_p, _r_e_p_l, _f_o_r_w, or + _d_i_s_t. Finally, an explicit editor switch specified with any of these + four commands will have ultimate precedence. + + During message composition, more than one editor may be used. For + example, one editor (such as _p_r_o_m_p_t_e_r ) may be used initially, and a + + + [2] See _c_h_m_o_d (1) in the _U_N_I_X _P_r_o_g_r_a_m_m_e_r'_s _M_a_n_u_a_l [5]. + [3] Unfortunately, the shell does not preserve aliasing information + when calling a program, hence if a program is invoked by an alias dif- + ferent than its name, the program will examine the profile entry for + it's name, not the alias that the user invoked it as. The correct solu- + tion is to create a (soft) link in your $_H_O_M_E/_b_i_n directory to the _M_H + program of your choice. By giving this link a different name, you can + use an alternate set of defaults for the command. + + + + + + + + + + + + + -12- + + + second editor may be invoked later to revise the message being composed + (see the discussion of _c_o_m_p in Section 5 for details). A profile entry + "-next: " specifies the name of the editor to be + used after a particular editor. Thus "comp: -e prompter" causes the + initial text to be collected by _p_r_o_m_p_t_e_r, and the profile entry + "prompter-next: ed" names ed as the editor to be invoked for the next + round of editing. + + Some of the _M_H commands, such as _s_h_o_w, can be used on message fold- + ers owned by others, if those folders are readable. However, you cannot + write in someone else's folder. All the _M_H command actions not requir- + ing write permission may be used with a "read-only" folder. + + Table 1 lists examples of some of the currently defined profile + entries, typical arguments, and the programs that reference the entries. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -13- + + + Table 1 + + PROFILE COMPONENTS + ______________________________________________________ + + _M_H Programs that + Keyword and Argument use Component______________________________________________________ + + Path: Mail All + Current-Folder: inbox Most + Editor: /usr/ucb/ex _c_o_m_p, _d_i_s_t, _f_o_r_w, _r_e_p_l + Inbox: inbox _i_n_c, _r_m_f + Msg-Protect: 644 _i_n_c + Folder-Protect: 711 _i_n_c, _p_i_c_k, _r_e_f_i_l_e + : default switches All + prompter-next: ed _c_o_m_p, _d_i_s_t, _f_o_r_w, _r_e_p_l + ______________________________________________________ + + + Path should______ be present. Current-Folder is maintained automatically + by many _M_H commands (see the Context sections of the individual commands + in Sec. IV). All other entries are optional, defaulting to the values + described above. + + + _M_E_S_S_A_G_E _N_A_M_I_N_G + + Messages may be referred to explicitly or implicitly when using _M_H + commands. A formal syntax of message names is given in Appendix B, but + the following description should be sufficient for most _M_H users. Some + details of message naming that apply only to certain commands are + included in the description of those commands. + + Most of the _M_H commands accept arguments specifying one or more + folders, and one or more messages to operate on. The use of the word + "msg" as an argument to a command means that exactly one message name + may be specified. A message name may be a number, such as 1, 33, or + 234, or it may be one of the "reserved" message names: first, last, + prev, next, and cur. (As a shorthand, a period (.) is equivalent to + cur.) The meanings of these names are straightforward: "first" is the + first message in the folder; "last" is the last message in the folder; + "prev" is the message numerically previous to the current message; + "next" is the message numerically following the current message; "cur" + (or ".") is the current message in the folder. In addition, _M_H supports + user-defined-sequences; see the description of the _m_a_r_k command for more + information. + + The default in commands that take a "msg" argument is always "cur". + + The word "msgs" indicates that several messages may be specified. + Such a specification consists of several message designations separated + by spaces. A message designation is either a message name or a message + + + + + + + + + + + + -14- + + + range. A message range is a specification of the form name1-name2 or + name1:n, where name1 and name2 are message names and n is an integer. + The first form designates all the messages from name1 to name2 + inclusive; this must be a non-empty range. The second form specifies up + to n messages, starting with name1 if name1 is a number, or first, cur, + or next, and ending with name1 if name1 is last or prev. This interpre- + tation of n is overridden if n is preceded by a plus sign or a minus + sign; +n always means up to n messages starting with name1, and -n + always means up to n messages ending with name1. Repeated specifica- + tions of the same message have the same effect as a single specification + of the message. Examples of specifications are: + + + 1 5 7-11 22 + first 6 8 next + first-10 + last:5 + + + The message name "all" is a shorthand for "first-last", indicating + all of the messages in the folder. + + In commands that accept "msgs" arguments, the default is either cur + or all, depending on which makes more sense. + + In all of the _M_H commands, a plus sign preceding an argument indi- + cates a folder name. Thus, "+inbox" is the name of the user's standard + inbox. If an explicit folder argument is given to an _M_H command, it + will become the current folder (that is, the "Current-Folder:" entry in + the user's profile will be changed to this folder). In the case of the + _r_e_f_i_l_e command, which can have multiple output folders, a new source + folder (other than the default current folder) is specified by + `-src +folder'. + + + _O_T_H_E_R _M_H _C_O_N_V_E_N_T_I_O_N_S + + One very powerful feature of _M_H is that the _M_H commands may be + issued from any current directory, and the proper path to the appropri- + ate folder(s) will be taken from the user's profile. If the _M_H path is + not appropriate for a specific folder or file, the automatic prepending + of the _M_H path can be avoided by beginning a folder or file name with /, + or with ./ or ../ component. Thus any specific absolute path may be + specified along with any path relative to the current working directory. + + Arguments to the various programs may be given in any order, with + the exception of a few switches whose arguments must follow immediately, + such as `-src +folder' for _r_e_f_i_l_e. + + Whenever an _M_H command prompts the user, the valid options will be + listed in response to a . (The first of the listed options is + the default if end-of-file is encountered, such as from a command file.) + + + + + + + + + + + + -15- + + + A valid response is any _u_n_i_q_u_e abbreviation of one of the listed + options. + + Standard UNIX documentation conventions are used in this report to + describe _M_H command syntax. Arguments enclosed in brackets ([ ]) are + optional; exactly one of the arguments enclosed within braces ({ }) must + be specified, and all other arguments are required. The use of ellipsis + dots (...) indicates zero or more repetitions of the previous item. For + example, "+folder ..." would indicate that one or more "+folder" argu- + ments is required and "[+folder ...]" indicates that 0 or more "+folder" + arguments may be given. + + _M_H departs from UNIX standards by using switches that consist of + more than one character, e.g. `-header'. To minimize typing, only a + unique abbreviation of a switch need be typed; thus, for `-header', + `-hea' is probably sufficient, depending on the other switches the com- + mand accepts. Each _M_H program accepts the switch `-help' (which must be + spelled out fully) and produces a syntax description and a list of + switches. In the list of switches, parentheses indicate required char- + acters. For example, all `-help' switches will appear as "-(help)", + indicating that no abbreviation is accepted. Furthermore, the `-help' + switch tells the version of the _M_H program you invoked. + + Many _M_H switches have both on and off forms, such as `-format' and + `-noformat'. In many of the descriptions which follow, only one form is + defined; the other form, often used to nullify profile switch settings, + is assumed to be the opposite. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -16- + + + _M_H _C_O_M_M_A_N_D_S + + The _M_H package comprises several programs: + + ali (1) - list mail aliases + anno (1) - annotate messages + bbc (1) - check on BBoards + bboards (1) - the UCI BBoards facility + burst (1) - explode digests into messages + comp (1) - compose a message + dist (1) - redistribute a message to additional addresses + folder (1) - set/list current folder/message + folders (1) - list all folders + forw (1) - forward messages + inc (1) - incorporate new mail + mark (1) - mark messages + mhl (1) - produce formatted listings of MH messages + mhmail (1) - send or read mail + mhook (1) - MH receive-mail hooks + mhparam (1) - print MH profile components + mhpath (1) - print full pathnames of MH messages and folders + msgchk (1) - check for messages + msh (1) - MH shell (and BBoard reader) + next (1) - show the next message + packf (1) - compress a folder into a single file + pick (1) - select messages by content + prev (1) - show the previous message + prompter (1) - prompting editor front end + rcvstore (1) - incorporate new mail asynchronously + refile (1) - file messages in other folders + repl (1) - reply to a message + rmf (1) - remove folder + rmm (1) - remove messages + scan (1) - produce a one line per message scan listing + send (1) - send a message + show (1) - show (list) messages + slocal (1) - special local mail delivery + sortm (1) - sort messages + vmh (1) - visual front-end to MH + whatnow (1) - prompting front-end for send + whom (1) - report to whom a message would go + + + These programs are described below. The form of the descriptions + conforms to the standard form for the description of UNIX commands. + + + + + + + + + + + + + + + + + + + ALI(1) -17- ALI(1) + + + _N_A_M_E + ali - list mail aliases + + _S_Y_N_O_P_S_I_S + ali [-alias aliasfile] [-list] [-nolist] [-normalize] + [-nonormalize] [-user] [-nouser] aliases ... [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _A_l_i searches the named mail alias files for each of the given + _a_l_i_a_s_e_s. It creates a list of addresses for those _a_l_i_a_s_e_s, and + writes that list on standard output. If the `-list' option is + specified, each address appears on a separate line; otherwise, the + addresses are separated by commas and printed on as few lines as + possible. + + The `-user' option directs _a_l_i to perform its processing in an + inverted fashion: instead of listing the addresses that each given + alias expands to, _a_l_i will list the aliases that expand to each + given address. If the `-normalize' switch is given, _a_l_i will try + to track down the official hostname of the address. + + The files specified by the profile entry "Aliasfile:" and any addi- + tional alias files given by the `-alias aliasfile' switch will be + read. Each _a_l_i_a_s is processed as described in _m_h-_a_l_i_a_s (5). + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /etc/passwd List of users + /etc/group List of groups + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Aliasfile: For a default alias file + + + _S_e_e _A_l_s_o + mh-alias(5) + + + _D_e_f_a_u_l_t_s + `-alias /usr/bs/mh-6.8/lib/MailAliases' + `-nolist' + `-nonormalize' + `-nouser' + + + _C_o_n_t_e_x_t + None + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + ALI(1) -18- ALI(1) + + + _B_u_g_s + The `-user' option with `-nonormalize' is not entirely accurate, as + it does not replace local nicknames for hosts with their official + site names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + ANNO(1) -19- ANNO(1) + + + _N_A_M_E + anno - annotate messages + + _S_Y_N_O_P_S_I_S + anno [+folder] [msgs] [-component field] [-inplace] [-noinplace] + [-date] [-nodate] [-text body] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _A_n_n_o annotates the specified messages in the named folder using the + field and body. Annotation is optionally performed by _d_i_s_t, _f_o_r_w, + and _r_e_p_l, to keep track of your distribution of, forwarding of, and + replies to a message. By using _a_n_n_o, you can perform arbitrary + annotations of your own. Each message selected will be annotated + with the lines + + field: date + field: body + + The `-nodate' switch inhibits the date annotation, leaving only the + body annotation. The `-inplace' switch causes annotation to be + done in place in order to preserve links to the annotated message. + + The field specified should be a valid 822-style message field name, + which means that it should consist of alphanumerics (or dashes) + only. The body specified is arbitrary text. + + If a `-component field' is not specified when _a_n_n_o is invoked, _a_n_n_o + will prompt the user for the name of field for the annotation. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + + + _S_e_e _A_l_s_o + dist (1), forw (1), repl (1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to cur + `-noinplace' + `-date' + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + ANNO(1) -20- ANNO(1) + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. The first + message annotated will become the current message. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + BBC(1) -21- BBC(1) + + + _N_A_M_E + bbc - check on BBoards + + _S_Y_N_O_P_S_I_S + bbc [bboards ...] [-topics] [-check] [-read] [-quiet] [-verbose] + [-archive] [-noarchive] [-protocol] [-noprotocol] + [-mshproc program] [switches for _m_s_h_p_r_o_c] [-rcfile rcfile] + [-norcfile] [-file BBoardsfile] [-user BBoardsuser] + [-host host] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _b_b_c is a BBoard reading/checking program that interfaces to the + BBoard channel. + + The _b_b_c program has three action switches which direct its opera- + tion: + + The `-read' switch invokes the _m_s_h program on the named _B_B_o_a_r_d_s. + If you also specify the `-archive' switch, then _b_b_c will invoke + the _m_s_h program on the archives of the named _B_B_o_a_r_d_s. If no + _B_B_o_a_r_d_s are given on the command line, and you specified + `-archive', _b_b_c will not read your `bboards' profile entry, but + will read the archives of the "system" _B_B_o_a_r_d instead. + + The `-check' switch types out status information for the named + _B_B_o_a_r_d_s. _b_b_c can print one of several messages depending on the + status of both the BBoard and the user's reading habits. As with + each of these messages, the number given is the item number of the + last item placed in the BBoard. This number (which is marked in + the messages as the "BBoard-Id") is ever increasing. Hence, when + _b_b_c says "n items", it really means that the highest BBoard-Id is + "n". There may, or may not actually be "n" items in the BBoard. + Some common messages are: + + BBoard -- n items unseen + This message tells how many items the user has not yet + seen. When invoked with the `-quiet' switch, this is the + only informative line that _b_b_c will possibly print out. + + BBoard -- empty + The BBoard is empty. + + BBoard -- n items (none seen) + The BBoard has items in it, but the user hasn't seen any. + + BBoard -- n items (all seen) + The BBoard is non-empty, and the user has seen everything + in it. + + BBoard -- n items seen out of m + The BBoard has at most m-n items that the user has not + + [mh.6] MH.6.8 UCI version + + + + + + + + + + BBC(1) -22- BBC(1) + + + seen. + + The `-topics' switch directs _b_b_c to print three items about the + named _B_B_o_a_r_d_s: it's official name, the number of items present, and + the date and time of the last update. If no _B_B_o_a_r_d_s are named, + then all BBoards are listed. If the `-verbose' switch is given, + more information is output. + + The `-quiet' switch specifies that _b_b_c should be silent if no + _B_B_o_a_r_d_s are found with new information. The `-verbose' switch + specifies that _b_b_c is to consider you to be interested in _B_B_o_a_r_d_s + that you've already seen everything in. + + To override the default _m_s_h_p_r_o_c and the profile entry, use the + `-mshproc program' switch. Any arguments not understood by _b_b_c are + passed to this program. The `-protocol' switch tells _b_b_c that your + _m_s_h_p_r_o_c knows about the special _b_b_c protocol for reporting back + information. _m_s_h (1), the default _m_s_h_p_r_o_c, knows all about this. + + The `-file BBoardsfile' switch tells _b_b_c to use a non-standard + _B_B_o_a_r_d_s file when performing its calculations. Similarly, the + `-user BBoardsuser' switch tells _b_b_c to use a non-standard user- + name. Both of these switches are useful for debugging a new + _B_B_o_a_r_d_s or _P_O_P file. + + If the local host is configured as an NNTP BBoards client, or if + the `-host host' switch is given, then _b_b_c will query the NNTP ser- + vice host as to the status of the BBoards. For NNTP BBoards + clients, the `-user user' and the `-rpop' switches are ignored. + + The ._b_b_r_c file in the user's $HOME directory is used to keep track + of what messages have been read. The `-rcfile rcfile' switch over- + rides the use of ._b_b_r_c for this purpose. If the value given to the + switch is not absolute, (i.e., does not begin with a / ), it will + be presumed to start from the current working directory. If this + switch is not given (or the `-norcfile' switch is given), then _b_b_c + consults the envariable $MHBBRC, and honors it similarly. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + $HOME/.bbrc BBoard "current" message information + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + bboards: To specify interesting BBoards + mshproc: Program to read a given BBoard + + + _S_e_e _A_l_s_o + bbl(1), bboards(1), msh(1) + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + BBC(1) -23- BBC(1) + + + _D_e_f_a_u_l_t_s + `-read' + `-noarchive' + `-protocol' + `bboards' defaults to "system" + `-file /usr/bs/mh-6.8/bboards/BBoards' + `-user bboards' + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + The `-user' switch takes effect only if followed by the `-file' + switch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + BBOARDS(1) -24- BBOARDS(1) + + + _N_A_M_E + bboards - the UCI BBoards facility + + _S_Y_N_O_P_S_I_S + bbc [-check] [-read] bboards ... [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + The home directory of _b_b_o_a_r_d_s is where the BBoard system is kept. + This documentation describes some of the nuances of the BBoard sys- + tem. + + BBoards, BBoard-IDs + A BBoard is just a file containing a group of messages relat- + ing to the same topic. These files live in the ~bboards home + directory. Each message in a BBoard file has in its header + the line "BBoard-Id: n", where "n" is an ascending decimal + number. This id-number is unique for each message in a + BBoards file. It should NOT be confused with the message + number of a message, which can change as messages are removed + from the BBoard. + + BBoard Handling + To read BBoards, use the _b_b_c and _m_s_h programs. The _m_s_h com- + mand is a monolithic program which contains all the func- + tionality of _M_H in a single program. The `-check' switch to + _b_b_c lets you check on the status of BBoards, and the `-read' + switch tells _b_b_c to invoke _m_s_h to read those BBoards. + + Creating a BBoard + Both public, and private BBoards are supported. Contact the + mail address _P_o_s_t_M_a_s_t_e_r if you'd like to have a BBoard + created. + + BBoard addresses + Each BBoard has associated with it 4 addresses, these are (for + the ficticious BBoard called ``hacks''): + hacks : The Internet wide distribution list. + dist-hacks : The local BBoard. + hacks-request : The people responsible for the BBoard at the + Internet level. + local-hacks-request : The people responsible for the BBoard + locally. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + $HOME/.bbrc BBoard information + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + BBOARDS(1) -25- BBOARDS(1) + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + bboards: To specify interesting BBoards + mshproc: Program to read a given BBoard + + + _S_e_e _A_l_s_o + bbc(1), bbl(1), bbleader(1), msh(1) + + + _D_e_f_a_u_l_t_s + The default bboard is "system" + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + BURST(1) -26- BURST(1) + + + _N_A_M_E + burst - explode digests into messages + + _S_Y_N_O_P_S_I_S + burst [+folder] [msgs] [-inplace] [-noinplace] [-quiet] [-noquiet] + [-verbose] [-noverbose] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _B_u_r_s_t considers the specified messages in the named folder to be + Internet digests, and explodes them in that folder. + + If `-inplace' is given, each digest is replaced by the "table of + contents" for the digest (the original digest is removed). _B_u_r_s_t + then renumbers all of the messages following the digest in the + folder to make room for each of the messages contained within the + digest. These messages are placed immediately after the digest. + + If `-noinplace' is given, each digest is preserved, no table of + contents is produced, and the messages contained within the digest + are placed at the end of the folder. Other messages are not tam- + pered with in any way. + + The `-quiet' switch directs _b_u_r_s_t to be silent about reporting mes- + sages that are not in digest format. + + The `-verbose' switch directs _b_u_r_s_t to tell the user the general + actions that it is taking to explode the digest. + + It turns out that _b_u_r_s_t works equally well on forwarded messages + and blind-carbon-copies as on Internet digests, provided that the + former two were generated by _f_o_r_w or _s_e_n_d. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Msg-Protect: To set mode when creating a new message + + + _S_e_e _A_l_s_o + _P_r_o_p_o_s_e_d _S_t_a_n_d_a_r_d _f_o_r _M_e_s_s_a_g_e _E_n_c_a_p_s_u_l_a_t_i_o_n (aka RFC-934), + inc(1), msh(1), pack(1) + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + BURST(1) -27- BURST(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to cur + `-noinplace' + `-noquiet' + `-noverbose' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. If `-in- + place' is given, then the first message burst becomes the current + message. This leaves the context ready for a _s_h_o_w of the table of + contents of the digest, and a _n_e_x_t to see the first message of the + digest. If `-noinplace' is given, then the first message extracted + from the first digest burst becomes the current message. This + leaves the context in a similar, but not identical, state to the + context achieved when using `-inplace'. + + + _B_u_g_s + The _b_u_r_s_t program enforces a limit on the number of messages which + may be _b_u_r_s_t from a single message. This number is on the order of + 1000 messages. There is usually no limit on the number of messages + which may reside in the folder after the _b_u_r_s_ting. + + Although _b_u_r_s_t uses a sophisticated algorithm to determine where + one encapsulated message ends and another begins, not all digesti- + fying programs use an encapsulation algorithm. In degenerate + cases, this usually results in _b_u_r_s_t finding an encapsulation boun- + dary prematurely and splitting a single encapsulated message into + two or more messages. These erroneous digestifying programs should + be fixed. + + Furthermore, any text which appears after the last encapsulated + message is not placed in a seperate message by _b_u_r_s_t. In the case + of digestified messages, this text is usally an "End of digest" + string. As a result of this possibly un-friendly behavior on the + part of _b_u_r_s_t, note that when the `-inplace' option is used, this + trailing information is lost. In practice, this is not a problem + since correspondents usually place remarks in text prior to the + first encapsulated message, and this information is not lost. + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + COMP(1) -28- COMP(1) + + + _N_A_M_E + comp - compose a message + + _S_Y_N_O_P_S_I_S + comp [+folder] [msg] [-draftfolder +folder] [-draftmessage msg] + [-nodraftfolder] [-editor editor] [-noedit] [-file file] + [-form formfile] [-use] [-nouse] [-whatnowproc program] + [-nowhatnowproc] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _C_o_m_p is used to create a new message to be mailed. It copies a + message form to the draft being composed and then invokes an editor + on the draft (unless `-noedit' is given, in which case the initial + edit is suppressed). + + The default message form contains the following elements: + + To: + cc: + Subject: + -------- + + If the file named "components" exists in the user's MH directory, + it will be used instead of this form. The file specified by + `-form formfile' will be used if given. You may also start _c_o_m_p + using the contents of an existing message as the form. If you sup- + ply either a `+folder' or `msg' argument, that message will be used + as the form. You may not supply both a `-form formfile' and a + `+folder' or `msg' argument. The line of dashes or a blank line + must be left between the header and the body of the message for the + message to be identified properly when it is sent (see _s_e_n_d (1)). + The switch `-use' directs _c_o_m_p to continue editing an already + started message. That is, if a _c_o_m_p (or _d_i_s_t, _r_e_p_l, or _f_o_r_w ) is + terminated without sending the draft, the draft can be edited again + via "comp -use". + + If the draft already exists, _c_o_m_p will ask you as to the disposi- + tion of the draft. A reply of quit will abort _c_o_m_p, leaving the + draft intact; replace will replace the existing draft with the + appropriate form; list will display the draft; use will use the + draft for further composition; and refile +folder will file the + draft in the given folder, and give you a new draft with the + appropriate form. (The `+folder' argument to refile is required.) + + The `-draftfolder +folder' and `-draftmessage msg' switches invoke + the _M_H draft folder facility. This is an advanced (and highly use- + ful) feature. Consult the Advanced Features section of the _M_H + manual for more information. + + The `-file file' switch says to use the named file as the message + draft. + + [mh.6] MH.6.8 UCI version + + + + + + + + + + COMP(1) -29- COMP(1) + + + The `-editor editor' switch indicates the editor to use for the + initial edit. Upon exiting from the editor, _c_o_m_p will invoke the + _w_h_a_t_n_o_w program. See _w_h_a_t_n_o_w (1) for a discussion of available + options. The invocation of this program can be inhibited by using + the `-nowhatnowproc' switch. (In truth of fact, it is the _w_h_a_t_n_o_w + program which starts the initial edit. Hence, `-nowhatnowproc' + will prevent any edit from occurring.) + + _F_i_l_e_s + /usr/bs/mh-6.8/lib/components The message skeleton + or /components Rather than the standard skeleton + $HOME/.mh_profile The user profile + /draft The draft file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Draft-Folder: To find the default draft-folder + Editor: To override the default editor + Msg-Protect: To set mode when creating a new message + (draft) + fileproc: Program to refile the message + whatnowproc: Program to ask the "What now?" questions + + + _S_e_e _A_l_s_o + dist(1), forw(1), repl(1), send(1), whatnow(1), mh-profile(5) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msg' defaults to the current message + `-nodraftfolder' + `-nouse' + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + If _w_h_a_t_n_o_w_p_r_o_c is _w_h_a_t_n_o_w, then _c_o_m_p uses a built-in _w_h_a_t_n_o_w, it + does not actually run the _w_h_a_t_n_o_w program. Hence, if you define + your own _w_h_a_t_n_o_w_p_r_o_c, don't call it _w_h_a_t_n_o_w since _c_o_m_p won't run + it. + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + DIST(1) -30- DIST(1) + + + _N_A_M_E + dist - redistribute a message to additional addresses + + _S_Y_N_O_P_S_I_S + dist [+folder] [msg] [-annotate] [-noannotate] + [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [-editor editor] [-noedit] [-form formfile] [-inplace] + [-noinplace] [-whatnowproc program] [-nowhatnowproc] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _D_i_s_t is similar to _f_o_r_w. It prepares the specified message for + redistribution to addresses that (presumably) are not on the origi- + nal address list. + + The default message form contains the following elements: + + Resent-To: + Resent-cc: + + If the file named "distcomps" exists in the user's MH directory, it + will be used instead of this form. In either case, the file speci- + fied by `-form formfile' will be used if given. The form used will + be prepended to the message being resent. + + If the draft already exists, _d_i_s_t will ask you as to the disposi- + tion of the draft. A reply of quit will abort _d_i_s_t, leaving the + draft intact; replace will replace the existing draft with a blank + skeleton; and list will display the draft. + + Only those addresses in "Resent-To:", "Resent-cc:", and + "Resent-Bcc:" will be sent. Also, a "Resent-Fcc: folder" will be + honored (see _s_e_n_d (1)). Note that with _d_i_s_t, the draft should con- + tain only "Resent-xxx:" fields and no body. The headers and the + body of the original message are copied to the draft when the mes- + sage is sent. Use care in constructing the headers for the redis- + tribution. + + If the `-annotate' switch is given, the message being distributed + will be annotated with the lines: + + Resent: date + Resent: addrs + + where each address list contains as many lines as required. This + annotation will be done only if the message is sent directly from + _d_i_s_t. If the message is not sent immediately from _d_i_s_t, "comp + -use" may be used to re-edit and send the constructed message, but + the annotations won't take place. The '-inplace' switch causes + annotation to be done in place in order to preserve links to the + annotated message. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + DIST(1) -31- DIST(1) + + + See _c_o_m_p (1) for a description of the `-editor' and `-noedit' + switches. Note that while in the editor, the message being resent + is available through a link named "@" (assuming the default _w_h_a_t_- + _n_o_w_p_r_o_c ). In addition, the actual pathname of the message is + stored in the envariable $editalt, and the pathname of the folder + containing the message is stored in the envariable $mhfolder. + + The `-draftfolder +folder' and `-draftmessage msg' switches invoke + the _M_H draft folder facility. This is an advanced (and highly use- + ful) feature. Consult the Advanced Features section of the _M_H + manual for more information. + + Upon exiting from the editor, _d_i_s_t will invoke the _w_h_a_t_n_o_w program. + See _w_h_a_t_n_o_w (1) for a discussion of available options. The invoca- + tion of this program can be inhibited by using the `-nowhatnowproc' + switch. (In truth of fact, it is the _w_h_a_t_n_o_w program which starts + the initial edit. Hence, `-nowhatnowproc' will prevent any edit + from occurring.) + + _F_i_l_e_s + /usr/bs/mh-6.8/lib/distcomps The message skeleton + or /distcomps Rather than the standard skeleton + $HOME/.mh_profile The user profile + /draft The draft file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Draft-Folder: To find the default draft-folder + Editor: To override the default editor + fileproc: Program to refile the message + whatnowproc: Program to ask the "What now?" questions + + + _S_e_e _A_l_s_o + comp(1), forw(1), repl(1), send(1), whatnow(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msg' defaults to cur + `-noannotate' + `-nodraftfolder' + `-noinplace' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. The mes- + sage distributed will become the current message. + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + DIST(1) -32- DIST(1) + + + _H_i_s_t_o_r_y + _D_i_s_t originally used headers of the form "Distribute-xxx:" instead + of "Resent-xxx:". In order to conform with the ARPA Internet stan- + dard, RFC-822, the "Resent-xxx:" form is now used. _D_i_s_t will + recognize "Distribute-xxx:" type headers and automatically convert + them to "Resent-xxx:". + + + _B_u_g_s + _D_i_s_t does not _r_i_g_o_r_o_u_s_l_y check the message being distributed for + adherence to the transport standard, but _p_o_s_t called by _s_e_n_d does. + The _p_o_s_t program will balk (and rightly so) at poorly formatted + messages, and _d_i_s_t won't correct things for you. + + If _w_h_a_t_n_o_w_p_r_o_c is _w_h_a_t_n_o_w, then _d_i_s_t uses a built-in _w_h_a_t_n_o_w, it + does not actually run the _w_h_a_t_n_o_w program. Hence, if you define + your own _w_h_a_t_n_o_w_p_r_o_c, don't call it _w_h_a_t_n_o_w since _d_i_s_t won't run + it. + + If your current working directory is not writable, the link named + "@" is not available. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + FOLDER(1) -33- FOLDER(1) + + + _N_A_M_E + folder, folders - set/list current folder/message + + _S_Y_N_O_P_S_I_S + folder [+folder] [msg] [-all] [-print] [-fast] [-nofast] [-header] + [-noheader] [-recurse] [-norecurse] [-total] [-nototal] + [-list] [-nolist] [-push] [-pop] [-pack] [-nopack] [-verbose] + [-noverbose] [-help] + + folders + + _D_E_S_C_R_I_P_T_I_O_N + + Since the _M_H environment is the shell, it is easy to lose track of + the current folder from day to day. When _f_o_l_d_e_r is given the + `-print' switch (the default), _f_o_l_d_e_r will list the current folder, + the number of messages in it, the range of the messages (low-high), + and the current message within the folder, and will flag extra + files if they exist. An example of this summary is: + + inbox+ has 16 messages ( 3- 22); cur= 5. + + If a `+folder' and/or `msg' are specified, they will become the + current folder and/or message. If the specified (or default) + folder doesn't exist, the user will be queried as to whether the + folder should be created. When standard input is not a tty, the + folder is created without any query. (This is the easy way to + create an empty folder for use later.) + + By comparison, when a `+folder' argument is given, this corresponds + to a "cd" operation in the _s_h_e_l_l; when no `+folder' argument is + given, this corresponds roughly to a "pwd" operation in the _s_h_e_l_l. + + + + _M_u_l_t_i_p_l_e _F_o_l_d_e_r_s + + Specifying `-all' will produce a summary line for each top-level + folder in the user's MH directory, sorted alphabetically. (If + _f_o_l_d_e_r is invoked by a name ending with "s" (e.g., _f_o_l_d_e_r_s ), + `-all' is assumed). Specifying `-recurse' with `-all' will also + produce a line for all sub-folders. These folders are all preceded + by the read-only folders, which occur as "atr-cur-" entries in the + user's _M_H context. For example, + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + FOLDER(1) -34- FOLDER(1) + + + Folder # of messages ( range ) cur msg (other files) + /fsd/rs/m/tacc has 35 messages ( 1- 35); cur= 23. + /rnd/phyl/Mail/EP has 82 messages ( 1-108); cur= 82. + ff has no messages. + inbox+ has 16 messages ( 3- 22); cur= 5. + mh has 76 messages ( 1- 76); cur= 70. + notes has 2 messages ( 1- 2); cur= 1. + ucom has 124 messages ( 1-124); cur= 6; (others). + TOTAL= 339 messages in 7 folders + + The "+" after inbox indicates that it is the current folder. The + "(others)" indicates that the folder `ucom' has files which aren't + messages. These files may either be sub-folders, or files that + don't belong under the MH file naming scheme. + + The header is output if either a `-all' or a `-header' switch is + specified; it is suppressed by `-noheader'. A `-total' switch will + produce only the summary line. + + If `-fast' is given, only the folder name (or names in the case of + `-all') will be listed. (This is faster because the folders need + not be read.) + + If a `+folder' is given along with the `-all' switch, _f_o_l_d_e_r will, + in addition to setting the current folder, list the top-level fold- + ers for the current folder (with `-norecurse') or list all sub- + folders under the current folder recursively (with `-recurse'). In + this case, if a `msg' is also supplied, it will become the current + message of `+folder'. + + The `-recurse' switch lists each folder recursively, so use of this + option effectively defeats the speed enhancement of the `-fast' + option, since each folder must be searched for subfolders. + Nevertheless, the combination of these options is useful. + + + _C_o_m_p_a_c_t_i_n_g _a _F_o_l_d_e_r + + The `-pack' switch will compress the message names in the desig- + nated folders, removing holes in message numbering. The `-verbose' + switch directs _f_o_l_d_e_r to tell the user the general actions that it + is taking to compress the folder. + + + _T_h_e _F_o_l_d_e_r _S_t_a_c_k + + The `-push' switch directs _f_o_l_d_e_r to push the current folder onto + the _f_o_l_d_e_r-_s_t_a_c_k, and make the `+folder' argument the current + folder. If `+folder' is not given, the current folder and the top + of the _f_o_l_d_e_r-_s_t_a_c_k are exchanged. This corresponds to the "pushd" + operation in the _C_S_h_e_l_l. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + FOLDER(1) -35- FOLDER(1) + + + The `-pop' switch directs _f_o_l_d_e_r to discard the top of the + _f_o_l_d_e_r-_s_t_a_c_k, after setting the current folder to that value. No + `+folder' argument is allowed. This corresponds to the "popd" + operation in the _C_S_h_e_l_l. The `-push' switch and the `-pop' switch + are mutually exclusive: the last occurrence of either one overrides + any previous occurrence of the other. Both of these switches also + set `-list' by default. + + The `-list' switch directs _f_o_l_d_e_r to list the contents of the + _f_o_l_d_e_r-_s_t_a_c_k. No `+folder' argument is allowed. After a success- + ful `-push' or `-pop', the `-list' action is taken, unless a `-nol- + ist' switch follows them on the command line. This corresponds to + the "dirs" operation in the _C_S_h_e_l_l. The `-push', `-pop', and + `-list' switches turn off `-print'. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Folder-Protect: To set mode when creating a new folder + Folder-Stack: To determine the folder stack + + + _S_e_e _A_l_s_o + refile(1), mhpath(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msg' defaults to none + `-nofast' + `-noheader' + `-nototal' + `-nopack' + `-norecurse' + `-noverbose' + `-print' is the default if no `-list', `-push', or `-pop' is specified + `-list' is the default if `-push', or `-pop' is specified + + + _C_o_n_t_e_x_t + If `+folder' and/or `msg' are given, they will become the current + folder and/or message. + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + FOLDER(1) -36- FOLDER(1) + + + _H_i_s_t_o_r_y + In previous versions of _M_H, the `-fast' switch prevented context + changes from occurring for the current folder. This is no longer + the case: if `+folder' is given, then _f_o_l_d_e_r will always change the + current folder to that. + + + _B_u_g_s + `-all' forces `-header'. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + FORW(1) -37- FORW(1) + + + _N_A_M_E + forw - forward messages + + _S_Y_N_O_P_S_I_S + forw [+folder] [msgs] [-annotate] [-noannotate] + [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [-editor editor] [-noedit] [-filter filterfile] + [-form formfile] [-format] [-noformat] [-inplace] [-noinplace] + [-mime] [-nomime] [-whatnowproc program] [-nowhatnowproc] + [-help] + + forw [+folder] [msgs] [-digest list] [-issue number] + [-volume number] [other switches for _f_o_r_w] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _F_o_r_w may be used to prepare a message containing other messages. + It constructs the new message from the components file or + `-form formfile' (see _c_o_m_p ), with a body composed of the + message(s) to be forwarded. An editor is invoked as in _c_o_m_p, and + after editing is complete, the user is prompted before the message + is sent. + + The default message form contains the following elements: + + To: + cc: + Subject: + -------- + + If the file named "forwcomps" exists in the user's MH directory, it + will be used instead of this form. In either case, the file speci- + fied by `-form formfile' will be used if given. + + If the draft already exists, _f_o_r_w will ask you as to the disposi- + tion of the draft. A reply of quit will abort _f_o_r_w, leaving the + draft intact; replace will replace the existing draft with a blank + skeleton; and list will display the draft. + + If the `-annotate' switch is given, each message being forwarded + will be annotated with the lines + + Forwarded: date + Forwarded: addrs + + where each address list contains as many lines as required. This + annotation will be done only if the message is sent directly from + _f_o_r_w. If the message is not sent immediately from _f_o_r_w, + "comp -use" may be used to re-edit and send the constructed mes- + sage, but the annotations won't take place. The '-inplace' switch + causes annotation to be done in place in order to preserve links to + the annotated message. + + [mh.6] MH.6.8 UCI version + + + + + + + + + + FORW(1) -38- FORW(1) + + + See _c_o_m_p (1) for a description of the `-editor' and `-noedit' + switches. + + Although _f_o_r_w uses the `-form formfile' switch to direct it how to + construct the beginning of the draft, the `-filter filterfile', + `-format', and `-noformat' switches direct _f_o_r_w as to how each for- + warded message should be formatted in the body of the draft. If + `-noformat' is specified, then each forwarded message is output + exactly as it appears. If `-format' or `-filter filterfile' is + specified, then each forwarded message is filtered (re-formatted) + prior to being output to the body of the draft. The filter file + for _f_o_r_w should be a standard form file for _m_h_l, as _f_o_r_w will + invoke _m_h_l to format the forwarded messages. The default message + filter (what you get with `-format') is: + + width=80,overflowtext=,overflowoffset=10 + leftadjust,compress,compwidth=9 + Date:formatfield="%<(nodate{text})%{text}%|%(tws{text})%>" + From: + To: + cc: + Subject: + : + body:nocomponent,overflowoffset=0,noleftadjust,nocompress + + If the file named "mhl.forward" exists in the user's MH directory, + it will be used instead of this form. In either case, the file + specified by `-filter filterfile' will be used if given. To sum- + marize: `-noformat' will reproduce each forwarded message exactly, + `-format' will use _m_h_l and a default filterfile, "mhl.forward", to + format each forwarded message, and `-filter filterfile' will use + the named filterfile to format each forwarded message with _m_h_l. + + Each forwarded message is separated with an encapsulation delimiter + and dashes in the first column of the forwarded messages will be + prepended with `- ' so that when received, the message is suitable + for bursting by _b_u_r_s_t (1). This follows the Internet RFC-934 + guidelines. + + For users of _p_r_o_m_p_t_e_r (1), by specifying prompter's `-prepend' + switch in the .mh_profile file, any commentary text is entered + before the forwarded messages. (A major win!) + + To use the MIME rules for encapsulation, specify the `-mime' + switch. This directs _f_o_r_w to generate an _m_h_n composition file. + Note that MH will not invoke _m_h_n automatically, unless you add + this line to your .mh_profile file: + + automhnproc: mhn + + Otherwise, you must specifically give the command + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + FORW(1) -39- FORW(1) + + + What now? edit mhn + + prior to sending the draft. + + To automate this somewhat, create a link to _p_r_o_m_p_t_e_r called _r_a_p_i_d + and put these lines in your .mh_profile file: + + forw: -editor rapid -mime + rapid: -rapid + rapid-next: mhn + + Then, you can simply do: + + _f_o_r_w _m_s_g_s + To: _m_a_i_l_b_o_x + cc: + Subject: _w_h_a_t_e_v_e_r + + --------Enter initial text + + _b_l_a_h, _b_l_a_h, _b_l_a_h. + + -------- + + What now? _e_d_i_t + What now? _s_e_n_d + + The _e_d_i_t command invokes _m_h_n automatically. + + The `-draftfolder +folder' and `-draftmessage msg' switches invoke + the _M_H draft folder facility. This is an advanced (and highly use- + ful) feature. Consult the Advanced Features section of the _M_H + manual for more information. + + Upon exiting from the editor, _f_o_r_w will invoke the _w_h_a_t_n_o_w program. + See _w_h_a_t_n_o_w (1) for a discussion of available options. The invoca- + tion of this program can be inhibited by using the `-nowhatnowproc' + switch. (In truth of fact, it is the _w_h_a_t_n_o_w program which starts + the initial edit. Hence, `-nowhatnowproc' will prevent any edit + from occurring.) + + The `-digest list', `-issue number', and `-volume number' switches + implement a digest facility for _M_H. Specifying these switches + enables and/or overloads the following escapes: + + _T_y_p_e _E_s_c_a_p_e _R_e_t_u_r_n_s _D_e_s_c_r_i_p_t_i_o_n + _c_o_m_p_o_n_e_n_t _d_i_g_e_s_t string Argument to `-digest' + _f_u_n_c_t_i_o_n _c_u_r integer Argument to `-volume' + _f_u_n_c_t_i_o_n _m_s_g integer Argument to `-issue' + + Consult the Advanced Features section of the _M_H User's Manual for + more information on making digests. + + [mh.6] MH.6.8 UCI version + + + + + + + + + + FORW(1) -40- FORW(1) + + + _F_i_l_e_s + /usr/bs/mh-6.8/lib/forwcomps The message skeleton + or /forwcomps Rather than the standard skeleton + /usr/bs/mh-6.8/lib/digestcomps The message skeleton if `-digest' is given + or /digestcomps Rather than the standard skeleton + /usr/bs/mh-6.8/lib/mhl.forward The message filter + or /mhl.forward Rather than the standard filter + $HOME/.mh_profile The user profile + /draft The draft file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Draft-Folder: To find the default draft-folder + Editor: To override the default editor + Msg-Protect: To set mode when creating a new message + (draft) + fileproc: Program to refile the message + mhlproc: Program to filter messages being forwarded + whatnowproc: Program to ask the "What now?" questions + + + _S_e_e _A_l_s_o + _P_r_o_p_o_s_e_d _S_t_a_n_d_a_r_d _f_o_r _M_e_s_s_a_g_e _E_n_c_a_p_s_u_l_a_t_i_o_n (aka RFC-934), + comp(1), dist(1), repl(1), send(1), whatnow(1), mh-format(5) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to cur + `-noannotate' + `-nodraftfolder' + `-noformat' + `-noinplace' + `-nomime' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. The first + message forwarded will become the current message. + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + FORW(1) -41- FORW(1) + + + _B_u_g_s + If _w_h_a_t_n_o_w_p_r_o_c is _w_h_a_t_n_o_w, then _f_o_r_w uses a built-in _w_h_a_t_n_o_w, it + does not actually run the _w_h_a_t_n_o_w program. Hence, if you define + your own _w_h_a_t_n_o_w_p_r_o_c, don't call it _w_h_a_t_n_o_w since _f_o_r_w won't run + it. + + When _f_o_r_w is told to annotate the messages it forwards, it doesn't + actually annotate them until the draft is successfully sent. If + from the _w_h_a_t_n_o_w_p_r_o_c, you _p_u_s_h instead of _s_e_n_d, it's possible to + confuse _f_o_r_w by re-ordering the file (e.g., by using + `folder -pack') before the message is successfully sent. _D_i_s_t and + _r_e_p_l don't have this problem. + + To avoid prepending the leading dash characters in forwarded mes- + sages, there is a `-nodashmunging' option. See the "Hidden + Features" section of the _M_H _A_d_m_i_n_i_s_t_r_a_t_o_r'_s _G_u_i_d_e for more details. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + INC(1) -42- INC(1) + + + _N_A_M_E + inc - incorporate new mail + + _S_Y_N_O_P_S_I_S + inc [+folder] [-audit audit-file] [-noaudit] [-changecur] + [-nochangecur] [-form formatfile] [-format string] + [-file name] [-silent] [-nosilent] [-truncate] [-notruncate] + [-width columns] [-host host] [-user user] [-apop] [-noapop] + [-rpop] [-norpop] [-pack file] [-nopack] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _I_n_c incorporates mail from the user's incoming mail drop into an _M_H + folder. If `+folder' isn't specified, a folder in the user's _M_H + directory will be used, either that specified by the "Inbox:" entry + in the user's profile, or the folder named "inbox". The new mes- + sages being incorporated are assigned numbers starting with the + next highest number in the folder. If the specified (or default) + folder doesn't exist, the user will be queried prior to its crea- + tion. As the messages are processed, a _s_c_a_n listing of the new + mail is produced. + + If the user's profile contains a "Msg-Protect: nnn" entry, it will + be used as the protection on the newly created messages, otherwise + the _M_H default of 0644 will be used. During all operations on mes- + sages, this initially assigned protection will be preserved for + each message, so _c_h_m_o_d(1) may be used to set a protection on an + individual message, and its protection will be preserved + thereafter. + + If the switch `-audit audit-file' is specified (usually as a + default switch in the profile), then _i_n_c will append a header line + and a line per message to the end of the specified audit-file with + the format: + + <> date + + + + + This is useful for keeping track of volume and source of incoming + mail. Eventually, _r_e_p_l, _f_o_r_w, _c_o_m_p, and _d_i_s_t may also produce + audits to this (or another) file, perhaps with "Message-Id:" infor- + mation to keep an exact correspondence history. "Audit-file" will + be in the user's MH directory unless a full path is specified. + + _I_n_c will incorporate even improperly formatted messages into the + user's MH folder, inserting a blank line prior to the offending + component and printing a comment identifying the bad message. + + In all cases, the user's mail drop will be zeroed, unless the + `-notruncate' switch is given. + + [mh.6] MH.6.8 UCI version + + + + + + + + + + INC(1) -43- INC(1) + + + If the profile entry "Unseen-Sequence" is present and non-empty, + then _i_n_c will add each of the newly incorporated messages to each + sequence named by the profile entry. This is similar to the + "Previous-Sequence" profile entry supported by all _M_H commands + which take `msgs' or `msg' arguments. Note that _i_n_c will not zero + each sequence prior to adding messages. + + The interpretation of the `-form formatfile', `-format string', and + `-width columns' switches is the same as in _s_c_a_n (1). + + By using the `-file name' switch, one can direct _i_n_c to incorporate + messages from a file other than the user's maildrop. Note that the + name file will NOT be zeroed, unless the `-truncate' switch is + given. + + If the envariable $MAILDROP is set, then _i_n_c uses it as the loca- + tion of the user's maildrop instead of the default (the `- + file name' switch still overrides this, however). If this envari- + able is not set, then _i_n_c will consult the profile entry "MailDrop" + for this information. If the value found is not absolute, then it + is interpreted relative to the user's _M_H directory. If the value + is not found, then _i_n_c will look in the standard system location + for the user's maildrop. + + The `-silent' switch directs _i_n_c to be quiet and not ask any ques- + tions at all. This is useful for putting _i_n_c in the background and + going on to other things. + + If the local host is configured as a POP client, or if the + `-host host' switch is given, then _i_n_c will query the POP service + host as to the status of mail waiting. If the `-user user' switch + is not given, then the current username is used. Normally, _i_n_c + will prompt for a password to use. However, if the `-apop' switch + is given, _i_n_c will generate authentication credentials to provide + for origin authentication and replay protection, but which do not + involve sending a password in the clear over the network. Other- + wise, if the `-rpop' switch is given, then _i_n_c will try to use a + "trusted" connection (ala the BSD r-commands). + + If _i_n_c uses POP, then the `-pack file' switch is considered. If + given, then _i_n_c simply uses the POP to _p_a_c_k_f (1) the user's mail- + drop from the POP service host to the named file. This switch is + provided for those users who prefer to use _m_s_h to read their mail- + drops. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /usr/bs/mh-6.8/lib/mtstailor tailor file + /usr/spool/mail/$USER Location of mail drop + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + INC(1) -44- INC(1) + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Alternate-Mailboxes: To determine the user's mailboxes + Inbox: To determine the inbox, default "inbox" + Folder-Protect: To set mode when creating a new folder + Msg-Protect: To set mode when creating a new message and + audit-file + Unseen-Sequence: To name sequences denoting unseen messages + + + _S_e_e _A_l_s_o + _P_o_s_t _O_f_f_i_c_e _P_r_o_t_o_c_o_l - _v_e_r_s_i_o_n _3 (aka RFC-1081), + mhmail(1), scan(1), mh-mail(5), post(8) + + + _D_e_f_a_u_l_t_s + `+folder' defaulted by "Inbox" above + `-noaudit' + `-changecur' + `-format' defaulted as described above + `-nosilent' + `-truncate' if `-file name' not given, `-notruncate' otherwise + `-width' defaulted to the width of the terminal + `-nopack' + `-rpop' + + + _C_o_n_t_e_x_t + The folder into which messages are being incorporated will become + the current folder. The first message incorporated will become the + current message, unless the `-nochangecur' option is specified. + This leaves the context ready for a _s_h_o_w of the first new message. + + + _B_u_g_s + The argument to the `-format' switch must be interpreted as a sin- + gle token by the shell that invokes _i_n_c. Therefore, one must usu- + ally place the argument to this switch inside double-quotes. + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MARK(1) -45- MARK(1) + + + _N_A_M_E + mark - mark messages + + _S_Y_N_O_P_S_I_S + mark [+folder] [msgs] [-sequence name ...] [-add] [-delete] [-list] + [-public] [-nopublic] [-zero] [-nozero] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + The _m_a_r_k command manipulates message sequences by adding or delet- + ing message numbers from folder-specific message sequences, or by + listing those sequences and messages. A message sequence is a key- + word, just like one of the "reserved" message names, such as + "first" or "next". Unlike the "reserved" message names, which have + a fixed semantics on a per-folder basis, the semantics of a message + sequence may be defined, modified, and removed by the user. Mes- + sage sequences are folder-specific, e.g., the sequence name "seen" + in the context of folder "+inbox" need not have any relation what- + soever to the sequence of the same name in a folder of a different + name. + + Three action switches direct the operation of _m_a_r_k. These switches + are mutually exclusive: the last occurrence of any of them over- + rides any previous occurrence of the other two. + + The `-add' switch tells _m_a_r_k to add messages to sequences or to + create a new sequence. For each sequence named via the + `-sequence name' argument (which must occur at least once) the mes- + sages named via `msgs' (which defaults to "cur" if no `msgs' are + given), are added to the sequence. The messages to be added need + not be absent from the sequence. If the `-zero' switch is speci- + fied, the sequence will be emptied prior to adding the messages. + Hence, `-add -zero' means that each sequence should be initialized + to the indicated messages, while `-add -nozero' means that each + sequence should be appended to by the indicated messages. + + The `-delete' switch tells _m_a_r_k to delete messages from sequences, + and is the dual of `-add'. For each of the named sequences, the + named messages are removed from the sequence. These messages need + not be already present in the sequence. If the `-zero' switch is + specified, then all messages in the folder are appended to the + sequence prior to removing the messages. Hence, `-delete -zero' + means that each sequence should contain all messages except those + indicated, while `-delete -nozero' means that only the indicated + messages should be removed from each sequence. As expected, the + command `mark -sequence seen -delete all' deletes the sequence + "seen" from the current folder. + + When creating (or modifying) a sequence, the `-public' switch indi- + cates that the sequence should be made readable for other _M_H users. + In contrast, the `-nopublic' switch indicates that the sequence + should be private to the user's _M_H environment. + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MARK(1) -46- MARK(1) + + + The `-list' switch tells _m_a_r_k to list both the sequences defined + for the folder and the messages associated with those sequences. + _M_a_r_k will list the name of each sequence given by `-sequence name' + and the messages associated with that sequence. If `-sequence' + isn't used, all sequences will be listed, with private sequences + being so indicated. The `-zero' switch does not affect the opera- + tion of `-list'. + + The current restrictions on sequences are: + + The name used to denote a message sequence must consist of an + alphabetic character followed by zero or more alphanumeric char- + acters, and can not be one of the "reserved" message names (e.g., + "first", "cur", and so forth). + + Only a certain number of sequences may be defined for a given + folder. This number is usually limited to 26 (10 on small sys- + tems). + + Message ranges with user-defined sequence names are restricted to + the form "name:n" or "name:-n", and refer to the first or last + `n' messages of the sequence `name', respectively. Constructs of + the form "name1-name2" are forbidden. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + + + _S_e_e _A_l_s_o + pick (1), mh-sequence (5) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `-add' if `-sequence' is specified, `-list' otherwise + `msgs' defaults to cur (or all if `-list' is specified) + `-nopublic' if the folder is read-only, `-public' otherwise + `-nozero' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. + + _H_e_l_p_f_u_l _H_i_n_t_s + + Use "pick sequence -list" to enumerate the messages in a sequence + (such as for use by a shell script). + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MARK(1) -47- MARK(1) + + + _N_A_M_E + mhl - produce formatted listings of MH messages + + _S_Y_N_O_P_S_I_S + /usr/bs/mh-6.8/lib/mhl [-bell] [-nobell] [-clear] [-noclear] + [-folder +folder] [-form formfile] [-length lines] + [-width columns] [-moreproc program] [-nomoreproc] [files ...] + [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _M_h_l is a formatted message listing program. It can be used as a + replacement for _m_o_r_e (1) (the default _s_h_o_w_p_r_o_c ). As with _m_o_r_e, + each of the messages specified as arguments (or the standard input) + will be output. If more than one message file is specified, the + user will be prompted prior to each one, and a or + will begin the output, with clearing the screen (if + appropriate), and (usually CTRL-D) suppressing the screen + clear. An (usually CTRL-C) will abort the current mes- + sage output, prompting for the next message (if there is one), and + a (usually CTRL-\) will terminate the program (without core + dump). + + The `-bell' option tells _m_h_l to ring the terminal's bell at the end + of each page, while the `-clear' option tells _m_h_l to clear the + scree at the end of each page (or output a formfeed after each mes- + sage). Both of these switches (and their inverse counterparts) + take effect only if the profile entry _m_o_r_e_p_r_o_c is defined but + empty, and _m_h_l is outputting to a terminal. If the _m_o_r_e_p_r_o_c entry + is defined and non-empty, and _m_h_l is outputting to a terminal, then + _m_h_l will cause the _m_o_r_e_p_r_o_c to be placed between the terminal and + _m_h_l and the switches are ignored. Furthermore, if the `-clear' + switch is used and _m_h_l'_s output is directed to a terminal, then _m_h_l + will consult the $TERM and $TERMCAP envariables to determine the + user's terminal type in order to find out how to clear the screen. + If the `-clear' switch is used and _m_h_l'_s output is not directed to + a terminal (e.g., a pipe or a file), then _m_h_l will send a formfeed + after each message. + + To override the default _m_o_r_e_p_r_o_c and the profile entry, use the + `-moreproc program' switch. Note that _m_h_l will never start a + _m_o_r_e_p_r_o_c if invoked on a hardcopy terminal. + + The `-length length' and `-width width' switches set the screen + length and width, respectively. These default to the values indi- + cated by $TERMCAP, if appropriate, otherwise they default to 40 and + 80, respectively. + + The default format file used by _m_h_l is called _m_h_l._f_o_r_m_a_t (which is + first searched for in the user's _M_H directory, and then sought in + the /_u_s_r/_b_s/_m_h-_6._8/_l_i_b directory), this can be changed by using the + `-form formatfile' switch. + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHL(1) -48- MHL(1) + + + Finally, the `-folder +folder' switch sets the _M_H folder name, + which is used for the "messagename:" field described below. The + envariable $mhfolder is consulted for the default value, which + _s_h_o_w, _n_e_x_t, and _p_r_e_v initialize appropriately. + + _M_h_l operates in two phases: 1) read and parse the format file, and + 2) process each message (file). During phase 1, an internal + description of the format is produced as a structured list. In + phase 2, this list is walked for each message, outputting message + information under the format constraints from the format file. + + The "mhl.format" form file contains information controlling screen + clearing, screen size, wrap-around control, transparent text, com- + ponent ordering, and component formatting. Also, a list of com- + ponents to ignore may be specified, and a couple of "special" com- + ponents are defined to provide added functionality. Message output + will be in the order specified by the order in the format file. + + Each line of mhl.format has one of the formats: + + ;comment + :cleartext + variable[,variable...] + component:[variable,...] + + A line beginning with a `;' is a comment, and is ignored. A line + beginning with a `:' is clear text, and is output exactly as is. A + line containing only a `:' produces a blank line in the output. A + line beginning with "component:" defines the format for the speci- + fied component, and finally, remaining lines define the global + environment. + + For example, the line: + + width=80,length=40,clearscreen,overflowtext="***",overflowoffset=5 + + defines the screen size to be 80 columns by 40 rows, specifies that + the screen should be cleared prior to each page, that the overflow + indentation is 5, and that overflow text should be flagged with + "***". + + Following are all of the current variables and their arguments. If + they follow a component, they apply only to that component, other- + wise, their affect is global. Since the whole format is parsed + before any output processing, the last global switch setting for a + variable applies to the whole message if that variable is used in a + global context (i.e., bell, clearscreen, width, length). + + _v_a_r_i_a_b_l_e _t_y_p_e _s_e_m_a_n_t_i_c_s + width integer screen width or component width + length integer screen length or component length + offset integer positions to indent "component: " + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHL(1) -49- MHL(1) + + + overflowtext string text to use at the beginning of an + overflow line + overflowoffset integer positions to indent overflow lines + compwidth integer positions to indent component text + after the first line is output + uppercase flag output text of this component in all + upper case + nouppercase flag don't uppercase + clearscreen flag/G clear the screen prior to each page + noclearscreen flag/G don't clearscreen + bell flag/G ring the bell at the end of each page + nobell flag/G don't bell + component string/L name to use instead of "component" for + this component + nocomponent flag don't output "component: " for this + component + center flag center component on line (works for + one-line components only) + nocenter flag don't center + leftadjust flag strip off leading whitespace on each + line of text + noleftadjust flag don't leftadjust + compress flag change newlines in text to spaces + nocompress flag don't compress + split flag don't combine multiple fields into a single field + nosplit flag combine multiple fields into a single field + newline flag print newline at end of components (default) + nonewline flag don't print newline at end of components + formatfield string format string for this component (see below) + addrfield flag field contains addresses + datefield flag field contains dates + + To specify the value of integer-valued and string-valued variables, + follow their name with an equals-sign and the value. + Integer-valued variables are given decimal values, while + string-valued variables are given arbitrary text bracketed by + double-quotes. If a value is suffixed by "/G" or "/L", then its + value is useful in a global-only or local-only context (respec- + tively). + + A line of the form: + + ignores=component,... + + specifies a list of components which are never output. + + The component "MessageName" (case-insensitive) will output the + actual message name (file name) preceded by the folder name if one + is specified or found in the environment. The format is identical + to that produced by the `-header' option to _s_h_o_w. + + The component "Extras" will output all of the components of the + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHL(1) -50- MHL(1) + + + message which were not matched by explicit components, or included + in the ignore list. If this component is not specified, an ignore + list is not needed since all non-specified components will be + ignored. + + If "nocomponent" is NOT specified, then the component name will be + output as it appears in the format file. + + The default format is: + + : -- using template mhl.format -- + overflowtext="***",overflowoffset=5 + leftadjust,compwidth=9 + ignores=msgid,message-id,received + Date:formatfield="%<(nodate{text})%{text}%|%(pretty{text})%>" + To: + cc: + : + From: + Subject: + : + extras:nocomponent + : + body:nocomponent,overflowtext=,overflowoffset=0,noleftadjust + + The variable "formatfield" specifies a format string (see + _m_h-_f_o_r_m_a_t (5)). The flag variables "addrfield" and "datefield" + (which are mutually exclusive), tell _m_h_l to interpret the escapes + in the format string as either addresses or dates, respectively. + + By default, _m_h_l does not apply any formatting string to fields con- + taining address or dates (see _m_h-_m_a_i_l (5) for a list of these + fields). Note that this results in faster operation since _m_h_l must + parse both addresses and dates in order to apply a format string to + them. If desired, _m_h_l can be given a default format string for + either address or date fields (but not both). To do this, on a + global line specify: either the flag addrfield or datefield, along + with the apropriate formatfield variable string. + + _F_i_l_e_s + /usr/bs/mh-6.8/lib/mhl.format The message template + or /mhl.format Rather than the standard template + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + moreproc: Program to use as interactive front-end + + + _S_e_e _A_l_s_o + show(1), ap(8), dp(8) + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHL(1) -51- MHL(1) + + + _D_e_f_a_u_l_t_s + `-bell' + `-noclear' + `-length 40' + `-width 80' + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + There should be some way to pass `bell' and `clear' information to + the front-end. + + On hosts where _M_H was configured with the BERK option, address + parsing is not enabled. + + The "nonewline" option interacts badly with "compress" and "split". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHMAIL(1) -52- MHMAIL(1) + + + _N_A_M_E + mhmail - send or read mail + + _S_Y_N_O_P_S_I_S + mhmail [ addrs ... [-body text] [-cc addrs ...] [-from addr] + [-subject subject]] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _M_H_m_a_i_l is intended as a replacement for the standard Bell mail pro- + gram (_b_e_l_l_m_a_i_l (1)), compatible with _M_H. When invoked without + arguments, it simply invokes _i_n_c (1) to incorporate new messages + from the user's maildrop. When one or more users is specified, a + message is read from the standard input and spooled to a temporary + file. _M_H_m_a_i_l then invokes _p_o_s_t (8) with the name of the temporary + file as its argument to deliver the message to the specified user. + + The `-subject subject' switch can be used to specify the "Subject:" + field of the message. The `-body text' switch can be used to + specify the text of the message; if it is specified, then the stan- + dard input is not read. Normally, addresses appearing as arguments + are put in the "To:" field. If the `-cc' switch is used, all + addresses following it are placed in the "cc:" field. + + By using `-from addr', you can specify the "From:" header of the + draft. Naturally, _p_o_s_t will fill-in the "Sender:" header + correctly. + + This program is intended for the use of programs such as _a_t (1), + which expect to send mail automatically to various users. Nor- + mally, real people (as opposed to the "unreal" ones) will prefer to + use _c_o_m_p (1) and _s_e_n_d (1) to send messages. + + _F_i_l_e_s + /usr/bs/mh-6.8/bin/inc Program to incorporate a maildrop into a folder + /usr/bs/mh-6.8/lib/post Program to deliver a message + /tmp/mhmail* Temporary copy of message + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + inc(1), post(8) + + + _D_e_f_a_u_l_t_s + None + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHMAIL(1) -53- MHMAIL(1) + + + _C_o_n_t_e_x_t + If _i_n_c is invoked, then _i_n_c's context changes occur. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHN(1) -54- MHN(1) + + + _N_A_M_E + mhn - multi-media MH + + _S_Y_N_O_P_S_I_S + mhn [+folder] [msgs] [-part number]... [-type content]... + [-list [-headers] [-noheaders] + [-realsize] [-norealsize]] [-nolist] + [-show [-serialonly] [-noserialonly]] + [-form formfile]] [-noshow] + [-store [-auto] [-noauto]] [-nostore] + [-verbose] [-noverbose] [-rfc934mode] [-norfc934mode] + [-ebcdicsafe] [-noebcdicsafe] + [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + The _m_h_n command manipulates multi-media messages as specified in + RFC 1341. + + Three action switches direct the operation of _m_h_n, namely `-list', + `-show', and `-store'. Any of these switches may be used con- + currently. Normally these action switches will operate on the con- + tent 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 particular con- + tent types. + + A part specification consists of a series of numbers separated by + dots. For example, in a multipart content containing three parts, + these would be named as 1, 2, and 3, respectively. If part 2 was + also a multipart content containing 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 subtypes can be + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHN(1) -55- MHN(1) + + + found in RFC 1341. A list of commonly used contents is briefly + reproduced here: + + Type Subtypes + ---- -------- + text plain, richtext + multipart mixed, alternative, digest, parallel + message rfc822, partial, external-body + application octet-stream, oda, 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 specific 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 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. + + + _L_i_s_t_i_n_g _t_h_e _C_o_n_t_e_n_t_s + + The `-list' switch tells _m_h_n to list the table of contents associ- + ated with the named messages. The `-headers' switch indicates that + a one-line banner should be displayed above the listing. The + `-realsize' switch tells _m_h_n to evaluate the "native" (decoded) + format of each content prior to listing. This provides an accurate + count at the expense of a small delay. + + + _S_h_o_w_i_n_g _t_h_e _C_o_n_t_e_n_t_s + + The `-show' switch tells _m_h_n to display the contents of the named + messages. The headers of the message are displayed with the + _m_h_l_p_r_o_c, using format file _m_h_l._h_e_a_d_e_r_s. (The choice of format file + can be overridden by the `-form formfile' switch.) + + _m_h_n will look for information in the user's profile to determine + how the different contents should be displayed. This is accom- + plished by consulting a display string, and executing it under + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHN(1) -56- MHN(1) + + + /bin/sh, 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 + + For those display strings containing the e- or F-escape, _m_h_n will + execute at most one of these at any given time. Although the F- + escape expands to be the filename containing 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 _m_h_n not to display that content. Further, + when _m_h_n is display a content, typing QUIT (usually control-\) will + tell _m_h_n to wrap things up immediately. + + First, _m_h_n will look for an entry of the form: + + mhn-show-/ + + to determine the command to use to display the content. If this + isn't found, _m_h_n will look for an entry of the form: + + mhn-show- + + to determine the display command. If this isn't found, _m_h_n has two + default values: + + mhn-show-text/plain: %pmoreproc '%F' + mhn-show-message/rfc822: %pshow -file '%F' + + If neither apply, _m_h_n will check to see if the message has a + application/octet-stream content with parameter "type=tar". If so, + _m_h_n will use an appropriate command. If not, _m_h_n 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, + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHN(1) -57- MHN(1) + + + when _m_h_n 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 environment variable is equal to the + value of the charset parameter. If not, then _m_h_n will look for an + entry of the form: + + mhn-charset- + + which should contain a command creating an environment to render + the character set. This command string should containing a single + "%s", which will be filled-in with the command to display the con- + tent. + + 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 _l_e_s_s program have modest support for + single-octet character sets. The source to _l_e_s_s version 177, which + has such support, is found in the MH source tree under + miscellany/less-177. In order to view messages sent in the ISO + 8859/1 character set using _l_e_s_s, put these lines in your .login + file: + + setenv LESSCHARSET latin1 + setenv LESS "-f" + + The first line tells _l_e_s_s to use 8859/1 definition for determing + whether a character is "normal", "control", or "binary". The + second line tells _l_e_s_s not to warn you if it encounters a file that + has non-ASCII characters. Then, simply set the moreproc profile + entry to _l_e_s_s, and it will get called automatically. (To handle + other single-octet character sets, look at the _l_e_s_s (1) manual + entry for information about the LESSCHARDEF environment variable.) + + Finally, _m_h_n will process each message serially -- it won't start + showing the next message until all the commands executed to display + the current message have terminated. In the case of a multipart + content, the content contains advice indicating if the parts should + be displayed serially or in parallel. Because this may cause con- + fusion, particularly on uni-window displays, the `-serialonly' + switch can be given to tell _m_h_n to never display parts in parallel. + + + _S_t_o_r_i_n_g _t_h_e _C_o_n_t_e_n_t_s + + The `-store' switch tells _m_h_n to store the contents of the named + messages in "native" (decoded) format. Two things must be deter- + mined: the directory to store the content, and the filenames. + Files are written in the directory given by the mhn-storage profile + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHN(1) -58- MHN(1) + + + entry, e.g., + + mhn-storage: /tmp + + If this entry isn't present, the current working directory is used. + + _m_h_n will look for information in the user's profile to determine + how the different contents should be stored. 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 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 for- + matting string consisting solely of a "-" character indicates the + standard-output. + + First, _m_h_n will look for an entry of the form: + + mhn-store-/ + + to determine the formatting string. If this isn't found, _m_h_n will + look for an entry of the form: + + mhn-store- + + to determine the formatting string. If this isn't found, _m_h_n will + check to see if the content is application/octet-stream with param- + eter "type=tar". If so, _m_h_n will choose an appropriate filename. + If the content is not application/octet-stream, then _m_h_n will check + to see if the content is a message. If so, _m_h_n will use the value + "+". If not, _m_h_n 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 mhn-storage or the current working directory.) Similarly, if the + formatting string starts with a '|', then _m_h_n will execute a com- + mand which should ultimately store the content. Note that before + executing the command, _m_h_n will change to the appropriate direc- + tory. Also note that if the formatting string starts with a '|', + then _m_h_n will also honor the a-escape when processing the format- + ting string. + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHN(1) -59- 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 containing a par- + tial message, _m_h_n will try to locate all of the portions and com- + bine 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 _m_h_n 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_x_t_e_r_n_a_l _A_c_c_e_s_s + + For contents of type message/external-body, _m_h_n supports these + access-types: + + afs + anon-ftp + ftp + local-file + mail-server + + If your system supports a SOCKETs interface to TCP/IP, then _m_h_n + will use a built-in FTP client. Otherwise, _m_h_n will look for the + mhn-access-ftp 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 UCI version + + + + + + + + + + MHN(1) -60- 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 success. + + + _T_h_e _C_o_n_t_e_n_t _C_a_c_h_e + + When _m_h_n encounters an external content containing a "Content-ID:" + field, and if the content allows caching, then _m_h_n looks for the + profile entry mhn-cache to determine if the content should be read + from/written to a cache. Any content written to the cache will, by + default, be world-readable. (To prevent this, use a directory name + with the desired read and execute permissions.) The mhn-cache pro- + file entry names the directory used for caching, e.g., + + mhn-cache: /tmp + + might be used if you didn't care that the cache got wiped after + each reboot of the system. + + + _C_o_m_p_o_s_i_n_g _t_h_e _C_o_n_t_e_n_t_s + + The _m_h_n program can also be used as a simple editor to aid in com- + posing multi-media messages. When invoked by a _w_h_a_t_n_o_w program, + _m_h_n will expect the body of the draft to be formatted as an "_m_h_n + composition file." + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHN(1) -61- MHN(1) + + + The syntax of this is straight-forward: + + body ::= 1*(content | EOL) + + content ::= directive | plaintext + + directive ::= "#" type "/" subtype + 0*(";" attribute "=" value) + [ "(" comment ")" ] + [ "[" description "]" ] + [ filename ] + EOL + + | "#@" type "/" subtype + 0*(";" attribute "=" value) + [ "(" comment ")" ] + [ "[" description "]" ] + external-parameters + EOL + + | "#forw" + [ "[" description "]" ] + [ "+"folder ] [ 0*msg ] + EOL + + | "#begin" + [ "[" description "]" ] + [ "alternative" + | "parallel" ] + 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 ] + + line ::= "##" text EOL + -- interpreted as "#"text EOL + | text EOL + + Basically, the body contains one or more contents. A content con- + sists of either a directive, indicated with a "#" as the first + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHN(1) -62- MHN(1) + + + 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; \ + conversions=x-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 forward 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 captured accordingly.) If a filename is not + given, _m_h_n 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 executing it + under /bin/sh, 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, _m_h_n will look for an entry of the form: + + mhn-compose-/ + + to determine the command to use to compose the content. If this + isn't found, _m_h_n will look for an entry of the form: + + mhn-compose- + + to determine the composition command. If this isn't found, _m_h_n + will complain. + + 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 con- + tents should probably be put in the file specified by the $MHN + environment variable, instead of directly in your user profile. + + The external-type directives are used to provide a reference to a + content, rather than enclosing the contents itself. Hence, instead + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHN(1) -63- MHN(1) + + + of providing a filename as with the type directives, external- + parameters are supplied. These look like regular parameters, so + they must be separated accordingly, e.g., + + #@application/octet-stream; \ + type=tar; \ + conversions=x-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 _a_n_o_n-_f_t_p or _m_a_i_l-_s_e_r_v_e_r + name= filename + directory= directoryname (optional) + site= hostname + mode= usually _a_s_c_i_i or _i_m_a_g_e (optional) + server= mailbox + 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 forwarded. if a folder is + not given, it defaults to the current folder. Similarly, if a mes- + sage is not given, it defaults to the current message. Hence, the + forw directive is similar to the _f_o_r_w (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 _m_h_n should attempt to utilize the encapsulation rules in + such a way as to appear that RFC 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 encapsulated 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 descrip- + tion of the content between the "[" character and the "]" charac- + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHN(1) -64- MHN(1) + + + ter. 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 _m_h_n_c_o_m_p_s. + + 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 contain- + ing 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 + + then this will be used to describe the plaintext content. NOTE + WELL: 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., + + # + -------- + + What now? edit (this invokes _m_h_n) + + What now? send + + 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 profile: + + lproc: show + + This way, if you decide to list after invoking _m_h_n as your editor, + the command + + What now? list + + will work as you expect. + + + _S_e_n_d_i_n_g _F_i_l_e_s _v_i_a _M_a_i_l + + When you want to send a bunch of files to someone, you can run the + _v_i_a_m_a_i_l shell script, which is similar the tarmail command: + + /usr/bs/mh-6.8/lib/viamail mailpath "subject" files ... + + _v_i_a_m_a_i_l will archive the directories/files you name with _t_a_r (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. + + Sometimes you want _v_i_a_m_a_i_l to pause after posting a partial mes- + sage. This is usually the case when you are running _s_e_n_d_m_a_i_l and + expect to generate a lot of partial messages. If the first + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHN(1) -67- MHN(1) + + + argument given to _v_i_a_m_a_i_l starts with a dash, then it is inter- + preted as the number of seconds to pause in between postings, e.g., + + /usr/bs/mh-6.8/lib/viamail -300 mailpath "subject" files ... + + will pause 5 minutes in between each posting. + + When these messages are received, invoke _m_h_n once, with the list of + messages, and the `-store' command. The _m_h_n 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 + conversions=x-compress + % mhn -show last + msg part type/subtype size description + 5 application/octet-stream 118K + -- headers of message, followed by _t_a_r listing appears here + % mhn -store last + % uncompress < 5.tar.Z | tar xvpf - + + Alternately, by using the `-auto' switch, _m_h_n will automatically do + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHN(1) -68- MHN(1) + + + 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 + conversions=x-compress + % mhn -show last + msg part type/subtype size description + 5 application/octet-stream 118K + -- headers of message, followed by _t_a_r listing appears here + % mhn -store -auto last + -- _t_a_r listing appears here as files are extracted + + As the second _t_a_r 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 _m_h_n can be invoked with `-store' and `-auto' to + perform the extraction. + + + _U_s_e_r _E_n_v_i_r_o_n_m_e_n_t + + Because the display environment in which _m_h_n operates may vary for + a user, _m_h_n will look for the environment variable $MHN. 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 environment variable should be set to refer to + a file containing definitions useful for the display device. Nor- + mally, only entries of the form + + mhn-show-/ + mhn-show- + + need be present. Finally, _m_h_n will attempt to consult one other + additional user profile, e.g., + + /usr/bs/mh-6.8/lib/mhn_defaults + + which is created automatically during MH installation. + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHN(1) -69- MHN(1) + + + _F_i_l_e_s + $HOME/.mh_profile The user profile + $MHN Additional profile entries + /usr/bs/mh-6.8/lib/mhn_defaults System-default profile entries + /usr/bs/mh-6.8/lib/mhl.headers The headers template + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + 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 Directory to store cached external contents + mhn-charset-Template for environment to render character + sets + mhn-compose-* Template for composing contents + mhn-show-* Template for displaying contents + mhn-storage Directory to store contents + mhn-store-* Template for storing contents + moreproc: Default program to display text/plain content + + + _S_e_e _A_l_s_o + mhl(1) + _M_I_M_E: _M_e_c_h_a_n_i_s_m_s _f_o_r _S_p_e_c_i_f_y_i_n_g _a_n_d _D_e_s_c_r_i_b_i_n_g _t_h_e _F_o_r_m_a_t _o_f _I_n_t_e_r- + _n_e_t _M_e_s_s_a_g_e _B_o_d_i_e_s (RFC 1341), + _P_r_o_p_o_s_e_d _S_t_a_n_d_a_r_d _f_o_r _M_e_s_s_a_g_e _E_n_c_a_p_s_u_l_a_t_i_o_n (RFC 934). + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `-noauto' + `-noebcdicsafe' + `-form mhl.headers' + `-headers' + `-realsize' + `-rfc934mode' + `-noserialonly' + `-show' + `-noverbose' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. The last + message selected will become the current message. + + + _B_u_g_s + Partial messages contained within a multipart content are not + reassembled with the `-store' switch. + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHOOK(1) -70- MHOOK(1) + + + _N_A_M_E + mhook, rcvdist, rcvpack, rcvtty - MH receive-mail hooks + + _S_Y_N_O_P_S_I_S + /usr/bs/mh-6.8/lib/rcvdist [-form formfile] [switches for _p_o_s_t_p_r_o_c] + address ... [-help] + + /usr/bs/mh-6.8/lib/rcvpack file [-help] + + /usr/bs/mh-6.8/lib/rcvtty [command] [-form formatfile] + [-format string] [-bell] [-nobell] [-newline] [-nonewline] + [-biff] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + A receive-mail hook is a program that is run whenever you receive a + mail message. You do NOT invoke the hook yourself, rather the hook + is invoked on your behalf by your system's Message Transport Agent. + See _s_l_o_c_a_l (1) for details on how to activate receive-mail hooks on + your system. + + Four programs are currently available as part of _M_H, _r_c_v_d_i_s_t + (redistribute incoming messages to additional recipients), _r_c_v_p_a_c_k + (save incoming messages in a _p_a_c_k_f'd file), and _r_c_v_t_t_y (notify user + of incoming messages). The fourth program, _r_c_v_s_t_o_r_e (1) is + described separately. They all reside in the /_u_s_r/_b_s/_m_h-_6._8/_l_i_b/ + directory. + + The _r_c_v_d_i_s_t program will resend a copy of the message to all of the + addresses listed on its command line. It uses the format string + facility described in _m_h-_f_o_r_m_a_t (5). + + The _r_c_v_p_a_c_k program will append a copy of the message to the file + listed on its command line. Its use is obsoleted by the "file" + action of _s_l_o_c_a_l. + + The _r_c_v_t_t_y program executes the named file with the message as its + standard input, and writes the resulting output on your terminal. + + If no file is specified, or is bogus, etc., then _r_c_v_t_t_y will + instead write a one-line scan listing. Either the + `-form formatfile' or `-format string' option may be used to over- + ride the default output format (see _m_h-_f_o_r_m_a_t (5)). A newline is + output before the message output, and the terminal bell is rung + after the output. The `-nonewline' and `-nobell' options will + inhibit these functions. + + In addition to the standard _m_h-_f_o_r_m_a_t (5) escapes, _r_c_v_t_t_y also + recognizes the following additional _c_o_m_p_o_n_e_n_t escapes: + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHOOK(1) -71- MHOOK(1) + + + _E_s_c_a_p_e _R_e_t_u_r_n_s _D_e_s_c_r_i_p_t_i_o_n + body string the (compressed) first part of the body + dtimenow date the current date + folder string the name of the current folder + + Normally, _r_c_v_t_t_y obeys write permission as granted by _m_e_s_g (1). + With the `-biff' option, _r_c_v_t_t_y will obey the notification status + set by _b_i_f_f (1) instead. If the terminal access daemon (TTYD) is + available on your system, then _r_c_v_t_t_y will give its output to the + daemon for output instead of writing on the user's terminal. + + _F_i_l_e_s + /usr/bs/mh-6.8/lib/mtstailor tailor file + $HOME/.maildelivery The file controlling local delivery + /usr/bs/mh-6.8/lib/maildelivery Rather than the standard file + + + _S_e_e _A_l_s_o + rcvstore (1), mh-format(5), slocal(1) + + + _B_u_g_s + Only two return codes are meaningful, others should be. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHPARAM(1) -72- MHPARAM(1) + + + _N_A_M_E + mhparam - print MH profile components + + _S_Y_N_O_P_S_I_S + mhparam [components] [-all] [-component] [-nocomponent] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _M_h_p_a_r_a_m writes the value of the specified profile component to the + standard output separated by newlines. If the profile component is + not present, the default value (or nothing if there is no default) + is printed. + + If more than one component is specified in the `components' list, + the component value is preceded by the component name. If `-com- + ponent' is specified, the component name is displayed even when + only one component is specified. If `-nocomponent' is specified, + the component name is not displayed even when more than one com- + ponent is specified. + + If `-all' is specified, all components if the MH profile are + displayed and other arguments are ignored. + + Examples: + + % mhparam path + Mail + + % mhparam mhlproc + /usr/bs/mh-6.8/lib/mhl + + % mhparam -component path + Path: Mail + + % mhparam AliasFile rmmproc + AliasFile: aliases + rmmproc: rmmproc + + % mhparam -nocomponent AliasFile rmmproc + aliases + rmmproc + + _M_h_p_a_r_a_m is also useful in back-quoted operations: + + % fgrep cornell.edu `mhpath +`/`mhparam aliasfile` + + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHPARAM(1) -73- MHPARAM(1) + + + _S_e_e _A_l_s_o + mh-profile(5) + + + _D_e_f_a_u_l_t_s + `-nocomponent' if only one component is specified + `-component' if more than one component is specified + `components' defaults to none + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHPATH(1) -74- MHPATH(1) + + + _N_A_M_E + mhpath - print full pathnames of MH messages and folders + + _S_Y_N_O_P_S_I_S + mhpath [+folder] [msgs] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _M_h_p_a_t_h expands and sorts the message list `msgs' and writes the + full pathnames of the messages to the standard output separated by + newlines. If no `msgs' are specified, _m_h_p_a_t_h outputs the folder + pathname instead. If the only argument is `+', your MH _P_a_t_h is + output; this can be useful is shell scripts. + + Contrasted with other MH commands, a message argument to _m_h_p_a_t_h may + often be intended for _w_r_i_t_i_n_g. Because of this: + + 1) the name "new" has been added to _m_h_p_a_t_h's list of reserved mes- + sage names (the others are "first", "last", "prev", "next", "cur", + and "all"). The new message is equivalent to the message after the + last message in a folder (and equivalent to 1 in a folder without + messages). The "new" message may not be used as part of a message + range. + + 2) Within a message list, the following designations may refer to + messages that do not exist: a single numeric message name, the sin- + gle message name "cur", and (obviously) the single message name + "new". All other message designations must refer to at least one + existing message. + + 3) An empty folder is not in itself an error. + + Message numbers greater than the highest existing message in a + folder as part of a range designation are replaced with the next + free message number. + + Examples: The current folder foo contains messages 3 5 6. Cur is + 4. + + % mhpath + /r/phyl/Mail/foo + + % mhpath all + /r/phyl/Mail/foo/3 + /r/phyl/Mail/foo/5 + /r/phyl/Mail/foo/6 + + % mhpath 2001 + /r/phyl/Mail/foo/7 + + % mhpath 1-2001 + /r/phyl/Mail/foo/3 + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHPATH(1) -75- MHPATH(1) + + + /r/phyl/Mail/foo/5 + /r/phyl/Mail/foo/6 + + % mhpath new + /r/phyl/Mail/foo/7 + + % mhpath last new + /r/phyl/Mail/foo/6 + /r/phyl/Mail/foo/7 + + % mhpath last-new + bad message list "last-new". + + % mhpath cur + /r/phyl/Mail/foo/4 + + % mhpath 1-2 + no messages in range "1-2". + + % mhpath first:2 + /r/phyl/Mail/foo/3 + /r/phyl/Mail/foo/5 + + % mhpath 1 2 + /r/phyl/Mail/foo/1 + /r/phyl/Mail/foo/2 + + _M_H_p_a_t_h is also useful in back-quoted operations: + + % cd `mhpath +inbox` + + % echo `mhpath +` + /r/phyl/Mail + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + + + _S_e_e _A_l_s_o + folder(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to none + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHPATH(1) -76- MHPATH(1) + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + Like all MH commands, _m_h_p_a_t_h expands and sorts [msgs]. So don't + expect + + mv `mhpath 501 500` + + to move 501 to 500. Quite the reverse. But + + mv `mhpath 501` `mhpath 500` + + will do the trick. + + Out of range message 0 is treated far more severely than large out + of range message numbers. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MSGCHK(1) -77- MSGCHK(1) + + + _N_A_M_E + msgchk - check for messages + + _S_Y_N_O_P_S_I_S + msgchk [-date] [-nodate] [-notify all/mail/nomail] + [-nonotify all/mail/nomail] [-host host] [-user user] [-apop] + [-noapop] [-rpop] [-norpop] [users ...] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + The _m_s_g_c_h_k program checks all known mail drops for mail waiting for + you. For those drops which have mail for you, _m_s_g_c_h_k will indicate + if it believes that you have seen the mail in question before. + + The `-notify type' switch indicates under what circumstances _m_s_g_c_h_k + should produce a message. The default is `-notify all' which says + that _m_s_g_c_h_k should always report the status of the users maildrop. + Other values for `type' include `mail' which says that _m_s_g_c_h_k + should report the status of waiting mail; and, `nomail' which says + that _m_s_g_c_h_k should report the status of empty maildrops. The + `-nonotify type' switch has the inverted sense, so `-nonotify all' + directs _m_s_g_c_h_k to never report the status of maildrops. This is + useful if the user wishes to check _m_s_g_c_h_k's exit status. A + non-zero exit status indicates that mail was not waiting for at + least one of the indicated users. + + If _m_s_g_c_h_k produces output, then the `-date' switch directs _m_s_g_c_h_k + to print out the last date mail was read, if this can be deter- + mined. + + If the local host is configured as a POP client, or if the + `-host host' switch is given, _m_s_g_c_h_k will query the POP service + host as to the status of mail waiting. If the `-user user' switch + is not given, then the current username is used. Normally, _m_s_g_c_h_k + will prompt for a password to use. However, if the `-apop' switch + is given, _m_s_g_c_h_k will generate authentication credentials to pro- + vide for origin authentication and replay protection, but which do + not involve sending a password in the clear over the network. Oth- + erwise, if the `-rpop' switch is given, then _m_s_g_c_h_k will try to use + a "trusted" connection (ala the BSD r-commands). + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /usr/bs/mh-6.8/lib/mtstailor tailor file + /usr/spool/mail/$USER Location of mail drop + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MSGCHK(1) -78- MSGCHK(1) + + + _S_e_e _A_l_s_o + _P_o_s_t _O_f_f_i_c_e _P_r_o_t_o_c_o_l - _v_e_r_s_i_o_n _3 (aka RFC-1081), + inc(1) + + + _D_e_f_a_u_l_t_s + `user' defaults to the current user + `-date' + `-notify all' + `-rpop' + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MSH(1) -79- MSH(1) + + + _N_A_M_E + msh - MH shell (and BBoard reader) + + _S_Y_N_O_P_S_I_S + msh [-prompt string] [-scan] [-noscan] [-topcur] [-notopcur] [file] + [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _m_s_h is an interactive program that implements a subset of the nor- + mal _M_H commands operating on a single file in _p_a_c_k_f'd format. That + is, _m_s_h is used to read a file that contains a number of messages, + as opposed to the standard _M_H style of reading a number of files, + each file being a separate message in a folder. _m_s_h's chief advan- + tage is that the normal _M_H style does not allow a file to have more + than one message in it. Hence, _m_s_h is ideal for reading _B_B_o_a_r_d_s, + as these files are delivered by the transport system in this for- + mat. In addition, _m_s_h can be used on other files, such as message + archives which have been _p_a_c_ked (see _p_a_c_k_f (1)). Finally, _m_s_h is + an excellent _M_H tutor. As the only commands available to the user + are _M_H commands, this allows _M_H beginners to concentrate on how + commands to _M_H are formed and (more or less) what they mean. + + When invoked, _m_s_h reads the named file, and enters a command loop. + The user may type most of the normal _M_H commands. The syntax and + semantics of these commands typed to _m_s_h are identical to their _M_H + counterparts. In cases where the nature of _m_s_h would be incon- + sistent (e.g., specifying a `+folder' with some commands), _m_s_h will + duly inform the user. The commands that _m_s_h currently supports (in + some slightly modified or restricted forms) are: + + ali + burst + comp + dist + folder + forw + inc + mark + mhmail + mhn + msgchk + next + packf + pick + prev + refile + repl + rmm + scan + send + show + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MSH(1) -80- MSH(1) + + + sortm + whatnow + whom + + In addition, _m_s_h has a "help" command which gives a brief overview. + To terminate _m_s_h, type CTRL-D, or use the "quit" command. If _m_s_h + is being invoked from _b_b_c, then typing CTRL-D will also tell _b_b_c to + exit as well, while using the "quit" command will return control to + _b_b_c, and _b_b_c will continue examining the list of BBoards that it is + scanning. + + If the file is writable and has been modified, then using "quit" + will query the user if the file should be updated. + + The `-prompt string' switch sets the prompting string for _m_s_h. + + You may wish to use an alternate _M_H profile for the commands that + _m_s_h executes; see _m_h-_p_r_o_f_i_l_e (5) for details about the $MH envari- + able. + + When invoked from _b_b_c, two special features are enabled: First, the + `-scan' switch directs _m_s_h to do a `scan unseen' on start-up if new + items are present in the BBoard. This feature is best used from + _b_b_c, which correctly sets the stage. Second, the _m_a_r_k command in + _m_s_h acts specially when you are reading a BBoard, since _m_s_h will + consult the sequence "unseen" in determining what messages you have + actually read. When _m_s_h exits, it reports this information to _b_b_c. + In addition, if you give the _m_a_r_k command with no arguments, _m_s_h + will interpret it as `mark -sequence unseen -delete -nozero all' + Hence, to discard all of the messages in the current BBoard you're + reading, just use the _m_a_r_k command with no arguments. + + Normally, the "exit" command is identical to the "quit" command in + _m_s_h. When run under _b_b_c however, "exit" directs _m_s_h to mark all + messages as seen and then "quit". For speedy type-in, this command + is often abbreviated as just "e". + + When invoked from _v_m_h, another special feature is enabled: The + `topcur' switch directs _m_s_h to have the current message "track" the + top line of the _v_m_h scan window. Normally, _m_s_h has the current + message "track" the center of the window (under `-notopcur', which + is the default). + + _m_s_h supports an output redirection facility. Commands may be fol- + lowed by one of + + > _f_i_l_e write output to _f_i_l_e + >> _f_i_l_e append output to _f_i_l_e + | _c_o_m_m_a_n_d pipe output to UNIX _c_o_m_m_a_n_d + + If _f_i_l_e starts with a `~' (tilde), then a _c_s_h-like expansion takes + place. Note that _c_o_m_m_a_n_d is interpreted by _s_h (1). Also note that + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MSH(1) -81- MSH(1) + + + _m_s_h does NOT support history substitutions, variable substitutions, + or alias substitutions. + + When parsing commands to the left of any redirection symbol, _m_s_h + will honor `\' (back-slash) as the quote next-character symbol, and + `"' (double-quote) as quote-word delimiters. All other input + tokens are separated by whitespace (spaces and tabs). + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /usr/bs/mh-6.8/lib/mtstailor tailor file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Msg-Protect: To set mode when creating a new `file' + fileproc: Program to file messages + showproc: Program to show messages + + + _S_e_e _A_l_s_o + bbc(1) + + + _D_e_f_a_u_l_t_s + `file' defaults to "./msgbox" + `-prompt (msh) ' + `-noscan' + `-notopcur' + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MSH(1) -82- MSH(1) + + + _B_u_g_s + The argument to the `-prompt' switch must be interpreted as a sin- + gle token by the shell that invokes _m_s_h. Therefore, one must usu- + ally place the argument to this switch inside double-quotes. + + There is a strict limit of messages per file in _p_a_c_k_f'd format + which _m_s_h can handle. Usually, this limit is 1000 messages. + + Please remember that _m_s_h is not the _C_S_h_e_l_l, and that a lot of the + nice facilities provided by the latter are not present in the form- + er. + + In particular, _m_s_h does not understand back-quoting, so the only + effective way to use _p_i_c_k inside _m_s_h is to always use the + `-seq select' switch. Clever users of _M_H will put the line + + pick: -seq select -list + + in their .mh_profile file so that _p_i_c_k works equally well from both + the shell and _m_s_h. + + _s_o_r_t_m always uses "-noverbose" and if "-textfield field" is used, + "-limit 0". + + The _m_s_h program inherits most (if not all) of the bugs from the _M_H + commands it implements. + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + NEXT(1) -83- NEXT(1) + + + _N_A_M_E + next - show the next message + + _S_Y_N_O_P_S_I_S + next [+folder] [-header] [-noheader] [-showproc program] + [-noshowproc] [switches for _s_h_o_w_p_r_o_c] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _N_e_x_t performs a _s_h_o_w on the next message in the specified (or + current) folder. Like _s_h_o_w, it passes any switches on to the pro- + gram _s_h_o_w_p_r_o_c, which is called to list the message. This command + is almost exactly equivalent to "show next". Consult the manual + entry for _s_h_o_w (1) for all the details. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + showproc: Program to show the message + + + _S_e_e _A_l_s_o + show(1), prev(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `-header' + + + _C_o_n_t_e_x_t + If a folder is specified, it will become the current folder. The + message that is shown (i.e., the next message in sequence) will be- + come the current message. + + + _B_u_g_s + _n_e_x_t is really a link to the _s_h_o_w program. As a result, if you + make a link to _n_e_x_t and that link is not called _n_e_x_t, your link + will act like _s_h_o_w instead. To circumvent this, add a + profile-entry for the link to your _M_H profile and add the argument + _n_e_x_t to the entry. + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + PACKF(1) -84- PACKF(1) + + + _N_A_M_E + packf - compress an MH folder into a single file + + _S_Y_N_O_P_S_I_S + packf [+folder] [msgs] [-file name] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _P_a_c_k_f takes messages from a folder and copies them to a single + file. Each message in the file is separated by four CTRL-A's and a + newline (identical to the way messages are stored in your receiving + mail drop). Messages packed can be unpacked using _i_n_c. + + If the _n_a_m_e given to the `-file name' switch exists, then the mes- + sages specified will be appended to the end of the file, otherwise + the file will be created and the messages appended. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + .msgbox.map A binary index of the file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Msg-Protect: To set mode when creating a new `file' + + + _S_e_e _A_l_s_o + inc(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to all + `-file ./msgbox' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. The first + message packed will become the current message. + + + _B_u_g_s + _P_a_c_k_f doesn't handle the old UUCP-style "mbox" format (used by + _S_e_n_d_M_a_i_l). To pack messages into this format, use the script + /_u_s_r/_b_s/_m_h-_6._8/_l_i_b/_p_a_c_k_m_b_o_x. Note that _p_a_c_k_m_b_o_x does not take the + `-file' option of _p_a_c_k_f, and instead writes its output on _s_t_d_o_u_t. + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + PICK(1) -85- PICK(1) + + + _N_A_M_E + pick - select messages by content + + _S_Y_N_O_P_S_I_S + pick [+folder] [msgs] [-and ...] [-or ...] [-not ...] + [-lbrace ... -rbrace] [--component pattern] [-cc pattern] + [-date pattern] [-from pattern] [-search pattern] + [-subject pattern] [-to pattern] [-after date] [-before date] + [-datefield field] [-sequence name ...] [-public] [-nopublic] + [-zero] [-nozero] [-list] [-nolist] [-help] + + typically: + scan `pick -from jones` + pick -to holloway -sequence select + show `pick -before friday` + + _D_E_S_C_R_I_P_T_I_O_N + + _P_i_c_k searches messages within a folder for the specified contents, + and then identifies those messages. Two types of search primitives + are available: pattern matching and date constraint operations. + + A modified _g_r_e_p(1) is used to perform the matching, so the full + regular expression (see _e_d(1)) facility is available within `pat- + tern'. With `-search', `pattern' is used directly, and with the + others, the grep pattern constructed is: + + "component[ \t]*:.*pattern" + + This means that the pattern specified for a `-search' will be found + everywhere in the message, including the header and the body, while + the other pattern matching requests are limited to the single + specified component. The expression + + `--component pattern' + + is a shorthand for specifying + + `-search "component[ \t]*:.*pattern" ' + + It is used to pick a component which is not one of "To:", "cc:", + "Date:", "From:", or "Subject:". An example is + `pick --reply-to pooh'. + + Pattern matching is performed on a per-line basis. Within the + header of the message, each component is treated as one long line, + but in the body, each line is separate. Lower-case letters in the + search pattern will match either lower or upper case in the mes- + sage, while upper case will match only upper case. + + Note that since the `-date' switch is a pattern matching operation + (as described above), to find messages sent on a certain date the + + [mh.6] MH.6.8 UCI version + + + + + + + + + + PICK(1) -86- PICK(1) + + + pattern string must match the text of the "Date:" field of the mes- + sage. + + Independent of any pattern matching operations requested, the + switches `-after date' or `-before date' may also be used to intro- + duce date/time contraints on all of the messages. By default, the + "Date:" field is consulted, but if another date yielding field + (such as "BB-Posted:" or "Delivery-Date:") should be used, the + `-datefield field' switch may be used. + + With `-before' and `-after', _p_i_c_k will actually parse the date + fields in each of the messages specified in `msgs' and compare them + to the date/time specified. If `-after' is given, then only those + messages whose "Date:" field value is chronologically after the + date specified will be considered. The `-before' switch specifies + the complimentary action. + + Both the `-after' and `-before' switches take legal 822-style date + specifications as arguments. _P_i_c_k will default certain missing + fields so that the entire date need not be specified. These fields + are (in order of defaulting): timezone, time and timezone, date, + date and timezone. All defaults are taken from the current date, + time, and timezone. + + In addition to 822-style dates, _p_i_c_k will also recognize any of the + days of the week ("sunday", "monday", and so on), and the special + dates "today", "yesterday" (24 hours ago), and "tomorrow" (24 hours + from now). All days of the week are judged to refer to a day in + the past (e.g., telling _p_i_c_k "saturday" on a "tuesday" means + "last saturday" not "this saturday"). + + Finally, in addition to these special specifications, _p_i_c_k will + also honor a specification of the form "-dd", which means "dd days + ago". + + _P_i_c_k supports complex boolean operations on the searching primi- + tives with the `-and', `-or', `-not', and `-lbrace ... -rbrace' + switches. For example, + + pick -after yesterday -and + -lbrace -from freida -or -from fear -rbrace + + identifies messages recently sent by "frieda" or "fear". + + The matching primitives take precedence over the `-not' switch, + which in turn takes precedence over `-and' which in turn takes pre- + cedence over `-or'. To override the default precedence, the + `-lbrace' and `-rbrace' switches are provided, which act just like + opening and closing parentheses in logical expressions. + + If no search criteria are given, all the messages specified on the + command line are selected (this defaults to "all"). + + [mh.6] MH.6.8 UCI version + + + + + + + + + + PICK(1) -87- PICK(1) + + + Once the search has been performed, if the `-list' switch is given, + the message numbers of the selected messages are written to the + standard output separated by newlines. This is _e_x_t_r_e_m_e_l_y useful + for quickly generating arguments for other _M_H programs by using the + "backquoting" syntax of the shell. For example, the command + + scan `pick +todo -after "31 Mar 83 0123 PST"` + + says to _s_c_a_n those messages in the indicated folder which meet the + appropriate criterion. Note that since _p_i_c_k 's context changes are + written out prior to _s_c_a_n 's invocation, you need not give the + folder argument to _s_c_a_n as well. + + Regardless of the operation of the `-list' switch, the `-sequence + name' switch may be given once for each sequence the user wishes to + define. For each sequence named, that sequence will be defined to + mean exactly those messages selected by _p_i_c_k. For example, + + pick -from frated -seq fred + + defines a new message sequence for the current folder called "fred" + which contains exactly those messages that were selected. + + Note that whenever _p_i_c_k processes a `-sequence name' switch, it + sets `-nolist'. + + By default, _p_i_c_k will zero the sequence before adding it. This + action can be disabled with the `-nozero' switch, which means that + the messages selected by _p_i_c_k will be added to the sequence, if it + already exists, and any messages already a part of that sequence + will remain so. + + The `-public' and `-nopublic' switches are used by _p_i_c_k in the same + way _m_a_r_k uses them. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + + + _S_e_e _A_l_s_o + mark(1) + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + PICK(1) -88- PICK(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to all + `-datefield date' + `-nopublic' if the folder is read-only, `-public' otherwise + `-zero' + `-list' is the default if no `-sequence', `-nolist' otherwise + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. + + + _H_i_s_t_o_r_y + In previous versions of _M_H, the _p_i_c_k command would _s_h_o_w, _s_c_a_n, or + _r_e_f_i_l_e the selected messages. This was rather "inverted logic" + from the UNIX point of view, so _p_i_c_k was changed to define se- + quences and output those sequences. Hence, _p_i_c_k can be used to + generate the arguments for all other _M_H commands, instead of giving + _p_i_c_k endless switches for invoking those commands itself. + + Also, previous versions of _p_i_c_k balked if you didn't specify a + search string or a date/time constraint. The current version does + not, and merely matches the messages you specify. This lets you + type something like: + + show `pick last:20 -seq fear` + + instead of typing + + mark -add -nozero -seq fear last:20 + show fear + + Finally, timezones used to be ignored when comparing dates: they + aren't any more. + + _H_e_l_p_f_u_l _H_i_n_t_s + + Use "pick sequence -list" to enumerate the messages in a sequence + (such as for use by a shell script). + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + PICK(1) -89- PICK(1) + + + _B_u_g_s + The argument to the `-after' and `-before' switches must be inter- + preted as a single token by the shell that invokes _p_i_c_k. There- + fore, one must usually place the argument to this switch inside + double-quotes. Furthermore, any occurance of `-datefield' must oc- + cur prior to the `-after' or `-before' switch it applies to. + + If _p_i_c_k is used in a back-quoted operation, such as + + scan `pick -from jones` + + and _p_i_c_k selects no messages (e.g., no messages are from "jones"), + then the shell will still run the outer command (e.g., "scan"). + Since no messages were matched, _p_i_c_k produced no output, and the + argument given to the outer command as a result of backquoting _p_i_c_k + is empty. In the case of _M_H programs, the outer command now acts + as if the default `msg' or `msgs' should be used (e.g., "all" in + the case of _s_c_a_n ). To prevent this unexpected behavior, if + `-list' was given, and if its standard output is not a tty, then + _p_i_c_k outputs the illegal message number "0" when it fails. This + lets the outer command fail gracefully as well. + + The pattern syntax "[l-r]" is not supported; each letter to be + matched must be included within the square brackets. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + PREV(1) -90- PREV(1) + + + _N_A_M_E + prev - show the previous message + + _S_Y_N_O_P_S_I_S + prev [+folder] [-header] [-noheader] [-showproc program] + [-noshowproc] [-switches for _s_h_o_w_p_r_o_c] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _P_r_e_v performs a _s_h_o_w on the previous message in the specified (or + current) folder. Like _s_h_o_w, it passes any switches on to the pro- + gram named by _s_h_o_w_p_r_o_c, which is called to list the message. This + command is almost exactly equivalent to "show prev". Consult the + manual entry for _s_h_o_w (1) for all the details. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + showproc: Program to show the message + + + _S_e_e _A_l_s_o + show(1), next(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `-header' + + + _C_o_n_t_e_x_t + If a folder is specified, it will become the current folder. The + message that is shown (i.e., the previous message in sequence) will + become the current message. + + + _B_u_g_s + _p_r_e_v is really a link to the _s_h_o_w program. As a result, if you + make a link to _p_r_e_v and that link is not called _p_r_e_v, your link + will act like _s_h_o_w instead. To circumvent this, add a + profile-entry for the link to your _M_H profile and add the argument + _p_r_e_v to the entry. + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + PROMPTER(1) -91- PROMPTER(1) + + + _N_A_M_E + prompter - prompting editor front-end for MH + + _S_Y_N_O_P_S_I_S + prompter [-erase chr] [-kill chr] [-prepend] [-noprepend] [-rapid] + [-norapid] [-doteof] [-nodoteof] file [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + This program is normally not invoked directly by users but takes + the place of an editor and acts as an editor front-end. It + operates on an 822-style message draft skeleton specified by file, + normally provided by _c_o_m_p, _d_i_s_t, _f_o_r_w, or _r_e_p_l. + + _P_r_o_m_p_t_e_r is an editor which allows rapid composition of messages. + It is particularly useful to network and low-speed (less than 2400 + baud) users of _M_H. It is an _M_H program in that it can have its own + profile entry with switches, but it is not invoked directly by the + user. The commands _c_o_m_p, _d_i_s_t, _f_o_r_w, and _r_e_p_l invoke _p_r_o_m_p_t_e_r as + an editor, either when invoked with `-editor prompter', or by the + profile entry "Editor: prompter", or when given the command + `edit prompter' at "What now?" level. + + For each empty component _p_r_o_m_p_t_e_r finds in the draft, the user is + prompted for a response; A will cause the whole component + to be left out. Otherwise, a `\' preceding a will con- + tinue the response on the next line, allowing for multiline com- + ponents. Continuation lines must begin with a space or tab. + + Each non-empty component is copied to the draft and displayed on + the terminal. + + The start of the message body is denoted by a blank line or a line + of dashes. If the body is non-empty, the prompt, which isn't writ- + ten to the file, is + + "--------Enter additional text", + + or (if `-prepend' was given) + + "--------Enter initial text". + + Message-body typing is terminated with an end-of-file (usually + CTRL-D). With the `-doteof' switch, a period on a line all by + itself also signifies end-of-file. At this point control is + returned to the calling program, where the user is asked "What + now?". See _w_h_a_t_n_o_w for the valid options to this query. + + By using the `-prepend' switch, the user can add type-in to the + beginning of the message body and have the rest of the body follow. + This is useful for the _f_o_r_w command. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + PROMPTER(1) -92- PROMPTER(1) + + + By using the `-rapid' switch, if the draft already contains text in + the message-body, it is not displayed on the user's terminal. This + is useful for low-speed terminals. + + The line editing characters for kill and erase may be specified by + the user via the arguments `-kill chr' and `-erase chr', where chr + may be a character; or `\nnn', where "nnn" is the octal value for + the character. + + An interrupt (usually CTRL-C) during component typing will abort + _p_r_o_m_p_t_e_r and the _M_H command that invoked it. An interrupt during + message-body typing is equivalent to CTRL-D, for historical rea- + sons. This means that _p_r_o_m_p_t_e_r should finish up and exit. + + The first non-flag argument to _p_r_o_m_p_t_e_r is taken as the name of the + draft file, and subsequent non-flag arguments are ignored. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /tmp/prompter* Temporary copy of message + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + prompter-next: To name the editor to be used on exit from + _p_r_o_m_p_t_e_r + Msg-Protect: To set mode when creating a new draft + + + _S_e_e _A_l_s_o + comp(1), dist(1), forw(1), repl(1), whatnow(1) + + + _D_e_f_a_u_l_t_s + `-prepend' + `-norapid' + `-nodoteof' + + + _C_o_n_t_e_x_t + None + + _H_e_l_p_f_u_l _H_i_n_t_s + + The `-rapid' option is particularly useful with _f_o_r_w, and + `-noprepend' is useful with _c_o_m_p -_u_s_e. + + The user may wish to link _p_r_o_m_p_t_e_r under several names (e.g., "ra- + pid") and give appropriate switches in the profile entries under + these names (e.g., "rapid: -rapid"). This facilitates invoking + prompter differently for different _M_H commands (e.g., "forw: -edi- + tor rapid"). + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + PROMPTER(1) -93- PROMPTER(1) + + + _B_u_g_s + _P_r_o_m_p_t_e_r uses _s_t_d_i_o (3), so it will lose if you edit files with + nulls in them. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + RCVSTORE(1) -94- RCVSTORE(1) + + + _N_A_M_E + rcvstore - incorporate new mail asynchronously + + _S_Y_N_O_P_S_I_S + /usr/bs/mh-6.8/lib/rcvstore [+folder] [-create] [-nocreate] + [-sequence name ...] [-public] [-nopublic] [-zero] [-nozero] + [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _R_c_v_s_t_o_r_e incorporates a message from the standard input into an _M_H + folder. If `+folder' isn't specified, a folder in the user's _M_H + directory will be used, either that specified by the "Inbox:" entry + in the user's profile, or the folder named "inbox". The new mes- + sage being incorporated is assigned the next highest number in the + folder. If the specified (or default) folder doesn't exist, then + it will be created if the `-create' option is specified, otherwise + _r_c_v_s_t_o_r_e will exit. + + If the user's profile contains a "Msg-Protect: nnn" entry, it will + be used as the protection on the newly created messages, otherwise + the _M_H default of 0644 will be used. During all operations on mes- + sages, this initially assigned protection will be preserved for + each message, so _c_h_m_o_d(1) may be used to set a protection on an + individual message, and its protection will be preserved + thereafter. + + _R_c_v_s_t_o_r_e will incorporate anything except zero length messages into + the user's MH folder. + + If the profile entry "Unseen-Sequence" is present and non-empty, + then _r_c_v_s_t_o_r_e will add the newly incorporated message to each + sequence named by the profile entry. This is similar to the + "Previous-Sequence" profile entry supported by all _M_H commands + which take `msgs' or `msg' arguments. Note that _r_c_v_s_t_o_r_e will not + zero each sequence prior to adding messages. + + Furthermore, the incoming messages may be added to user-defined + sequences as they arrive by appropriate use of the `-sequence' + option. As with _p_i_c_k, use of the `-zero' and `-nozero' switches + can also be used to zero old sequences or not. Similarly, use of + the `-public' and `-nopublic switches may be used to force addi- + tions to public and private sequences. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + RCVSTORE(1) -95- RCVSTORE(1) + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Folder-Protect: To set mode when creating a new folder + Inbox: To find the default inbox + Msg-Protect: To set mode when creating a new message + Unseen-Sequence: To name sequences denoting unseen messages + + + _S_e_e _A_l_s_o + inc(1), pick(1), mh-mail(5) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to "inbox" + `-create' + `-nopublic' if the folder is read-only, `-public' otherwise + `-nozero' + + + _C_o_n_t_e_x_t + No context changes will be attempted, with the exception of se- + quence manipulation. + + + _B_u_g_s + If you use the "Unseen-Sequence" profile entry, _r_c_v_s_t_o_r_e could try + to update the context while another _M_H process is also trying to do + so. This can cause the context to become corrupted. To avoid + this, do not use _r_c_v_s_t_o_r_e if you use the "Unseen-Sequence" profile + entry. + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + REFILE(1) -96- REFILE(1) + + + _N_A_M_E + refile - file message in other folders + + _S_Y_N_O_P_S_I_S + refile [msgs] [-draft] [-link] [-nolink] [-preserve] [-nopreserve] + [-src +folder] [-file file] [-rmmproc program] [-normmproc] + +folder ... [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _R_e_f_i_l_e moves (_m_v (1)) or links (_l_n (1)) messages from a source + folder into one or more destination folders. If you think of a + message as a sheet of paper, this operation is not unlike filing + the sheet of paper (or copies) in file cabinet folders. When a + message is filed, it is linked into the destination folder(s) if + possible, and is copied otherwise. As long as the destination + folders are all on the same file system, multiple filing causes + little storage overhead. This facility provides a good way to + cross-file or multiply-index messages. For example, if a message + is received from Jones about the ARPA Map Project, the command + + refile cur +jones +Map + + would allow the message to be found in either of the two folders + `jones' or `Map'. + + The option `-file file' directs _r_e_f_i_l_e to use the specified file as + the source message to be filed, rather than a message from a + folder. Note that the file should be a validly formatted message, + just like any other _M_H message. It should NOT be in mail drop for- + mat (to convert a file in mail drop format to a folder of _M_H mes- + sages, see _i_n_c (1)). + + If a destination folder doesn't exist, _r_e_f_i_l_e will ask if you want + to create it. A negative response will abort the file operation. + If the standard input for _r_e_f_i_l_e is _n_o_t a tty, then _r_e_f_i_l_e will not + ask any questions and will proceed as if the user's answer was + "yes" for all questions. + + The option `-link' preserves the source folder copy of the message + (i.e., it does a _l_n(1) rather than a _m_v(1)), whereas, `-nolink' + deletes the filed messages from the source folder. Normally, when + a message is filed, it is assigned the next highest number avail- + able in each of the destination folders. Use of the `-preserve' + switch will override this message renaming, but name conflicts may + occur, so use this switch cautiously. + + If `-link' is not specified (or `-nolink' is specified), the filed + messages will be removed from the source folder, by renaming them + with a site-dependent prefix (usually a comma). + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + REFILE(1) -97- REFILE(1) + + + If the user has a profile component such as + + rmmproc: /bin/rm + + then _r_e_f_i_l_e will instead call the named program to delete the mes- + sage files. The user may specify `-rmmproc program' on the command + line to override this profile specification. The `-normmproc' + option forces the message files to be deleted by renaming them as + described above. + + The `-draft' switch tells _r_e_f_i_l_e to file the /draft. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Folder-Protect: To set mode when creating a new folder + rmmproc: Program to delete the message + + + _S_e_e _A_l_s_o + folder(1) + + + _D_e_f_a_u_l_t_s + `-src +folder' defaults to the current folder + `msgs' defaults to cur + `-nolink' + `-nopreserve' + + + _C_o_n_t_e_x_t + If `-src +folder' is given, it will become the current folder. If + neither `-link' nor `all' is specified, the current message in the + source folder will be set to the last message specified; otherwise, + the current message won't be changed. + + If the Previous-Sequence profile entry is set, in addition to de- + fining the named sequences from the source folder, _r_e_f_i_l_e will also + define those sequences for the destination folders. See + _m_h-_s_e_q_u_e_n_c_e (5) for information concerning the previous sequence. + + + _B_u_g_s + Since _r_e_f_i_l_e uses your _r_m_m_p_r_o_c to delete the message, the _r_m_m_p_r_o_c + must NOT call _r_e_f_i_l_e without specifying `-normmproc', or you will + create an infinte loop. + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + REPL(1) -98- REPL(1) + + + _N_A_M_E + repl - reply to a message + + _S_Y_N_O_P_S_I_S + repl [+folder] [msg] [-annotate] [-noannotate] [-cc all/to/cc/me] + [-nocc all/to/cc/me] [-draftfolder +folder] + [-draftmessage msg] [-nodraftfolder] [-editor editor] + [-noedit] [-fcc +folder] [-filter filterfile] [-form formfile] + [-inplace] [-noinplace] [-query] [-noquery] [-width columns] + [-whatnowproc program] [-nowhatnowproc] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _R_e_p_l aids a user in producing a reply to an existing message. _R_e_p_l + uses a reply template to guide its actions when constructing the + message draft of the reply. In its simplest form (with no argu- + ments), it will set up a message-form skeleton in reply to the + current message in the current folder, and invoke the whatnow + shell. The default reply template will direct _r_e_p_l to construct + the composed message as follows: + + To: or + cc: , , and yourself + Subject: Re: + In-reply-to: Your message of . + + + where field names enclosed in angle brackets (< >) indicate the + contents of the named field from the message to which the reply is + being made. A reply template is simply a format file. See + _m_h-_f_o_r_m_a_t (5) for the details. + + The `-cc type' switch takes an argument which specifies who gets + placed on the "cc:" list of the reply. The `-query' switch modi- + fies the action of `-cc type' switch by interactively asking you if + each address that normally would be placed in the "To:" and "cc:" + list should actually be sent a copy. (This is useful for + special-purpose replies.) Note that the position of the `-cc' and + `-nocc' switches, like all other switches which take a positive and + negative form, is important. + + Lines beginning with the fields "To:", "cc:", and "Bcc:" will be + standardized and have duplicate addresses removed. In addition, + the `-width columns' switch will guide _r_e_p_l's formatting of these + fields. + + If the file named "replcomps" exists in the user's MH directory, it + will be used instead of the default form. In either case, the file + specified by `-form formfile' will be used if given. + + If the draft already exists, _r_e_p_l will ask you as to the disposi- + tion of the draft. A reply of quit will abort _r_e_p_l, leaving the + + [mh.6] MH.6.8 UCI version + + + + + + + + + + REPL(1) -99- REPL(1) + + + draft intact; replace will replace the existing draft with a blank + skeleton; and list will display the draft. + + See _c_o_m_p (1) for a description of the `-editor' and `-noedit' + switches. Note that while in the editor, the message being replied + to is available through a link named "@" (assuming the default + _w_h_a_t_n_o_w_p_r_o_c ). In addition, the actual pathname of the message is + stored in the envariable $editalt, and the pathname of the folder + containing the message is stored in the envariable $mhfolder. + + Although _r_e_p_l uses the `-form formfile' switch to direct it how to + construct the beginning of the draft, the `-filter filterfile' + switch directs _r_e_p_l as to how the message being replied-to should + be formatted in the body of the draft. If `-filter' is not speci- + fied, then the message being replied-to is not included in the body + of the draft. If `-filter filterfile' is specified, then the mes- + sage being replied-to is filtered (re-formatted) prior to being + output to the body of the draft. The filter file for _r_e_p_l should + be a standard form file for _m_h_l, as _r_e_p_l will invoke _m_h_l to format + the message being replied-to. There is no default message filter + (`-filter' must be followed by a file name). A filter file that is + commonly used is: + + : + body:nocomponent,compwidth=9,offset=9 + + which says to output a blank line and then the body of the message + being replied-to, indented by one tab-stop. Another format popular + on USENET is: + + + message-id:nocomponent,nonewline,\ + formatfield="In message %{text}, " + from:nocomponent,formatfield="%(friendly{text}) writes:" + body:component=">",overflowtext=">",overflowoffset=0 + + Which cites the Message-ID and author of the message being + replied-to, and then outputs each line of the body prefaced with + the ">" character. + + If the `-annotate' switch is given, the message being replied-to + will be annotated with the lines + + Replied: date + Replied: addrs + + where the address list contains one line for each addressee. The + annotation will be done only if the message is sent directly from + _r_e_p_l. If the message is not sent immediately from _r_e_p_l, + "comp -use" may be used to re-edit and send the constructed mes- + sage, but the annotations won't take place. The `-inplace' switch + causes annotation to be done in place in order to preserve links to + + [mh.6] MH.6.8 UCI version + + + + + + + + + + REPL(1) -100- REPL(1) + + + the annotated message. + + The `-fcc +folder' switch can be used to automatically specify a + folder to receive Fcc:s. More than one folder, each preceeded by + `-fcc' can be named. + + In addition to the standard _m_h-_f_o_r_m_a_t (5) escapes, _r_e_p_l also recog- + nizes the following additional _c_o_m_p_o_n_e_n_t escape: + + _E_s_c_a_p_e _R_e_t_u_r_n_s _D_e_s_c_r_i_p_t_i_o_n + _f_c_c string Any folders specified with `-fcc folder' + + To avoid reiteration, _r_e_p_l strips any leading `Re: ' strings from + the _s_u_b_j_e_c_t component. + + The `-draftfolder +folder' and `-draftmessage msg' switches invoke + the _M_H draft folder facility. This is an advanced (and highly use- + ful) feature. Consult the Advanced Features section of the _M_H + manual for more information. + + Upon exiting from the editor, _r_e_p_l will invoke the _w_h_a_t_n_o_w program. + See _w_h_a_t_n_o_w (1) for a discussion of available options. The invoca- + tion of this program can be inhibited by using the `-nowhatnowproc' + switch. (In truth of fact, it is the _w_h_a_t_n_o_w program which starts + the initial edit. Hence, `-nowhatnowproc' will prevent any edit + from occurring.) + + _F_i_l_e_s + /usr/bs/mh-6.8/lib/replcomps The reply template + or /replcomps Rather than the standard template + $HOME/.mh_profile The user profile + /draft The draft file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Alternate-Mailboxes: To determine the user's mailboxes + Current-Folder: To find the default current folder + Draft-Folder: To find the default draft-folder + Editor: To override the default editor + Msg-Protect: To set mode when creating a new message + (draft) + fileproc: Program to refile the message + mhlproc: Program to filter message being replied-to + whatnowproc: Program to ask the "What now?" questions + + + _S_e_e _A_l_s_o + comp(1), dist(1), forw(1), send(1), whatnow(1), mh-format(5) + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + REPL(1) -101- REPL(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msg' defaults to cur + `-nocc all' at ATHENA sites, `-cc all' otherwise + `-noannotate' + `-nodraftfolder' + `-noinplace' + `-noquery' + `-width 72' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. The mes- + sage replied-to will become the current message. + + + _H_i_s_t_o_r_y + Prior to using the format string mechanism, `-noformat' used to + cause address headers to be output as-is. Now all address fields + are formatted using Internet standard guidelines. + + + _B_u_g_s + If any addresses occur in the reply template, addresses in the tem- + plate that do not contain hosts are defaulted incorrectly. Instead + of using the localhost for the default, _r_e_p_l uses the sender's + host. Moral of the story: if you're going to include addresses in + a reply template, include the host portion of the address. + + The `-width columns' switch is only used to do address-folding; + other headers are not line-wrapped. + + If _w_h_a_t_n_o_w_p_r_o_c is _w_h_a_t_n_o_w, then _r_e_p_l uses a built-in _w_h_a_t_n_o_w, it + does not actually run the _w_h_a_t_n_o_w program. Hence, if you define + your own _w_h_a_t_n_o_w_p_r_o_c, don't call it _w_h_a_t_n_o_w since _r_e_p_l won't run + it. + + If your current working directory is not writable, the link named + "@" is not available. + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + RMF(1) -102- RMF(1) + + + _N_A_M_E + rmf - remove an MH folder + + _S_Y_N_O_P_S_I_S + rmf [+folder] [-interactive] [-nointeractive] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _R_m_f removes all of the messages (files) within the specified (or + default) folder, and then removes the folder (directory) itself. + If there are any files within the folder which are not a part of + _M_H, they will _n_o_t be removed, and an error will be produced. If + the folder is given explicitly or the `-nointeractive' option is + given, then the folder will be removed without confirmation. Oth- + erwise, the user will be asked for confirmation. If _r_m_f can't find + the current folder, for some reason, the folder to be removed + defaults to `+inbox' (unless overridden by user's profile entry + "Inbox") with confirmation. + + _R_m_f irreversibly deletes messages that don't have other links, so + use it with caution. + + If the folder being removed is a subfolder, the parent folder will + become the new current folder, and _r_m_f will produce a message tel- + ling the user this has happened. This provides an easy mechanism + for selecting a set of messages, operating on the list, then remov- + ing the list and returning to the current folder from which the + list was extracted. + + _R_m_f of a read-only folder will delete the private sequence and cur + information (i.e., "atr-_s_e_q-_f_o_l_d_e_r" entries) from the profile + without affecting the folder itself. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Inbox: To find the default inbox + + + _S_e_e _A_l_s_o + rmm(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder, usually with confirmation + `-interactive' if +folder' not given, `-nointeractive' otherwise + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + RMF(1) -103- RMF(1) + + + _C_o_n_t_e_x_t + _R_m_f will set the current folder to the parent folder if a subfolder + is removed; or if the current folder is removed, it will make "in- + box" current. Otherwise, it doesn't change the current folder or + message. + + + _B_u_g_s + Although intuitively one would suspect that _r_m_f works recursively, + it does not. Hence if you have a sub-folder within a folder, in + order to _r_m_f the parent, you must first _r_m_f each of the children. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + RMM(1) -104- RMM(1) + + + _N_A_M_E + rmm - remove messages + + _S_Y_N_O_P_S_I_S + rmm [+folder] [msgs] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _R_m_m removes the specified messages by renaming the message files + with preceding commas. Many sites consider files that start with a + comma to be a temporary backup, and arrange for _c_r_o_n (8) to remove + such files once a day. + + If the user has a profile component such as + + rmmproc: /bin/rm + + then instead of simply renaming the message file, _r_m_m will call the + named program to delete the file. Note that at most installations, + _c_r_o_n (8) is told to remove files that begin with a comma once a + night. + + Some users of csh prefer the following: + + alias rmm 'refile +d' + + where folder +d is a folder for deleted messages, and + + alias mexp 'rm `mhpath +d all`' + + is used to "expunge" deleted messages. + + The current message is not changed by _r_m_m, so a _n_e_x_t will advance + to the next message in the folder as expected. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + rmmproc: Program to delete the message + + + _S_e_e _A_l_s_o + rmf(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to cur + + [mh.6] MH.6.8 UCI version + + + + + + + + + + RMM(1) -105- RMM(1) + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. + + + _B_u_g_s + Since _r_e_f_i_l_e uses your _r_m_m_p_r_o_c to delete the message, the _r_m_m_p_r_o_c + must NOT call _r_e_f_i_l_e without specifying `-normmproc', or you will + create an infinte loop. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SCAN(1) -106- SCAN(1) + + + _N_A_M_E + scan - produce a one line per message scan listing + + _S_Y_N_O_P_S_I_S + scan [+folder] [msgs] [-clear] [-noclear] [-form formatfile] + [-format string] [-header] [-noheader] [-width columns] + [-reverse] [-noreverse] [-file filename] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _S_c_a_n produces a one-line-per-message listing of the specified mes- + sages. Each _s_c_a_n line contains the message number (name), the + date, the "From:" field, the "Subject" field, and, if room allows, + some of the body of the message. For example: + + 15+ 7/ 5 Dcrocker nned <> if the body is sufficiently short. _S_c_a_n + actually reads each of the specified messages and parses them to + extract the desired fields. During parsing, appropriate error mes- + sages will be produced if there are format errors in any of the + messages. + + The `-header' switch produces a header line prior to the _s_c_a_n list- + ing. Currently, the name of the folder and the current date and + time are output (see the HISTORY section for more information). + + If the `-clear' switch is used and _s_c_a_n'_s output is directed to a + terminal, then _s_c_a_n will consult the $TERM and $TERMCAP envariables + to determine your terminal type in order to find out how to clear + the screen prior to exiting. If the `-clear' switch is used and + _s_c_a_n'_s output is not directed to a terminal (e.g., a pipe or a + file), then _s_c_a_n will send a formfeed prior to exiting. + + For example, the command: + + (scan -clear -header; show all -show pr -f) | lpr + + produces a scan listing of the current folder, followed by a + formfeed, followed by a formatted listing of all messages in the + folder, one per page. Omitting `-show pr -f' will cause the mes- + sages to be concatenated, separated by a one-line header and two + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SCAN(1) -107- SCAN(1) + + + blank lines. + + If _s_c_a_n encounters a message without a "Date:" field, rather than + leaving that portion of the scan listing blank, the date is + filled-in with the last write date of the message, and post-fixed + with a `*'. This is particularly handy for scanning a _d_r_a_f_t + _f_o_l_d_e_r, as message drafts usually aren't allowed to have dates in + them. + + To override the output format used by _s_c_a_n, the `-format string' or + `-format file' switches are used. This permits individual fields + of the scan listing to be extracted with ease. The string is sim- + ply a format string and the file is simply a format file. See + _m_h-_f_o_r_m_a_t (5) for the details. + + In addition to the standard _m_h-_f_o_r_m_a_t (5) escapes, _s_c_a_n also recog- + nizes the following additional _c_o_m_p_o_n_e_n_t escapes: + + _E_s_c_a_p_e _R_e_t_u_r_n_s _D_e_s_c_r_i_p_t_i_o_n + body string the (compressed) first part of the body + dtimenow date the current date + folder string the name of the current folder + + Also, if no date header was present in the message, the _f_u_n_c_t_i_o_n + escapes which operate on {_d_a_t_e} will return values for the date of + last modification of the message file itself. + + _s_c_a_n will update the _M_H context prior to starting the listing, so + interrupting a long _s_c_a_n listing preserves the new context. _M_H + purists hate this idea. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Alternate-Mailboxes: To determine the user's mailboxes + Current-Folder: To find the default current folder + + + _S_e_e _A_l_s_o + inc(1), pick(1), show(1), mh-format(5) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the folder current + `msgs' defaults to all + `-format' defaulted as described above + `-noheader' + `-width' defaulted to the width of the terminal + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SCAN(1) -108- SCAN(1) + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. + + + _H_i_s_t_o_r_y + Prior to using the format string mechanism, `-header' used to gen- + erate a heading saying what each column in the listing was. Format + strings prevent this from happening. + + + _B_u_g_s + The argument to the `-format' switch must be interpreted as a sin- + gle token by the shell that invokes _s_c_a_n. Therefore, one must usu- + ally place the argument to this switch inside double-quotes. + The value of each _c_o_m_p_o_n_e_n_t escape is set by _s_c_a_n to the contents + of the first message header _s_c_a_n encounters with the corresponding + component name; any following headers with the same component name + are ignored. + + The switch `-reverse', makes _s_c_a_n list the messages in reverse ord- + er; this should be considered a bug. + + The `-file filename' switch allows the user to obtain a _s_c_a_n list- + ing of a maildrop file as produced by _p_a_c_k_f. This listing includes + every message in the file. The user should use _m_s_h for more selec- + tive processing of the file. `-reverse' is ignored with this op- + tion. + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SEND(1) -109- SEND(1) + + + _N_A_M_E + send - send a message + + _S_Y_N_O_P_S_I_S + send [-alias aliasfile] [-draft] [-draftfolder +folder] + [-draftmessage msg] [-nodraftfolder] [-filter filterfile] + [-nofilter] [-format] [-noformat] [-forward] [-noforward] + [-mime] [-nomime] [-msgid] [-nomsgid] [-push] [-nopush] + [-split seconds] [-verbose] [-noverbose] [-watch] [-nowatch] + [-width columns] [file ...] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _S_e_n_d will cause each of the specified files to be delivered (via + _p_o_s_t (8)) to each of the destinations in the "To:", "cc:", "Bcc:", + and "Fcc:" fields of the message. If _s_e_n_d is re-distributing a + message, as invoked from _d_i_s_t, then the corresponding "Resent-xxx" + fields are examined instead. + + If `-push' is specified, _s_e_n_d will detach itself from the user's + terminal and perform its actions in the background. If _p_u_s_h 'd and + the draft can't be sent, then the `-forward' switch says that draft + should be forwarded with the failure notice sent to the user. This + differs from putting _s_e_n_d in the background because the output is + trapped and analyzed by _M_H. + + If `-verbose' is specified, _s_e_n_d will indicate the interactions + occurring with the transport system, prior to actual delivery. If + `-watch' is specified _s_e_n_d will monitor the delivery of local and + network mail. Hence, by specifying both switches, a large detail + of information can be gathered about each step of the message's + entry into the transport system. + + The `-draftfolder +folder' and `-draftmessage msg' switches invoke + the _M_H draft folder facility. This is an advanced (and highly use- + ful) feature. Consult the Advanced Features section of the _M_H + manual for more information. + + If `-split' is specified, _s_e_n_d will split the draft into one or + more partial messages prior to sending. This makes use of the + multi-media content feature in MH. Note however that if _s_e_n_d is + invoked under _d_i_s_t (1), then this switch is ignored -- it makes no + sense to redistribute a message in this fashion. Sometimes you + want _s_e_n_d to pause after posting a partial message. This is usu- + ally the case when you are running _s_e_n_d_m_a_i_l and expect to generate + a lot of partial messages. The argument to `-split' tells it how + long to pause between postings. + + _S_e_n_d with no _f_i_l_e argument will query whether the draft is the + intended file, whereas `-draft' will suppress this question. Once + the transport system has successfully accepted custody of the mes- + sage, the file will be renamed with a leading comma, which allows + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SEND(1) -110- SEND(1) + + + it to be retrieved until the next draft message is sent. If there + are errors in the formatting of the message, _s_e_n_d will abort with a + (hopefully) helpful error message. + + If a "Bcc:" field is encountered, its addresses will be used for + delivery, and the "Bcc:" field will be removed from the message + sent to sighted recipients. The blind recipients will receive an + entirely new message with a minimal set of headers. Included in + the body of the message will be a copy of the message sent to the + sighted recipients. If `-filter filterfile' is specified, then + this copy is filtered (re-formatted) prior to being sent to the + blind recipients. Otherwise, to use the MIME rules for encapsula- + tion, specify the `-mime' switch. + + Prior to sending the message, the fields "From: user@local", and + "Date: now" will be appended to the headers in the message. If the + envariable $SIGNATURE is set, then its value is used as your per- + sonal name when constructing the "From:" line of the message. If + this envariable is not set, then _s_e_n_d will consult the profile + entry "Signature" for this information. On hosts where _M_H was con- + figured with the UCI option, if $SIGNATURE is not set and the "Sig- + nature" profile entry is not present, then the file + $HOME/.signature is consulted. If `-msgid' is specified, then a + "Message-ID:" field will also be added to the message. + + If _s_e_n_d is re-distributing a message (when invoked by _d_i_s_t ), then + "Resent-" will be prepended to each of these fields: "From:", + "Date:", and "Message-ID:". If the message already contains a + "From:" field, then a "Sender: user@local" field will be added as + well. (An already existing "Sender:" field is an error!) + + By using the `-format' switch, each of the entries in the "To:" and + "cc:" fields will be replaced with "standard" format entries. This + standard format is designed to be usable by all of the message + handlers on the various systems around the Internet. If `-nofor- + mat' is given, then headers are output exactly as they appear in + the message draft. + + If an "Fcc: folder" is encountered, the message will be copied to + the specified folder for the sender in the format in which it will + appear to any non-Bcc receivers of the message. That is, it will + have the appended fields and field reformatting. The "Fcc:" fields + will be removed from all outgoing copies of the message. + + By using the `-width columns' switch, the user can direct _s_e_n_d as + to how long it should make header lines containing addresses. + + The files specified by the profile entry "Aliasfile:" and any addi- + tional alias files given by the `-alias aliasfile' switch will be + read (more than one file, each preceeded by `-alias', can be + named). See _m_h-_a_l_i_a_s (5) for more information. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SEND(1) -111- SEND(1) + + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Draft-Folder: To find the default draft-folder + Aliasfile: For a default alias file + Signature: To determine the user's mail signature + mailproc: Program to post failure notices + postproc: Program to post the message + + + _S_e_e _A_l_s_o + comp(1), dist(1), forw(1), repl(1), mh-alias(5), post(8) + + + _D_e_f_a_u_l_t_s + `file' defaults to /draft + `-alias /usr/bs/mh-6.8/lib/MailAliases' + `-nodraftfolder' + `-nofilter' + `-format' + `-forward' + `-nomime' + `-nomsgid' + `-nopush' + `-noverbose' + `-nowatch' + `-width 72' + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + Under some configurations, it is not possible to mointor the mail + delivery transaction; `-watch' is a no-op on those systems. + + Using `-split 0' doesn't work correctly. + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SHOW(1) -112- SHOW(1) + + + _N_A_M_E + show - show (list) messages + + _S_Y_N_O_P_S_I_S + show [+folder] [msgs] [-draft] [-header] [-noheader] + [-showproc program] [-noshowproc] [switches for _s_h_o_w_p_r_o_c] + [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _S_h_o_w lists each of the specified messages to the standard output + (typically, the terminal). Typically, the messages are listed + exactly as they are, with no reformatting. A program named by the + _s_h_o_w_p_r_o_c profile component is invoked to do the listing, and any + switches not recognized by _s_h_o_w are passed along to that program. + The default program is known as _m_o_r_e (1). To override the default + and the _s_h_o_w_p_r_o_c profile component, use the `-showproc program' + switch. For example, `-show pr' will cause the _p_r (1) program to + list the messages. The _M_H command _m_h_l can be used as a _s_h_o_w_p_r_o_c to + show messages in a more uniform format. Normally, this program is + specified as the _s_h_o_w_p_r_o_c is the user's .mh_profile. See _m_h_l (1) + for the details. If the `-noshowproc' option is specified, + `/bin/cat' is used instead of _s_h_o_w_p_r_o_c. + + If you have messages with multi-media content, you should define + the profile entry _m_h_n_p_r_o_c, which is the name of a program to mani- + pulate multi-media messages. The _m_h_n (1) program is suitable for + this purpose. Note that if the _m_h_n_p_r_o_c profile entry is defined, + the `-noshowproc' option is NOT specified, and if one or more named + messages has a multi-media content, then the program indicated by + _m_h_n_p_r_o_c will be run instead of _s_h_o_w_p_r_o_c. The use of the _m_h_n_p_r_o_c + can also be disabled if the environment variable $NOMHNPROC is set. + + The `-header' switch tells _s_h_o_w to display a one-line description + of the message being shown. This description includes the folder + and the message number. + + If no `msgs' are specified, the current message is used. If more + than one message is specified, _m_o_r_e will prompt for a + prior to listing each message. _m_o_r_e will list each message, a page + at a time. When the end of page is reached, _m_o_r_e will ring the + bell and wait for a or . If a is entered, + _m_o_r_e will print the next line, whereas will print the next + screenful. To exit _m_o_r_e, type "q". + + If the standard output is not a terminal, no queries are made, and + each file is listed with a one-line header and two lines of separa- + tion. + + "show -draft" will list the file /draft if it exists. + + If the profile entry "Unseen-Sequence" is present and non-empty, + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SHOW(1) -113- SHOW(1) + + + then _s_h_o_w will remove each of the messages shown from each sequence + named by the profile entry. This is similar to the + "Previous-Sequence" profile entry supported by all _M_H commands + which take `msgs' or `msg' arguments. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Unseen-Sequence: To name sequences denoting unseen messages + showproc: Program to show messages + mhnproc: Program to show messages with multi-media con- + tent + + + _S_e_e _A_l_s_o + mhl(1), more(1), next(1), pick(1), prev(1), scan(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to cur + `-header' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. The last + message shown will become the current message. + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SHOW(1) -114- SHOW(1) + + + _B_u_g_s + The `-header' switch doesn't work when `msgs' expands to more than + one message. If the _s_h_o_w_p_r_o_c is _m_h_l, then is problem can be cir- + cumvented by referencing the "messagename" field in the _m_h_l format + file. + + _S_h_o_w updates the user's context before showing the message. Hence + _s_h_o_w will mark messages as seen prior to the user actually seeing + them. This is generally not a problem, unless the user relies on + the "unseen" messages mechanism, and interrupts _s_h_o_w while it is + showing "unseen" messages. + + If _s_h_o_w_p_r_o_c is _m_h_l, then _s_h_o_w uses a built-in _m_h_l: it does not ac- + tually run the _m_h_l program. Hence, if you define your own + _s_h_o_w_p_r_o_c, don't call it _m_h_l since _s_h_o_w won't run it. + + If _m_o_r_e (1) is your showproc (the default), then avoid running _s_h_o_w + in the background with only its standard output piped to another + process, as in + + show | imprint & + + Due to a bug in _m_o_r_e, show will go into a "tty input" state. To + avoid this problem, re-direct _s_h_o_w's diagnostic output as well. + For users of _c_s_h: + + show |& imprint & + + For users of _s_h: + + show 2>&1 | imprint & + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SLOCAL(1) -115- SLOCAL(1) + + + _N_A_M_E + slocal - special local mail delivery + + _S_Y_N_O_P_S_I_S + /usr/bs/mh-6.8/lib/slocal [address info sender] + [-addr address] [-info data] [-sender sender] + [-user username] [-mailbox mbox] [-file file] + [-maildelivery deliveryfile] [-verbose] [-noverbose] [-debug] + [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _S_l_o_c_a_l is a program designed to allow you to have your inbound mail + processed according to a complex set of selection criteria. You do + not normally invoke _s_l_o_c_a_l yourself, rather _s_l_o_c_a_l is invoked on + your behalf by your system's Message Transfer Agent. + + The message selection criteria used by _s_l_o_c_a_l is specified in the + file ._m_a_i_l_d_e_l_i_v_e_r_y in the user's home directory. The format of + this file is given below. + + The message delivery address and message sender are determined from + the Message Transfer Agent envelope information, if possible. + Under _S_e_n_d_M_a_i_l, the sender will obtained from the UUCP "From " + line, if present. The user may override these values with command + line arguments, or arguments to the `-addr' and `-sender' switches. + + The message is normally read from the standard input. The `-file' + switch sets the name of the file from which the message should be + read, instead of reading stdin. The `-user' switch tells _s_l_o_c_a_l + the name of the user for whom it is delivering mail. The `-mail- + box' switch tells _s_l_o_c_a_l the name of the user's maildrop file. + + The `-info' switch may be used to pass an arbitrary argument to + sub-processes which _s_l_o_c_a_l may invoke on your behalf. The `-ver- + bose' switch causes _s_l_o_c_a_l to give information on stdout about its + progress. The `-debug' switch produces more verbose debugging out- + put on stderr. + + + _M_e_s_s_a_g_e _T_r_a_n_s_f_e_r _A_g_e_n_t_s + + If your MTA is _S_e_n_d_M_a_i_l, you should include the line + + "| /usr/bs/mh-6.8/lib/slocal -user username" + + in your .forward file in your home directory. This will cause + _S_e_n_d_M_a_i_l to invoke _s_l_o_c_a_l on your behalf. + + If your MTA is _M_M_D_F-_I, you should (symbolically) link /usr/bs/mh- + 6.8/lib/slocal to the file bin/rcvmail in your home directory. + This will cause _M_M_D_F-_I to invoke _s_l_o_c_a_l on your behalf with the + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SLOCAL(1) -116- SLOCAL(1) + + + correct "_a_d_d_r_e_s_s _i_n_f_o _s_e_n_d_e_r" arguments. + + If your MTA is _M_M_D_F-_I_I, then you should not use _s_l_o_c_a_l. An + equivalent functionality is already provided by _M_M_D_F-_I_I; see mail- + delivery(5) for details. + + + _T_h_e _M_a_i_l_d_e_l_i_v_e_r_y _F_i_l_e + + + The ._m_a_i_l_d_e_l_i_v_e_r_y file controls how local delivery is performed. + Each line of this file consists of five fields, separated by + white-space or comma. Since double-quotes are honored, these char- + acters may be included in a single argument by enclosing the entire + argument in double-quotes. A double-quote can be included by + preceding it with a backslash. Lines beginning with `#' are + ignored. The format of each line in the ._m_a_i_l_d_e_l_i_v_e_r_y file is: + + + header pattern action result string + + header: + The name of a header field that is to be searched for a pat- + tern. This is any field in the headers of the message that + might be present. The following special fields are also + defined: + + _s_o_u_r_c_e the out-of-band sender information + _a_d_d_r the address that was used to cause delivery to the + recipient + _d_e_f_a_u_l_t this matches _o_n_l_y if the message hasn't been + delivered yet + * this always matches + + pattern: + The sequence of characters to match in the specified header + field. Matching is case-insensitive, but does not use regular + expressions. + + action: + The action to take to deliver the message: + + _d_e_s_t_r_o_y This action always succeeds. + + _f_i_l_e or > Append the message to the file named by string. The + message is appended to the file in the maildrop for- + mat which is used by your message transport system. + If the message can be appended to the file, then + this action succeeds. When writing to the file, a + "Delivery-Date: date" header is added which indi- + cates the date and time that message was appended to + the file. + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SLOCAL(1) -117- SLOCAL(1) + + + _m_b_o_x Identical to _f_i_l_e, but always appends the message + using the format used by _p_a_c_k_f (the MMDF mailbox + format). + + _p_i_p_e or | Pipe the message as the standard input to the com- + mand named by string, using the Bourne shell _s_h(1) + to interpret the string. Prior to giving the string + to the shell, it is expanded with the following + built-in variables: + + $(sender) the out-of-band sender information + $(address) the address that was used to cause + delivery to the recipient + $(size) the size of the message in bytes + $(reply-to) either the "Reply-To:" or "From:" field + of the message + $(info) the out-of-band information specified + _q_p_i_p_e or + <_c_a_r_e_t> Similar to _p_i_p_e, but executes the command directly, + after built-in variable expansion, without assis- + tance from the shell. This action can be used to + avoid quoting special characters which your shell + might interpret. + + result: + Indicates how the action should be performed: + + _A Perform the action. If the action succeeds, then + the message is considered delivered. + + _R Perform the action. Regardless of the outcome of + the action, the message is not considered delivered. + + ? Perform the action only if the message has not been + delivered. If the action succeeds, then the message + is considered delivered. + + _N Perform the action only if the message has not been + delivered and the previous action succeeded. If + this action succeeds, then the message is considered + delivered. + + To summarize, here's an example: + + #_f_i_e_l_d _p_a_t_t_e_r_n _a_c_t_i_o_n _r_e_s_u_l_t _s_t_r_i_n_g + # lines starting with a '#' are ignored, as are blank lines + # + # file mail with mmdf2 in the "To:" line into file mmdf2.log + _T_o _m_m_d_f_2 _f_i_l_e _A _m_m_d_f_2._l_o_g + # Messages from mmdf pipe to the program err-message-archive + _F_r_o_m _m_m_d_f _p_i_p_e _A /_b_i_n/_e_r_r-_m_e_s_s_a_g_e-_a_r_c_h_i_v_e + # Anything with the "Sender:" address "mh-workers" + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SLOCAL(1) -118- SLOCAL(1) + + + # file in mh.log if not filed already + _S_e_n_d_e_r _m_h-_w_o_r_k_e_r_s _f_i_l_e ? _m_h._l_o_g + # "To:" unix - put in file unix-news + _T_o _U_n_i_x > _A _u_n_i_x-_n_e_w_s + # if the address is jpo=ack - send an acknowledgement copy back + _a_d_d_r _j_p_o=_a_c_k | _R "/_b_i_n/_r_e_s_e_n_d -_r $(_r_e_p_l_y-_t_o)" + # anything from steve - destroy! + _F_r_o_m _s_t_e_v_e _d_e_s_t_r_o_y _A - + # anything not matched yet - put into mailbox + _d_e_f_a_u_l_t - > ? _m_a_i_l_b_o_x + # always run rcvtty + * - | _R /_m_h/_l_i_b/_r_c_v_t_t_y + + The file is always read completely, so that several matches can be + made and several actions can be taken. The ._m_a_i_l_d_e_l_i_v_e_r_y file must + be owned either by the user or by root, and must be writable only + by the owner. If the ._m_a_i_l_d_e_l_i_v_e_r_y file cannot be found, or does + not perform an action which delivers the message, then the file + /usr/bs/mh-6.8/lib/maildelivery is read according to the same + rules. This file must be owned by the root and must be writable + only by the root. If this file cannot be found or does not perform + an action which delivers the message, then standard delivery to the + user's maildrop is performed. + + + _S_u_b-_p_r_o_c_e_s_s _e_n_v_i_r_o_n_m_e_n_t + + When a process is invoked, its environment is: the user/group-ids + are set to recipient's ids; the working directory is the + recipient's home directory; the umask is 0077; the process has no + /dev/tty; the standard input is set to the message; the standard + output and diagnostic output are set to /dev/null; all other file- + descriptors are closed; the envariables $USER, $HOME, $SHELL are + set appropriately, and no other envariables exist. + + The process is given a certain amount of time to execute. If the + process does not exit within this limit, the process will be ter- + minated with extreme prejudice. The amount of time is calculated + as ((size x 60) + 300) seconds, where size is the number of bytes + in the message. + + The exit status of the process is consulted in determining the suc- + cess of the action. An exit status of zero means that the action + succeeded. Any other exit status (or abnormal termination) means + that the action failed. + + In order to avoid any time limitations, you might implement a pro- + cess that began by _f_o_r_k_i_n_g. The parent would return the appropri- + ate value immediately, and the child could continue on, doing what- + ever it wanted for as long as it wanted. This approach is somewhat + risky if the parent is going to return an exit status of zero. If + the parent is going to return a non-zero exit status, then this + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SLOCAL(1) -119- SLOCAL(1) + + + approach can lead to quicker delivery into your maildrop. + + _F_i_l_e_s + /usr/bs/mh-6.8/lib/mtstailor MH tailor file + $HOME/.maildelivery The file controlling local delivery + /usr/bs/mh-6.8/lib/maildelivery Rather than the standard file + /usr/spool/mail/$USER The default maildrop + + + _S_e_e _A_l_s_o + rcvstore(1), mhook(1), mh-format(5) , maildelivery(5) + + + _D_e_f_a_u_l_t_s + `-noverbose' + `-maildelivery .maildelivery' + `-mailbox /usr/spool/mail/$USER' + `-file' defaults to stdin + `-user' defaults to the current user + + + _C_o_n_t_e_x_t + None + + + _H_i_s_t_o_r_y + _S_l_o_c_a_l is designed to be backward-compatible with the _m_a_i_l_d_e_l_i_v_e_r_y + facility provided by _M_M_D_F-_I_I. Thus, the ._m_a_i_l_d_e_l_i_v_e_r_y file syntax + is limited, as is the functionality of _s_l_o_c_a_l. + + In addition to an exit status of zero, the _M_M_D_F values _R_P__M_O_K (32) + and _R_P__O_K (9) mean that the message has been fully delivered. Any + other non-zero exit status, including abnormal termination, is in- + terpreted as the _M_M_D_F value _R_P__M_E_C_H (200), which means "use an al- + ternate route" (deliver the message to the maildrop). + + + _B_u_g_s + Only two return codes are meaningful, others should be. + + _S_l_o_c_a_l is designed to be backwards-compatible with the _m_a_i_l_d_e_l_i_v_e_r_y + functionality provided by MMDF-II. + + Versions of _M_M_D_F with the _m_a_i_l_d_e_l_i_v_e_r_y mechanism aren't entirely + backwards-compatible with earlier versions of _M_M_D_F. If you have an + _M_M_D_F-_I old-style hook, the best you can do is to have a one-line + ._m_a_i_l_d_e_l_i_v_e_r_y file: + + default - pipe A "bin/rcvmail $(address) $(info) $(sender)" + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SORTM(1) -120- SORTM(1) + + + _N_A_M_E + sortm - sort messages + + _S_Y_N_O_P_S_I_S + sortm [+folder] [msgs] [-datefield field] [-textfield field] + [-notextfield] [-limit days] [-nolimit] [-verbose] + [-noverbose] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _S_o_r_t_m sorts the specified messages in the named folder according to + the chronological order of the "Date:" field of each message. + + The `-verbose' switch directs _s_o_r_t_m to tell the user the general + actions that it is taking to place the folder in sorted order. + + The `-datefield field' switch tells _s_o_r_t_m the name of the field to + use when making the date comparison. If the user has a special + field in each message, such as "BB-Posted:" or "Delivery-Date:", + then the `-datefield' switch can be used to direct _s_o_r_t_m which + field to examine. + + The `-textfield field' switch causes _s_o_r_t_m to sort messages by the + specified text field. If this field is "subject", any leading + "re:" is stripped off. In any case, all characters except letters + and numbers are stripped and the resulting strings are sorted + datefield-major, textfield-minor, using a case insensitive com- + parison. + + With `-textfield field', if `-limit days' is specified, messages + with similar textfields that are dated within `days' of each other + appear together. Specifying `-nolimit' makes the limit infinity. + With `-limit 0', the sort is instead made textfield-major, + date-minor. + + For example, to order a folder by date-major, subject-minor, use: + + sortm -textfield subject +folder + + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + + + _S_e_e _A_l_s_o + folder (1) + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SORTM(1) -121- SORTM(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to all + `-datefield date' + `-notextfield' + `-noverbose' + `-nolimit' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. If the + current message is moved, _s_o_r_t_m will preserve its status as + current. + + + _H_i_s_t_o_r_y + Timezones used to be ignored when comparing dates: they aren't any + more. + + Messages which were in the folder, but not specified by `msgs', + used to be moved to the end of the folder; now such messages are + left untouched. + + Previously, _s_o_r_t_m would try to fill any gaps in a folder within the + range of messages it sorted. To improve performance, _s_o_r_t_m now + minimizes the number of message moves. To pack a folder, use + "_f_o_l_d_e_r -_p_a_c_k" instead. + + + _B_u_g_s + If _s_o_r_t_m encounters a message without a date-field, or if the mes- + sage has a date-field that _s_o_r_t_m cannot parse, then _s_o_r_t_m attempts + to keep the message in the same relative position. This does not + always work. For instance, if the first message encountered lacks + a date which can be parsed, then it will usually be placed at the + end of the messages being sorted. + + When _s_o_r_t_m complains about a message which it can't temporally ord- + er, it complains about the message number _p_r_i_o_r to sorting. It + should indicate what the message number will be _a_f_t_e_r sorting. + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + VMH(1) -122- VMH(1) + + + _N_A_M_E + vmh - visual front-end to MH + + _S_Y_N_O_P_S_I_S + vmh [-prompt string] [-vmhproc program] [-novmhproc] + [switches for _v_m_h_p_r_o_c] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _v_m_h is a program which implements the server side of the _M_H window + management protocol and uses _c_u_r_s_e_s (3) routines to maintain a + split-screen interface to any program which implements the client + side of the protocol. This latter program, called the _v_m_h_p_r_o_c, is + specified using the `-vmhproc program' switch. + + The upshot of all this is that one can run _m_s_h on a display termi- + nal and get a nice visual interface. To do this, for example, just + add the line + + mshproc: vmh + + to your .mh_profile. (This takes advantage of the fact that _m_s_h is + the default _v_m_h_p_r_o_c for _v_m_h.) + + In order to facilitate things, if the `-novmhproc' switch is given, + and _v_m_h can't run on the user's terminal, the _v_m_h_p_r_o_c is run + directly without the window management protocol. + + After initializing the protocol, _v_m_h prompts the user for a command + to be given to the client. Usually, this results in output being + sent to one or more windows. If a output to a window would cause + it to scroll, _v_m_h prompts the user for instructions, roughly per- + mitting the capabilities of _l_e_s_s or _m_o_r_e (e.g., the ability to + scroll backwards and forwards): + + SPACE advance to the next windowful + RETURN * advance to the next line + y * retreat to the previous line + d * advance to the next ten lines + u * retreat to the previous ten lines + g * go to an arbitrary line + (preceed g with the line number) + G * go to the end of the window + (if a line number is given, this acts like `g') + CTRL-L refresh the entire screen + h print a help message + q abort the window + + (A `*' indicates that a numeric prefix is meaningful for this com- + mand.) + + Note that if a command resulted in more than one window's worth of + + [mh.6] MH.6.8 UCI version + + + + + + + + + + VMH(1) -123- VMH(1) + + + information being displayed, and you allow the command which is + generating information for the window to gracefully finish (i.e., + you don't use the `q' command to abort information being sent to + the window), then _v_m_h will give you one last change to peruse the + window. This is useful for scrolling back and forth. Just type + `q' when you're done. + + To abnormally terminate _v_m_h (without core dump), use (usu- + ally CTRL-\). For instance, this does the "right" thing with _b_b_c + and _m_s_h. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + + + _S_e_e _A_l_s_o + msh(1) + + + _D_e_f_a_u_l_t_s + `-prompt (vmh) ' + `-vmhproc msh' + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + The argument to the `-prompt' switch must be interpreted as a sin- + gle token by the shell that invokes _v_m_h. Therefore, one must usu- + ally place the argument to this switch inside double-quotes. + + At present, there is no way to pass signals (e.g., interrupt, quit) + to the client. However, generating QUIT when _v_m_h is reading a com- + mand from the terminal is sufficient to tell the client to go away + quickly. + + Acts strangely (loses peer or botches window management protocol + with peer) on random occasions. + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + WHATNOW(1) -124- WHATNOW(1) + + + _N_A_M_E + whatnow - prompting front-end for send + + _S_Y_N_O_P_S_I_S + whatnow [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [-editor editor] [-noedit] [-prompt string] [file] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _W_h_a_t_n_o_w is the default program that queries the user about the + disposition of a composed draft. It is normally invoked by one of + _c_o_m_p, _d_i_s_t, _f_o_r_w, or _r_e_p_l after the initial edit. + + When started, the editor is started on the draft (unless `-noedit' + is given, in which case the initial edit is suppressed). Then, + _w_h_a_t_n_o_w repetitively prompts the user with "What now?" and awaits a + response. The valid responses are: + + display to list the message being distributed/replied-to on + the terminal + edit to re-edit using the same editor that was used on the + preceding round unless a profile entry + "-next: " names an alternate editor + edit to invoke for further editing + list to list the draft on the terminal + push to send the message in the background + quit to terminate the session and preserve the draft + quit -delete to terminate, then delete the draft + refile +folder to refile the draft into the given folder + send to send the message + send -watch to cause the delivery process to be monitored + whom to list the addresses that the message will go to + whom -check to list the addresses and verify that they are + acceptable to the transport service + + For the edit response, any valid switch to the editor is valid. + Similarly, for the send and whom responses, any valid switch to + _s_e_n_d (1) and _w_h_o_m (1) commands, respectively, are valid. For the + push response, any valid switch to _s_e_n_d (1) is valid (as this + merely invokes _s_e_n_d with the `-push' option). For the _r_e_f_i_l_e + response, any valid switch to the _f_i_l_e_p_r_o_c is valid. For the + display and list responses, any valid argument to the _l_p_r_o_c is + valid. If any non-switch arguments are present, then the pathname + of the draft will be excluded from the argument list given to the + _l_p_r_o_c (this is useful for listing another _M_H message). + + See _m_h-_p_r_o_f_i_l_e (5) for further information about how editors are + used by MH. It also discusses how complex envariables can be used + to direct _w_h_a_t_n_o_w's actions. + + The `-prompt string' switch sets the prompting string for _w_h_a_t_n_o_w. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + WHATNOW(1) -125- WHATNOW(1) + + + The `-draftfolder +folder' and `-draftmessage msg' switches invoke + the _M_H draft folder facility. This is an advanced (and highly use- + ful) feature. Consult the Advanced Features section of the _M_H + manual for more information. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /draft The draft file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Draft-Folder: To find the default draft-folder + Editor: To override the default editor + -next: To name an editor to be used after exit from + + automhnproc: Program to automatically run prior to sending + if the draft is an _m_h_n composition file + fileproc: Program to refile the message + lproc: Program to list the contents of a message + sendproc: Program to use to send the message + whomproc: Program to determine who a message would go to + + + _S_e_e _A_l_s_o + send(1), whom(1) + + + _D_e_f_a_u_l_t_s + `-prompt "What Now? "' + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + WHATNOW(1) -126- WHATNOW(1) + + + _B_u_g_s + The argument to the `-prompt' switch must be interpreted as a sin- + gle token by the shell that invokes _w_h_a_t_n_o_w. Therefore, one must + usually place the argument to this switch inside double-quotes. + + If the initial edit fails, _w_h_a_t_n_o_w deletes your draft (by renaming + it with a leading comma); failure of a later edit preverves the + draft. + + If _w_h_a_t_n_o_w_p_r_o_c is _w_h_a_t_n_o_w, then _c_o_m_p, _d_i_s_t, _f_o_r_w, and _r_e_p_l use a + built-in _w_h_a_t_n_o_w, and do not actually run the _w_h_a_t_n_o_w program. + Hence, if you define your own _w_h_a_t_n_o_w_p_r_o_c, don't call it _w_h_a_t_n_o_w + since it won't be run. + + If _s_e_n_d_p_r_o_c is _s_e_n_d, then _w_h_a_t_n_o_w uses a built-in _s_e_n_d, it does not + actually run the _s_e_n_d program. Hence, if you define your own + _s_e_n_d_p_r_o_c, don't call it _s_e_n_d since _w_h_a_t_n_o_w won't run it. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + WHOM(1) -127- WHOM(1) + + + _N_A_M_E + whom - report to whom a message would go + + _S_Y_N_O_P_S_I_S + whom [-alias aliasfile] [-check] [-nocheck] [-draft] + [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [file] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _W_h_o_m is used to expand the headers of a message into a set of + addresses and optionally verify that those addresses are deliver- + able at that time (if `-check' is given). + + The `-draftfolder +folder' and `-draftmessage msg' switches invoke + the _M_H draft folder facility. This is an advanced (and highly use- + ful) feature. Consult the Advanced Features section of the _M_H + manual for more information. + + The files specified by the profile entry "Aliasfile:" and any addi- + tional alias files given by the `-alias aliasfile' switch will be + read (more than one file, each preceeded by `-alias', can be + named). See _m_h-_a_l_i_a_s (5) for more information. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Draft-Folder: To find the default draft-folder + Aliasfile: For a default alias file + postproc: Program to post the message + + + _S_e_e _A_l_s_o + mh-alias(5), post(8) + + + _D_e_f_a_u_l_t_s + `file' defaults to /draft + `-nocheck' + `-alias /usr/bs/mh-6.8/lib/MailAliases' + + + _C_o_n_t_e_x_t + None + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + WHOM(1) -128- WHOM(1) + + + _B_u_g_s + With the `-check' option, _w_h_o_m makes no guarantees that the ad- + dresses listed as being ok are really deliverable, rather, an ad- + dress being listed as ok means that at the time that _w_h_o_m was run + the address was thought to be deliverable by the transport service. + For local addresses, this is absolute; for network addresses, it + means that the host is known; for uucp addresses, it (often) means + that the _U_U_C_P network is available for use. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + -129- + + + _M_O_R_E _D_E_T_A_I_L_S + + This section describes some of the more intense points of the _M_H + system, by expanding on topics previously discussed. The format + presented conforms to the standard form for the description of UNIX + documentation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MH-ALIAS(5) -130- MH-ALIAS(5) + + + _N_A_M_E + mh-alias - alias file for MH message system + + _S_Y_N_O_P_S_I_S + any _M_H command + + _D_E_S_C_R_I_P_T_I_O_N + + This describes both _M_H personal alias files and the (primary) alias + file for mail delivery, the file + + /usr/bs/mh-6.8/lib/MailAliases + + It does not describe aliases files used by the message transport + system. Each line of the alias file has the format: + + alias : address-group + or + alias ; address-group + or + < alias-file + or + ; comment + + where: + + address-group := address-list + | "<" file + | "=" UNIX-group + | "+" UNIX-group + | "*" + + address-list := address + | address-list, address + + Continuation lines in alias files end with `\' followed by the new- + line character. + + Alias-file and file are UNIX file names. UNIX-group is a group + name (or number) from /_e_t_c/_g_r_o_u_p. An address is a "simple" + Internet-style address. Througout this file, case is ignored, + except for alias-file names. + + If the line starts with a `<', then the file named after the `<' is + read for more alias definitions. The reading is done recursively, + so a `<' may occur in the beginning of an alias file with the + expected results. + + If the address-group starts with a `<', then the file named after + the `<' is read and its contents are added to the address-list for + the alias. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-ALIAS(5) -131- MH-ALIAS(5) + + + If the address-group starts with an `=', then the file /_e_t_c/_g_r_o_u_p + is consulted for the UNIX-group named after the `='. Each login + name occurring as a member of the group is added to the + address-list for the alias. + + In contrast, if the address-group starts with a `+', then the file + /_e_t_c/_g_r_o_u_p is consulted to determine the group-id of the UNIX-group + named after the `+'. Each login name occurring in the /_e_t_c/_p_a_s_s_w_d + file whose group-id is indicated by this group is added to the + address-list for the alias. + + If the address-group is simply `*', then the file /_e_t_c/_p_a_s_s_w_d is + consulted and all login names with a userid greater than some magic + number (usually 200) are added to the address-list for the alias. + + In match, a trailing * on an alias will match just about anything + appropriate. (See example below.) + + An approximation of the way aliases are resolved at posting time is + (it's not really done this way): + + 1) Build a list of all addresses from the message to be + delivered, eliminating duplicate addresses. + + 2) If this draft originated on the local host, then for those + addresses in the message that have no host specified, perform + alias resolution. + + 3) For each line in the alias file, compare "alias" against + all of the existing addresses. If a match, remove the matched + "alias" from the address list, and add each new address in the + address-group to the address list if it is not already on the + list. The alias itself is not usually output, rather the + address-group that the alias maps to is output instead. If + "alias" is terminated with a `;' instead of a `:', then both + the "alias" and the address are output in the correct format. + (This makes replies possible since _M_H aliases and personal + aliases are unknown to the mail transport system.) + + Since the alias file is read line by line, forward references work, + but backward references are not recognized, thus, there is no + recursion. + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-ALIAS(5) -132- MH-ALIAS(5) + + + Example: + " are defined to be "news". + + The key thing to understand about aliasing in _M_H is that aliases in + _M_H alias files are expanded into the headers of messages posted. + This aliasing occurs first, at posting time, without the knowledge + of the message transport system. In contrast, once the message + transport system is given a message to deliver to a list of + addresses, for each address that appears to be local, a system-wide + alias file is consulted. These aliases are NOT expanded into the + headers of messages delivered. + + _H_e_l_p_f_u_l _H_i_n_t_s + + To use aliasing in _M_H quickly, do the following: + + First, in your ._m_h__p_r_o_f_i_l_e, choose a name for your alias file, + say "aliases", and add the line: + + Aliasfile: aliases + + Second, create the file "aliases" in your _M_H directory. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-ALIAS(5) -133- MH-ALIAS(5) + + + Third, start adding aliases to your "aliases" file as + appropriate. + + _F_i_l_e_s + /usr/bs/mh-6.8/lib/MailAliases Primary alias file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Aliasfile: For a default alias file + + + _S_e_e _A_l_s_o + ali(1), send(1), whom(1), group(5), passwd(5), conflict(8), post(8) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + _H_i_s_t_o_r_y + In previous releases of _M_H, only a single, system-wide mh-alias + file was supported. Now that _M_H uses _M_M_D_F as a transport system, + the system-wide aliasing facility can be more consistently con- + trolled by the latter. This means that at most sites, the + system-wide mh-alias file will be empty (or trivial at best). + Hence, the semantics of mh-alias were extended to support personal + alias files. Users of _M_H no longer need to bother mail-system ad- + ministrators for keeping information in the system-wide alias file, + as each _M_H user can create/modify/remove aliases at will from any + number of personal files. + + + _B_u_g_s + Although the forward-referencing semantics of _m_h-_a_l_i_a_s files + prevent recursion, the "< alias-file" command may defeat this. + Since the number of file descriptors is finite (and very limited), + such infinite recursion will terminate with a meaningless diagnos- + tic when all the fds are used up. + + Forward references do not work correctly inside blind lists. + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-FORMAT(5) -134- MH-FORMAT(5) + + + _N_A_M_E + mh-format - format file for MH message system + + _S_Y_N_O_P_S_I_S + some _M_H commands + + _D_E_S_C_R_I_P_T_I_O_N + + Several _M_H commands utilize either a _f_o_r_m_a_t string or a _f_o_r_m_a_t file + during their execution. For example, _s_c_a_n (1) uses a format string + which directs it how to generate the scan listing for each message; + _r_e_p_l (1) uses a format file which directs it how to generate the + reply to a message, and so on. + + Format strings are designed to be efficiently parsed by _M_H which + means they are not necessarily simple to write and understand. + This means that novice, casual, or even advanced users of _M_H should + not have to deal with them. Some canned scan listing formats are + in /usr/bs/mh-6.8/lib/scan.time, /usr/bs/mh-6.8/lib/scan.size, and + /usr/bs/mh-6.8/lib/scan.timely. Look in /usr/bs/mh-6.8/lib for + other _s_c_a_n and _r_e_p_l format files which may have been written at + your site. + + It suffices to have your local _M_H expert actually write new format + commands or modify existing ones. This manual section explains how + to do that. Note: familiarity with the C _p_r_i_n_t_f routine is + assumed. + + A format string consists of ordinary text, and special multi- + character _e_s_c_a_p_e sequences which begin with `%'. When specifying a + format string, the usual C backslash characters are honored: `\b', + `\f', `\n', `\r', and `\t'. Continuation lines in format files end + with `\' followed by the newline character. There are three types + of _e_s_c_a_p_e sequences: header _c_o_m_p_o_n_e_n_t_s, built-in _f_u_n_c_t_i_o_n_s, and + flow _c_o_n_t_r_o_l. + + A _c_o_m_p_o_n_e_n_t escape is specified as `%{_c_o_m_p_o_n_e_n_t}', and exists for + each header found in the message being processed. For example + `%{date}' refers to the "Date:" field of the appropriate message. + All component escapes have a string value. Normally, component + values are compressed by converting any control characters (tab and + newline included) to spaces, then eliding any leading or multiple + spaces. However, commands may give different interpretations to + some component escapes; be sure to refer to each command's manual + entry for complete details. + + A _f_u_n_c_t_i_o_n escape is specified as `%(_f_u_n_c_t_i_o_n)'. All functions are + built-in, and most have a string or numeric value. + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-FORMAT(5) -135- MH-FORMAT(5) + + + _C_o_n_t_r_o_l-_f_l_o_w _e_s_c_a_p_e_s + + A _c_o_n_t_r_o_l escape is one of: `%<', `%?', `%|', or `%>'. These are + combined into the conditional execution construct: + + % + + Extra white space is shown here only for clarity. These constructs + may be nested without ambiguity. They form a general + if-elseif-else-endif block where only one of the _f_o_r_m_a_t _t_e_x_t seg- + ments is interpreted. + + The `%<' and `%?' control escapes causes a condition to be + evaluated. This condition may be either a _c_o_m_p_o_n_e_n_t or a _f_u_n_c_t_i_o_n. + The four constructs have the following syntax: + + %<{component} + %<(function) + %?{component} + %?(function) + + These control escapes test whether the function or component value + is non-zero (for integer-valued escapes), or non-empty (for + string-valued escapes). + + If this test evaulates true, then the format text up to the next + corresponding control escape (one of `%|', `%?', or `%>') is inter- + preted normally. Next, all format text (if any) up to the + corresponding `%>' control escape is skipped. The `%>' control + escape is not interpreted; normal interpretation resumes after the + `%>' escape. + + If the test evaluates false, however, then the format text up to + the next corresponding control escape (again, one of `%|', `%?', or + `%>') is skipped, instead of being interpreted. If the control + escape encountered was `%?', then the condition associated with + that control escape is evaluated, and interpretation proceeds after + that test as described in the previous paragraph. If the control + escape encountered was `%|', then the format text up to the + corresponding `%>' escape is interpreted normally. As above, the + `%>' escape is not interpreted and normal interpretation resumes + after the `%>' escape. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-FORMAT(5) -136- MH-FORMAT(5) + + + The `%?' control escape and its following format text is optional, + and may be included zero or more times. The `%|' control escape + and its following format text is also optional, and may be included + zero or one times. + + + _F_u_n_c_t_i_o_n _e_s_c_a_p_e_s + + Most functions expect an argument of a particular type: + + _A_r_g_u_m_e_n_t _D_e_s_c_r_i_p_t_i_o_n _E_x_a_m_p_l_e _S_y_n_t_a_x + literal A literal number, %(_f_u_n_c 1234) + or string %(_f_u_n_c text string) + comp Any header component %(_f_u_n_c{_i_n-_r_e_p_l_y-_t_o}) + date A date component %(_f_u_n_c{_d_a_t_e}) + addr An address component %(_f_u_n_c{_f_r_o_m}) + expr An optional component, %(_f_u_n_c(_f_u_n_c_2)) + function or control, %(_f_u_n_c %<{_r_e_p_l_y-_t_o}%|%{_f_r_o_m}%>) + perhaps nested %(_f_u_n_c(_f_u_n_c_2{_c_o_m_p})) + + The types _d_a_t_e and _a_d_d_r have the same syntax as _c_o_m_p, but require + that the header component be a date string, or address string, + respectively. + + All arguments except those of type _e_x_p_r are required. For the _e_x_p_r + argument type, the leading `%' must be omitted for component and + function escape arguments, and must be present (with a leading + space) for control escape arguments. + + The evaluation of format strings is based on a simple machine with + an integer register _n_u_m, and a text string register _s_t_r. When a + function escape is processed, if it accepts an optional _e_x_p_r argu- + ment which is not present, it reads the current value of either _n_u_m + or _s_t_r as appropriate. + + + _R_e_t_u_r_n _v_a_l_u_e_s + + Component escapes write the value of their message header in _s_t_r. + Function escapes write their return value in _n_u_m for functions + returning _i_n_t_e_g_e_r or _b_o_o_l_e_a_n values, and in _s_t_r for functions + returning string values. (The _b_o_o_l_e_a_n type is a subset of integers + with usual values 0=false and 1=true.) Control escapes return a + _b_o_o_l_e_a_n value, and set _n_u_m. + + All component escapes, and those function escapes which return an + _i_n_t_e_g_e_r or _s_t_r_i_n_g value, pass this value back to their caller in + addition to setting _s_t_r or _n_u_m. These escapes will print out this + value unless called as part of an argument to another escape + sequence. Escapes which return a _b_o_o_l_e_a_n value do pass this value + back to their caller in _n_u_m, but will never print out the value. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-FORMAT(5) -137- MH-FORMAT(5) + + + _F_u_n_c_t_i_o_n _A_r_g_u_m_e_n_t _R_e_t_u_r_n _D_e_s_c_r_i_p_t_i_o_n + msg integer message number + cur integer message is current + size integer size of message + strlen integer length of _s_t_r + width integer output buffer size in bytes + charleft integer bytes left in output buffer + timenow integer seconds since the UNIX epoch + me string the user's mailbox + eq literal boolean _n_u_m == _a_r_g + ne literal boolean _n_u_m != _a_r_g + gt literal boolean _n_u_m > _a_r_g + match literal boolean _s_t_r contains _a_r_g + amatch literal boolean _s_t_r starts with _a_r_g + plus literal integer _a_r_g plus _n_u_m + minus literal integer _a_r_g minus _n_u_m + divide literal integer _n_u_m divided by _a_r_g + modulo literal integer _n_u_m modulo _a_r_g + num literal integer Set _n_u_m to _a_r_g + lit literal string Set _s_t_r to _a_r_g + getenv literal string Set _s_t_r to environment value of _a_r_g + nonzero expr boolean _n_u_m is non-zero + zero expr boolean _n_u_m is zero + null expr boolean _s_t_r is empty + nonnull expr boolean _s_t_r is non-empty + void expr Set _s_t_r or _n_u_m + comp comp string Set _s_t_r to component text + compval comp integer _n_u_m set to "atoi(_c_o_m_p)" + trim expr trim trailing white-space from _s_t_r + putstr expr print _s_t_r + putstrf expr print _s_t_r in a fixed width + putnum expr print _n_u_m + putnumf expr print _n_u_m in a fixed width + + These functions require a date component as an argument: + + _F_u_n_c_t_i_o_n _A_r_g_u_m_e_n_t _R_e_t_u_r_n _D_e_s_c_r_i_p_t_i_o_n + sec date integer seconds of the minute + min date integer minutes of the hour + hour date integer hours of the day (0-23) + wday date integer day of the week (Sun=0) + day date string day of the week (abbrev.) + weekday date string day of the week + sday date integer day of the week known? + (0=implicit,-1=unknown) + mday date integer day of the month + yday date integer day of the year + mon date integer month of the year + month date string month of the year (abbrev.) + lmonth date string month of the year + year date integer year (may be > 100) + zone date integer timezone in hours + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-FORMAT(5) -138- MH-FORMAT(5) + + + tzone date string timezone string + szone date integer timezone explicit? + (0=implicit,-1=unknown) + date2local date coerce date to local timezone + date2gmt date coerce date to GMT + dst date integer daylight savings in effect? + clock date integer seconds since the UNIX epoch + rclock date integer seconds prior to current time + tws date string official 822 rendering + pretty date string user-friendly rendering + nodate date integer _s_t_r not a date string + + These functions require an address component as an argument. The + return value of functions noted with `*' pertain only to the first + address present in the header component. + + _F_u_n_c_t_i_o_n _A_r_g_u_m_e_n_t _R_e_t_u_r_n _D_e_s_c_r_i_p_t_i_o_n + proper addr string official 822 rendering + friendly addr string user-friendly rendering + addr addr string mbox@host or host!mbox rendering* + pers addr string the personal name* + note addr string commentary text* + mbox addr string the local mailbox* + mymbox addr integer the user's addresses? (0=no,1=yes) + host addr string the host domain* + nohost addr integer no host was present* + type addr integer host type* (0=local,1=network, + -1=uucp,2=unknown) + path addr string any leading host route* + ingrp addr integer address was inside a group* + gname addr string name of group* + formataddr expr append _a_r_g to _s_t_r as a + (comma separated) address list + putaddr literal print _s_t_r address list with + _a_r_g as optional label; + get line width from _n_u_m + + When escapes are nested, evaluation is done from inner-most to + outer-most. The outer-most escape must begin with `%'; the inner + escapes must not. For example, + + %<(mymbox{from}) To: %{to}%> + + writes the value of the header component "From:" to _s_t_r; then (_m_y_m_- + _b_o_x) reads _s_t_r and writes its result to _n_u_m; then the control + escape evaluates _n_u_m. If _n_u_m is non-zero, the string "To: " is + printed followed by the value of the header component "To:". + + A minor explanation of (_m_y_m_b_o_x{_c_o_m_p}) is in order. In general, it + checks each of the addresses in the header component "_c_o_m_p" against + the user's mailbox name and any _A_l_t_e_r_n_a_t_e-_M_a_i_l_b_o_x_e_s. It returns + true if any address matches, however, it also returns true if the + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-FORMAT(5) -139- MH-FORMAT(5) + + + "_c_o_m_p" header is not present in the message. If needed, the (_n_u_l_l) + function can be used to explicitly test for this condition. + + When a function or component escape is interpreted and the result + will be immediately printed, an optional field width can be speci- + fied to print the field in exactly a given number of characters. + For example, a numeric escape like %4(_s_i_z_e) will print at most 4 + digits of the message size; overflow will be indicated by a `?' in + the first position (like `?234'). A string escape like %4(_m_e) will + print the first 4 characters and truncate at the end. Short fields + are padded at the right with the fill character (normally, a + blank). If the field width argument begins with a leading zero, + then the fill character is set to a zero. + + As above, the functions (_p_u_t_n_u_m_f) and (_p_u_t_s_t_r_f) print their result + in exactly the number of characters specified by their leading + field width argument. For example, %06(_p_u_t_n_u_m_f(_s_i_z_e)) will print + the message size in a field six characters wide filled with leading + zeros; %14(_p_u_t_s_t_r_f{_f_r_o_m}) will print the "From:" header component + in fourteen characters with trailing spaces added as needed. For + _p_u_t_s_t_r_f, using a negative value for the field width causes right- + justification of the string within the field, with padding on the + left up to the field width. The functions (_p_u_t_n_u_m) and (_p_u_t_s_t_r) + print their result in the minimum number of characters required, + and ignore any leading field width argument. + + The available output width is kept in an internal register; any + output past this width will be truncated. + + Comments may be inserted in most places where a function argument + is not expected. A comment begins with `%;' and ends with a (non- + escaped) newline. + + With all this in mind, here's the default format string for _s_c_a_n. + It's been divided into several pieces for readability. The first + part is: + + %4(msg)%<(cur)+%| %>%<{replied}-%?{encrypted}E%| %> + + which says that the message number should be printed in four + digits, if the message is the current message then a `+' else a + space should be printed, and if a "Replied:" field is present then + a `-' else if an "Encrypted:" field is present then an `E' other- + wise a space should be printed. Next: + + %02(mon{date})/%02(mday{date}) + + the month and date are printed in two digits (zero filled) + separated by a slash. Next, + + %<{date} %|*> + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-FORMAT(5) -140- MH-FORMAT(5) + + + If a "Date:" field was present, then a space is printed, otherwise + a `*'. Next, + + %<(mymbox{from})%<{to}To:%14(friendly{to})%>%> + + if the message is from me, and there is a "To:" header, print `To:' + followed by a "user-friendly" rendering of the first address in the + "To:" field. Continuing, + + %<(zero)%17(friendly{from})%> + + if either of the above two tests failed, then the "From:" address + is printed in a "user-friendly" format. And finally, + + %{subject}%<{body}<<%{body}%> + + the subject and initial body (if any) are printed. + + For a more complicated example, next consider the default _r_e_p_l_c_o_m_p_s + format file. + + %(lit)%(formataddr %<{reply-to} + + This clears _s_t_r and formats the "Reply-To:" header if present. If + not present, the else-if clause is executed. + + %?{from}%?{sender}%?{return-path}%>)\ + + This formats the "From:", "Sender:" and "Return-Path:" headers, + stopping as soon as one of them is present. Next: + + %<(nonnull)%(void(width))%(putaddr To: )\n%>\ + + If the _f_o_r_m_a_t_a_d_d_r result is non-null, it is printed as an address + (with line folding if needed) in a field _w_i_d_t_h wide with a leading + label of "To: ". + + %(lit)%(formataddr{to})%(formataddr{cc})%(formataddr(me))\ + + _s_t_r is cleared, and the "To:" and "Cc:" headers, along with the + user's address (depending on what was specified with the "-cc" + switch to _r_e_p_l) are formatted. + + %<(nonnull)%(void(width))%(putaddr cc: )\n%>\ + + If the result is non-null, it is printed as above with a leading + label of "cc: ". + + %<{fcc}Fcc: %{fcc}\n%>\ + + If a "-fcc folder" switch was given to _r_e_p_l (see _r_e_p_l (1) for more + details about %{_f_c_c}), an "Fcc:" header is output. + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-FORMAT(5) -141- MH-FORMAT(5) + + + %<{subject}Subject: Re: %{subject}\n%>\ + + If a subject component was present, a suitable reply subject is + output. + + %<{date}In-reply-to: Your message of "\ + %<(nodate{date})%{date}%|%(pretty{date})%>."%<{message-id} + %{message-id}%>\n%>\ + -------- + + If a date component was present, an "In-Reply-To:" header is output + with the preface "Your message of ". If the date was parseable, it + is output in a user-friendly format, otherwise it is output as-is. + The message-id is included if present. As with all plain-text, the + row of dashes are output as-is. + + This last part is a good example for a little more elaboration. + Here's that part again in pseudo-code: + + if (comp_exists(date)) then + print ("In-reply-to: Your message of \"") + if (not_date_string(date.value) then + print (date.value) + else + print (pretty(date.value)) + endif + print ("\"") + if (comp_exists(message-id)) then + print ("\n\t") + print (message-id.value) + endif + print ("\n") + endif + + Although this seems complicated, in point of fact, this method is + flexible enough to extract individual fields and print them in any + format the user desires. + + _F_i_l_e_s + None + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + scan(1), repl(1), ap(8), dp(8) + + + _D_e_f_a_u_l_t_s + None + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-FORMAT(5) -142- MH-FORMAT(5) + + + _C_o_n_t_e_x_t + None + + + _H_i_s_t_o_r_y + This software was contributed for MH 6.3. Prior to this, output + format specifications were much easier to write, but considerably + less flexible. + + + _B_u_g_s + On hosts where _M_H was configured with the BERK option, address + parsing is not enabled. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-MAIL(5) -143- MH-MAIL(5) + + + _N_A_M_E + mh-mail - message format for MH message system + + _S_Y_N_O_P_S_I_S + any _M_H command + + _D_E_S_C_R_I_P_T_I_O_N + + _M_H processes messages in a particular format. It should be noted + that although neither Bell nor Berkeley mailers produce message + files in the format that _M_H prefers, _M_H can read message files in + that antiquated format. + + Each user possesses a mail drop box which initially receives all + messages processed by _p_o_s_t (8). _I_n_c (1) will read from that drop + box and incorporate the new messages found there into the user's + own mail folders (typically `+inbox'). The mail drop box consists + of one or more messages. To facilitate the separation of messages, + each message begins and ends with a line consisting of nothing but + four CTRL-A (octal 001) characters. + + Messages are expected to consist of lines of text. Graphics and + binary data are not handled. No data compression is accepted. All + text is clear ASCII 7-bit data. + + The general "memo" framework of RFC-822 is used. A message con- + sists of a block of information in a rigid format, followed by gen- + eral text with no specified format. The rigidly formatted first + part of a message is called the header, and the free-format portion + is called the body. The header must always exist, but the body is + optional. These parts are separated by an empty line, i.e., two + consecutive newline characters. Within _M_H, the header and body may + be separated by a line consisting of dashes: + + To: + cc: + Subject: + -------- + + The header is composed of one or more header items. Each header + item can be viewed as a single logical line of ASCII characters. + If the text of a header item extends across several real lines, the + continuation lines are indicated by leading spaces or tabs. + + Each header item is called a component and is composed of a keyword + or name, along with associated text. The keyword begins at the + left margin, may NOT contain spaces or tabs, may not exceed 63 + characters (as specified by RFC-822), and is terminated by a colon + (`:'). Certain components (as identified by their keywords) must + follow rigidly defined formats in their text portions. + + The text for most formatted components (e.g., "Date:" and + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-MAIL(5) -144- MH-MAIL(5) + + + "Message-Id:") is produced automatically. The only ones entered by + the user are address fields such as "To:", "cc:", etc. Internet + addresses are assigned mailbox names and host computer specifica- + tions. The rough format is "local@domain", such as "MH@UCI", or + "MH@UCI-ICSA.ARPA". Multiple addresses are separated by commas. A + missing host/domain is assumed to be the local host/domain. + + As mentioned above, a blank line (or a line of dashes) signals that + all following text up to the end of the file is the body. No for- + matting is expected or enforced within the body. + + Following is a list of header components that are considered mean- + ingful to various MH programs. + Date: + Added by _p_o_s_t (8), contains date and time of the message's + entry into the transport system. + + From: + Added by _p_o_s_t (8), contains the address of the author or + authors (may be more than one if a "Sender:" field is + present). Replies are typically directed to addresses in the + "Reply-To:" or "From:" field (the former has precedence if + present). + + Sender: + Added by _p_o_s_t (8) in the event that the message already has a + "From:" line. This line contains the address of the actual + sender. Replies are never sent to addresses in the "Sender:" + field. + + To: + Contains addresses of primary recipients. + + cc: + Contains addresses of secondary recipients. + + Bcc: + Still more recipients. However, the "Bcc:" line is not copied + onto the message as delivered, so these recipients are not + listed. _M_H uses an encapsulation method for blind copies, see + _s_e_n_d (1). + + Fcc: + Causes _p_o_s_t (8) to copy the message into the specified folder + for the sender, if the message was successfully given to the + transport system. + + Message-ID: + A unique message identifier added by _p_o_s_t (8) if the `-msgid' + flag is set. + + Subject: + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-MAIL(5) -145- MH-MAIL(5) + + + Sender's commentary. It is displayed by _s_c_a_n (1). + + In-Reply-To: + A commentary line added by _r_e_p_l (1) when replying to a mes- + sage. + + Resent-Date: + Added when redistributing a message by _p_o_s_t (8). + + Resent-From: + Added when redistributing a message by _p_o_s_t (8). + + Resent-To: + New recipients for a message resent by _d_i_s_t (1). + + Resent-cc: + Still more recipients. See "cc:" and "Resent-To:". + + Resent-Bcc: + Even more recipients. See "Bcc:" and "Resent-To:". + + Resent-Fcc: + Copy resent message into a folder. See "Fcc:" and + "Resent-To:". + + Resent-Message-Id: + A unique identifier glued on by _p_o_s_t (8) if the `-msgid' flag + is set. See "Message-Id:" and "Resent-To:". + + Resent: + Annotation for _d_i_s_t (1) under the `-annotate' option. + + Forwarded: + Annotation for _f_o_r_w (1) under the `-annotate' option. + + Replied: + Annotation for _r_e_p_l (1) under the `-annotate' option. + + + _F_i_l_e_s + /usr/spool/mail/$USER Location of mail drop + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + _S_t_a_n_d_a_r_d _f_o_r _t_h_e _F_o_r_m_a_t _o_f _A_R_P_A _I_n_t_e_r_n_e_t _T_e_x_t _M_e_s_s_a_g_e_s (aka + RFC-822) + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-MAIL(5) -146- MH-MAIL(5) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-PROFILE(5) -147- MH-PROFILE(5) + + + _N_A_M_E + mh-profile - user profile customization for MH message handler + + _S_Y_N_O_P_S_I_S + ._m_h__p_r_o_f_i_l_e + + _D_E_S_C_R_I_P_T_I_O_N + + Each user of _M_H is expected to have a file named ._m_h__p_r_o_f_i_l_e in his + or her home directory. This file contains a set of user parameters + used by some or all of the _M_H family of programs. Each line of the + file is of the format + + _p_r_o_f_i_l_e-_c_o_m_p_o_n_e_n_t: _v_a_l_u_e + + The possible profile components are exemplified below. Only + `Path:' is mandatory. The others are optional; some have default + values if they are not present. In the notation used below, (pro- + file, default) indicates whether the information is kept in the + user's _M_H profile or _M_H context, and indicates what the default + value is. + + Path: Mail + Locates _M_H transactions in directory "Mail". (profile, + no default) + + context: context + Declares the location of the _M_H context file, see the + HISTORY section below. (profile, default: + /context) + + Current-Folder: inbox + Keeps track of the current open folder. (context, + default: folder specified by "Inbox") + + Inbox: inbox + Defines the name of your inbox. (profile, default: + inbox) + + Previous-Sequence: pseq + Names the sequences which should be defined as the `msgs' + or `msg' argument given to the program. If not present, + or empty, no sequences are defined. Otherwise, for each + name given, the sequence is first zero'd and then each + message is added to the sequence. (profile, no default) + + Sequence-Negation: not + Defines the string which, when prefixed to a sequence + name, negates that sequence. Hence, "notseen" means all + those messages that are not a member of the sequence + "seen". (profile, no default) + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-PROFILE(5) -148- MH-PROFILE(5) + + + Unseen-Sequence: unseen + Names the sequences which should be defined as those mes- + sages recently incorporated by _i_n_c. _S_h_o_w knows to remove + messages from this sequence once it thinks they have been + seen. If not present, or empty, no sequences are + defined. Otherwise, each message is added to each + sequence name given. (profile, no default) + + mh-sequences: .mh_sequences + The name of the file in each folder which defines public + sequences. To disable the use of public sequences, leave + the value portion of this entry blank. (profile, + default: .mh_sequences) + + atr-_s_e_q-_f_o_l_d_e_r: 172 178-181 212 + Keeps track of the private sequence called _s_e_q in the + specified folder. (context, no default) + + Editor: /usr/ucb/ex + Defines editor to be used by _c_o_m_p (1), _d_i_s_t (1), + _f_o_r_w (1), and _r_e_p_l (1). (profile, default: prompter) + + Msg-Protect: 644 + Defines octal protection bits for message files. See + _c_h_m_o_d (1) for an explanation of the octal number. (pro- + file, default: 0644) + + Folder-Protect: 711 + Defines protection bits for folder directories. (pro- + file, default: 0711) + + _p_r_o_g_r_a_m: default switches + Sets default switches to be used whenever the mh program + _p_r_o_g_r_a_m is invoked. For example, one could override the + _E_d_i_t_o_r: profile component when replying to messages by + adding a component such as: + repl: -editor /bin/ed + (profile, no defaults) + + _l_a_s_t_e_d_i_t_o_r-next: nexteditor + Names "nexteditor" to be the default editor after using + "lasteditor". This takes effect at "What now?" level in + _c_o_m_p, _d_i_s_t, _f_o_r_w, and _r_e_p_l. After editing the draft with + "lasteditor", the default editor is set to be "nextedi- + tor". If the user types "edit" without any arguments to + "What now?", then "nexteditor" is used. (profile, no + default) + + bboards: system + Tells _b_b_c which BBoards you are interested in. (profile, + default: system) + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-PROFILE(5) -149- MH-PROFILE(5) + + + Folder-Stack: _f_o_l_d_e_r_s + The contents of the folder-stack for the _f_o_l_d_e_r command. + (context, no default) + + mhe: + If present, tells _i_n_c to compose an _M_H_E auditfile in + addition to its other tasks. _M_H_E is Brian Reid's _E_m_a_c_s + front-end for _M_H. An early version is supplied with the + _m_h._6 distribution. (profile, no default) + + Alternate-Mailboxes: mh@uci-750a, bug-mh* + Tells _r_e_p_l and _s_c_a_n which addresses are really yours. In + this way, _r_e_p_l knows which addresses should be included + in the reply, and _s_c_a_n knows if the message really ori- + ginated from you. Addresses must be separated by a + comma, and the hostnames listed should be the "official" + hostnames for the mailboxes you indicate, as local nick- + names for hosts are not replaced with their official site + names. For each address, if a host is not given, then + that address on any host is considered to be you. In + addition, an asterisk (`*') may appear at either or both + ends of the mailbox and host to indicate wild-card match- + ing. (profile, default: your user-id) + + Aliasfile: aliases other-alias + Indicates aliases files for _a_l_i, _w_h_o_m, and _s_e_n_d. This + may be used instead of the `-alias file' switch. (pro- + file, no default) + + Draft-Folder: drafts + Indicates a default draft folder for _c_o_m_p, _d_i_s_t, _f_o_r_w, + and _r_e_p_l. (profile, no default) + + digest-issue-_l_i_s_t: 1 + Tells _f_o_r_w the last issue of the last volume sent for the + digest _l_i_s_t. (context, no default) + + digest-volume-_l_i_s_t: 1 + Tells _f_o_r_w the last volume sent for the digest _l_i_s_t. + (context, no default) + + MailDrop: .mail + Tells _i_n_c your maildrop, if different from the default. + This is superceded by the MAILDROP envariable. (profile, + default: /usr/spool/mail/$USER) + + Signature: RAND MH System (agent: Marshall Rose) + Tells _s_e_n_d your mail signature. This is superceded by + the SIGNATURE envariable. On hosts where _M_H was config- + ured with the UCI option, if SIGNATURE is not set and + this profile entry is not present, the file + $HOME/.signature is consulted. Your signature will be + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-PROFILE(5) -150- MH-PROFILE(5) + + + added to the address _s_e_n_d puts in the "From:" header; do + not include an address in the signature text. (profile, + no default) + + The following profile elements are used whenever an _M_H program + invokes some other program such as _m_o_r_e (1). The ._m_h__p_r_o_f_i_l_e can + be used to select alternate programs if the user wishes. The + default values are given in the examples. + + fileproc: /usr/bs/mh-6.8/bin/refile + incproc: /usr/bs/mh-6.8/bin/inc + installproc: /usr/bs/mh-6.8/lib/install-mh + lproc: /usr/ucb/more + mailproc: /usr/bs/mh-6.8/bin/mhmail + mhlproc: /usr/bs/mh-6.8/lib/mhl + moreproc: /usr/ucb/more + mshproc: /usr/bs/mh-6.8/bin/msh + packproc: /usr/bs/mh-6.8/bin/packf + postproc: /usr/bs/mh-6.8/lib/post + rmmproc: none + rmfproc: /usr/bs/mh-6.8/bin/rmf + sendproc: /usr/bs/mh-6.8/bin/send + showproc: /usr/ucb/more + whatnowproc: /usr/bs/mh-6.8/bin/whatnow + whomproc: /usr/bs/mh-6.8/bin/whom + + If you define the envariable MH, you can specify a profile other + than ._m_h__p_r_o_f_i_l_e to be read by the _M_H programs that you invoke. If + the value of MH is not absolute, (i.e., does not begin with a / ), + it will be presumed to start from the current working directory. + This is one of the very few exceptions in _M_H where non-absolute + pathnames are not considered relative to the user's _M_H directory. + + Similarly, if you define the envariable MHCONTEXT, you can specify + a context other than the normal context file (as specified in the + _M_H profile). As always, unless the value of MHCONTEXT is absolute, + it will be presumed to start from your _M_H directory. + + _M_H programs also support other envariables: + + MAILDROP : tells _i_n_c the default maildrop + This supercedes the "MailDrop:" profile entry. + + SIGNATURE : tells _s_e_n_d and _p_o_s_t your mail signature + This supercedes the "Signature:" profile entry. + + HOME : tells all _M_H programs your home directory + + SHELL : tells _b_b_l the default shell to run + + TERM : tells _M_H your terminal type + The TERMCAP envariable is also consulted. In particular, + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-PROFILE(5) -151- MH-PROFILE(5) + + + these tell _s_c_a_n and _m_h_l how to clear your terminal, and how + many columns wide your terminal is. They also tell _m_h_l how + many lines long your terminal screen is. + + editalt : the alternate message + This is set by _d_i_s_t and _r_e_p_l during edit sessions so you can + peruse the message being distributed or replied to. The mes- + sage is also available through a link called "@" in the + current directory if your current working directory and the + folder the message lives in are on the same UNIX filesystem. + + mhdraft : the path to the working draft + This is set by _c_o_m_p, _d_i_s_t, _f_o_r_w, and _r_e_p_l to tell the _w_h_a_t_- + _n_o_w_p_r_o_c which file to ask "What now?" questions about. In + addition, _d_i_s_t, _f_o_r_w, and _r_e_p_l set mhfolder if appropriate. + Further, _d_i_s_t and _r_e_p_l set mhaltmsg to tell the _w_h_a_t_n_o_w_p_r_o_c + about an alternate message associated with the draft (the mes- + sage being distributed or replied to), and _d_i_s_t sets mhdist to + tell the _w_h_a_t_n_o_w_p_r_o_c that message re-distribution is occur- + ring. Also, mheditor is set to tell the _w_h_a_t_n_o_w_p_r_o_c the + user's choice of editor (unless overridden by `-noedit'). + Similarly, mhuse may be set by _c_o_m_p. Finally, mhmessages is + set by _d_i_s_t, _f_o_r_w, and _r_e_p_l if annotations are to occur (along + with mhannotate, and mhinplace). It's amazing all the infor- + mation that has to get passed via envariables to make the + "What now?" interface look squeaky clean to the _M_H user, isn't + it? The reason for all this is that the _M_H user can select + _a_n_y program as the _w_h_a_t_n_o_w_p_r_o_c, including one of the standard + shells. As a result, it's not possible to pass information + via an argument list. + If the WHATNOW option was set during _M_H configuration (type + `-help' to an _M_H command to find out), and if this envariable + is set, if the commands _r_e_f_i_l_e, _s_e_n_d, _s_h_o_w, or _w_h_o_m are not + given any `msgs' arguments, then they will default to using + the file indicated by mhdraft. This is useful for getting the + default behavior supplied by the default _w_h_a_t_n_o_w_p_r_o_c. + + mhfolder : the folder containing the alternate message + This is set by _d_i_s_t and _r_e_p_l during edit sessions so you can + peruse other messages in the current folder besides the one + being distributed or replied to. The mhfolder envariable is + also set by _s_h_o_w, _p_r_e_v, and _n_e_x_t for use by _m_h_l. + + MHBBRC : + If you define the envariable MHBBRC, you can specify a BBoards + information file other than ._b_b_r_c to be read by _b_b_c. If the + value of MHBBRC is not absolute, (i.e., does not begin with a + / ), it will be presumed to start from the current working + directory. + + MHFD : + If the OVERHEAD option was set during _M_H configuration (type + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-PROFILE(5) -152- MH-PROFILE(5) + + + `-help' to an _M_H command to find out), then if this envariable + is set, _M_H considers it to be the number of a file descriptor + which is opened, read-only to the _M_H profile. Similarly, if + the envariable MHCONTEXTFD is set, this is the number of a + file descriptor which is opened read-only to the _M_H context. + This feature of _M_H is experimental, and is used to examine + possible speed improvements for _M_H startup. Note that these + envariables must be set and non-empty to enable this feature. + However, if OVERHEAD is enabled during _M_H configuration, then + when _M_H programs call other _M_H programs, this scheme is used. + These file descriptors are not closed throughout the execution + of the _M_H program, so children may take advantage of this. + This approach is thought to be completely safe and does result + in some performance enhancements. + + + _F_i_l_e_s + $HOME/.mh_profile The user profile + or $MH Rather than the standard profile + /context The user context + or $CONTEXT Rather than the standard context + /.mh_sequences Public sequences for + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + All + + + _S_e_e _A_l_s_o + mh(1), environ(5), mh-sequence(5) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + All + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-PROFILE(5) -153- MH-PROFILE(5) + + + _H_i_s_t_o_r_y + In previous versions of _M_H, the current-message value of a writable + folder was kept in a file called "cur" in the folder itself. In + _m_h._3, the ._m_h__p_r_o_f_i_l_e contained the current-message values for all + folders, regardless of their writability. + + In all versions of _M_H since _m_h._4, the ._m_h__p_r_o_f_i_l_e contains only + static information, which _M_H programs will NOT update. Changes in + context are made to the _c_o_n_t_e_x_t file kept in the users MH _d_i_r_e_c_t_o- + _r_y. This includes, but is not limited to: the "Current-Folder" en- + try and all private sequence information. Public sequence informa- + tion is kept in a file called ._m_h__s_e_q_u_e_n_c_e_s in each folder. + + To convert from the format used in releases of _M_H prior to the for- + mat used in the _m_h._4 release, _i_n_s_t_a_l_l-_m_h should be invoked with the + `-compat' switch. This generally happens automatically on _M_H sys- + tems generated with the "COMPAT" option during _M_H configuration. + + The ._m_h__p_r_o_f_i_l_e may override the path of the _c_o_n_t_e_x_t file, by + specifying a "context" entry (this must be in lower-case). If the + entry is not absolute (does not start with a / ), then it is inter- + preted relative to the user's _M_H directory. As a result, you can + actually have more than one set of private sequences by using dif- + ferent context files. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-PROFILE(5) -154- MH-PROFILE(5) + + + _B_u_g_s + The shell quoting conventions are not available in the .mh_profile. + Each token is separated by whitespace. + + There is some question as to what kind of arguments should be + placed in the profile as options. In order to provide a clear + answer, recall command line semantics of all _M_H programs: conflict- + ing switches (e.g., `-header and `-noheader') may occur more than + one time on the command line, with the last switch taking effect. + Other arguments, such as message sequences, filenames and folders, + are always remembered on the invocation line and are not superseded + by following arguments of the same type. Hence, it is safe to + place only switches (and their arguments) in the profile. + + If one finds that an _M_H program is being invoked again and again + with the same arguments, and those arguments aren't switches, then + there are a few possible solutions to this problem. The first is + to create a (soft) link in your $_H_O_M_E/_b_i_n directory to the _M_H pro- + gram of your choice. By giving this link a different name, you can + create a new entry in your profile and use an alternate set of de- + faults for the _M_H command. Similarly, you could create a small + shell script which called the _M_H program of your choice with an al- + ternate set of invocation line switches (using links and an alter- + nate profile entry is preferable to this solution). + + Finally, the _c_s_h user could create an alias for the command of the + form: + + alias cmd 'cmd arg1 arg2 ...' + + In this way, the user can avoid lengthy type-in to the shell, and + still give _M_H commands safely. (Recall that some _M_H commands in- + voke others, and that in all cases, the profile is read, meaning + that aliases are disregarded beyond an initial command invocation) + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-SEQUENCE(5) -155- MH-SEQUENCE(5) + + + _N_A_M_E + mh-sequence - sequence specification for MH message system + + _S_Y_N_O_P_S_I_S + most _M_H commands + + _D_E_S_C_R_I_P_T_I_O_N + + Most _M_H commands accept a `msg' or `msgs' specification, where + `msg' indicates one message and `msgs' indicates one or more mes- + sages. To designate a message, you may use either its number + (e.g., 1, 10, 234) or one of these "reserved" message names: + + _N_a_m_e _D_e_s_c_r_i_p_t_i_o_n + first the first message in the folder + last the last message in the folder + cur the most recently accessed message + prev the message numerically preceding "cur" + next the message numerically following "cur" + + In commands that take a `msg' argument, the default is "cur". As a + shorthand, "." is equivalent to "cur". + + For example: In a folder containing five messages numbered 5, 10, + 94, 177 and 325, "first" is 5 and "last" is 325. If "cur" is 94, + then "prev" is 10 and "next" is 177. + + The word `msgs' indicates that one or more messages may be speci- + fied. Such a specification consists of one message designation or + of several message designations separated by spaces. A message + designation consists either of a message name as defined above, or + a message range. + + A message range is specified as "name1-name2" or "name:n", where + `name', `name1' and `name2' are message names, and `n' is an + integer. + + The specification "name1-name2" designates all currently-existing + messages from `name1' to `name2' inclusive. The message name "all" + is a shorthand for the message range "first-last". + + The specification "name:n" designates up to `n' messages. These + messages start with `name' if `name' is a message number or one of + the reserved names "first" "cur", or "next", The messages end with + `name' if `name' is "prev" or "last". The interpretation of `n' + may be overridden by preceding `n' with a plus or minus sign; `+n' + always means up to `n' messages starting with `name', and `-n' + always means up to `n' messages ending with `name'. + + In commands which accept a `msgs' argument, the default is either + "cur" or "all", depending on which makes more sense for each com- + mand (see the individual man pages for details). Repeated + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-SEQUENCE(5) -156- MH-SEQUENCE(5) + + + specifications of the same message have the same effect as a single + specification of the message. + + + _U_s_e_r-_D_e_f_i_n_e_d _M_e_s_s_a_g_e _S_e_q_u_e_n_c_e_s + + In addition to the "reserved" (pre-defined) message names given + above, _M_H supports user-defined sequence names. User-defined + sequences allow the _M_H user a tremendous amount of power in dealing + with groups of messages in the same folder by allowing the user to + bind a group of messages to a meaningful symbolic name. + + The name used to denote a message sequence must consist of an + alphabetic character followed by zero or more alphanumeric charac- + ters, and can not be one of the "reserved" message names above. + After defining a sequence, it can be used wherever an _M_H command + expects a `msg' or `msgs' argument. + + Some forms of message ranges are allowed with user-defined + sequences. The specification "name:n" may be used, and it desig- + nates up to the first `n' messages (or last `n' messages for `-n') + which are elements of the user-defined sequence `name'. + + The specifications "name:next" and "name:prev" may also be used, + and they designate the next or previous message (relative to the + current message) which is an element of the user-defined sequence + `name'. The specificaitions "name:first" and "name:last" are + equivalent to "name:1" and "name:-1", respectively. The specifica- + tion "name:cur" is not allowed (use just "cur" instead). The syn- + tax of these message range specifcations is subject to change in + the future. + + User-defined sequence names are specific to each folder. They are + defined using the _p_i_c_k and _m_a_r_k commands. + + + _P_u_b_l_i_c _a_n_d _P_r_i_v_a_t_e _U_s_e_r-_D_e_f_i_n_e_d _S_e_q_u_e_n_c_e_s + + There are two varieties of sequences: _p_u_b_l_i_c sequences and _p_r_i_v_a_t_e + sequences. _P_u_b_l_i_c sequences of a folder are accessible to any _M_H + user that can read that folder and are kept in the .mh_sequences + file in the folder. _P_r_i_v_a_t_e sequences are accessible only to the + _M_H user that defined those sequences and are kept in the user's _M_H + context file. By default, _p_i_c_k and _m_a_r_k create _p_u_b_l_i_c sequences if + the folder for which the sequences are being defined is writable by + the _M_H user. Otherwise, _p_r_i_v_a_t_e sequences are created. This can + be overridden with the `-public' and `-private' switches to _m_a_r_k. + + + _S_e_q_u_e_n_c_e _N_e_g_a_t_i_o_n + + _M_H provides the ability to select all messages not elements of a + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-SEQUENCE(5) -157- MH-SEQUENCE(5) + + + user-defined sequence. To do this, the user should define the + entry "Sequence-Negation" in the _M_H profile file; its value may be + any string. This string is then used to preface an existing user- + defined sequence name. This specification then refers to those + messages not elements of the specified sequence name. For example, + if the profile entry is: + + Sequence-Negation: not + + then anytime an _M_H command is given "notfoo" as a `msg' or `msgs' + argument, it would substitute all messages that are not elements of + the sequence "foo". + + Obviously, the user should beware of defining sequences with names + that begin with the value of the "Sequence-Negation" profile entry. + + + _T_h_e _P_r_e_v_i_o_u_s _S_e_q_u_e_n_c_e + + _M_H provides the ability to remember the `msgs' or `msg' argument + last given to an _M_H command. The entry "Previous-Sequence" should + be defined in the _M_H profile; its value should be a sequence name + or multiple sequence names separated by spaces. If this entry is + defined, when when an _M_H command finishes, it will define the + sequence(s) named in the value of this entry to be those messages + that were specified to the command. Hence, a profile entry of + + Previous-Sequence: pseq + + directs any _M_H command that accepts a `msg' or `msgs' argument to + define the sequence "pseq" as those messages when it finishes. + + Note: there can be a performance penalty in using the + "Previous-Sequence" facility. If it is used, all _M_H programs have + to write the sequence information to the .mh_sequences file for the + folder each time they run. If the "Previous-Sequence" profile + entry is not included, only _p_i_c_k and _m_a_r_k will write to the + .mh_sequences file. + + + _T_h_e _U_n_s_e_e_n _S_e_q_u_e_n_c_e + + Finally, some users like to indicate messages which have not been + previously seen by them. Both _i_n_c and _s_h_o_w honor the profile entry + "Unseen-Sequence" to support this activity. This entry in the + .mh_profile should be defined as one or more sequence names + separated by spaces. If there is a value for "Unseen-Sequence" in + the profile, then whenever _i_n_c places new messages in a folder, the + new messages will also be added to the sequence(s) named in the + value of this entry. Hence, a profile entry of + + Unseen-Sequence: unseen + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-SEQUENCE(5) -158- MH-SEQUENCE(5) + + + directs _i_n_c to add new messages to the sequence "unseen". Unlike + the behavior of the "Previous-Sequence" entry in the profile, how- + ever, the sequence(s) will not be zeroed by _i_n_c. + + Similarly, whenever _s_h_o_w (or _n_e_x_t or _p_r_e_v) displays a message, that + message will be removed from any sequences named by the + "Unseen-Sequence" entry in the profile. + + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /context The user context + /.mh_sequences Public sequences for + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Sequence-Negation: To designate messages not in a sequence + Previous-Sequence: The last message specification given + Unseen-Sequence: Those messages not yet seen by the user + + + _S_e_e _A_l_s_o + mh(1), mark(1), pick(1), mh-profile(5) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + All + + + _B_u_g_s + User-defined sequences are stored in the .mh_sequences file as a + series of message specifications separated by spaces. If a user- + defined sequence contains too many individual message specifica- + tions, that line in the file may become too long for _M_H to handle. + This will generate the error message ".mh_sequences is poorly for- + matted". You'll have to edit the file by hand to remove the of- + fending line. + + This can happen to users who define the "Previous-Sequence" entry + in the _M_H profile and have a folder containing many messages with + gaps in the numbering. A workaround for large folders is to minim- + ize numbering gaps by using "folder -pack" often. + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + AP(8) -159- AP(8) + + + _N_A_M_E + ap - parse addresses 822-style + + _S_Y_N_O_P_S_I_S + /usr/bs/mh-6.8/lib/ap [-form formatfile] [-format string] + [-normalize] [-nonormalize] [-width columns] addrs ... + [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _A_p is a program that parses addresses according to the ARPA Inter- + net standard. It also understands many non-standard formats. It + is useful for seeing how _M_H will interpret an address. + + The _a_p program treats each argument as one or more addresses, and + prints those addresses out in the official 822-format. Hence, it + is usually best to enclose each argument in double-quotes for the + shell. + + To override the output format used by _a_p, the `-format string' or + `-format file' switches are used. This permits individual fields + of the address to be extracted with ease. The string is simply a + format stringand thefile is simply a format file. See + _m_h-_f_o_r_m_a_t (5) for the details. + + In addition to the standard escapes, _a_p also recognizes the follow- + ing additional escape: + + _E_s_c_a_p_e _R_e_t_u_r_n_s _D_e_s_c_r_i_p_t_i_o_n + error string A diagnostic if the parse failed + + If the `-normalize' switch is given, _a_p will try to track down the + official hostname of the address. + + Here is the default format string used by _a_p: + + %<{error}%{error}: %{text}%|%(putstr(proper{text}))%> + + which says that if an error was detected, print the error, a `:', + and the address in error. Otherwise, output the 822-proper format + of the address. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /usr/bs/mh-6.8/lib/mtstailor tailor file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + AP(8) -160- AP(8) + + + _S_e_e _A_l_s_o + dp(8), + _S_t_a_n_d_a_r_d _f_o_r _t_h_e _F_o_r_m_a_t _o_f _A_R_P_A _I_n_t_e_r_n_e_t _T_e_x_t _M_e_s_s_a_g_e_s (aka + RFC-822) + + + _D_e_f_a_u_l_t_s + `-format' defaults as described above + `-normalize' + `-width' defaults to the width of the terminal + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + The argument to the `-format' switch must be interpreted as a sin- + gle token by the shell that invokes _a_p. Therefore, one must usual- + ly place the argument to this switch inside double-quotes. + + On hosts where _M_H was configured with the BERK option, address + parsing is not enabled. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + CONFLICT(8) -161- CONFLICT(8) + + + _N_A_M_E + conflict - search for alias/password conflicts + + _S_Y_N_O_P_S_I_S + /usr/bs/mh-6.8/lib/conflict [-mail name] [-search directory] + [aliasfiles...] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _C_o_n_f_l_i_c_t is a program that checks to see if the interface between + _M_H and transport system is in good shape + + _C_o_n_f_l_i_c_t also checks for maildrops in /usr/spool/mail which do not + belong to a valid user. It assumes that no user name will start + with `.', and thus ignores files in /usr/spool/mail which begin + with `.'. It also checks for entries in the _g_r_o_u_p (5) file which + do not belong to a valid user, and for users who do not have a + valid group number. In addition duplicate users and groups are + noted. + + If the `-mail name' switch is used, then the results will be sent + to the specified _n_a_m_e. Otherwise, the results are sent to the + standard output. + + The `-search directory' switch can be used to search directories + other than /usr/spool/mail and to report anomalies in those direc- + tories. The `-search directory' switch can appear more than one + time in an invocation to _c_o_n_f_l_i_c_t. + + _C_o_n_f_l_i_c_t should be run under _c_r_o_n (8), or whenever system account- + ing takes place. + + _F_i_l_e_s + /usr/bs/mh-6.8/lib/mtstailor tailor file + /etc/passwd List of users + /etc/group List of groups + /usr/bs/mh-6.8/bin/mhmail Program to send mail + /usr/spool/mail/ Directory of mail drop + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + mh-alias(5) + + + _D_e_f_a_u_l_t_s + `aliasfiles' defaults to /usr/bs/mh-6.8/lib/MailAliases + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + CONFLICT(8) -162- CONFLICT(8) + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + DP(8) -163- DP(8) + + + _N_A_M_E + dp - parse dates 822-style + + _S_Y_N_O_P_S_I_S + /usr/bs/mh-6.8/lib/dp [-form formatfile] [-format string] + [-width columns] dates ... [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _D_p is a program that parses dates according to the ARPA Internet + standard. It also understands many non-standard formats, such as + those produced by TOPS-20 sites and some UNIX sites using + _c_t_i_m_e (3). It is useful for seeing how _M_H will interpret a date. + + The _d_p program treats each argument as a single date, and prints + the date out in the official 822-format. Hence, it is usually best + to enclose each argument in double-quotes for the shell. + + To override the output format used by _d_p, the `-format string' or + `-format file' switches are used. This permits individual fields + of the address to be extracted with ease. The string is simply a + format stringand thefile is simply a format file. See + _m_h-_f_o_r_m_a_t (5) for the details. + + Here is the default format string used by _d_p: + + %<(nodate{text})error: %{text}%|%(putstr(pretty{text}))%> + + which says that if an error was detected, print the error, a `:', + and the date in error. Otherwise, output the 822-proper format of + the date. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + ap(8) + _S_t_a_n_d_a_r_d _f_o_r _t_h_e _F_o_r_m_a_t _o_f _A_R_P_A _I_n_t_e_r_n_e_t _T_e_x_t _M_e_s_s_a_g_e_s (aka + RFC-822) + + + _D_e_f_a_u_l_t_s + `-format' default as described above + `-width' default to the width of the terminal + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + DP(8) -164- DP(8) + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + The argument to the `-format' switch must be interpreted as a sin- + gle token by the shell that invokes _d_p. Therefore, one must usual- + ly place the argument to this switch inside double-quotes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + FMTDUMP(8) -165- FMTDUMP(8) + + + _N_A_M_E + fmtdump - decode MH format files + + _S_Y_N_O_P_S_I_S + /usr/bs/mh-6.8/lib/fmtdump [-form formatfile] [-format string] + [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _F_m_t_d_u_m_p is a program that parses an _M_H format file and produces a + pseudo-language listing of the how _M_H interprets the file. + + The `-format string' and `-form formatfile' switches may be used to + specify a format string or format file to read. The string is sim- + ply a format string and the file is simply a format file. See _m_h- + _f_o_r_m_a_t(5) for the details. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /usr/bs/mh-6.8/lib/scan.default The default format file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + + + _S_e_e _A_l_s_o + mh-format(5), mh-sequences(8) + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + The output may not be useful unless you are familiar with the + internals of the mh-format subroutines. + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + INSTALL-MH(8) -166- INSTALL-MH(8) + + + _N_A_M_E + install-mh - initialize the MH environment + + _S_Y_N_O_P_S_I_S + /usr/bs/mh-6.8/lib/install-mh [-auto] [-compat] + + _D_E_S_C_R_I_P_T_I_O_N + + When a user runs any _M_H program for the first time, the program + will invoke _i_n_s_t_a_l_l-_m_h (with the `-auto' switch) to query the user + for the initial _M_H environment. The user does NOT invoke this pro- + gram directly. The user is asked for the name of the directory + that will be designated as the user's _M_H directory. If this direc- + tory does not exist, the user is asked if it should be created. + Normally, this directory should be under the user's home directory, + and has the default name of Mail/. After _i_n_s_t_a_l_l-_m_h has written + the initial .mh_profile for the user, control returns to the origi- + nal _M_H program. + + As with all _M_H commands, _i_n_s_t_a_l_l-_m_h first consults the $HOME + envariable to determine the user's home directory. If $HOME is not + set, then the /_e_t_c/_p_a_s_s_w_d file is consulted. + + When converting from _m_h._3 to _m_h._4, _i_n_s_t_a_l_l-_m_h is automatically + invoked with the `-compat' switch. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To set the user's MH directory + + + _C_o_n_t_e_x_t + With `-auto', the current folder is changed to "inbox". + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + POST(8) -167- POST(8) + + + _N_A_M_E + post - deliver a message + + _S_Y_N_O_P_S_I_S + /usr/bs/mh-6.8/lib/post [-alias aliasfile] [-filter filterfile] + [-nofilter] [-format] [-noformat] [-mime] [-nomime] [-msgid] + [-nomsgid] [-verbose] [-noverbose] [-watch] [-nowatch] + [-width columns] file [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _P_o_s_t is the program called by _s_e_n_d (1) to deliver the message in + _f_i_l_e to local and remote users. In fact, all of the functions + attributed to _s_e_n_d on its manual page are performed by _p_o_s_t, with + _s_e_n_d acting as a relatively simple preprocessor. Thus, it is _p_o_s_t + which parses the various header fields, appends From: and Date: + lines, and interacts with the _M_M_D_F transport system. _P_o_s_t will not + normally be called directly by the user. + + _P_o_s_t searches the "To:", "cc:", "Bcc:", "Fcc:", and "Resent-xxx:" + header lines of the specified message for destination addresses, + checks these addresses for validity, and formats them so as to con- + form to ARPAnet Internet Message Format protocol, unless the + `-noformat' flag is set. This will normally cause "@_l_o_c_a_l-_s_i_t_e" to + be appended to each local destination address, as well as any local + return addresses. The `-width columns' switch can be used to indi- + cate the preferred length of the header components that contain + addresses. + + If a "Bcc:" field is encountered, its addresses will be used for + delivery, and the "Bcc:" field will be removed from the message + sent to sighted recipients. The blind recipients will receive an + entirely new message with a minimal set of headers. Included in + the body of the message will be a copy of the message sent to the + sighted recipients. If `-filter filterfile' is specified, then + this copy is filtered (re-formatted) prior to being sent to the + blind recipients. Otherwise, to use the MIME rules for encapsula- + tion, specify the `-mime' switch. + + The `-alias aliasfile' switch can be used to specify a file that + post should take aliases from. More than one file can be speci- + fied, each being preceded with `-alias'. In any event, the primary + alias file is read first. + + The `-msgid' switch indicates that a "Message-ID:" or + "Resent-Message-ID:" field should be added to the header. + + The `-verbose' switch indicates that the user should be informed of + each step of the posting/filing process. + + The `-watch' switch indicates that the user would like to watch the + transport system's handling of the message (e.g., local and "fast" + + [mh.6] MH.6.8 UCI version + + + + + + + + + + POST(8) -168- POST(8) + + + delivery). + + _P_o_s_t consults the envariable $SIGNATURE to determine the sender's + personal name in constructing the "From:" line of the message. + + _F_i_l_e_s + /usr/bs/mh-6.8/lib/mtstailor tailor file + /usr/bs/mh-6.8/bin/refile Program to process Fcc:s + /usr/bs/mh-6.8/lib/mhl Program to process Bcc:s + /usr/bs/mh-6.8/lib/MailAliases Primary alias file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + _p_o_s_t does NOT consult the user's .mh_profile + + + _S_e_e _A_l_s_o + _S_t_a_n_d_a_r_d _f_o_r _t_h_e _F_o_r_m_a_t _o_f _A_R_P_A _I_n_t_e_r_n_e_t _T_e_x_t _M_e_s_s_a_g_e_s (aka + RFC-822), + mhmail(1), send(1), mh-mail(5), mh-alias(5) + + + _D_e_f_a_u_l_t_s + `-alias /usr/bs/mh-6.8/lib/MailAliases' + `-format' + `-nomime' + `-nomsgid' + `-noverbose' + `-nowatch' + `-width 72' + `-nofilter' + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + "Reply-To:" fields are allowed to have groups in them according to + the 822 specification, but _p_o_s_t won't let you use them. + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + + + + _5. _R_E_P_O_R_T_I_N_G _P_R_O_B_L_E_M_S + + + + + + If problems are encountered with an _M_H program, the problems should + be reported to the local maintainers of _M_H. When doing this, the name + of the program should be reported, along with the version information + for the program. To find out what version of an _M_H program is being + run, invoke the program with the `-help' switch. In addition to listing + the syntax of the command, the program will list information pertaining + to its version. This information includes the version of _M_H, the host + it was generated on, and the date the program was loaded. A second line + of information, found on versions of _M_H after #5.380 include _M_H confi- + guration options. For example, + + version: MH 6.1 #1[UCI] (nrtc-gremlin) of Wed Nov 6 01:13:53 PST + 1985 + options: [BSD42] [MHE] [NETWORK] [SENDMTS] [MMDFII] [SMTP] [POP] + + The `6.1 #1[UCI]' indicates that the program is from the UCI _m_h._6 ver- + sion of _M_H. The program was generated on the host `nrtc-gremlin' on + `Wed Nov 6 01:13:53 PST 1985'. It's usually a good idea to send the + output of the `-help' switch along with your report. + + If there is no local _M_H maintainer, try the address Bug-MH. If that + fails, use the Internet mailbox Bug-MH@ICS.UCI.EDU. + + + + + + + + + + + + + + + + + + + + + + + + + + -169- + + + + + + + + + + + + + _6. _A_D_V_A_N_C_E_D _F_E_A_T_U_R_E_S + + + + + + This section describes some features of _M_H that were included + strictly for advanced _M_H users. These capabilities permit _M_H to exhibit + more powerful behavior for the seasoned _M_H users. + + + _U_S_E_R-_D_E_F_I_N_E_D _S_E_Q_U_E_N_C_E_S + + User-defined sequences allow the _M_H user a tremendous amount of + power in dealing with groups of messages in the same folder by allowing + the user to bind a group of messages to a meaningful symbolic name. The + user may choose any name for a message sequence, as long as it consists + of alphanumeric characters and does not conflict with the standard _M_H + reserved message names (e.g., "first", etc). After defining a sequence, + it can be used wherever an _M_H command expects a `msg' or `msgs' argu- + ment. + + A restricted form of message ranges are allowed with user-defined + sequences. The form "name:n", specifies up to the first `n' messages + which are part of the user-defined sequence `name'. A leading plus sign + is allowed on `n', but is ignored. The interpretation of n is overrid- + den if n is preceded by a minus sign; `-n' always means up to the last + `n' messages which are part of the sequence `name'. + + Although all _M_H commands expand user-defined sequences as appropri- + ate, there are two commands that allow the user to define and manipulate + them: _p_i_c_k and _m_a_r_k. + + _P_i_c_k _a_n_d _U_s_e_r-_D_e_f_i_n_e_d _S_e_q_u_e_n_c_e_s + + Most users of _M_H will use user-defined sequences only with the _p_i_c_k + command. By giving the `-sequence name' switch to _p_i_c_k (which can occur + more than once on the command line), each sequence named is defined as + those messages which _p_i_c_k matched according the the selection criteria + it was given. Hence, + + pick -from frated -seq fred + + finds all those messages in the current folder which were from "frated", + creates a sequence called "fred", and then adds them to the sequence. + The user could then invoke + + scan fred + + to get a _s_c_a_n listing of those messages. Note that by default, _p_i_c_k + creates the named sequences before it adds the selected messages to the + sequence. Hence, if the named sequence already existed, the sequence is + + -170- + + + + + + + + + + -171- + + + destroyed prior to being re-defined (nothing happens to the messages + that were a part of this sequence, they simply cease to be members of + that sequence). By using the `-nozero' switch, this behavior can be + inhibited, as in + + pick -from frated -seq sgroup + pick -from fear -seq sgroup -nozero + pick -from freida -seq sgroup -nozero + + finds all those messages in the current folder which were from "frated", + "fear", or "freida", and defines the sequence called "sgroup" as exactly + those messages. These operations amounted to an "inclusive-or" of three + selection criteria, using _p_i_c_k, one can also generate the "and" of some + selection criteria as well: + + pick -from frated -seq fred + pick -before friday -seq fred fred + + This example defines the sequence called "fred" as exactly those mes- + sages from "frated" that were dated prior to "friday".[1] + + _P_i_c_k is normally used as a back-quoted command, for example, + + scan `pick -from postmaster` + + Now suppose that the user decides that another command should be issued, + using exactly those messages. Since, _p_i_c_k wasn't given a + `-sequence name' argument in this example, the user would end-up typing + the entire back-quoted command again. A simpler way is to add a default + sequence name to the .mh_profile. For example, + + pick: -seq select -list + + will tell _p_i_c_k to always define the sequence "select" whenever it's run. + The `-list' is necessary since the `-sequence name' switch sets `-nol- + ist' whenever the former is encountered. Hence, this profile entry + makes _p_i_c_k define the "select" sequence and otherwise behave exactly as + + + [1] Of course, it is much easier to simply use the built-in boolean + operation of _p_i_c_k to get the desired results: + + pick -from frated -or -from fear -or -from freida -seq sgroup + + and + + pick -from frated -and -before friday -seq fred + + do exactly the same thing as the five commands listed above. Hence, the + `-nozero' option to _p_i_c_k is only useful to manipulate existing se- + quences. + + + + + + + + + + + + + -172- + + + if there was no profile entry at all. + + _M_a_r_k _a_n_d _U_s_e_r-_D_e_f_i_n_e_d _S_e_q_u_e_n_c_e_s + + The _m_a_r_k command lets the user perform low-level manipulation of + sequences, and also provides a well-needed debug facility to the + implementors/developers/maintainers of _M_H (the _M_H-hacks). In the + future, a user-friendly "front-end" for _m_a_r_k will probably be developed + to give the _M_H user a way to take better advantage of the underlying + facilities. + + _P_u_b_l_i_c _a_n_d _P_r_i_v_a_t_e _U_s_e_r-_D_e_f_i_n_e_d _S_e_q_u_e_n_c_e_s + + There are two kinds of sequences: _p_u_b_l_i_c sequences, and _p_r_i_v_a_t_e + sequences. _P_u_b_l_i_c sequences of a folder are accessible to any _M_H user + that can read that folder and are kept in the .mh_sequences file in the + folder. _P_r_i_v_a_t_e sequences are accessible only to the _M_H user that + defined those sequences and are kept in the user's _M_H context file. By + default, _p_i_c_k (and _m_a_r_k ) create _p_u_b_l_i_c sequences if the folder for + which the sequences are being defined is writable by the _M_H user. Oth- + erwise, _p_r_i_v_a_t_e sequences are created. This can be overridden with the + `-public' and `-nopublic' switches. + + _S_e_q_u_e_n_c_e _N_e_g_a_t_i_o_n + + In addition to telling an _M_H command to use the messages in the + sequence "seen", as in + + refile seen +old + + it would be useful to be easily able to tell an _M_H command to use all + messages _e_x_c_e_p_t those in the sequence. One way of doing this would be + to use _m_a_r_k and define the sequence explicitly, as in + + mark -delete -zero seen -seq notseen + + which, owing to _m_a_r_k 's cryptic interpretation of `-delete' and `-zero', + defines the sequence "notseen" to be all messages not in the sequence + "seen". Naturally, anytime the sequence "seen" is changed, "notseen" + will have to be updated. Another way to achieve this is to define the + entry "Sequence-Negation:" in the .mh_profile. If the entry was + + Sequence-Negation: not + + then anytime an _M_H command was given "notseen" as a `msg' or `msgs' + argument, it would substitute all messages that are not a member of the + sequence "seen". That is, + + refile notseen +new + + does just that. The value of the "Sequence-Negation:" entry in the pro- + file can be any string. Hence, experienced users of _M_H do not use a + + + + + + + + + + + + -173- + + + word, but rather a special character which their shell does not inter- + pret (users of the _C_S_h_e_l_l use a single caret or circumflex (usually + shift-6), while users of the Bourne shell use an exclamation-mark). + This is because there is nothing to prevent a user of _M_H from defining a + sequence with this string as its prefix, if the string is nothing by + letters and digits. Obviously, this could lead to confusing behavior if + the "Sequence-Negation:" entry leads _M_H to believe that two sequences + are opposites by virtue of their names differing by the prefix string. + + _T_h_e _P_r_e_v_i_o_u_s _S_e_q_u_e_n_c_e + + Many times users find themselves issuing a series of commands on + the same sequences of messages. If the user first defined these mes- + sages as a sequence, then considerable typing may be saved. If the user + doesn't have this foresight, _M_H provides a handy way of having _M_H + remember the `msgs' or `msg' argument last given to an _M_H command. If + the entry "Previous-Sequence:" is defined in the .mh_profile, then when + the command finishes, it will define the sequence(s) named in the value + of this entry as being exactly those messages that were specified. + Hence, a profile entry of + + Previous-Sequence: pseq + + directs any _M_H command that accepts a `msg' or `msgs' argument to define + the sequence "pseq" as those messages when it finishes. More than one + sequence name may be placed in this entry, separated with spaces. The + one disadvantage of this approach is that the _M_H progams have to update + the sequence information for the folder each time they run (although + most programs read this information, usually only _p_i_c_k and _m_a_r_k have to + write this information out). + + _T_h_e _U_n_s_e_e_n _S_e_q_u_e_n_c_e + + Finally, some users like to distinguish between messages which have + been previously seen by them. Both _i_n_c and _s_h_o_w honorthe profile entry + "Unseen-Sequence" to support this activity. Whenever _i_n_c places new + messages in a folder, if the entry "Unseen-Sequence" is defined in the + .mh_profile, then when the command finishes, _i_n_c will add the new mes- + sages to the sequence(s) named in the value of this entry. Hence, a + profile entry of + + Unseen-Sequence: unseen + + directs _i_n_c to add new messages to the sequence "unseen". Unlike the + behavior of the "Previous-Sequence" entry in the profile however, the + sequence(s) will not be zero'd. + + Similarly, whenever _s_h_o_w (or _n_e_x_t or _p_r_e_v ) displays a message, + they remove those messages from any sequences named by the + "Unseen-Sequence" entry in the profile. + + + + + + + + + + + + + + -174- + + + _C_O_M_P_O_S_I_T_I_O_N _O_F _M_A_I_L + + There are a number of interesting advanced facilities for the com- + position of outgoing mail. + + + _T_h_e _D_r_a_f_t _F_o_l_d_e_r + + The _c_o_m_p, _d_i_s_t, _f_o_r_w, and _r_e_p_l commands have two switches, + `-draftfolder +folder' and `-draftmessage msg'. If + `-draftfolder +folder' is used, these commands are directed to construct + a draft message in the indicated folder. (The "Draft-Folder:" profile + entry may be used to declare a default draft folder for use with _c_o_m_p, + _d_i_s_t, _f_o_r_w, and _r_e_p_l) If `-draftmessage msg' is not used, it defaults to + `new' (unless the user invokes _c_o_m_p with `-use', in which case the + default is `cur'). Hence, the user may have several message composi- + tions in progress simultaneously. Now, all of the _M_H tools are avail- + able on each of the user's message drafts (e.g., _s_h_o_w, _s_c_a_n, _p_i_c_k, and + so on). If the folder does not exist, the user is asked if it should be + created (just like with _r_e_f_i_l_e ). Also, the last draft message the user + was composing is known as `cur' in the draft folder. + + Furthermore, the _s_e_n_d command has these switches as well. Hence, + from the shell, the user can send off whatever drafts desired using the + standard _M_H `msgs' convention with `-draftmessage msgs'. If no `msgs' + are given, it defaults to `cur'. + + In addition, all five programs have a `-nodraftfolder' switch, + which undoes the last occurrence of `-draftfolder folder' (useful if the + latter occurs in the user's _M_H profile). + + If the user does not give the `-draftfolder +folder' switch, then + all these commands act ``normally''. Note that the `-draft' switch to + _s_e_n_d and _s_h_o_w still refers to the file called `draft' in the user's _M_H + directory. In the interests of economy of expression, when using _c_o_m_p + or _s_e_n_d, the user needn't prefix the draft `msg' or `msgs' with `-draft- + message'. Both of these commands accept a `file' or `files' argument, + and they will, if given `-draftfolder +folder' treat these arguments as + `msg' or `msgs'.[2] Hence, + + send -draftf +drafts first + + is the same as + + send -draftf +drafts -draftm first + + + + + [2] This may appear to be inconsistent, at first, but it saves a lot + of typing. + + + + + + + + + + + + + -175- + + + To make all this a bit more clear, here are some examples. Let's + assume that the following entries are in the _M_H profile: + + Draft-Folder: +drafts + sendf: -draftfolder +drafts + + Furthermore, let's assume that the program _s_e_n_d_f is a (symbolic) link in + the user's $HOME/bin/ directory to _s_e_n_d. Then, any of the commands + + comp + dist + forw + repl + + constructs the message draft in the `draft' folder using the `new' mes- + sage number. Furthermore, they each define `cur' in this folder to be + that message draft. If the user were to use the _q_u_i_t option at `What + now?' level, then later on, if no other draft composition was done, the + draft could be sent with simply + + sendf + + Or, if more editing was required, the draft could be edited with + + comp -use + + Instead, if other drafts had been composed in the meantime, so that this + message draft was no longer known as `cur' in the `draft' folder, then + the user could _s_c_a_n the folder to see which message draft in the folder + should be used for editing or sending. Clever users could even employ a + back-quoted _p_i_c_k to do the work: + + comp -use `pick +drafts -to bug-mh` + + or + + sendf `pick +drafts -to bug-mh` + + Note that in the _c_o_m_p example, the output from _p_i_c_k must resolve to a + single message draft (it makes no sense to talk about composing two or + more drafts with one invocation of _c_o_m_p ). In contrast, in the _s_e_n_d + example, as many message drafts as desired can appear, since _s_e_n_d + doesn't mind sending more than one draft at a time. + + Note that the argument `-draftfolder +folder' is not included in + the profile entry for _s_e_n_d, since when _c_o_m_p, et. al., invoke _s_e_n_d + directly, they supply _s_e_n_d with the UNIX pathname of the message draft, + and not a `draftmessage msg' argument. As far as _s_e_n_d is concerned, a + _d_r_a_f_t _f_o_l_d_e_r is not being used. + + It is important to realize that _M_H treats the draft folder like a + standard _M_H folder in nearly all respects. There are two exceptions: + + + + + + + + + + + + -176- + + + first_____, under no circumstancs will the `-draftfolder folder' switch cause + the named folder to become the current folder.[3] Second______, although con- + ceptually _s_e_n_d deletes the `msgs' named in the draft folder, it does not + call `delete-prog' to perform the deletion. + + + _W_h_a_t _H_a_p_p_e_n_s _i_f _t_h_e _D_r_a_f_t _E_x_i_s_t_s + + When the _c_o_m_p, _d_i_s_t, _f_o_r_w, and _r_e_p_l commands are invoked and the + draft you indicated already exists, these programs will prompt the user + for a reponse directing the program's action. The prompt is + + Draft ``/usr/src/uci/mh/mhbox/draft'' exists (xx bytes). + Disposition? + + The appropriate responses and their meanings are: replace_______: deletes the + draft and starts afresh; list____: lists the draft; refile______: files the draft + into a folder and starts afresh; and, quit____: leaves the draft intact and + exits. In addition, if you specified `-draftfolder folder' to the com- + mand, then one other response will be accepted: new___: finds a new draft, + just as if `-draftmessage new' had been given. Finally, the _c_o_m_p com- + mand will accept one more response: use___: re-uses the draft, just as if + `-use' had been given. + + + _T_h_e _P_u_s_h _O_p_t_i_o_n _a_t _W_h_a_t _n_o_w? _L_e_v_e_l + + The _p_u_s_h option to the "What now?" query in the _c_o_m_p, _d_i_s_t, _f_o_r_w, + and _r_e_p_l commands, directs the command to _s_e_n_d the draft in a special + detached fashion, with all normal output discarded. If _p_u_s_h is used and + the draft can not be sent, then _M_H will send the user a message, indi- + cating the name of the draft file, and an explanation of the failure. + + The user can also invoke _s_e_n_d from the shell with the `-push' + switch, which makes _s_e_n_d act like it had been _p_u_s_h 'd by one of the com- + position commands. + + By using _p_u_s_h, the user can free the shell to do other things, + because it appears to the shell that the _M_H command has finished. As a + result the shell will immediately prompt for another command, despite + the fact that the command is really still running. Note that if the + user indicates that annotations are to be performed (with `-annotate' to + + + [3] Obviously, if the folder appeared in the context of a standard + `+folder' argument to an _M_H program, as in + + scan +drafts + + it might become the current folder, depending on the context changes of + the _M_H program in question. + + + + + + + + + + + + + -177- + + + _d_i_s_t, _f_o_r_w, or _r_e_p_l), the annotations will be performed after the mes- + sage has been successfully sent. This action will appear to occur asyn- + chronously. Obviously, if one of the messages that is to be annotated + is removed before the draft has been successfully sent, then when _M_H + tries to make the annotations, it won't be able to do so. In previous + versions of _M_H, this resulted in an error message mysteriously appearing + on the user's terminal. In _m_h._5 and later versions, in this special + circumstance, no error will be generated. + + If send is _p_u_s_h 'd, then the `-forward' switch is examined if a + failure notice is generated. If given, then the draft is forwarded with + the failure notice sent to the user. This allows rapid _b_u_r_s_t 'ing of + the failure notice to retrieve the unsent draft. + + + _O_p_t_i_o_n_s _a_t _W_h_a_t _n_o_w? _L_e_v_e_l + + By default, the message composition programs call a program called + _w_h_a_t_n_o_w before the initial draft composition. The _M_H user can specify + any program for this. Following is some information about the default + "What now?" level. More detailed information can be found in the _w_h_a_t_- + _n_o_w (1) manual entry. + + When using the _c_o_m_p, _d_i_s_t, _f_o_r_w, and _r_e_p_l commands at "What now?" + level, the _e_d_i_t, _l_i_s_t, _h_e_a_d_e_r_s, _r_e_f_i_l_e, and (for the _d_i_s_t and _r_e_p_l com- + mands) the _d_i_s_p_l_a_y options will pass on any additional arguments given + them to whatever program they invoke. + + In _m_h._1 (the original RAND _M_H ) and _m_h._2 (the first UCI version of + _M_H ), _M_H used a complicated heuristic to determine if the draft should + be deleted or preserved after an unsuccessful edit. In _m_h._3, _M_H was + changed to preserve the draft always, since _c_o_m_p, et. al., could usually + look at a draft, apply another set of heuristics, and decide if it was + important or not. With the notion of a _d_r_a_f_t _f_o_l_d_e_r, in which one by + default gets a `new' message draft, the edit deletion/preservation algo- + rithm was re-implemented, to keep the draft folder from being cluttered + with aborted edits. + + Also, note that by default, if the draft cannot be successfully + sent, these commands return to "What now?" level. But, when _p_u_s_h is + used, this does not happen (obviously). Hence, if these commands were + expected to annotate any messages, this will have to be done by hand, + later on, with the _a_n_n_o command. + + Finally, if the `-delete' switch is not given to the _q_u_i_t option, + then these commands will inform the user of the name of the unsent draft + file. + + + _D_i_g_e_s_t_s + + + + + + + + + + + + + + -178- + + + The _f_o_r_w command has the beginnings of a digestifying facility, + with the `-digest list', `-issue number', and `-volume number' switches. + + If _f_o_r_w is given "list" to the `-digest' switch as the name of the dis- + cussion group, and the `-issue number' switch is not given, then _f_o_r_w + looks for an entry in the user's _M_H context called "_d_i_g_e_s_t-issue-list" + and increments its value to use as the issue number. Similarly, if the + `-volume number' switch is not given, then _f_o_r_w looks for + "_d_i_g_e_s_t-volume-list" (but does not increment its value) to use as the + volume number. + + Having calculated the name of the digest and the volume and issue + numbers, _f_o_r_w will now process the components file using the same format + string mechanism used by _r_e_p_l. The current `%'-escapes are: + + _e_s_c_a_p_e _t_y_p_e _s_u_b_s_t_i_t_u_t_i_o_n + digest string digest name + msg integer issue number + cur integer volume number + + In addition, to capture the current date, any of the escapes valid for + _d_p (8) are also valid for _f_o_r_w. + + The default components file used by _f_o_r_w when in digest mode is: + + From: %{digest}-Request + To: %{digest} Distribution: dist-%{digest}; + Subject: %{digest} Digest V%(cur) #%(msg) + Reply-To: %{digest} + -------- + %{digest} Digest %(weekday{date}), %2(mday{date}) %(month{date}) 19%02(year{date}) + Volume %(cur) : Issue %(msg) + + Today's Topics: + + Hence, when the `-digest' switch is present, the first step taken by + _f_o_r_w is to expand the format strings in the component file. The next + step is to compose the draft using the standard digest encapsulation + algorithm (even putting an "End of list Digest" trailer in the draft). + Once the draft is composed by _f_o_r_w, _f_o_r_w writes out the volume and issue + profile entries for the digest, and then invokes the editor. + + Naturally, when composing the draft, _f_o_r_w will honor the + `-filter filterfile' switch, which is given to _m_h_l to filter each mes- + sage being forwarded prior to encapsulation in the draft. A good filter + file to use, which is called _m_h_l._d_i_g_e_s_t, is: + + + + + + + + + + + + + + + + + + -179- + + + width=80,overflowoffset=10 + leftadjust,compress,compwidth=9 + Date:formatfield="%<(nodate{text})%{text}%|%(tws{text})%>" + From: + Subject: + : + body:nocomponent,overflowoffset=0,noleftadjust,nocompress + + + + _F_O_L_D_E_R _H_A_N_D_L_I_N_G + + There are two interesting facilities for manipulating folders: + relative folder addressing, which allows a user to shorten the typing of + long folder names; and the folder-stack, which permits a user to keep a + stack of current folders. + + + _R_e_l_a_t_i_v_e _F_o_l_d_e_r _A_d_d_r_e_s_s_i_n_g + + By default, when `+folder' is given, and the folder name is not + absolute (does not start with /, ./, or ../), then the UNIX pathname of + the folder is interpreted relative to the user's _M_H directory. Although + this mechanism works fine for top-level folders and their immediate + sub-folders, once the depth of the sub-folder tree grows, it becomes + rather unwieldly: + + scan +mh/mh.4/draft/flames + + is a lot of typing. _M_H can't do anything if the current folder was + "+inbox", but if the current folder was, say, "+mh/mh.4/draft", _M_H has a + short-hand notation to reference a sub-folder of the current folder. + Using the `@folder' notation, the _M_H user can direct any _M_H program + which expects a `+folder' argument to look for the folder relative to + the current folder instead of the user's _M_H directory. Hence, if the + current folder _w_a_s "+mh/mh.4/draft", then + + scan @flames + + would do the trick handily. In addition, if the current folder _w_a_s + "+mh/mh.4/draft", + + scan @../pick + + would scan the folder "+mh/mh.4/pick", since, in the UNIX fashion, it + references the folder "pick" which is a sub-folder of the folder that is + the parent of the current folder. Since most advanced _M_H users seem to + exhibit a large degree of locality in referencing folders when they pro- + cess mail, this convention should receive a wide range of uses. + + + + + + + + + + + + + + + -180- + + + _T_h_e _F_o_l_d_e_r-_S_t_a_c_k + + The _f_o_l_d_e_r-_s_t_a_c_k mechanism in _M_H gives the _M_H user a facility simi- + lar to the _C_S_h_e_l_l 's directory-stack. Simply put, + + folder -push +foo + + makes "foo" the current folder, saving the folder that was previously + the current folder on the _f_o_l_d_e_r-_s_t_a_c_k. As expected, + + folder -pop + + takes the top of the _f_o_l_d_e_r-_s_t_a_c_k and makes it the current folder. Each + of these switches lists the _f_o_l_d_e_r-_s_t_a_c_k when they execute. It is sim- + ple to write a _p_u_s_h_f command as a shell script. It's one line: + + exec folder -push $@ + + Probably a better way is to link _f_o_l_d_e_r to the $HOME/bin/ directory + under the name of _p_u_s_h_f and then add the entry + + pushf: -push + + to the .mh_profile. + + The manual page for _f_o_l_d_e_r discusses the analogy between the _C_S_h_e_l_l + directory stack commands and the switches in _f_o_l_d_e_r which manipulate the + _f_o_l_d_e_r-_s_t_a_c_k. The _f_o_l_d_e_r command uses the context entry `Folder-Stack:' + to keep track of the folders in the user's stack of folders. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Appendix A + _C_O_M_M_A_N_D _S_U_M_M_A_R_Y + + + + + ali [-alias aliasfile] [-list] [-nolist] [-normalize] + [-nonormalize] [-user] [-nouser] aliases ... [-help] + + anno [+folder] [msgs] [-component field] [-inplace] [-noinplace] + [-date] [-nodate] [-text body] [-help] + + bbc [bboards ...] [-topics] [-check] [-read] [-quiet] [-verbose] + [-archive] [-noarchive] [-protocol] [-noprotocol] + [-mshproc program] [switches for _m_s_h_p_r_o_c] [-rcfile rcfile] + [-norcfile] [-file BBoardsfile] [-user BBoardsuser] + [-host host] [-help] + + burst [+folder] [msgs] [-inplace] [-noinplace] [-quiet] [-noquiet] + [-verbose] [-noverbose] [-help] + + comp [+folder] [msg] [-draftfolder +folder] [-draftmessage msg] + [-nodraftfolder] [-editor editor] [-noedit] [-file file] + [-form formfile] [-use] [-nouse] [-whatnowproc program] + [-nowhatnowproc] [-help] + + dist [+folder] [msg] [-annotate] [-noannotate] + [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [-editor editor] [-noedit] [-form formfile] [-inplace] + [-noinplace] [-whatnowproc program] [-nowhatnowproc] [-help] + + /usr/bs/mh-6.8/lib/fmtdump [-form formatfile] [-format string] + [-help] + + folder [+folder] [msg] [-all] [-fast] [-nofast] [-header] + [-noheader] [-pack] [-nopack] [-recurse] [-norecurse] [-total] + [-nototal] [-print] [-noprint] [-list] [-nolist] [-push] + [-pop] [-help] + + folders + + forw [+folder] [msgs] [-annotate] [-noannotate] + [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [-editor editor] [-noedit] [-filter filterfile] + [-form formfile] [-format] [-noformat] [-inplace] [-noinplace] + [-mime] [-nomime] [-whatnowproc program] [-nowhatnowproc] + [-help] + + + + + + + -181- + + + + + + + + + + + + + forw [+folder] [msgs] [-digest list] [-issue number] + [-volume number] [other switches for _f_o_r_w] [-help] + + inc [+folder] [-audit audit-file] [-noaudit] [-changecur] + [-nochangecur] [-file name] [-form formatfile] + [-format string] [-silent] [-nosilent] [-truncate] + [-notruncate] [-width columns] [-host host] [-user user] + [-apop] [-noapop] [-rpop] [-norpop] [-pack file] [-nopack] + [-help] + + mark [+folder] [msgs] [-sequence name ...] [-add] [-delete] [-list] + [-public] [-nopublic] [-zero] [-nozero] [-help] + + /usr/bs/mh-6.8/lib/mhl [-bell] [-nobell] [-clear] [-noclear] + [-folder +folder] [-form formfile] [-length lines] + [-width columns] [-moreproc program] [-nomoreproc] [files ...] + [-help] + + mhmail [ addrs ... [-body text] [-cc addrs ...] [-from addr] + [-subject subject]] [-help] + + mhn [+folder] [msgs] [-part number]... [-type content]... + [-list [-header] [-noheader] + [-realsize] [-norealsize]] [-nolist] + [-show [-serialonly] [-noserialonly]] + [-form formfile]] [-noshow] + [-store [-auto] [-noauto]] [-nostore] + [-verbose] [-noverbose] [-rfc934mode] [-norfc934mode] + [-ebcdic] [-noebcdicsafe] + [-help] + + mhparam [profile-components] [-components] [-nocomponents] [-all] + [-help] + + mhpath [+folder] [msgs] [-help] + + msgchk [-date] [-nodate] [-notify all/mail/nomail] + [-nonotify all/mail/nomail] [-host host] [-user user] [-apop] + [-noapop] [-rpop] [-norpop] [users ...] [-help] + + msh [-prompt string] [-scan] [-noscan] [-topcur] [-notopcur] [file] + [-help] + + next [+folder] [-header] [-noheader] [-showproc program] + [-noshowproc] [switches for _s_h_o_w_p_r_o_c] [-help] + + packf [+folder] [msgs] [-file name] [-help] + + + + + + + -182- + + + + + + + + + + + + + pick [+folder] [msgs] [-and ...] [-or ...] [-not ...] + [-lbrace ... -rbrace] [--component pattern] [-after date] + [-before date] [-datefield field] [-sequence name ...] + [-public] [-nopublic] [-zero] [-nozero] [-list] [-nolist] + [-help] + + + prev [+folder] [-header] [-noheader] [-showproc program] + [-noshowproc] [switches for _s_h_o_w_p_r_o_c] [-help] + + prompter [-erase chr] [-kill chr] [-prepend] [-noprepend] [-rapid] + [-norapid] [-doteof] [-nodoteof] file [-help] + + /usr/bs/mh-6.8/lib/rcvstore [+folder] [-create] [-nocreate] + [-sequence name ...] [-public] [-nopublic] [-zero] [-nozero] + [-help] + + refile [msgs] [-draft] [-link] [-nolink] [-preserve] [-nopreserve] + [-src +folder] [-file file] +folder ... [-help] + + repl [+folder] [msg] [-annotate] [-noannotate] [-cc all/to/cc/me] + [-nocc all/to/cc/me] [-draftfolder +folder] + [-draftmessage msg] [-nodraftfolder] [-editor editor] + [-noedit] [-fcc +folder] [-filter filterfile] [-form formfile] + [-inplace] [-noinplace] [-query] [-noquery] + [-whatnowproc program] [-nowhatnowproc] [-width columns] + [-help] + + rmf [+folder] [-interactive] [-nointeractive] [-help] + + rmm [+folder] [msgs] [-help] + + scan [+folder] [msgs] [-clear] [-noclear] [-form formatfile] + [-format string] [-header] [-noheader] [-width columns] + [-reverse] [-noreverse] [-file filename] [-help] + + send [-alias aliasfile] [-draft] [-draftfolder +folder] + [-draftmessage msg] [-nodraftfolder] [-filter filterfile] + [-nofilter] [-format] [-noformat] [-forward] [-noforward] + [-mime] [-nomime] [-msgid] [-nomsgid] [-push] [-nopush] + [-split seconds] [-verbose] [-noverbose] [-watch] [-nowatch] + [-width columns] [file ...] [-help] + + show [+folder] [msgs] [-draft] [-header] [-noheader] + [-showproc program] [-noshowproc] [switches for _s_h_o_w_p_r_o_c] + [-help] + + sortm [+folder] [msgs] [-datefield field] [-textfield field] + [-notextfield] [-limit days] [-nolimit] [-verbose] + [-noverbose] [-help] + + + + -183- + + + + + + + + + + + + + vmh [-prompt string] [-vmhproc program] [-novmhproc] + [switches for _v_m_h_p_r_o_c] [-help] + + whatnow [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [-editor editor] [-noedit] [-prompt string] [file] [-help] + + whom [-alias aliasfile] [-check] [-nocheck] [-draft] + [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [file] [-help] + + /usr/bs/mh-6.8/lib/ap [-form formatfile] [-format string] + [-normalize] [-nonormalize] [-width columns] addrs ... + [-help] + + /usr/bs/mh-6.8/lib/conflict [-mail name] [-search directory] + [aliasfiles ...] [-help] + + /usr/bs/mh-6.8/lib/dp [-form formatfile] [-format string] + [-width columns] dates ... [-help] + + /usr/bs/mh-6.8/lib/install-mh [-auto] [-compat] + + /usr/bs/mh-6.8/lib/post [-alias aliasfile] [-filter filterfile] + [-nofilter] [-format] [-noformat] [-mime] [-nomime] [-msgid] + [-nomsgid] [-verbose] [-noverbose] [-watch] [-nowatch] + [-width columns] file [-help] + + /usr/bs/mh-6.8/lib/slocal [address info sender] [-addr address] + [-info data] [-sender sender] [-user username] [-mailbox mbox] + [-file file] [-maildelivery deliveryfile] [-verbose] + [-noverbose] [-debug] [-help] + + + + + + + + + + + + + + + + + + + + + + + -184- + + + + + + + + + + + + + Appendix B + _M_E_S_S_A_G_E _N_A_M_E _B_N_F + + + + + + msgs := msgspec | + msgs msgspec + + msgspec := msg | + msg-range | + msg-sequence | + user-defined-sequence + + msg := msg-name | + + + msg-name := "first" | + "last" | + "cur" | + "." | + "next" | + "prev" + + msg-range := msg"-"msg | + "all" + + msg-sequence := msg":"signed-number + + signed-number := "+" | + "-" | + + + user-defined-sequence := | + * + + + Where is a decimal number greater than zero. + + Msg-range specifies all of the messages in the given range and must not + be empty. + + Msg-sequence specifies up to of messages, beginning with "msg" + (in the case of first, cur, next, or ), or ending with "msg" (in + the case of prev or last). + forces "starting with msg", and + - forces "ending with number". In all cases, "msg" must exist. + + User-defined sequences are defined and manipulated with the _p_i_c_k and + _m_a_r_k commands. + + + + -185- + + + + + + + + + + + + + _R_E_F_E_R_E_N_C_E_S + + + + 1. Crocker, D. H., J. J. Vittal, K. T. Pogran, and D. A. Henderson, + Jr., "Standard for the Format of ARPA Network Text Messages," + _R_F_C_7_3_3, November 1977. + + 2. Thompson, K., and D. M. Ritchie, "The UNIX Time-sharing System," + _C_o_m_m_u_n_i_c_a_t_i_o_n_s _o_f _t_h_e _A_C_M, Vol. 17, July 1974, pp. 365-375. + + 3. McCauley, E. J., and P. J. Drongowski, "KSOS-The Design of a Secure + Operating System," _A_F_I_P_S _C_o_n_f_e_r_e_n_c_e _P_r_o_c_e_e_d_i_n_g_s, National Computer + Conference, Vol. 48, 1979, pp. 345-353. + + 4. Crocker, David H., _F_r_a_m_e_w_o_r_k _a_n_d _F_u_n_c_t_i_o_n_s _o_f _t_h_e "_M_S" _P_e_r_s_o_n_a_l _M_e_s_- + _s_a_g_e _S_y_s_t_e_m, The RAND Corporation, R-2134-ARPA, December 1977. + + 5. Thompson, K., and D. M. Ritchie, _U_N_I_X _P_r_o_g_r_a_m_m_e_r'_s _M_a_n_u_a_l, 6th ed., + Western Electric Company, May 1975 (available only to UNIX licen- + sees). + + 6. Crocker, D. H., "Standard for the Format of ARPA Internet Text Mes- + sages," _R_F_C_8_2_2, August 1982. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -186- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -i- + + + + + + + + + + + + + _R_E_A_D _T_H_I_S + + + + + Although the _M_H system was originally developed by the RAND Cor- + poration, and is now in the public domain, the RAND Corporation assumes + no responsibility for _M_H or this particular version of _M_H. + + In addition, the Regents of the University of California issue the + following disclaimer in regard to the UCI version of _M_H: + + "Although each program has been tested by its contributor, no war- + ranty, express or implied, is made by the contributor or the + University of California, as to the accuracy and functioning of the + program and related program material, nor shall the fact of distri- + bution constitute any such warranty, and no responsibility is + assumed by the contributor or the University of California in con- + nection herewith." + + This version of _M_H is in the public domain, and as such, there are + no real restrictions on its use. The _M_H source code and documentation + have no licensing restrictions whatsoever. As a courtesy, the authors + ask only that you provide appropriate credit to the RAND Corporation and + the University of California for having developed the software. + + _M_H is a software package that is supported neither by the RAND Cor- + poration nor the University of California. However, since we do use the + software ourselves and plan to continue using (and improving) _M_H, bug + reports and their associated fixes should be reported back to us so that + we may include them in future releases. The current computer mailbox + for _M_H is Bug-MH@ICS.UCI.EDU (in the ARPA Internet), and + ...!ucbvax!ucivax!bug-mh (UUCP). Presently, there are two Internet dis- + cussion groups, MH-Users@ICS.UCI.EDU and MH-Workers@ICS.UCI.EDU. + MH-Workers is for people discussing code changes to _M_H. MH-Users is for + general discussion about how to use _M_H. MH-Users is bi-directionally + gatewayed into USENET as comp.mail.mh. + + _H_O_W _T_O _G_E_T _M_H + + Since you probably already have _M_H, you may not need to read this + unless you suspect you have an old version. There are two ways to get + the latest release: + + 1. If you can FTP to the ARPA Internet, use anonymous FTP to + ics.uci.edu [128.195.1.1] and retrieve the file pub/mh/mh-6.8.tar.Z. + This is a tar image after being run through the compress program + (approximately 1.8MB). There should also be a README file in that + directory which tells what the current release of _M_H is, and how to get + updates. + + + + -i- + + + + + + + + + + -ii- + + + This tar file is also available on louie.udel.edu [128.175.1.3] in + portal/mh-6.8.tar.Z. You may also find MH on various other hosts; to + make sure you get the latest version and don't waste your time re-fixing + bugs, it's best to get it from either ics.uci.edu or louie.udel.edu. + + 2. You can send $75 US to the address below. This covers the cost + of a 6250 BPI 9-track magtape, handling, and shipping. In addition, + you'll get a laser-printed hard-copy of the entire MH documentation set. + Be sure to include your USPS address with your check. Checks must be + drawn on U.S. funds and should be made payable to: + + Regents of the University of California + + The distribution address is: + + Computing Support Group + Attn: MH distribution + Department of Information and Computer Science + University of California, Irvine + Irvine, CA 92717 + + 714/856-7554 + + If you just want the hard-copies of the documentation, you still + have to pay the $75. The tar image has the documentation source (the + manual is in roff format, but the rest are in TeX format). Postscript + formatted versions of the TeX papers are available, as are crude tty- + conversions of those papers. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _F_O_R_E_W_O_R_D + + + + + This document describes the RAND _M_H Message Handling System. Its + primary purpose is to serve as a user's manual. It has been heavily + based on a previous version of the manual, prepared by Bruce Borden, + Stockton Gaines, and Norman Shapiro. + + _M_H is a particularly novel system, and thus it is often more prone + to change than other pieces of production software. As such, some + specific points in this manual may not be correct in the future. In all + cases, the on-line sections of this manual, available through the + UNIX[1] _m_a_n command, should present the most current information. + + When reading this document as a user's manual, certain sections are + more interesting than others. The Preface and Summary are not particu- + larly interesting to those interested in learning _M_H. The Introduction + is slightly more interesting, as it touches upon the organization of the + remainder of this document. The most useful sections are the Overview, + Tutorial, and Detailed Description. The Overview should be read by all + _M_H users, regardless of their expertise (beginning, novice, advanced, or + hacker). The Tutorial should be read by all beginning and novice _M_H + users, as it presents a nice description of the _M_H system. The Detailed + Description should be read by the day-to-day user of _M_H, as it spells + out all of the realities of the _M_H system. The Advanced Features sec- + tion discusses some powerful _M_H capabilities for advanced users. Appen- + dix A is particularly useful for novices, as it summarizes the invoca- + tion syntax of all the _M_H commands. + + There are also several other documents which may be useful to you: + _T_h_e _R_A_N_D _M_H _M_e_s_s_a_g_e _H_a_n_d_l_i_n_g _S_y_s_t_e_m: _T_u_t_o_r_i_a_l, which is a tutorial for + _M_H; _T_h_e _R_A_N_D _M_H _M_e_s_s_a_g_e _H_a_n_d_l_i_n_g _S_y_s_t_e_m: _T_h_e _U_C_I _B_B_o_a_r_d_s _F_a_c_i_l_i_t_y, which + describes the BBoards handling under _M_H; _M_H._5: _H_o_w _t_o _p_r_o_c_e_s_s _2_0_0 _m_e_s_- + _s_a_g_e_s _a _d_a_y _a_n_d _s_t_i_l_l _g_e_t _s_o_m_e _r_e_a_l _w_o_r_k _d_o_n_e, which was presented at + the 1985 Summer Usenix Conference and Exhibition in Portland, Oregon; + _M_H: _A _M_u_l_t_i_f_a_r_i_o_u_s _U_s_e_r _A_g_e_n_t, which has been accepted for publication + by Computer Networks; _M_Z_n_e_t: _M_a_i_l _S_e_r_v_i_c_e _f_o_r _P_e_r_s_o_n_a_l _M_i_c_r_o-_C_o_m_p_u_t_e_r + _S_y_s_t_e_m_s, which was presented at the First International Symposium on + Computer Message Systems in Nottingham, U.K.; and, _D_e_s_i_g_n _o_f _t_h_e _T_T_I + _P_r_o_t_o_t_y_p_e _T_r_u_s_t_e_d _M_a_i_l _A_g_e_n_t, which describes a proprietary "trusted" + mail system built on _M_H. There are also documents, mostly specific to + U.C. Irvine which you may find interesting: _M_H _f_o_r _B_e_g_i_n_n_e_r_s, and _M_H _f_o_r + _M_M _U_s_e_r_s. All of these documents exist in the _m_h._6 distribution sent to + your site. There's also a document, _C_h_a_n_g_e_s _t_o _t_h_e _R_A_N_D _M_H _M_e_s_s_a_g_e _H_a_n_- + _d_l_i_n_g _S_y_s_t_e_m: _M_H._6, which describes user-visible changes made to _M_H + since the last major release. + + + [1] UNIX is a trademark of AT&T Bell Laboratories. + + + -iii- + + + + + + + + + + -iv- + + + This manual is very large, as it describes a large, powerful system + in gruesome detail. The important thing to remember is: + + + _D_O_N'_T _P_A_N_I_C[_2] + + + As explained in the tutorial, you really need to know only 5 commands to + handle most of your mail. + + Very advanced users may wish to consult _T_h_e _R_A_N_D _M_H _M_e_s_s_a_g_e _H_a_n_- + _d_l_i_n_g _S_y_s_t_e_m: _A_d_m_i_n_i_s_t_r_a_t_o_r'_s _G_u_i_d_e, which is also present in the _m_h._6 + distribution sent to your site. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [2] Note the large, _f_r_i_e_n_d_l_y letters. + + + + + + + + + + + + + + + + _A_C_K_N_O_W_L_E_D_G_M_E_N_T_S + + + + + The _M_H system described herein is based on the original RAND _M_H + system. It has been extensively developed (perhaps too much so) by + Marshall T. Rose and John L. Romine at the University of California, + Irvine. Einar A. Stefferud, Jerry N. Sweet, and Terry P. Domae provided + numerous suggestions to improve the UCI version of _M_H. Of course, a + large number of people have helped _M_H along. The list of ``_M_H immor- + tals'' is too long to list here. However, Van Jacobson deserves a spe- + cial acknowledgement for his tireless work in improving the performance + of _M_H. Some programs have been speeded-up by a factor of 10 or 20. All + of users of _M_H, everywhere, owe a special thanks to Van. For this + release, numerous _M_H-_W_o_r_k_e_r_s sent in fixes and other changes. A handful + of courageous _M_H-_W_o_r_k_e_r_s volunteered to beta-test these changes; their + help is particularly appreciated. + + This manual is based on the original _M_H manual written at RAND by + Bruce Borden, Stockton Gaines, and Norman Shapiro. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -v- + + + + + + + + + + + + + _P_R_E_F_A_C_E + + + + + This report describes a system for dealing with messages transmit- + ted on a computer. Such messages might originate with other users of + the same computer or might come from an outside source through a network + to which the user's computer is connected. Such computer-based message + systems are becoming increasingly widely used, both within and outside + the Department of Defense. + + The message handling system _M_H was developed for two reasons. One + was to investigate some research ideas concerning how a message system + might take advantage of the architecture of the UNIX time-sharing + operating system for Digital Equipment Corporation PDP-11 and VAX com- + puters, and the special features of UNIX's command-level interface with + the user (the "shell"). The other reason was to provide a better and + more adaptable base than that of conventional designs on which to build + a command and control message system. The effort has succeeded in both + regards, although this report mainly describes the message system itself + and how it fits in with UNIX. + + The present report should be of interest to three groups of + readers. First, it is a complete reference manual for the users of _M_H. + Second, it should be of interest to those who have a general knowledge + of computer-based message systems, both in civilian and military appli- + cations. Finally, it should be of interest to those who build large + subsystems that interface with users, since it illustrates a new + approach to such interfaces. + + The original _M_H system was developed by Bruce Borden, using an + approach suggested by Stockton Gaines and Norman Shapiro. Valuable + assistance was provided by Phyllis Kantar in the later stages of the + system's implementation. Several colleagues contributed to the ideas + included in this system, particularly Robert Anderson and David Crocker. + In addition, valuable experience in message systems, and a valuable + source of ideas, was available to us in the form of a previous message + system for UNIX called MS, designed at RAND by David Crocker. + + This report was originally prepared as part of the RAND project + entitled "Data Automation Research", sponsored by Project AIR FORCE. + + + + + + + + + + + + -vi- + + + + + + + + + + + + + _S_U_M_M_A_R_Y + + + + + Electronic communication of text messages is becoming commonplace. + Computer-based message systems-software packages that provide tools for + dealing with messages-are used in many contexts. In particular, message + systems are becoming increasingly important in command and control and + intelligence applications. + + This report describes a message handling system called _M_H. This + system provides the user with tools to compose, send, receive, store, + retrieve, forward, and reply to messages. _M_H has been built on the UNIX + time-sharing system, a popular operating system developed for the DEC + PDP-11 and VAX classes of computers. + + A complete description of _M_H is given for users of the system. For + those who do not intend to use the system, this description gives a gen- + eral idea of what a message system is like. The system involves some + new ideas about how large subsystems can be constructed. + + The interesting and unusual features of _M_H include the following: + The user command interface to _M_H is the UNIX "shell" (the standard UNIX + command interpreter). Each separable component of message handling, + such as message composition or message display, is a separate command. + Each program is driven from and updates a private user environment, + which is stored as a file between program invocations. This private + environment also contains information to "custom tailor" _M_H to the + individual's tastes. _M_H stores each message as a separate file under + UNIX, and it utilizes the tree-structured UNIX file system to organize + groups of files within separate directories or "folders". All of the + UNIX facilities for dealing with files and directories, such as renam- + ing, copying, deleting, cataloging, off-line printing, etc., are appli- + cable to messages and directories of messages (folders). Thus, impor- + tant capabilities needed in a message system are available in _M_H without + the need (often seen in other message systems) for code that duplicates + the facilities of the supporting operating system. It also allows users + familiar with the shell to use _M_H with minimal effort. + + + + + + + + + + + + + + + -vii- + + + + + + + + + + + + + _C_O_N_T_E_N_T_S + + + + + READ THIS ......................................................... i + + FOREWORD .......................................................... iii + + ACKNOWLEDGMENTS ................................................... v + + PREFACE ........................................................... vi + + SUMMARY ........................................................... vii + + Section + + 1. INTRODUCTION ............................................... 1 + + 2. OVERVIEW ................................................... 4 + + 3. TUTORIAL ................................................... 7 + + 4. DETAILED DESCRIPTION ....................................... 10 + THE USER PROFILE ............................................. 10 + MESSAGE NAMING ............................................... 13 + OTHER MH CONVENTIONS ......................................... 14 + MH COMMANDS .................................................. 16 + ALI ....................................................... 17 + ANNO ...................................................... 19 + BBC ....................................................... 21 + BBOARDS ................................................... 24 + BURST ..................................................... 26 + COMP ...................................................... 28 + DIST ...................................................... 30 + FOLDER .................................................... 33 + FORW ...................................................... 37 + INC ....................................................... 42 + MARK ...................................................... 45 + MHL ....................................................... 47 + MHMAIL .................................................... 52 + MHN ....................................................... 54 + MHOOK ..................................................... 70 + MHPARAM ................................................... 72 + MHPATH .................................................... 74 + MSGCHK .................................................... 77 + MSH ....................................................... 79 + NEXT ...................................................... 83 + PACKF ..................................................... 84 + PICK ...................................................... 85 + PREV ...................................................... 90 + PROMPTER .................................................. 91 + + + + + + + + + + + + + + + RCVSTORE .................................................. 94 + REFILE .................................................... 96 + REPL ...................................................... 98 + RMF ....................................................... 102 + RMM ....................................................... 104 + SCAN ...................................................... 106 + SEND ...................................................... 109 + SHOW ...................................................... 112 + SLOCAL .................................................... 115 + SORTM ..................................................... 120 + VMH ....................................................... 122 + WHATNOW ................................................... 124 + WHOM ...................................................... 127 + MORE DETAILS ................................................. 129 + MH-ALIAS .................................................. 130 + MH-FORMAT ................................................. 134 + MH-MAIL ................................................... 143 + MH-PROFILE ................................................ 147 + MH-SEQUENCE ............................................... 155 + AP ........................................................ 159 + CONFLICT .................................................. 161 + DP ........................................................ 163 + FMTDUMP ................................................... 165 + INSTALL-MH ................................................ 166 + POST ...................................................... 167 + + 5. REPORTING PROBLEMS ......................................... 169 + + 6. ADVANCED FEATURES .......................................... 170 + USER-DEFINED SEQUENCES ....................................... 170 + Pick and User-Defined Sequences ........................... 170 + Mark and User-Defined Sequences ........................... 172 + Public and Private User-Defined Sequences ................. 172 + Sequence Negation ......................................... 172 + The Previous Sequence ..................................... 173 + The Unseen Sequence ....................................... 173 + COMPOSITION OF MAIL .......................................... 174 + The Draft Folder .......................................... 174 + What Happens if the Draft Exists .......................... 176 + The Push Option at What now? Level ........................ 176 + Options at What now? Level ................................ 177 + Digests ................................................... 178 + FOLDER HANDLING .............................................. 179 + Relative Folder Addressing ................................ 179 + The Folder-Stack .......................................... 180 + + Appendix + A. Command Summary ............................................ 181 + B. Message Name BNF ........................................... 185 + + REFERENCES ........................................................ 186 + + + + + + + + + + + + + + + + + + + + + + + + + + + + THE RAND MH + + + MESSAGE HANDLING + + + SYSTEM: + + + USER'S MANUAL + + + + + + + UCI Version + + + + + + Marshall T. Rose + + John L. Romine + + + + + Based on the original manual by + + Borden, Gaines, and Shapiro + + + + + + + + December 14, 1992 + + + + + + + + + + + + + + + + 6.6 #1[UCI] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/historical/MH.pdf b/docs/historical/MH.pdf new file mode 100644 index 0000000..1a460cc Binary files /dev/null and b/docs/historical/MH.pdf differ diff --git a/docs/historical/MH.txt b/docs/historical/MH.txt new file mode 100644 index 0000000..1c25514 --- /dev/null +++ b/docs/historical/MH.txt @@ -0,0 +1,11880 @@ + + + + + + + + + _d_i_s_c_a_r_d _t_h_i_s _p_a_g_e + + + + + The RAND _M_H + Message Handling System: + User's Manual + + UCI Version + + + November 30, 1993 + 6.8.3 #1[UCI] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _1. _I_N_T_R_O_D_U_C_T_I_O_N + + + + + + Although people can travel cross-country in hours and can reach + others by telephone in seconds, communications still depend heavily upon + paper, most of which is distributed through the mails. + + There are several major reasons for this continued dependence on + written documents. First, a written document may be proofread and + corrected prior to its distribution, giving the author complete control + over his words. Thus, a written document is better than a telephone + conversation in this respect. Second, a carefully written document is + far less likely to be misinterpreted or poorly translated than a phone + conversation. Third, a signature offers reasonable verification of + authorship, which cannot be provided with media such as telegrams. + + However, the need for fast____, accurate, and reproducible document + distribution is obvious. One solution in widespread use is the telefax. + Another that is rapidly gaining popularity is electronic mail. Elec- + tronic mail is similar to telefax in that the data to be sent are digi- + tized, transmitted via phone lines, and turned back into a document at + the receiver. The advantage of electronic mail is in its compression + factor. Whereas a telefax must scan a page in very fine lines and send + all of the black and white information, electronic mail assigns charac- + ters fixed codes which can be transmitted as a few bits of information. + Telefax presently has the advantage of being able to transmit an arbi- + trary page, including pictures, but electronic mail is beginning to deal + with this problem. Electronic mail also integrates well with current + directions in office automation, allowing documents prepared with + sophisticated equipment at one site to be quickly transferred and + printed at another site. + + Currently, most electronic mail is intraorganizational, with mail + transfer remaining within one computer. As computer networking becomes + more common, however, it is becoming more feasible to communicate with + anyone whose computer can be linked to your own via a network. + + The pioneering efforts on general-purpose electronic mail were by + organizations using the DoD ARPAnet[1]. The capability to send messages + between computers existed before the ARPAnet was developed, but it was + used only in limited ways. With the advent of the ARPAnet, tools began + to be developed which made it convenient for individuals or organiza- + tions to distribute messages over broad geographic areas, using diverse + computer facilities. The interest and activity in message systems has + now reached such proportions that steps have been taken within the DoD + to coordinate and unify the development of military message systems. + The use of electronic mail is expected to increase dramatically in the + next few years. The utility of such systems in the command and control + and intelligence environments is clear, and applications in these areas + + + + + + + + + + + + -2- + + + will probably lead the way. As the costs for sending and handling elec- + tronic messages continue their rapid decrease, such uses can be expected + to spread rapidly into other areas and, of course, will not be limited + to the DoD. + + A message system provides tools that help users (individuals or + organizations) deal with messages in various ways. Messages must be + composed, sent, received, stored, retrieved, forwarded, and replied to. + Today's best interactive computer systems provide a variety of word- + processing and information handling capabilities. The message handling + facilities should be well integrated with the rest of the system, so as + to be a graceful extension of overall system capability. + + The message system described in this report, _M_H, provides most of + the features that can be found in other message systems and also incor- + porates some new ones. It has been built on the UNIX time-sharing sys- + tem[2], a popular operating system for the DEC PDP-11[1] and VAX-11 + classes of computers. A "secure" operating system similar to UNIX is + currently being developed[3], and that system will also run _M_H. + + This report provides a complete description of _M_H and thus may + serve as a user's manual, although parts of the report will be of + interest to non-users as well. Sections 2 and 3, the Overview and + Tutorial, present the key ideas of _M_H and will give those not familiar + with message systems an idea of what such systems are like. + + _M_H consists of a set of commands which use some special files and + conventions. The final section is divided into three parts. The first + part covers the information a user needs to know in addition to the com- + mands. Then, each of the _M_H commands is described in detail. Finally, + other obscure details are revealed. A summary of the commands is given + in Appendix A, and the syntax of message sequences is given in Appendix + B. + + A novel approach has been taken in the design of _M_H. Instead of + creating a large subsystem that appears as a single command to the user + (such as MS[4]), _M_H is a collection of separate commands which are run + as separate programs. The file and directory system of UNIX are used + directly. Messages are stored as individual files (datasets), and col- + lections of them are grouped into directories. In contrast, most other + message systems store messages in a complicated data structure within a + monolithic file. With the _M_H approach, UNIX commands can be interleaved + with commands invoking the functions of the message handler. Con- + versely, existing UNIX commands can be used in connection with messages. + For example, all the usual UNIX editing, text-formatting, and printing + facilities can be applied directly to individual messages. MH, there- + fore, consists of a relatively small amount of new code; it makes exten- + sive use of other UNIX software to provide the capabilities found in + + + [1] PDP and VAX are trademarks of Digital Equipment Corporation. + + + + + + + + + + + + + -3- + + + other message systems. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _2. _O_V_E_R_V_I_E_W + + + + + + There are three main aspects of _M_H : the way messages are + stored (the message database), the user's profile (which directs how + certain actions of the message handler take place), and the commands for + dealing with messages. + + Under _M_H, each message is stored as a separate file. A user can + take any action with a message that he could with an ordinary file in + UNIX. A UNIX directory in which messages are stored is called a folder. + Each folder contains some standard entries to support the message- + handling functions. The messages in a folder have numerical names. + These folders (directories) are entries in a particular directory path, + described in the user profile, through which _M_H can find message fold- + ers. Using the UNIX "link" facility, it is possible for one copy of a + message to be "filed" in more than one folder, providing a message index + facility. Also, using the UNIX tree-structured file system, it is pos- + sible to have a folder within a folder, nested arbitrarily deep, and + have the full power of the _M_H commands available. + + Each user of _M_H has a user profile, a file in his $HOME (initial + login) directory called ._m_h__p_r_o_f_i_l_e. This profile contains several + pieces of information used by the _M_H commands: a path name to the direc- + tory that contains the message folders and parameters that tailor _M_H + commands to the individual user's requirements. There is also another + file, called the user context, which contains information concerning + which folder the user last referenced (the "current" folder). It also + contains most of the necessary state information concerning how the user + is dealing with his messages, enabling _M_H to be implemented as a set of + individual UNIX commands, in contrast to the usual approach of a monol- + ithic subsystem. + + In _M_H, incoming mail is appended to the end of a file in a system + spooling area for the user. This area is called the mail drop direc- + tory, and the file is called the user's mail drop. Normally when the + user logins in, s/he is informed of new mail (or the _M_H program _m_s_g_c_h_k + may be run). The user adds the new messages to his/her collection of _M_H + messages by invoking the command _i_n_c. The _i_n_c (incorporate) command + adds the new messages to a folder called "inbox", assigning them names + which are consecutive integers starting with the next highest integer + available in inbox. _i_n_c also produces a _s_c_a_n summary of the messages + thus incorporated. A folder can be compacted into a single file, for + easy storage, by using the _p_a_c_k_f command. Also, messages within a + folder can be sorted by date and time with the _s_o_r_t_m command. + + + There are four commands for examining the messages in a folder: + _s_h_o_w, _p_r_e_v, _n_e_x_t, and _s_c_a_n. The _s_h_o_w command displays a message in a + + -4- + + + + + + + + + + -5- + + + folder, _p_r_e_v displays the message preceding the current message, and + _n_e_x_t displays the message following the current message. _M_H lets the + user choose the program that displays individual messages. A special + program, _m_h_l, can be used to display messages according to the user's + preferences. The _s_c_a_n command summarizes the messages in a folder, nor- + mally producing one line per message, showing who the message is from, + the date, the subject, etc. + + The user may move a message from one folder to another with the + command _r_e_f_i_l_e. Messages may be removed from a folder by means of the + command _r_m_m. In addition, a user may query what the current folder is + and may specify that a new folder become the current folder, through the + command _f_o_l_d_e_r. All folders may be summarized with the _f_o_l_d_e_r_s command. + A message folder (or subfolder) may be removed by means of the command + _r_m_f. + + A set of messages based on content may be selected by use of the + command _p_i_c_k. This command searches through messages in a folder and + selects those that match a given set of criteria. These messages are + then bound to a "sequence" name for use with other _M_H commands. The + _m_a_r_k command manipulates these sequences. + + There are five commands enabling the user to create new messages + and send them: _c_o_m_p, _d_i_s_t, _f_o_r_w, _r_e_p_l, and _s_e_n_d. The _c_o_m_p command pro- + vides the facility for the user to compose a new message; _d_i_s_t redistri- + butes mail to additional addressees; _f_o_r_w enables the user to forward + messages; and _r_e_p_l facilitates the generation of a reply to an incoming + message. The last three commands may optionally annotate the original + message. Messages may be arbitrarily annotated with the _a_n_n_o command. + Once a draft has been constructed by one of the four above composition + programs, a user-specifiable program is run to query the user as to the + disposition of the draft prior to sending. _M_H provides the simple _w_h_a_t_- + _n_o_w program to start users off. If a message is not sent directly by + one of these commands, it may be sent at a later time using the command + _s_e_n_d. _M_H allows the use of any UNIX editor when composing a message. + For rapid entry, a special editor, _p_r_o_m_p_t_e_r, is provided. For programs, + a special mail-sending program, _m_h_m_a_i_l, is provided. + + _M_H supports a personal aliasing facility which gives users the + capability to considerably shorten address typein and use meaningful + names for addresses. The _a_l_i program can be used to query _M_H as to the + expansion of a list of aliases. After composing a message, but prior to + sending, the _w_h_o_m command can be used to determine exactly who a message + would go to. + + _M_H provides a natural interface for telling the user's shell the + names of _M_H messages and folders. The _m_h_p_a_t_h program achieves this + capability. + + Finally, _M_H supports the UCI BBoards facility. _b_b_c can be used to + query the status of a group of BBoards, while _m_s_h can be used to read + them. The _b_u_r_s_t command can be used to "shred" digests of messages into + + + + + + + + + + + + -6- + + + individual messages. + + All of the elements summarized above are described in more detail + in the following sections. Many of the normal facilities of UNIX pro- + vide additional capabilities for dealing with messages in various ways. + For example, it is possible to print messages on the line-printer + without requiring any additional code within _M_H . Using standard UNIX + facilities, any terminal output can be redirected to a file for repeated + or future viewing. In general, the flexibility and capabilities of the + UNIX interface with the user are preserved as a result of the integra- + tion of _M_H into the UNIX structure. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _3. _T_U_T_O_R_I_A_L + + + + + + This tutorial provides a brief introduction to the _M_H commands. It + should be sufficient to allow the user to read his mail, do some simple + manipulations of it, and create and send messages. + + A message has two major pieces: the header and the body. The body + consists of the text of the message (whatever you care to type in). It + follows the header and is separated from it by an empty line. (When you + compose a message, the form that appears on your terminal shows a line + of dashes after the header. This is for convenience and is replaced by + an empty line when the message is sent.) The header is composed of + several components, including the subject of the message and the person + to whom it is addressed. Each component starts with a name and a colon; + components must not start with a blank. The text of the component may + take more than one line, but each continuation line must start with a + blank. Messages typically have "To:", "cc:", and "Subject:" components. + When composing a message, you should include the "To:" and "Subject:" + components; the "cc:" (for people you want to send copies to) is not + necessary. + + The basic _M_H commands are _i_n_c, _s_c_a_n, _s_h_o_w, _n_e_x_t, _p_r_e_v, _r_m_m, _c_o_m_p, + and _r_e_p_l. These are described below. + + _i_n_c + + When you get the message "You have mail", type the command _i_n_c. + You will get a "scan listing" such as: + + 7+ 7/13 Cas revival of measurement work + 8 10/ 9 Norm NBS people and publications + 9 11/26 To:norm question < _x will copy the message to file x. + _s_h_o_w | _l_p_r will print the message, using the _l_p_r command. + _n_e_x_t will show the message that follows the current message. + _p_r_e_v will show the message previous to the current message. + _r_m_m will remove the current message. + _r_m_m _3 will remove message 3. + + + _c_o_m_p + + The _c_o_m_p command puts you in the editor to write or edit a message. + Fill in or delete the "To:", "cc:", and "Subject:" fields, as appropri- + ate, and type the body of the message. Then exit normally from the edi- + tor. You will be asked "What now?". Type a carriage return to see the + options. Typing send will cause the message to be sent; typing quit + will cause an exit from _c_o_m_p, with the message draft saved. + + If you quit without sending the message, it will be saved in a file + called /Mail/draft (where is your $HOME directory). You + can resume editing the message later with "comp -use"; or you can send + the message later, using the _s_e_n_d command. + + _c_o_m_p -_e_d_i_t_o_r _p_r_o_m_p_t_e_r + + This command uses a different editor and is useful for preparing + "quick and dirty" messages. It prompts you for each component of the + header. Type the information for that component, or type a carriage + return to omit the component. After that, type the body of the message. + Backspacing is the only form of editing allowed with this editor. When + the body is complete, type a carriage return followed by (usually + ). This completes the initial preparation of the message; from + then on, use the same procedures as with _c_o_m_p (above). + + _r_e_p_l + _r_e_p_l n + + This command makes up an initial message form with a header that is + appropriate for replying to an existing message. The message being + + + + + + + + + + + + -9- + + + answered is the current message if no message number is mentioned, or n + if a number is specified. After the header is completed, you can finish + the message as in _c_o_m_p (above). + + This is enough information to get you going using _M_H. There are + more commands, and the commands described here have more features. Sub- + sequent sections explain _M_H in complete detail. The system is quite + powerful if you want to use its sophisticated features, but the forego- + ing commands suffice for sending and receiving messages. + + There are numerous additional capabilities you may wish to explore. + For example, the _p_i_c_k command will select a subset of messages based on + specified criteria such as sender and/or subject. Groups of messages + may be designated, as described in Sec. IV, under Message Naming. The + file ._m_h__p_r_o_f_i_l_e can be used to tailor your use of the message system to + your needs and preferences, as described in Sec. IV, under The User Pro- + file. In general, you may learn additional features of the system + selectively, according to your requirements, by studying the relevant + sections of this manual. There is no need to learn all the details of + the system at once. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _4. _D_E_T_A_I_L_E_D _D_E_S_C_R_I_P_T_I_O_N + + + + + + This section describes the _M_H system in detail, including the com- + ponents of the user profile, the conventions for message naming, and + some of the other _M_H conventions. Readers who are generally familiar + with computer systems will be able to follow the principal ideas, + although some details may be meaningful only to those familiar with + UNIX. + + + _T_H_E _U_S_E_R _P_R_O_F_I_L_E + + The first time an _M_H command is issued by a new user, the system + prompts for a "Path" and creates an _M_H "profile". + + Each _M_H user has a profile which contains tailoring information for + each individual program. Other profile entries control the _M_H path + (where folders and special files are kept), folder and message protec- + tions, editor selection, and default arguments for each _M_H program. + Each user of _M_H also has a context file which contains current state + information for the _M_H package (the location of the context file is kept + in the user's _M_H directory, or may be named in the user profile). When + a folder becomes the current folder, it is recorded in the user's con- + text. (Other state information is kept in the context file, see the + manual entry for _m_h-_p_r_o_f_i_l_e (5) for more details.) In general, the term + "profile entry" refer to entries in either the profile or context file. + Users of _M_H needn't worry about the distinction, _M_H handles these things + automatically. + + The _M_H profile is stored in the file ._m_h__p_r_o_f_i_l_e in the user's + $HOME directory[1]. It has the format of a message without any body. + That is, each profile entry is on one line, with a keyword followed by a + colon (:) followed by text particular to the keyword. + => _T_h_i_s _f_i_l_e _m_u_s_t _n_o_t _h_a_v_e _b_l_a_n_k _l_i_n_e_s. + The keywords may have any combination of upper and lower case. (See the + information of _m_h-_m_a_i_l later on in this manual for a description of mes- + sage formats.) + + For the average _M_H user, the only profile entry of importance is + "Path". Path specifies a directory in which _M_H folders and certain + files such as "draft" are found. The argument to this keyword must be a + legal UNIX path that names an existing directory. If this path is not + absolute (i.e., does not begin with a / ), it will be presumed to start + + + [1] By defining the envariable $MH, you can specify an alternate pro- + file to be used by _M_H commands. + + + -10- + + + + + + + + + + -11- + + + from the user's $HOME directory. All folder and message references + within _M_H will relate to this path unless full path names are used. + + Message protection defaults to 644, and folder protection to 711. + These may be changed by profile entries "Msg-Protect" and "Folder- + Protect", respectively. The argument to these keywords is an octal + number which is used as the UNIX file mode[2]. + + When an _M_H program starts running, it looks through the user's pro- + file for an entry with a keyword matching the program's name. For exam- + ple, when _c_o_m_p is run, it looks for a "comp" profile entry. If one is + found, the text of the profile entry is used as the default switch set- + ting until all defaults are overridden by explicit switches passed to + the program as arguments. Thus the profile entry + "comp: -form standard.list" would direct _c_o_m_p to use the file + "standard.list" as the message skeleton. If an explicit form switch is + given to the _c_o_m_p command, it will override the switch obtained from the + profile. + + In UNIX, a program may exist under several names, either by linking + or aliasing. The actual invocation name is used by an _M_H program when + scanning for its profile defaults[3]. Thus, each _M_H program may have + several names by which it can be invoked, and each name may have a dif- + ferent set of default switches. For example, if _c_o_m_p is invoked by the + name _i_c_o_m_p, the profile entry "icomp" will control the default switches + for this invocation of the _c_o_m_p program. This provides a powerful + definitional facility for commonly used switch settings. + + The default editor for editing within _c_o_m_p, _r_e_p_l, _f_o_r_w, and _d_i_s_t, + is usually _p_r_o_m_p_t_e_r, but might be something else at your site, such as + /_u_s_r/_u_c_b/_e_x or /_b_i_n/_e. A different editor may be used by specifying the + profile entry "Editor: ". The argument to "Editor" is the name of an + executable program or shell command file which can be found via the + user's $PATH defined search path, excluding the current directory. The + "Editor:" profile specification may in turn be overridden by a + `-editor ' profile switch associated with _c_o_m_p, _r_e_p_l, _f_o_r_w, or + _d_i_s_t. Finally, an explicit editor switch specified with any of these + four commands will have ultimate precedence. + + During message composition, more than one editor may be used. For + example, one editor (such as _p_r_o_m_p_t_e_r ) may be used initially, and a + + + [2] See _c_h_m_o_d (1) in the _U_N_I_X _P_r_o_g_r_a_m_m_e_r'_s _M_a_n_u_a_l [5]. + [3] Unfortunately, the shell does not preserve aliasing information + when calling a program, hence if a program is invoked by an alias dif- + ferent than its name, the program will examine the profile entry for + it's name, not the alias that the user invoked it as. The correct solu- + tion is to create a (soft) link in your $_H_O_M_E/_b_i_n directory to the _M_H + program of your choice. By giving this link a different name, you can + use an alternate set of defaults for the command. + + + + + + + + + + + + + -12- + + + second editor may be invoked later to revise the message being composed + (see the discussion of _c_o_m_p in Section 5 for details). A profile entry + "-next: " specifies the name of the editor to be + used after a particular editor. Thus "comp: -e prompter" causes the + initial text to be collected by _p_r_o_m_p_t_e_r, and the profile entry + "prompter-next: ed" names ed as the editor to be invoked for the next + round of editing. + + Some of the _M_H commands, such as _s_h_o_w, can be used on message fold- + ers owned by others, if those folders are readable. However, you cannot + write in someone else's folder. All the _M_H command actions not requir- + ing write permission may be used with a "read-only" folder. + + Table 1 lists examples of some of the currently defined profile + entries, typical arguments, and the programs that reference the entries. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -13- + + + Table 1 + + PROFILE COMPONENTS + ______________________________________________________ + + _M_H Programs that + Keyword and Argument use Component______________________________________________________ + + Path: Mail All + Current-Folder: inbox Most + Editor: /usr/ucb/ex _c_o_m_p, _d_i_s_t, _f_o_r_w, _r_e_p_l + Inbox: inbox _i_n_c, _r_m_f + Msg-Protect: 644 _i_n_c + Folder-Protect: 711 _i_n_c, _p_i_c_k, _r_e_f_i_l_e + : default switches All + prompter-next: ed _c_o_m_p, _d_i_s_t, _f_o_r_w, _r_e_p_l + ______________________________________________________ + + + Path should______ be present. Current-Folder is maintained automatically + by many _M_H commands (see the Context sections of the individual commands + in Sec. IV). All other entries are optional, defaulting to the values + described above. + + + _M_E_S_S_A_G_E _N_A_M_I_N_G + + Messages may be referred to explicitly or implicitly when using _M_H + commands. A formal syntax of message names is given in Appendix B, but + the following description should be sufficient for most _M_H users. Some + details of message naming that apply only to certain commands are + included in the description of those commands. + + Most of the _M_H commands accept arguments specifying one or more + folders, and one or more messages to operate on. The use of the word + "msg" as an argument to a command means that exactly one message name + may be specified. A message name may be a number, such as 1, 33, or + 234, or it may be one of the "reserved" message names: first, last, + prev, next, and cur. (As a shorthand, a period (.) is equivalent to + cur.) The meanings of these names are straightforward: "first" is the + first message in the folder; "last" is the last message in the folder; + "prev" is the message numerically previous to the current message; + "next" is the message numerically following the current message; "cur" + (or ".") is the current message in the folder. In addition, _M_H supports + user-defined-sequences; see the description of the _m_a_r_k command for more + information. + + The default in commands that take a "msg" argument is always "cur". + + The word "msgs" indicates that several messages may be specified. + Such a specification consists of several message designations separated + by spaces. A message designation is either a message name or a message + + + + + + + + + + + + -14- + + + range. A message range is a specification of the form name1-name2 or + name1:n, where name1 and name2 are message names and n is an integer. + The first form designates all the messages from name1 to name2 + inclusive; this must be a non-empty range. The second form specifies up + to n messages, starting with name1 if name1 is a number, or first, cur, + or next, and ending with name1 if name1 is last or prev. This interpre- + tation of n is overridden if n is preceded by a plus sign or a minus + sign; +n always means up to n messages starting with name1, and -n + always means up to n messages ending with name1. Repeated specifica- + tions of the same message have the same effect as a single specification + of the message. Examples of specifications are: + + + 1 5 7-11 22 + first 6 8 next + first-10 + last:5 + + + The message name "all" is a shorthand for "first-last", indicating + all of the messages in the folder. + + In commands that accept "msgs" arguments, the default is either cur + or all, depending on which makes more sense. + + In all of the _M_H commands, a plus sign preceding an argument indi- + cates a folder name. Thus, "+inbox" is the name of the user's standard + inbox. If an explicit folder argument is given to an _M_H command, it + will become the current folder (that is, the "Current-Folder:" entry in + the user's profile will be changed to this folder). In the case of the + _r_e_f_i_l_e command, which can have multiple output folders, a new source + folder (other than the default current folder) is specified by + `-src +folder'. + + + _O_T_H_E_R _M_H _C_O_N_V_E_N_T_I_O_N_S + + One very powerful feature of _M_H is that the _M_H commands may be + issued from any current directory, and the proper path to the appropri- + ate folder(s) will be taken from the user's profile. If the _M_H path is + not appropriate for a specific folder or file, the automatic prepending + of the _M_H path can be avoided by beginning a folder or file name with /, + or with ./ or ../ component. Thus any specific absolute path may be + specified along with any path relative to the current working directory. + + Arguments to the various programs may be given in any order, with + the exception of a few switches whose arguments must follow immediately, + such as `-src +folder' for _r_e_f_i_l_e. + + Whenever an _M_H command prompts the user, the valid options will be + listed in response to a . (The first of the listed options is + the default if end-of-file is encountered, such as from a command file.) + + + + + + + + + + + + -15- + + + A valid response is any _u_n_i_q_u_e abbreviation of one of the listed + options. + + Standard UNIX documentation conventions are used in this report to + describe _M_H command syntax. Arguments enclosed in brackets ([ ]) are + optional; exactly one of the arguments enclosed within braces ({ }) must + be specified, and all other arguments are required. The use of ellipsis + dots (...) indicates zero or more repetitions of the previous item. For + example, "+folder ..." would indicate that one or more "+folder" argu- + ments is required and "[+folder ...]" indicates that 0 or more "+folder" + arguments may be given. + + _M_H departs from UNIX standards by using switches that consist of + more than one character, e.g. `-header'. To minimize typing, only a + unique abbreviation of a switch need be typed; thus, for `-header', + `-hea' is probably sufficient, depending on the other switches the com- + mand accepts. Each _M_H program accepts the switch `-help' (which must be + spelled out fully) and produces a syntax description and a list of + switches. In the list of switches, parentheses indicate required char- + acters. For example, all `-help' switches will appear as "-(help)", + indicating that no abbreviation is accepted. Furthermore, the `-help' + switch tells the version of the _M_H program you invoked. + + Many _M_H switches have both on and off forms, such as `-format' and + `-noformat'. In many of the descriptions which follow, only one form is + defined; the other form, often used to nullify profile switch settings, + is assumed to be the opposite. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -16- + + + _M_H _C_O_M_M_A_N_D_S + + The _M_H package comprises several programs: + + ali (1) - list mail aliases + anno (1) - annotate messages + bbc (1) - check on BBoards + bboards (1) - the UCI BBoards facility + burst (1) - explode digests into messages + comp (1) - compose a message + dist (1) - redistribute a message to additional addresses + folder (1) - set/list current folder/message + folders (1) - list all folders + forw (1) - forward messages + inc (1) - incorporate new mail + mark (1) - mark messages + mhl (1) - produce formatted listings of MH messages + mhmail (1) - send or read mail + mhook (1) - MH receive-mail hooks + mhparam (1) - print MH profile components + mhpath (1) - print full pathnames of MH messages and folders + msgchk (1) - check for messages + msh (1) - MH shell (and BBoard reader) + next (1) - show the next message + packf (1) - compress a folder into a single file + pick (1) - select messages by content + prev (1) - show the previous message + prompter (1) - prompting editor front end + rcvstore (1) - incorporate new mail asynchronously + refile (1) - file messages in other folders + repl (1) - reply to a message + rmf (1) - remove folder + rmm (1) - remove messages + scan (1) - produce a one line per message scan listing + send (1) - send a message + show (1) - show (list) messages + slocal (1) - special local mail delivery + sortm (1) - sort messages + vmh (1) - visual front-end to MH + whatnow (1) - prompting front-end for send + whom (1) - report to whom a message would go + + + These programs are described below. The form of the descriptions + conforms to the standard form for the description of UNIX commands. + + + + + + + + + + + + + + + + + + + ALI(1) -17- ALI(1) + + + _N_A_M_E + ali - list mail aliases + + _S_Y_N_O_P_S_I_S + ali [-alias aliasfile] [-list] [-nolist] [-normalize] + [-nonormalize] [-user] [-nouser] aliases ... [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _A_l_i searches the named mail alias files for each of the given + _a_l_i_a_s_e_s. It creates a list of addresses for those _a_l_i_a_s_e_s, and + writes that list on standard output. If the `-list' option is + specified, each address appears on a separate line; otherwise, the + addresses are separated by commas and printed on as few lines as + possible. + + The `-user' option directs _a_l_i to perform its processing in an + inverted fashion: instead of listing the addresses that each given + alias expands to, _a_l_i will list the aliases that expand to each + given address. If the `-normalize' switch is given, _a_l_i will try + to track down the official hostname of the address. + + The files specified by the profile entry "Aliasfile:" and any addi- + tional alias files given by the `-alias aliasfile' switch will be + read. Each _a_l_i_a_s is processed as described in _m_h-_a_l_i_a_s (5). + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /etc/passwd List of users + /etc/group List of groups + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Aliasfile: For a default alias file + + + _S_e_e _A_l_s_o + mh-alias(5) + + + _D_e_f_a_u_l_t_s + `-alias /usr/local/lib/mh/MailAliases' + `-nolist' + `-nonormalize' + `-nouser' + + + _C_o_n_t_e_x_t + None + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + ALI(1) -18- ALI(1) + + + _B_u_g_s + The `-user' option with `-nonormalize' is not entirely accurate, as + it does not replace local nicknames for hosts with their official + site names. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + ANNO(1) -19- ANNO(1) + + + _N_A_M_E + anno - annotate messages + + _S_Y_N_O_P_S_I_S + anno [+folder] [msgs] [-component field] [-inplace] [-noinplace] + [-date] [-nodate] [-text body] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _A_n_n_o annotates the specified messages in the named folder using the + field and body. Annotation is optionally performed by _d_i_s_t, _f_o_r_w, + and _r_e_p_l, to keep track of your distribution of, forwarding of, and + replies to a message. By using _a_n_n_o, you can perform arbitrary + annotations of your own. Each message selected will be annotated + with the lines + + field: date + field: body + + The `-nodate' switch inhibits the date annotation, leaving only the + body annotation. The `-inplace' switch causes annotation to be + done in place in order to preserve links to the annotated message. + + The field specified should be a valid 822-style message field name, + which means that it should consist of alphanumerics (or dashes) + only. The body specified is arbitrary text. + + If a `-component field' is not specified when _a_n_n_o is invoked, _a_n_n_o + will prompt the user for the name of field for the annotation. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + + + _S_e_e _A_l_s_o + dist (1), forw (1), repl (1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to cur + `-noinplace' + `-date' + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + ANNO(1) -20- ANNO(1) + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. The first + message annotated will become the current message. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + BBC(1) -21- BBC(1) + + + _N_A_M_E + bbc - check on BBoards + + _S_Y_N_O_P_S_I_S + bbc [bboards ...] [-topics] [-check] [-read] [-quiet] [-verbose] + [-archive] [-noarchive] [-protocol] [-noprotocol] + [-mshproc program] [switches for _m_s_h_p_r_o_c] [-rcfile rcfile] + [-norcfile] [-file BBoardsfile] [-user BBoardsuser] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _b_b_c is a BBoard reading/checking program that interfaces to the + BBoard channel. + + The _b_b_c program has three action switches which direct its opera- + tion: + + The `-read' switch invokes the _m_s_h program on the named _B_B_o_a_r_d_s. + If you also specify the `-archive' switch, then _b_b_c will invoke + the _m_s_h program on the archives of the named _B_B_o_a_r_d_s. If no + _B_B_o_a_r_d_s are given on the command line, and you specified + `-archive', _b_b_c will not read your `bboards' profile entry, but + will read the archives of the "system" _B_B_o_a_r_d instead. + + The `-check' switch types out status information for the named + _B_B_o_a_r_d_s. _b_b_c can print one of several messages depending on the + status of both the BBoard and the user's reading habits. As with + each of these messages, the number given is the item number of the + last item placed in the BBoard. This number (which is marked in + the messages as the "BBoard-Id") is ever increasing. Hence, when + _b_b_c says "n items", it really means that the highest BBoard-Id is + "n". There may, or may not actually be "n" items in the BBoard. + Some common messages are: + + BBoard -- n items unseen + This message tells how many items the user has not yet + seen. When invoked with the `-quiet' switch, this is the + only informative line that _b_b_c will possibly print out. + + BBoard -- empty + The BBoard is empty. + + BBoard -- n items (none seen) + The BBoard has items in it, but the user hasn't seen any. + + BBoard -- n items (all seen) + The BBoard is non-empty, and the user has seen everything + in it. + + BBoard -- n items seen out of m + The BBoard has at most m-n items that the user has not + seen. + + [mh.6] MH.6.8 UCI version + + + + + + + + + + BBC(1) -22- BBC(1) + + + The `-topics' switch directs _b_b_c to print three items about the + named _B_B_o_a_r_d_s: it's official name, the number of items present, and + the date and time of the last update. If no _B_B_o_a_r_d_s are named, + then all BBoards are listed. If the `-verbose' switch is given, + more information is output. + + The `-quiet' switch specifies that _b_b_c should be silent if no + _B_B_o_a_r_d_s are found with new information. The `-verbose' switch + specifies that _b_b_c is to consider you to be interested in _B_B_o_a_r_d_s + that you've already seen everything in. + + To override the default _m_s_h_p_r_o_c and the profile entry, use the + `-mshproc program' switch. Any arguments not understood by _b_b_c are + passed to this program. The `-protocol' switch tells _b_b_c that your + _m_s_h_p_r_o_c knows about the special _b_b_c protocol for reporting back + information. _m_s_h (1), the default _m_s_h_p_r_o_c, knows all about this. + + The `-file BBoardsfile' switch tells _b_b_c to use a non-standard + _B_B_o_a_r_d_s file when performing its calculations. Similarly, the + `-user BBoardsuser' switch tells _b_b_c to use a non-standard user- + name. Both of these switches are useful for debugging a new + _B_B_o_a_r_d_s or _P_O_P file. + + The ._b_b_r_c file in the user's $HOME directory is used to keep track + of what messages have been read. The `-rcfile rcfile' switch over- + rides the use of ._b_b_r_c for this purpose. If the value given to the + switch is not absolute, (i.e., does not begin with a / ), it will + be presumed to start from the current working directory. If this + switch is not given (or the `-norcfile' switch is given), then _b_b_c + consults the envariable $MHBBRC, and honors it similarly. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + $HOME/.bbrc BBoard "current" message information + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + bboards: To specify interesting BBoards + mshproc: Program to read a given BBoard + + + _S_e_e _A_l_s_o + bbl(1), bboards(1), msh(1) + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + BBC(1) -23- BBC(1) + + + _D_e_f_a_u_l_t_s + `-read' + `-noarchive' + `-protocol' + `bboards' defaults to "system" + `-file /usr/spool/bboards/BBoards' + `-user bboards' + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + The `-user' switch takes effect only if followed by the `-file' + switch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + BBOARDS(1) -24- BBOARDS(1) + + + _N_A_M_E + bboards - the UCI BBoards facility + + _S_Y_N_O_P_S_I_S + bbc [-check] [-read] bboards ... [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + The home directory of _b_b_o_a_r_d_s is where the BBoard system is kept. + This documentation describes some of the nuances of the BBoard sys- + tem. + + BBoards, BBoard-IDs + A BBoard is just a file containing a group of messages relat- + ing to the same topic. These files live in the ~bboards home + directory. Each message in a BBoard file has in its header + the line "BBoard-Id: n", where "n" is an ascending decimal + number. This id-number is unique for each message in a + BBoards file. It should NOT be confused with the message + number of a message, which can change as messages are removed + from the BBoard. + + BBoard Handling + To read BBoards, use the _b_b_c and _m_s_h programs. The _m_s_h com- + mand is a monolithic program which contains all the func- + tionality of _M_H in a single program. The `-check' switch to + _b_b_c lets you check on the status of BBoards, and the `-read' + switch tells _b_b_c to invoke _m_s_h to read those BBoards. + + Creating a BBoard + Both public, and private BBoards are supported. Contact the + mail address _P_o_s_t_M_a_s_t_e_r if you'd like to have a BBoard + created. + + BBoard addresses + Each BBoard has associated with it 4 addresses, these are (for + the ficticious BBoard called ``hacks''): + hacks : The Internet wide distribution list. + dist-hacks : The local BBoard. + hacks-request : The people responsible for the BBoard at the + Internet level. + local-hacks-request : The people responsible for the BBoard + locally. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + $HOME/.bbrc BBoard information + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + BBOARDS(1) -25- BBOARDS(1) + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + bboards: To specify interesting BBoards + mshproc: Program to read a given BBoard + + + _S_e_e _A_l_s_o + bbc(1), bbl(1), bbleader(1), msh(1) + + + _D_e_f_a_u_l_t_s + The default bboard is "system" + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + BURST(1) -26- BURST(1) + + + _N_A_M_E + burst - explode digests into messages + + _S_Y_N_O_P_S_I_S + burst [+folder] [msgs] [-inplace] [-noinplace] [-quiet] [-noquiet] + [-verbose] [-noverbose] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _B_u_r_s_t considers the specified messages in the named folder to be + Internet digests, and explodes them in that folder. + + If `-inplace' is given, each digest is replaced by the "table of + contents" for the digest (the original digest is removed). _B_u_r_s_t + then renumbers all of the messages following the digest in the + folder to make room for each of the messages contained within the + digest. These messages are placed immediately after the digest. + + If `-noinplace' is given, each digest is preserved, no table of + contents is produced, and the messages contained within the digest + are placed at the end of the folder. Other messages are not tam- + pered with in any way. + + The `-quiet' switch directs _b_u_r_s_t to be silent about reporting mes- + sages that are not in digest format. + + The `-verbose' switch directs _b_u_r_s_t to tell the user the general + actions that it is taking to explode the digest. + + It turns out that _b_u_r_s_t works equally well on forwarded messages + and blind-carbon-copies as on Internet digests, provided that the + former two were generated by _f_o_r_w or _s_e_n_d. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Msg-Protect: To set mode when creating a new message + + + _S_e_e _A_l_s_o + _P_r_o_p_o_s_e_d _S_t_a_n_d_a_r_d _f_o_r _M_e_s_s_a_g_e _E_n_c_a_p_s_u_l_a_t_i_o_n (aka RFC-934), + inc(1), msh(1), pack(1) + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + BURST(1) -27- BURST(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to cur + `-noinplace' + `-noquiet' + `-noverbose' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. If `-in- + place' is given, then the first message burst becomes the current + message. This leaves the context ready for a _s_h_o_w of the table of + contents of the digest, and a _n_e_x_t to see the first message of the + digest. If `-noinplace' is given, then the first message extracted + from the first digest burst becomes the current message. This + leaves the context in a similar, but not identical, state to the + context achieved when using `-inplace'. + + + _B_u_g_s + The _b_u_r_s_t program enforces a limit on the number of messages which + may be _b_u_r_s_t from a single message. This number is on the order of + 1000 messages. There is usually no limit on the number of messages + which may reside in the folder after the _b_u_r_s_ting. + + Although _b_u_r_s_t uses a sophisticated algorithm to determine where + one encapsulated message ends and another begins, not all digesti- + fying programs use an encapsulation algorithm. In degenerate + cases, this usually results in _b_u_r_s_t finding an encapsulation boun- + dary prematurely and splitting a single encapsulated message into + two or more messages. These erroneous digestifying programs should + be fixed. + + Furthermore, any text which appears after the last encapsulated + message is not placed in a seperate message by _b_u_r_s_t. In the case + of digestified messages, this text is usally an "End of digest" + string. As a result of this possibly un-friendly behavior on the + part of _b_u_r_s_t, note that when the `-inplace' option is used, this + trailing information is lost. In practice, this is not a problem + since correspondents usually place remarks in text prior to the + first encapsulated message, and this information is not lost. + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + COMP(1) -28- COMP(1) + + + _N_A_M_E + comp - compose a message + + _S_Y_N_O_P_S_I_S + comp [+folder] [msg] [-draftfolder +folder] [-draftmessage msg] + [-nodraftfolder] [-editor editor] [-noedit] [-file file] + [-form formfile] [-use] [-nouse] [-whatnowproc program] + [-nowhatnowproc] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _C_o_m_p is used to create a new message to be mailed. It copies a + message form to the draft being composed and then invokes an editor + on the draft (unless `-noedit' is given, in which case the initial + edit is suppressed). + + The default message form contains the following elements: + + To: + cc: + Subject: + -------- + + If the file named "components" exists in the user's MH directory, + it will be used instead of this form. The file specified by + `-form formfile' will be used if given. You may also start _c_o_m_p + using the contents of an existing message as the form. If you sup- + ply either a `+folder' or `msg' argument, that message will be used + as the form. You may not supply both a `-form formfile' and a + `+folder' or `msg' argument. The line of dashes or a blank line + must be left between the header and the body of the message for the + message to be identified properly when it is sent (see _s_e_n_d (1)). + The switch `-use' directs _c_o_m_p to continue editing an already + started message. That is, if a _c_o_m_p (or _d_i_s_t, _r_e_p_l, or _f_o_r_w ) is + terminated without sending the draft, the draft can be edited again + via "comp -use". + + If the draft already exists, _c_o_m_p will ask you as to the disposi- + tion of the draft. A reply of quit will abort _c_o_m_p, leaving the + draft intact; replace will replace the existing draft with the + appropriate form; list will display the draft; use will use the + draft for further composition; and refile +folder will file the + draft in the given folder, and give you a new draft with the + appropriate form. (The `+folder' argument to refile is required.) + + The `-draftfolder +folder' and `-draftmessage msg' switches invoke + the _M_H draft folder facility. This is an advanced (and highly use- + ful) feature. Consult the Advanced Features section of the _M_H + manual for more information. + + The `-file file' switch says to use the named file as the message + draft. + + [mh.6] MH.6.8 UCI version + + + + + + + + + + COMP(1) -29- COMP(1) + + + The `-editor editor' switch indicates the editor to use for the + initial edit. Upon exiting from the editor, _c_o_m_p will invoke the + _w_h_a_t_n_o_w program. See _w_h_a_t_n_o_w (1) for a discussion of available + options. The invocation of this program can be inhibited by using + the `-nowhatnowproc' switch. (In truth of fact, it is the _w_h_a_t_n_o_w + program which starts the initial edit. Hence, `-nowhatnowproc' + will prevent any edit from occurring.) + + _F_i_l_e_s + /usr/local/lib/mh/components The message skeleton + or /components Rather than the standard skeleton + $HOME/.mh_profile The user profile + /draft The draft file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Draft-Folder: To find the default draft-folder + Editor: To override the default editor + Msg-Protect: To set mode when creating a new message + (draft) + fileproc: Program to refile the message + whatnowproc: Program to ask the "What now?" questions + + + _S_e_e _A_l_s_o + dist(1), forw(1), repl(1), send(1), whatnow(1), mh-profile(5) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msg' defaults to the current message + `-nodraftfolder' + `-nouse' + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + If _w_h_a_t_n_o_w_p_r_o_c is _w_h_a_t_n_o_w, then _c_o_m_p uses a built-in _w_h_a_t_n_o_w, it + does not actually run the _w_h_a_t_n_o_w program. Hence, if you define + your own _w_h_a_t_n_o_w_p_r_o_c, don't call it _w_h_a_t_n_o_w since _c_o_m_p won't run + it. + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + DIST(1) -30- DIST(1) + + + _N_A_M_E + dist - redistribute a message to additional addresses + + _S_Y_N_O_P_S_I_S + dist [+folder] [msg] [-annotate] [-noannotate] + [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [-editor editor] [-noedit] [-form formfile] [-inplace] + [-noinplace] [-whatnowproc program] [-nowhatnowproc] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _D_i_s_t is similar to _f_o_r_w. It prepares the specified message for + redistribution to addresses that (presumably) are not on the origi- + nal address list. + + The default message form contains the following elements: + + Resent-To: + Resent-cc: + + If the file named "distcomps" exists in the user's MH directory, it + will be used instead of this form. In either case, the file speci- + fied by `-form formfile' will be used if given. The form used will + be prepended to the message being resent. + + If the draft already exists, _d_i_s_t will ask you as to the disposi- + tion of the draft. A reply of quit will abort _d_i_s_t, leaving the + draft intact; replace will replace the existing draft with a blank + skeleton; and list will display the draft. + + Only those addresses in "Resent-To:", "Resent-cc:", and + "Resent-Bcc:" will be sent. Also, a "Resent-Fcc: folder" will be + honored (see _s_e_n_d (1)). Note that with _d_i_s_t, the draft should con- + tain only "Resent-xxx:" fields and no body. The headers and the + body of the original message are copied to the draft when the mes- + sage is sent. Use care in constructing the headers for the redis- + tribution. + + If the `-annotate' switch is given, the message being distributed + will be annotated with the lines: + + Resent: date + Resent: addrs + + where each address list contains as many lines as required. This + annotation will be done only if the message is sent directly from + _d_i_s_t. If the message is not sent immediately from _d_i_s_t, "comp + -use" may be used to re-edit and send the constructed message, but + the annotations won't take place. The '-inplace' switch causes + annotation to be done in place in order to preserve links to the + annotated message. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + DIST(1) -31- DIST(1) + + + See _c_o_m_p (1) for a description of the `-editor' and `-noedit' + switches. Note that while in the editor, the message being resent + is available through a link named "@" (assuming the default _w_h_a_t_- + _n_o_w_p_r_o_c ). In addition, the actual pathname of the message is + stored in the envariable $editalt, and the pathname of the folder + containing the message is stored in the envariable $mhfolder. + + The `-draftfolder +folder' and `-draftmessage msg' switches invoke + the _M_H draft folder facility. This is an advanced (and highly use- + ful) feature. Consult the Advanced Features section of the _M_H + manual for more information. + + Upon exiting from the editor, _d_i_s_t will invoke the _w_h_a_t_n_o_w program. + See _w_h_a_t_n_o_w (1) for a discussion of available options. The invoca- + tion of this program can be inhibited by using the `-nowhatnowproc' + switch. (In truth of fact, it is the _w_h_a_t_n_o_w program which starts + the initial edit. Hence, `-nowhatnowproc' will prevent any edit + from occurring.) + + _F_i_l_e_s + /usr/local/lib/mh/distcomps The message skeleton + or /distcomps Rather than the standard skeleton + $HOME/.mh_profile The user profile + /draft The draft file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Draft-Folder: To find the default draft-folder + Editor: To override the default editor + fileproc: Program to refile the message + whatnowproc: Program to ask the "What now?" questions + + + _S_e_e _A_l_s_o + comp(1), forw(1), repl(1), send(1), whatnow(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msg' defaults to cur + `-noannotate' + `-nodraftfolder' + `-noinplace' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. The mes- + sage distributed will become the current message. + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + DIST(1) -32- DIST(1) + + + _H_i_s_t_o_r_y + _D_i_s_t originally used headers of the form "Distribute-xxx:" instead + of "Resent-xxx:". In order to conform with the ARPA Internet stan- + dard, RFC-822, the "Resent-xxx:" form is now used. _D_i_s_t will + recognize "Distribute-xxx:" type headers and automatically convert + them to "Resent-xxx:". + + + _B_u_g_s + _D_i_s_t does not _r_i_g_o_r_o_u_s_l_y check the message being distributed for + adherence to the transport standard, but _p_o_s_t called by _s_e_n_d does. + The _p_o_s_t program will balk (and rightly so) at poorly formatted + messages, and _d_i_s_t won't correct things for you. + + If _w_h_a_t_n_o_w_p_r_o_c is _w_h_a_t_n_o_w, then _d_i_s_t uses a built-in _w_h_a_t_n_o_w, it + does not actually run the _w_h_a_t_n_o_w program. Hence, if you define + your own _w_h_a_t_n_o_w_p_r_o_c, don't call it _w_h_a_t_n_o_w since _d_i_s_t won't run + it. + + If your current working directory is not writable, the link named + "@" is not available. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + FOLDER(1) -33- FOLDER(1) + + + _N_A_M_E + folder, folders - set/list current folder/message + + _S_Y_N_O_P_S_I_S + folder [+folder] [msg] [-all] [-create] [-nocreate] [-print] + [-fast] [-nofast] [-header] [-noheader] [-recurse] + [-norecurse] [-total] [-nototal] [-list] [-nolist] [-push] + [-pop] [-pack] [-nopack] [-verbose] [-noverbose] [-help] + + folders + + _D_E_S_C_R_I_P_T_I_O_N + + Since the _M_H environment is the shell, it is easy to lose track of + the current folder from day to day. When _f_o_l_d_e_r is given the + `-print' switch (the default), _f_o_l_d_e_r will list the current folder, + the number of messages in it, the range of the messages (low-high), + and the current message within the folder, and will flag extra + files if they exist. An example of this summary is: + + inbox+ has 16 messages ( 3- 22); cur= 5. + + If a `+folder' and/or `msg' are specified, they will become the + current folder and/or message. By comparison, when a `+folder' + argument is given, this corresponds to a "cd" operation in the + _s_h_e_l_l; when no `+folder' argument is given, this corresponds + roughly to a "pwd" operation in the _s_h_e_l_l. + + If the specified (or default) folder doesn't exist, the default + action is to query the user as to whether the folder should be + created; when standard input is not a tty, the answer to the query + is assumed to be "yes". + + Specifying `-create' will cause _f_o_l_d_e_r to create new folders + without any query. (This is the easy way to create an empty folder + for use later.) Specifying `-nocreate' will cause _f_o_l_d_e_r to exit + without creating a non-existant folder. + + _M_u_l_t_i_p_l_e _F_o_l_d_e_r_s + + Specifying `-all' will produce a summary line for each top-level + folder in the user's MH directory, sorted alphabetically. (If + _f_o_l_d_e_r is invoked by a name ending with "s" (e.g., _f_o_l_d_e_r_s ), + `-all' is assumed). Specifying `-recurse' with `-all' will also + produce a line for all sub-folders. These folders are all preceded + by the read-only folders, which occur as "atr-cur-" entries in the + user's _M_H context. For example, + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + FOLDER(1) -34- FOLDER(1) + + + Folder # of messages ( range ) cur msg (other files) + /fsd/rs/m/tacc has 35 messages ( 1- 35); cur= 23. + /rnd/phyl/Mail/EP has 82 messages ( 1-108); cur= 82. + ff has no messages. + inbox+ has 16 messages ( 3- 22); cur= 5. + mh has 76 messages ( 1- 76); cur= 70. + notes has 2 messages ( 1- 2); cur= 1. + ucom has 124 messages ( 1-124); cur= 6; (others). + TOTAL= 339 messages in 7 folders + + The "+" after inbox indicates that it is the current folder. The + "(others)" indicates that the folder `ucom' has files which aren't + messages. These files may either be sub-folders, or files that + don't belong under the MH file naming scheme. + + The header is output if either a `-all' or a `-header' switch is + specified; it is suppressed by `-noheader'. A `-total' switch will + produce only the summary line. + + If `-fast' is given, only the folder name (or names in the case of + `-all') will be listed. (This is faster because the folders need + not be read.) + + If a `+folder' is given along with the `-all' switch, _f_o_l_d_e_r will, + in addition to setting the current folder, list the top-level fold- + ers for the current folder (with `-norecurse') or list all sub- + folders under the current folder recursively (with `-recurse'). In + this case, if a `msg' is also supplied, it will become the current + message of `+folder'. + + The `-recurse' switch lists each folder recursively, so use of this + option effectively defeats the speed enhancement of the `-fast' + option, since each folder must be searched for subfolders. + Nevertheless, the combination of these options is useful. + + + _C_o_m_p_a_c_t_i_n_g _a _F_o_l_d_e_r + + The `-pack' switch will compress the message names in the desig- + nated folders, removing holes in message numbering. The `-verbose' + switch directs _f_o_l_d_e_r to tell the user the general actions that it + is taking to compress the folder. + + + _T_h_e _F_o_l_d_e_r _S_t_a_c_k + + The `-push' switch directs _f_o_l_d_e_r to push the current folder onto + the _f_o_l_d_e_r-_s_t_a_c_k, and make the `+folder' argument the current + folder. If `+folder' is not given, the current folder and the top + of the _f_o_l_d_e_r-_s_t_a_c_k are exchanged. This corresponds to the "pushd" + operation in the _C_S_h_e_l_l. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + FOLDER(1) -35- FOLDER(1) + + + The `-pop' switch directs _f_o_l_d_e_r to discard the top of the + _f_o_l_d_e_r-_s_t_a_c_k, after setting the current folder to that value. No + `+folder' argument is allowed. This corresponds to the "popd" + operation in the _C_S_h_e_l_l. The `-push' switch and the `-pop' switch + are mutually exclusive: the last occurrence of either one overrides + any previous occurrence of the other. Both of these switches also + set `-list' by default. + + The `-list' switch directs _f_o_l_d_e_r to list the contents of the + _f_o_l_d_e_r-_s_t_a_c_k. No `+folder' argument is allowed. After a success- + ful `-push' or `-pop', the `-list' action is taken, unless a `-nol- + ist' switch follows them on the command line. This corresponds to + the "dirs" operation in the _C_S_h_e_l_l. The `-push', `-pop', and + `-list' switches turn off `-print'. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Folder-Protect: To set mode when creating a new folder + Folder-Stack: To determine the folder stack + + + _S_e_e _A_l_s_o + refile(1), mhpath(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msg' defaults to none + `-nofast' + `-noheader' + `-nototal' + `-nopack' + `-norecurse' + `-noverbose' + `-print' is the default if no `-list', `-push', or `-pop' is specified + `-list' is the default if `-push', or `-pop' is specified + + + _C_o_n_t_e_x_t + If `+folder' and/or `msg' are given, they will become the current + folder and/or message. + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + FOLDER(1) -36- FOLDER(1) + + + _H_i_s_t_o_r_y + In previous versions of _M_H, the `-fast' switch prevented context + changes from occurring for the current folder. This is no longer + the case: if `+folder' is given, then _f_o_l_d_e_r will always change the + current folder to that. + + + _B_u_g_s + `-all' forces `-header' and `-total'. + + There is no way to restore the default behavior (to ask the user + whether to create a non-existant folder) after `-create' or `-no- + create' is given. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + FORW(1) -37- FORW(1) + + + _N_A_M_E + forw - forward messages + + _S_Y_N_O_P_S_I_S + forw [+folder] [msgs] [-annotate] [-noannotate] + [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [-editor editor] [-noedit] [-filter filterfile] + [-form formfile] [-format] [-noformat] [-inplace] [-noinplace] + [-whatnowproc program] [-nowhatnowproc] [-help] + + forw [+folder] [msgs] [-digest list] [-issue number] + [-volume number] [other switches for _f_o_r_w] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _F_o_r_w may be used to prepare a message containing other messages. + It constructs the new message from the components file or + `-form formfile' (see _c_o_m_p ), with a body composed of the + message(s) to be forwarded. An editor is invoked as in _c_o_m_p, and + after editing is complete, the user is prompted before the message + is sent. + + The default message form contains the following elements: + + To: + cc: + Subject: + -------- + + If the file named "forwcomps" exists in the user's MH directory, it + will be used instead of this form. In either case, the file speci- + fied by `-form formfile' will be used if given. + + If the draft already exists, _f_o_r_w will ask you as to the disposi- + tion of the draft. A reply of quit will abort _f_o_r_w, leaving the + draft intact; replace will replace the existing draft with a blank + skeleton; and list will display the draft. + + If the `-annotate' switch is given, each message being forwarded + will be annotated with the lines + + Forwarded: date + Forwarded: addrs + + where each address list contains as many lines as required. This + annotation will be done only if the message is sent directly from + _f_o_r_w. If the message is not sent immediately from _f_o_r_w, + "comp -use" may be used to re-edit and send the constructed mes- + sage, but the annotations won't take place. The '-inplace' switch + causes annotation to be done in place in order to preserve links to + the annotated message. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + FORW(1) -38- FORW(1) + + + See _c_o_m_p (1) for a description of the `-editor' and `-noedit' + switches. + + Although _f_o_r_w uses the `-form formfile' switch to direct it how to + construct the beginning of the draft, the `-filter filterfile', + `-format', and `-noformat' switches direct _f_o_r_w as to how each for- + warded message should be formatted in the body of the draft. If + `-noformat' is specified, then each forwarded message is output + exactly as it appears. If `-format' or `-filter filterfile' is + specified, then each forwarded message is filtered (re-formatted) + prior to being output to the body of the draft. The filter file + for _f_o_r_w should be a standard form file for _m_h_l, as _f_o_r_w will + invoke _m_h_l to format the forwarded messages. The default message + filter (what you get with `-format') is: + + width=80,overflowtext=,overflowoffset=10 + leftadjust,compress,compwidth=9 + Date:formatfield="%<(nodate{text})%{text}%|%(tws{text})%>" + From: + To: + cc: + Subject: + : + body:nocomponent,overflowoffset=0,noleftadjust,nocompress + + If the file named "mhl.forward" exists in the user's MH directory, + it will be used instead of this form. In either case, the file + specified by `-filter filterfile' will be used if given. To sum- + marize: `-noformat' will reproduce each forwarded message exactly, + `-format' will use _m_h_l and a default filterfile, "mhl.forward", to + format each forwarded message, and `-filter filterfile' will use + the named filterfile to format each forwarded message with _m_h_l. + + Each forwarded message is separated with an encapsulation delimiter + and dashes in the first column of the forwarded messages will be + prepended with `- ' so that when received, the message is suitable + for bursting by _b_u_r_s_t (1). This follows the Internet RFC-934 + guidelines. + + For users of _p_r_o_m_p_t_e_r (1), by specifying prompter's `-prepend' + switch in the .mh_profile file, any commentary text is entered + before the forwarded messages. (A major win!) + + The `-draftfolder +folder' and `-draftmessage msg' switches invoke + the _M_H draft folder facility. This is an advanced (and highly use- + ful) feature. Consult the Advanced Features section of the _M_H + manual for more information. + + Upon exiting from the editor, _f_o_r_w will invoke the _w_h_a_t_n_o_w program. + See _w_h_a_t_n_o_w (1) for a discussion of available options. The invoca- + tion of this program can be inhibited by using the `-nowhatnowproc' + switch. (In truth of fact, it is the _w_h_a_t_n_o_w program which starts + + [mh.6] MH.6.8 UCI version + + + + + + + + + + FORW(1) -39- FORW(1) + + + the initial edit. Hence, `-nowhatnowproc' will prevent any edit + from occurring.) + + The `-digest list', `-issue number', and `-volume number' switches + implement a digest facility for _M_H. Specifying these switches + enables and/or overloads the following escapes: + + _T_y_p_e _E_s_c_a_p_e _R_e_t_u_r_n_s _D_e_s_c_r_i_p_t_i_o_n + _c_o_m_p_o_n_e_n_t _d_i_g_e_s_t string Argument to `-digest' + _f_u_n_c_t_i_o_n _c_u_r integer Argument to `-volume' + _f_u_n_c_t_i_o_n _m_s_g integer Argument to `-issue' + + Consult the Advanced Features section of the _M_H User's Manual for + more information on making digests. + + _F_i_l_e_s + /usr/local/lib/mh/forwcomps The message skeleton + or /forwcomps Rather than the standard skeleton + /usr/local/lib/mh/digestcomps The message skeleton if `-digest' is given + or /digestcomps Rather than the standard skeleton + /usr/local/lib/mh/mhl.forward The message filter + or /mhl.forward Rather than the standard filter + $HOME/.mh_profile The user profile + /draft The draft file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Draft-Folder: To find the default draft-folder + Editor: To override the default editor + Msg-Protect: To set mode when creating a new message + (draft) + fileproc: Program to refile the message + mhlproc: Program to filter messages being forwarded + whatnowproc: Program to ask the "What now?" questions + + + _S_e_e _A_l_s_o + _P_r_o_p_o_s_e_d _S_t_a_n_d_a_r_d _f_o_r _M_e_s_s_a_g_e _E_n_c_a_p_s_u_l_a_t_i_o_n (aka RFC-934), + comp(1), dist(1), repl(1), send(1), whatnow(1), mh-format(5) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to cur + `-noannotate' + `-nodraftfolder' + `-noformat' + `-noinplace' + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + FORW(1) -40- FORW(1) + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. The first + message forwarded will become the current message. + + + _B_u_g_s + If _w_h_a_t_n_o_w_p_r_o_c is _w_h_a_t_n_o_w, then _f_o_r_w uses a built-in _w_h_a_t_n_o_w, it + does not actually run the _w_h_a_t_n_o_w program. Hence, if you define + your own _w_h_a_t_n_o_w_p_r_o_c, don't call it _w_h_a_t_n_o_w since _f_o_r_w won't run + it. + + When _f_o_r_w is told to annotate the messages it forwards, it doesn't + actually annotate them until the draft is successfully sent. If + from the _w_h_a_t_n_o_w_p_r_o_c, you _p_u_s_h instead of _s_e_n_d, it's possible to + confuse _f_o_r_w by re-ordering the file (e.g., by using + `folder -pack') before the message is successfully sent. _D_i_s_t and + _r_e_p_l don't have this problem. + + To avoid prepending the leading dash characters in forwarded mes- + sages, there is a `-nodashmunging' option. See the "Hidden + Features" section of the _M_H _A_d_m_i_n_i_s_t_r_a_t_o_r'_s _G_u_i_d_e for more details. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + INC(1) -41- INC(1) + + + _N_A_M_E + inc - incorporate new mail + + _S_Y_N_O_P_S_I_S + inc [+folder] [-audit audit-file] [-noaudit] [-changecur] + [-nochangecur] [-form formatfile] [-format string] + [-file name] [-silent] [-nosilent] [-truncate] [-notruncate] + [-width columns] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _I_n_c incorporates mail from the user's incoming mail drop into an _M_H + folder. If `+folder' isn't specified, a folder in the user's _M_H + directory will be used, either that specified by the "Inbox:" entry + in the user's profile, or the folder named "inbox". The new mes- + sages being incorporated are assigned numbers starting with the + next highest number in the folder. If the specified (or default) + folder doesn't exist, the user will be queried prior to its crea- + tion. As the messages are processed, a _s_c_a_n listing of the new + mail is produced. + + If the user's profile contains a "Msg-Protect: nnn" entry, it will + be used as the protection on the newly created messages, otherwise + the _M_H default of 0644 will be used. During all operations on mes- + sages, this initially assigned protection will be preserved for + each message, so _c_h_m_o_d(1) may be used to set a protection on an + individual message, and its protection will be preserved + thereafter. + + If the switch `-audit audit-file' is specified (usually as a + default switch in the profile), then _i_n_c will append a header line + and a line per message to the end of the specified audit-file with + the format: + + <> date + + + + + This is useful for keeping track of volume and source of incoming + mail. Eventually, _r_e_p_l, _f_o_r_w, _c_o_m_p, and _d_i_s_t may also produce + audits to this (or another) file, perhaps with "Message-Id:" infor- + mation to keep an exact correspondence history. "Audit-file" will + be in the user's MH directory unless a full path is specified. + + _I_n_c will incorporate even improperly formatted messages into the + user's MH folder, inserting a blank line prior to the offending + component and printing a comment identifying the bad message. + + In all cases, the user's mail drop will be zeroed, unless the + `-notruncate' switch is given. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + INC(1) -42- INC(1) + + + If the profile entry "Unseen-Sequence" is present and non-empty, + then _i_n_c will add each of the newly incorporated messages to each + sequence named by the profile entry. This is similar to the + "Previous-Sequence" profile entry supported by all _M_H commands + which take `msgs' or `msg' arguments. Note that _i_n_c will not zero + each sequence prior to adding messages. + + The interpretation of the `-form formatfile', `-format string', and + `-width columns' switches is the same as in _s_c_a_n (1). + + By using the `-file name' switch, one can direct _i_n_c to incorporate + messages from a file other than the user's maildrop. Note that the + name file will NOT be zeroed, unless the `-truncate' switch is + given. + + If the envariable $MAILDROP is set, then _i_n_c uses it as the loca- + tion of the user's maildrop instead of the default (the `- + file name' switch still overrides this, however). If this envari- + able is not set, then _i_n_c will consult the profile entry "MailDrop" + for this information. If the value found is not absolute, then it + is interpreted relative to the user's _M_H directory. If the value + is not found, then _i_n_c will look in the standard system location + for the user's maildrop. + + The `-silent' switch directs _i_n_c to be quiet and not ask any ques- + tions at all. This is useful for putting _i_n_c in the background and + going on to other things. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /usr/local/lib/mh/mtstailor tailor file + /usr/spool/mail/$USER Location of mail drop + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Alternate-Mailboxes: To determine the user's mailboxes + Inbox: To determine the inbox, default "inbox" + Folder-Protect: To set mode when creating a new folder + Msg-Protect: To set mode when creating a new message and + audit-file + Unseen-Sequence: To name sequences denoting unseen messages + + + _S_e_e _A_l_s_o + mhmail(1), scan(1), mh-mail(5), post(8) + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + INC(1) -43- INC(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaulted by "Inbox" above + `-noaudit' + `-changecur' + `-format' defaulted as described above + `-nosilent' + `-truncate' if `-file name' not given, `-notruncate' otherwise + `-width' defaulted to the width of the terminal + + + _C_o_n_t_e_x_t + The folder into which messages are being incorporated will become + the current folder. The first message incorporated will become the + current message, unless the `-nochangecur' option is specified. + This leaves the context ready for a _s_h_o_w of the first new message. + + + _B_u_g_s + The argument to the `-format' switch must be interpreted as a sin- + gle token by the shell that invokes _i_n_c. Therefore, one must usu- + ally place the argument to this switch inside double-quotes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MARK(1) -44- MARK(1) + + + _N_A_M_E + mark - mark messages + + _S_Y_N_O_P_S_I_S + mark [+folder] [msgs] [-sequence name ...] [-add] [-delete] [-list] + [-public] [-nopublic] [-zero] [-nozero] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + The _m_a_r_k command manipulates message sequences by adding or delet- + ing message numbers from folder-specific message sequences, or by + listing those sequences and messages. A message sequence is a key- + word, just like one of the "reserved" message names, such as + "first" or "next". Unlike the "reserved" message names, which have + a fixed semantics on a per-folder basis, the semantics of a message + sequence may be defined, modified, and removed by the user. Mes- + sage sequences are folder-specific, e.g., the sequence name "seen" + in the context of folder "+inbox" need not have any relation what- + soever to the sequence of the same name in a folder of a different + name. + + Three action switches direct the operation of _m_a_r_k. These switches + are mutually exclusive: the last occurrence of any of them over- + rides any previous occurrence of the other two. + + The `-add' switch tells _m_a_r_k to add messages to sequences or to + create a new sequence. For each sequence named via the + `-sequence name' argument (which must occur at least once) the mes- + sages named via `msgs' (which defaults to "cur" if no `msgs' are + given), are added to the sequence. The messages to be added need + not be absent from the sequence. If the `-zero' switch is speci- + fied, the sequence will be emptied prior to adding the messages. + Hence, `-add -zero' means that each sequence should be initialized + to the indicated messages, while `-add -nozero' means that each + sequence should be appended to by the indicated messages. + + The `-delete' switch tells _m_a_r_k to delete messages from sequences, + and is the dual of `-add'. For each of the named sequences, the + named messages are removed from the sequence. These messages need + not be already present in the sequence. If the `-zero' switch is + specified, then all messages in the folder are appended to the + sequence prior to removing the messages. Hence, `-delete -zero' + means that each sequence should contain all messages except those + indicated, while `-delete -nozero' means that only the indicated + messages should be removed from each sequence. As expected, the + command `mark -sequence seen -delete all' deletes the sequence + "seen" from the current folder. + + When creating (or modifying) a sequence, the `-public' switch indi- + cates that the sequence should be made readable for other _M_H users. + In contrast, the `-nopublic' switch indicates that the sequence + should be private to the user's _M_H environment. + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MARK(1) -45- MARK(1) + + + The `-list' switch tells _m_a_r_k to list both the sequences defined + for the folder and the messages associated with those sequences. + _M_a_r_k will list the name of each sequence given by `-sequence name' + and the messages associated with that sequence. If `-sequence' + isn't used, all sequences will be listed, with private sequences + being so indicated. The `-zero' switch does not affect the opera- + tion of `-list'. + + The current restrictions on sequences are: + + The name used to denote a message sequence must consist of an + alphabetic character followed by zero or more alphanumeric char- + acters, and cannot be one of the (reserved) message names "new", + "first", "last", "all", "next", or "prev". + + Only a certain number of sequences may be defined for a given + folder. This number is usually limited to 26 (10 on small sys- + tems). + + Message ranges with user-defined sequence names are restricted to + the form "name:n" or "name:-n", and refer to the first or last + `n' messages of the sequence `name', respectively. Constructs of + the form "name1-name2" are forbidden. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + + + _S_e_e _A_l_s_o + pick (1), mh-sequence (5) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `-add' if `-sequence' is specified, `-list' otherwise + `msgs' defaults to cur (or all if `-list' is specified) + `-nopublic' if the folder is read-only, `-public' otherwise + `-nozero' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. + + _H_e_l_p_f_u_l _H_i_n_t_s + + Use "pick sequence -list" to enumerate the messages in a sequence + (such as for use by a shell script). + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MARK(1) -46- MARK(1) + + + _N_A_M_E + mhl - produce formatted listings of MH messages + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/mhl [-bell] [-nobell] [-clear] [-noclear] + [-folder +folder] [-form formfile] [-length lines] + [-width columns] [-moreproc program] [-nomoreproc] [files ...] + [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _M_h_l is a formatted message listing program. It can be used as a + replacement for _m_o_r_e (1) (the default _s_h_o_w_p_r_o_c ). As with _m_o_r_e, + each of the messages specified as arguments (or the standard input) + will be output. If more than one message file is specified, the + user will be prompted prior to each one, and a or + will begin the output, with clearing the screen (if + appropriate), and (usually CTRL-D) suppressing the screen + clear. An (usually CTRL-C) will abort the current mes- + sage output, prompting for the next message (if there is one), and + a (usually CTRL-\) will terminate the program (without core + dump). + + The `-bell' option tells _m_h_l to ring the terminal's bell at the end + of each page, while the `-clear' option tells _m_h_l to clear the + scree at the end of each page (or output a formfeed after each mes- + sage). Both of these switches (and their inverse counterparts) + take effect only if the profile entry _m_o_r_e_p_r_o_c is defined but + empty, and _m_h_l is outputting to a terminal. If the _m_o_r_e_p_r_o_c entry + is defined and non-empty, and _m_h_l is outputting to a terminal, then + _m_h_l will cause the _m_o_r_e_p_r_o_c to be placed between the terminal and + _m_h_l and the switches are ignored. Furthermore, if the `-clear' + switch is used and _m_h_l'_s output is directed to a terminal, then _m_h_l + will consult the $TERM and $TERMCAP envariables to determine the + user's terminal type in order to find out how to clear the screen. + If the `-clear' switch is used and _m_h_l'_s output is not directed to + a terminal (e.g., a pipe or a file), then _m_h_l will send a formfeed + after each message. + + To override the default _m_o_r_e_p_r_o_c and the profile entry, use the + `-moreproc program' switch. Note that _m_h_l will never start a + _m_o_r_e_p_r_o_c if invoked on a hardcopy terminal. + + The `-length length' and `-width width' switches set the screen + length and width, respectively. These default to the values indi- + cated by $TERMCAP, if appropriate, otherwise they default to 40 and + 80, respectively. + + The default format file used by _m_h_l is called _m_h_l._f_o_r_m_a_t (which is + first searched for in the user's _M_H directory, and then sought in + the /_u_s_r/_l_o_c_a_l/_l_i_b/_m_h directory), this can be changed by using the + `-form formatfile' switch. + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHL(1) -47- MHL(1) + + + Finally, the `-folder +folder' switch sets the _M_H folder name, + which is used for the "messagename:" field described below. The + envariable $mhfolder is consulted for the default value, which + _s_h_o_w, _n_e_x_t, and _p_r_e_v initialize appropriately. + + _M_h_l operates in two phases: 1) read and parse the format file, and + 2) process each message (file). During phase 1, an internal + description of the format is produced as a structured list. In + phase 2, this list is walked for each message, outputting message + information under the format constraints from the format file. + + The "mhl.format" form file contains information controlling screen + clearing, screen size, wrap-around control, transparent text, com- + ponent ordering, and component formatting. Also, a list of com- + ponents to ignore may be specified, and a couple of "special" com- + ponents are defined to provide added functionality. Message output + will be in the order specified by the order in the format file. + + Each line of mhl.format has one of the formats: + + ;comment + :cleartext + variable[,variable...] + component:[variable,...] + + A line beginning with a `;' is a comment, and is ignored. A line + beginning with a `:' is clear text, and is output exactly as is. A + line containing only a `:' produces a blank line in the output. A + line beginning with "component:" defines the format for the speci- + fied component, and finally, remaining lines define the global + environment. + + For example, the line: + + width=80,length=40,clearscreen,overflowtext="***",overflowoffset=5 + + defines the screen size to be 80 columns by 40 rows, specifies that + the screen should be cleared prior to each page, that the overflow + indentation is 5, and that overflow text should be flagged with + "***". + + Following are all of the current variables and their arguments. If + they follow a component, they apply only to that component, other- + wise, their affect is global. Since the whole format is parsed + before any output processing, the last global switch setting for a + variable applies to the whole message if that variable is used in a + global context (i.e., bell, clearscreen, width, length). + + _v_a_r_i_a_b_l_e _t_y_p_e _s_e_m_a_n_t_i_c_s + width integer screen width or component width + length integer screen length or component length + offset integer positions to indent "component: " + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHL(1) -48- MHL(1) + + + overflowtext string text to use at the beginning of an + overflow line + overflowoffset integer positions to indent overflow lines + compwidth integer positions to indent component text + after the first line is output + uppercase flag output text of this component in all + upper case + nouppercase flag don't uppercase + clearscreen flag/G clear the screen prior to each page + noclearscreen flag/G don't clearscreen + bell flag/G ring the bell at the end of each page + nobell flag/G don't bell + component string/L name to use instead of "component" for + this component + nocomponent flag don't output "component: " for this + component + center flag center component on line (works for + one-line components only) + nocenter flag don't center + leftadjust flag strip off leading whitespace on each + line of text + noleftadjust flag don't leftadjust + compress flag change newlines in text to spaces + nocompress flag don't compress + split flag don't combine multiple fields into a single field + nosplit flag combine multiple fields into a single field + newline flag print newline at end of components (default) + nonewline flag don't print newline at end of components + formatfield string format string for this component (see below) + addrfield flag field contains addresses + datefield flag field contains dates + + To specify the value of integer-valued and string-valued variables, + follow their name with an equals-sign and the value. + Integer-valued variables are given decimal values, while + string-valued variables are given arbitrary text bracketed by + double-quotes. If a value is suffixed by "/G" or "/L", then its + value is useful in a global-only or local-only context (respec- + tively). + + A line of the form: + + ignores=component,... + + specifies a list of components which are never output. + + The component "MessageName" (case-insensitive) will output the + actual message name (file name) preceded by the folder name if one + is specified or found in the environment. The format is identical + to that produced by the `-header' option to _s_h_o_w. + + The component "Extras" will output all of the components of the + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHL(1) -49- MHL(1) + + + message which were not matched by explicit components, or included + in the ignore list. If this component is not specified, an ignore + list is not needed since all non-specified components will be + ignored. + + If "nocomponent" is NOT specified, then the component name will be + output as it appears in the format file. + + The default format is: + + : -- using template mhl.format -- + overflowtext="***",overflowoffset=5 + leftadjust,compwidth=9 + ignores=msgid,message-id,received + Date:formatfield="%<(nodate{text})%{text}%|%(pretty{text})%>" + To: + cc: + : + From: + Subject: + : + extras:nocomponent + : + body:nocomponent,overflowtext=,overflowoffset=0,noleftadjust + + The variable "formatfield" specifies a format string (see + _m_h-_f_o_r_m_a_t (5)). The flag variables "addrfield" and "datefield" + (which are mutually exclusive), tell _m_h_l to interpret the escapes + in the format string as either addresses or dates, respectively. + + By default, _m_h_l does not apply any formatting string to fields con- + taining address or dates (see _m_h-_m_a_i_l (5) for a list of these + fields). Note that this results in faster operation since _m_h_l must + parse both addresses and dates in order to apply a format string to + them. If desired, _m_h_l can be given a default format string for + either address or date fields (but not both). To do this, on a + global line specify: either the flag addrfield or datefield, along + with the apropriate formatfield variable string. + + _F_i_l_e_s + /usr/local/lib/mh/mhl.format The message template + or /mhl.format Rather than the standard template + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + moreproc: Program to use as interactive front-end + + + _S_e_e _A_l_s_o + show(1), ap(8), dp(8) + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHL(1) -50- MHL(1) + + + _D_e_f_a_u_l_t_s + `-bell' + `-noclear' + `-length 40' + `-width 80' + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + There should be some way to pass `bell' and `clear' information to + the front-end. + + On hosts where _M_H was configured with the BERK option, address + parsing is not enabled. + + The "nonewline" option interacts badly with "compress" and "split". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHMAIL(1) -51- MHMAIL(1) + + + _N_A_M_E + mhmail - send or read mail + + _S_Y_N_O_P_S_I_S + mhmail [ addrs ... [-body text] [-cc addrs ...] [-from addr] + [-subject subject]] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _M_H_m_a_i_l is intended as a replacement for the standard Bell mail pro- + gram (_b_e_l_l_m_a_i_l (1)), compatible with _M_H. When invoked without + arguments, it simply invokes _i_n_c (1) to incorporate new messages + from the user's maildrop. When one or more users is specified, a + message is read from the standard input and spooled to a temporary + file. _M_H_m_a_i_l then invokes _p_o_s_t (8) with the name of the temporary + file as its argument to deliver the message to the specified user. + + The `-subject subject' switch can be used to specify the "Subject:" + field of the message. The `-body text' switch can be used to + specify the text of the message; if it is specified, then the stan- + dard input is not read. Normally, addresses appearing as arguments + are put in the "To:" field. If the `-cc' switch is used, all + addresses following it are placed in the "cc:" field. + + By using `-from addr', you can specify the "From:" header of the + draft. Naturally, _p_o_s_t will fill-in the "Sender:" header + correctly. + + This program is intended for the use of programs such as _a_t (1), + which expect to send mail automatically to various users. Nor- + mally, real people (as opposed to the "unreal" ones) will prefer to + use _c_o_m_p (1) and _s_e_n_d (1) to send messages. + + _F_i_l_e_s + /usr/local/inc Program to incorporate a maildrop into a folder + /usr/local/lib/mh/post Program to deliver a message + /tmp/mhmail* Temporary copy of message + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + inc(1), post(8) + + + _D_e_f_a_u_l_t_s + None + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHMAIL(1) -52- MHMAIL(1) + + + _C_o_n_t_e_x_t + If _i_n_c is invoked, then _i_n_c's context changes occur. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHOOK(1) -53- MHOOK(1) + + + _N_A_M_E + mhook, rcvdist, rcvpack, rcvtty - MH receive-mail hooks + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/rcvdist [-form formfile] [switches for _p_o_s_t_p_r_o_c] + address ... [-help] + + /usr/local/lib/mh/rcvpack file [-help] + + /usr/local/lib/mh/rcvtty [command] [-form formatfile] + [-format string] [-bell] [-nobell] [-newline] [-nonewline] + [-biff] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + A receive-mail hook is a program that is run whenever you receive a + mail message. You do NOT invoke the hook yourself, rather the hook + is invoked on your behalf by your system's Message Transport Agent. + See _s_l_o_c_a_l (1) for details on how to activate receive-mail hooks on + your system. + + Four programs are currently available as part of _M_H, _r_c_v_d_i_s_t + (redistribute incoming messages to additional recipients), _r_c_v_p_a_c_k + (save incoming messages in a _p_a_c_k_f'd file), and _r_c_v_t_t_y (notify user + of incoming messages). The fourth program, _r_c_v_s_t_o_r_e (1) is + described separately. They all reside in the /_u_s_r/_l_o_c_a_l/_l_i_b/_m_h/ + directory. + + The _r_c_v_d_i_s_t program will resend a copy of the message to all of the + addresses listed on its command line. It uses the format string + facility described in _m_h-_f_o_r_m_a_t (5). + + The _r_c_v_p_a_c_k program will append a copy of the message to the file + listed on its command line. Its use is obsoleted by the "file" + action of _s_l_o_c_a_l. + + The _r_c_v_t_t_y program executes the named file with the message as its + standard input, and writes the resulting output on your terminal. + + If no file is specified, or is bogus, etc., then _r_c_v_t_t_y will + instead write a one-line scan listing. Either the + `-form formatfile' or `-format string' option may be used to over- + ride the default output format (see _m_h-_f_o_r_m_a_t (5)). A newline is + output before the message output, and the terminal bell is rung + after the output. The `-nonewline' and `-nobell' options will + inhibit these functions. + + In addition to the standard _m_h-_f_o_r_m_a_t (5) escapes, _r_c_v_t_t_y also + recognizes the following additional _c_o_m_p_o_n_e_n_t escapes: + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHOOK(1) -54- MHOOK(1) + + + _E_s_c_a_p_e _R_e_t_u_r_n_s _D_e_s_c_r_i_p_t_i_o_n + body string the (compressed) first part of the body + dtimenow date the current date + folder string the name of the current folder + + Normally, _r_c_v_t_t_y obeys write permission as granted by _m_e_s_g (1). + With the `-biff' option, _r_c_v_t_t_y will obey the notification status + set by _b_i_f_f (1) instead. If the terminal access daemon (TTYD) is + available on your system, then _r_c_v_t_t_y will give its output to the + daemon for output instead of writing on the user's terminal. + + _F_i_l_e_s + /usr/local/lib/mh/mtstailor tailor file + $HOME/.maildelivery The file controlling local delivery + /usr/local/lib/mh/maildelivery Rather than the standard file + + + _S_e_e _A_l_s_o + rcvstore (1), mh-format(5), slocal(1) + + + _B_u_g_s + Only two return codes are meaningful, others should be. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHPARAM(1) -55- MHPARAM(1) + + + _N_A_M_E + mhparam - print MH profile components + + _S_Y_N_O_P_S_I_S + mhparam [components] [-all] [-component] [-nocomponent] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _M_h_p_a_r_a_m writes the value of the specified profile component to the + standard output separated by newlines. If the profile component is + not present, the default value (or nothing if there is no default) + is printed. + + If more than one component is specified in the `components' list, + the component value is preceded by the component name. If `-com- + ponent' is specified, the component name is displayed even when + only one component is specified. If `-nocomponent' is specified, + the component name is not displayed even when more than one com- + ponent is specified. + + If `-all' is specified, all components if the MH profile are + displayed and other arguments are ignored. + + Examples: + + % mhparam path + Mail + + % mhparam mhlproc + /usr/local/lib/mh/mhl + + % mhparam -component path + Path: Mail + + % mhparam AliasFile rmmproc + AliasFile: aliases + rmmproc: rmmproc + + % mhparam -nocomponent AliasFile rmmproc + aliases + rmmproc + + _M_h_p_a_r_a_m is also useful in back-quoted operations: + + % fgrep cornell.edu `mhpath +`/`mhparam aliasfile` + + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHPARAM(1) -56- MHPARAM(1) + + + _S_e_e _A_l_s_o + mh-profile(5) + + + _D_e_f_a_u_l_t_s + `-nocomponent' if only one component is specified + `-component' if more than one component is specified + `components' defaults to none + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHPATH(1) -57- MHPATH(1) + + + _N_A_M_E + mhpath - print full pathnames of MH messages and folders + + _S_Y_N_O_P_S_I_S + mhpath [+folder] [msgs] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _M_h_p_a_t_h expands and sorts the message list `msgs' and writes the + full pathnames of the messages to the standard output separated by + newlines. If no `msgs' are specified, _m_h_p_a_t_h outputs the folder + pathname instead. If the only argument is `+', your MH _P_a_t_h is + output; this can be useful is shell scripts. + + Contrasted with other MH commands, a message argument to _m_h_p_a_t_h may + often be intended for _w_r_i_t_i_n_g. Because of this: + + 1) the name "new" has been added to _m_h_p_a_t_h's list of reserved mes- + sage names (the others are "first", "last", "prev", "next", "cur", + and "all"). The new message is equivalent to the message after the + last message in a folder (and equivalent to 1 in a folder without + messages). The "new" message may not be used as part of a message + range. + + 2) Within a message list, the following designations may refer to + messages that do not exist: a single numeric message name, the sin- + gle message name "cur", and (obviously) the single message name + "new". All other message designations must refer to at least one + existing message. + + 3) An empty folder is not in itself an error. + + Message numbers greater than the highest existing message in a + folder as part of a range designation are replaced with the next + free message number. + + Examples: The current folder foo contains messages 3 5 6. Cur is + 4. + + % mhpath + /r/phyl/Mail/foo + + % mhpath all + /r/phyl/Mail/foo/3 + /r/phyl/Mail/foo/5 + /r/phyl/Mail/foo/6 + + % mhpath 2001 + /r/phyl/Mail/foo/7 + + % mhpath 1-2001 + /r/phyl/Mail/foo/3 + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHPATH(1) -58- MHPATH(1) + + + /r/phyl/Mail/foo/5 + /r/phyl/Mail/foo/6 + + % mhpath new + /r/phyl/Mail/foo/7 + + % mhpath last new + /r/phyl/Mail/foo/6 + /r/phyl/Mail/foo/7 + + % mhpath last-new + bad message list "last-new". + + % mhpath cur + /r/phyl/Mail/foo/4 + + % mhpath 1-2 + no messages in range "1-2". + + % mhpath first:2 + /r/phyl/Mail/foo/3 + /r/phyl/Mail/foo/5 + + % mhpath 1 2 + /r/phyl/Mail/foo/1 + /r/phyl/Mail/foo/2 + + _M_H_p_a_t_h is also useful in back-quoted operations: + + % cd `mhpath +inbox` + + % echo `mhpath +` + /r/phyl/Mail + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + + + _S_e_e _A_l_s_o + folder(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to none + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MHPATH(1) -59- MHPATH(1) + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + Like all MH commands, _m_h_p_a_t_h expands and sorts [msgs]. So don't + expect + + mv `mhpath 501 500` + + to move 501 to 500. Quite the reverse. But + + mv `mhpath 501` `mhpath 500` + + will do the trick. + + Out of range message 0 is treated far more severely than large out + of range message numbers. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MSGCHK(1) -60- MSGCHK(1) + + + _N_A_M_E + msgchk - check for messages + + _S_Y_N_O_P_S_I_S + msgchk [-date] [-nodate] [-notify all/mail/nomail] + [-nonotify all/mail/nomail] [users ...] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + The _m_s_g_c_h_k program checks all known mail drops for mail waiting for + you. For those drops which have mail for you, _m_s_g_c_h_k will indicate + if it believes that you have seen the mail in question before. + + The `-notify type' switch indicates under what circumstances _m_s_g_c_h_k + should produce a message. The default is `-notify all' which says + that _m_s_g_c_h_k should always report the status of the users maildrop. + Other values for `type' include `mail' which says that _m_s_g_c_h_k + should report the status of waiting mail; and, `nomail' which says + that _m_s_g_c_h_k should report the status of empty maildrops. The + `-nonotify type' switch has the inverted sense, so `-nonotify all' + directs _m_s_g_c_h_k to never report the status of maildrops. This is + useful if the user wishes to check _m_s_g_c_h_k's exit status. A + non-zero exit status indicates that mail was not waiting for at + least one of the indicated users. + + If _m_s_g_c_h_k produces output, then the `-date' switch directs _m_s_g_c_h_k + to print out the last date mail was read, if this can be deter- + mined. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /usr/local/lib/mh/mtstailor tailor file + /usr/spool/mail/$USER Location of mail drop + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + inc(1) + + + _D_e_f_a_u_l_t_s + `user' defaults to the current user + `-date' + `-notify all' + + + _C_o_n_t_e_x_t + None + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MSGCHK(1) -61- MSGCHK(1) + + + _N_A_M_E + msh - MH shell (and BBoard reader) + + _S_Y_N_O_P_S_I_S + msh [-prompt string] [-scan] [-noscan] [-topcur] [-notopcur] [file] + [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _m_s_h is an interactive program that implements a subset of the nor- + mal _M_H commands operating on a single file in _p_a_c_k_f'd format. That + is, _m_s_h is used to read a file that contains a number of messages, + as opposed to the standard _M_H style of reading a number of files, + each file being a separate message in a folder. _m_s_h's chief advan- + tage is that the normal _M_H style does not allow a file to have more + than one message in it. Hence, _m_s_h is ideal for reading _B_B_o_a_r_d_s, + as these files are delivered by the transport system in this for- + mat. In addition, _m_s_h can be used on other files, such as message + archives which have been _p_a_c_ked (see _p_a_c_k_f (1)). Finally, _m_s_h is + an excellent _M_H tutor. As the only commands available to the user + are _M_H commands, this allows _M_H beginners to concentrate on how + commands to _M_H are formed and (more or less) what they mean. + + When invoked, _m_s_h reads the named file, and enters a command loop. + The user may type most of the normal _M_H commands. The syntax and + semantics of these commands typed to _m_s_h are identical to their _M_H + counterparts. In cases where the nature of _m_s_h would be incon- + sistent (e.g., specifying a `+folder' with some commands), _m_s_h will + duly inform the user. The commands that _m_s_h currently supports (in + some slightly modified or restricted forms) are: + + ali + burst + comp + dist + folder + forw + inc + mark + mhmail + msgchk + next + packf + pick + prev + refile + repl + rmm + scan + send + show + sortm + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MSH(1) -62- MSH(1) + + + whatnow + whom + + In addition, _m_s_h has a "help" command which gives a brief overview. + To terminate _m_s_h, type CTRL-D, or use the "quit" command. If _m_s_h + is being invoked from _b_b_c, then typing CTRL-D will also tell _b_b_c to + exit as well, while using the "quit" command will return control to + _b_b_c, and _b_b_c will continue examining the list of BBoards that it is + scanning. + + If the file is writable and has been modified, then using "quit" + will query the user if the file should be updated. + + The `-prompt string' switch sets the prompting string for _m_s_h. + + You may wish to use an alternate _M_H profile for the commands that + _m_s_h executes; see _m_h-_p_r_o_f_i_l_e (5) for details about the $MH envari- + able. + + When invoked from _b_b_c, two special features are enabled: First, the + `-scan' switch directs _m_s_h to do a `scan unseen' on start-up if new + items are present in the BBoard. This feature is best used from + _b_b_c, which correctly sets the stage. Second, the _m_a_r_k command in + _m_s_h acts specially when you are reading a BBoard, since _m_s_h will + consult the sequence "unseen" in determining what messages you have + actually read. When _m_s_h exits, it reports this information to _b_b_c. + In addition, if you give the _m_a_r_k command with no arguments, _m_s_h + will interpret it as `mark -sequence unseen -delete -nozero all' + Hence, to discard all of the messages in the current BBoard you're + reading, just use the _m_a_r_k command with no arguments. + + Normally, the "exit" command is identical to the "quit" command in + _m_s_h. When run under _b_b_c however, "exit" directs _m_s_h to mark all + messages as seen and then "quit". For speedy type-in, this command + is often abbreviated as just "e". + + When invoked from _v_m_h, another special feature is enabled: The + `topcur' switch directs _m_s_h to have the current message "track" the + top line of the _v_m_h scan window. Normally, _m_s_h has the current + message "track" the center of the window (under `-notopcur', which + is the default). + + _m_s_h supports an output redirection facility. Commands may be fol- + lowed by one of + + > _f_i_l_e write output to _f_i_l_e + >> _f_i_l_e append output to _f_i_l_e + | _c_o_m_m_a_n_d pipe output to UNIX _c_o_m_m_a_n_d + + If _f_i_l_e starts with a `~' (tilde), then a _c_s_h-like expansion takes + place. Note that _c_o_m_m_a_n_d is interpreted by _s_h (1). Also note that + _m_s_h does NOT support history substitutions, variable substitutions, + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MSH(1) -63- MSH(1) + + + or alias substitutions. + + When parsing commands to the left of any redirection symbol, _m_s_h + will honor `\' (back-slash) as the quote next-character symbol, and + `"' (double-quote) as quote-word delimiters. All other input + tokens are separated by whitespace (spaces and tabs). + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /usr/local/lib/mh/mtstailor tailor file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Msg-Protect: To set mode when creating a new `file' + fileproc: Program to file messages + showproc: Program to show messages + + + _S_e_e _A_l_s_o + bbc(1) + + + _D_e_f_a_u_l_t_s + `file' defaults to "./msgbox" + `-prompt (msh) ' + `-noscan' + `-notopcur' + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MSH(1) -64- MSH(1) + + + _B_u_g_s + The argument to the `-prompt' switch must be interpreted as a sin- + gle token by the shell that invokes _m_s_h. Therefore, one must usu- + ally place the argument to this switch inside double-quotes. + + There is a strict limit of messages per file in _p_a_c_k_f'd format + which _m_s_h can handle. Usually, this limit is 1000 messages. + + Please remember that _m_s_h is not the _C_S_h_e_l_l, and that a lot of the + nice facilities provided by the latter are not present in the form- + er. + + In particular, _m_s_h does not understand back-quoting, so the only + effective way to use _p_i_c_k inside _m_s_h is to always use the + `-seq select' switch. Clever users of _M_H will put the line + + pick: -seq select -list + + in their .mh_profile file so that _p_i_c_k works equally well from both + the shell and _m_s_h. + + _s_o_r_t_m always uses "-noverbose" and if "-textfield field" is used, + "-limit 0". + + The _m_s_h program inherits most (if not all) of the bugs from the _M_H + commands it implements. + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + NEXT(1) -65- NEXT(1) + + + _N_A_M_E + next - show the next message + + _S_Y_N_O_P_S_I_S + next [+folder] [-header] [-noheader] [-showproc program] + [-noshowproc] [switches for _s_h_o_w_p_r_o_c] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _N_e_x_t performs a _s_h_o_w on the next message in the specified (or + current) folder. Like _s_h_o_w, it passes any switches on to the pro- + gram _s_h_o_w_p_r_o_c, which is called to list the message. This command + is almost exactly equivalent to "show next". Consult the manual + entry for _s_h_o_w (1) for all the details. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + showproc: Program to show the message + + + _S_e_e _A_l_s_o + show(1), prev(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `-header' + + + _C_o_n_t_e_x_t + If a folder is specified, it will become the current folder. The + message that is shown (i.e., the next message in sequence) will be- + come the current message. + + + _B_u_g_s + _n_e_x_t is really a link to the _s_h_o_w program. As a result, if you + make a link to _n_e_x_t and that link is not called _n_e_x_t, your link + will act like _s_h_o_w instead. To circumvent this, add a + profile-entry for the link to your _M_H profile and add the argument + _n_e_x_t to the entry. + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + PACKF(1) -66- PACKF(1) + + + _N_A_M_E + packf - compress an MH folder into a single file + + _S_Y_N_O_P_S_I_S + packf [+folder] [msgs] [-file name] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _P_a_c_k_f takes messages from a folder and copies them to a single + file. Each message in the file is separated by four CTRL-A's and a + newline. Messages packed can be unpacked using _i_n_c. + + If the _n_a_m_e given to the `-file name' switch exists, then the mes- + sages specified will be appended to the end of the file, otherwise + the file will be created and the messages appended. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + .msgbox.map A binary index of the file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Msg-Protect: To set mode when creating a new `file' + + + _S_e_e _A_l_s_o + inc(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to all + `-file ./msgbox' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. The first + message packed will become the current message. + + + _B_u_g_s + _P_a_c_k_f doesn't handle the old UUCP-style "mbox" format (used by + _S_e_n_d_M_a_i_l). To pack messages into this format, use the script + /_u_s_r/_l_o_c_a_l/_l_i_b/_m_h/_p_a_c_k_m_b_o_x. Note that _p_a_c_k_m_b_o_x does not take the + `-file' option of _p_a_c_k_f, and instead writes its output on _s_t_d_o_u_t. + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + PICK(1) -67- PICK(1) + + + _N_A_M_E + pick - select messages by content + + _S_Y_N_O_P_S_I_S + pick [+folder] [msgs] [-and ...] [-or ...] [-not ...] + [-lbrace ... -rbrace] [--component pattern] [-cc pattern] + [-date pattern] [-from pattern] [-search pattern] + [-subject pattern] [-to pattern] [-after date] [-before date] + [-datefield field] [-sequence name ...] [-public] [-nopublic] + [-zero] [-nozero] [-list] [-nolist] [-help] + + typically: + scan `pick -from jones` + pick -to holloway -sequence select + show `pick -before friday` + + _D_E_S_C_R_I_P_T_I_O_N + + _P_i_c_k searches messages within a folder for the specified contents, + and then identifies those messages. Two types of search primitives + are available: pattern matching and date constraint operations. + + A modified _g_r_e_p(1) is used to perform the matching, so the full + regular expression (see _e_d(1)) facility is available within `pat- + tern'. With `-search', `pattern' is used directly, and with the + others, the grep pattern constructed is: + + "component[ \t]*:.*pattern" + + This means that the pattern specified for a `-search' will be found + everywhere in the message, including the header and the body, while + the other pattern matching requests are limited to the single + specified component. The expression + + `--component pattern' + + is a shorthand for specifying + + `-search "component[ \t]*:.*pattern" ' + + It is used to pick a component which is not one of "To:", "cc:", + "Date:", "From:", or "Subject:". An example is + `pick --reply-to pooh'. + + Pattern matching is performed on a per-line basis. Within the + header of the message, each component is treated as one long line, + but in the body, each line is separate. Lower-case letters in the + search pattern will match either lower or upper case in the mes- + sage, while upper case will match only upper case. + + Note that since the `-date' switch is a pattern matching operation + (as described above), to find messages sent on a certain date the + + [mh.6] MH.6.8 UCI version + + + + + + + + + + PICK(1) -68- PICK(1) + + + pattern string must match the text of the "Date:" field of the mes- + sage. + + Independent of any pattern matching operations requested, the + switches `-after date' or `-before date' may also be used to intro- + duce date/time contraints on all of the messages. By default, the + "Date:" field is consulted, but if another date yielding field + (such as "BB-Posted:" or "Delivery-Date:") should be used, the + `-datefield field' switch may be used. + + With `-before' and `-after', _p_i_c_k will actually parse the date + fields in each of the messages specified in `msgs' and compare them + to the date/time specified. If `-after' is given, then only those + messages whose "Date:" field value is chronologically after the + date specified will be considered. The `-before' switch specifies + the complimentary action. + + Both the `-after' and `-before' switches take legal 822-style date + specifications as arguments. _P_i_c_k will default certain missing + fields so that the entire date need not be specified. These fields + are (in order of defaulting): timezone, time and timezone, date, + date and timezone. All defaults are taken from the current date, + time, and timezone. + + In addition to 822-style dates, _p_i_c_k will also recognize any of the + days of the week ("sunday", "monday", and so on), and the special + dates "today", "yesterday" (24 hours ago), and "tomorrow" (24 hours + from now). All days of the week are judged to refer to a day in + the past (e.g., telling _p_i_c_k "saturday" on a "tuesday" means + "last saturday" not "this saturday"). + + Finally, in addition to these special specifications, _p_i_c_k will + also honor a specification of the form "-dd", which means "dd days + ago". + + _P_i_c_k supports complex boolean operations on the searching primi- + tives with the `-and', `-or', `-not', and `-lbrace ... -rbrace' + switches. For example, + + pick -after yesterday -and + -lbrace -from freida -or -from fear -rbrace + + identifies messages recently sent by "frieda" or "fear". + + The matching primitives take precedence over the `-not' switch, + which in turn takes precedence over `-and' which in turn takes pre- + cedence over `-or'. To override the default precedence, the + `-lbrace' and `-rbrace' switches are provided, which act just like + opening and closing parentheses in logical expressions. + + If no search criteria are given, all the messages specified on the + command line are selected (this defaults to "all"). + + [mh.6] MH.6.8 UCI version + + + + + + + + + + PICK(1) -69- PICK(1) + + + Once the search has been performed, if the `-list' switch is given, + the message numbers of the selected messages are written to the + standard output separated by newlines. This is _e_x_t_r_e_m_e_l_y useful + for quickly generating arguments for other _M_H programs by using the + "backquoting" syntax of the shell. For example, the command + + scan `pick +todo -after "31 Mar 83 0123 PST"` + + says to _s_c_a_n those messages in the indicated folder which meet the + appropriate criterion. Note that since _p_i_c_k 's context changes are + written out prior to _s_c_a_n 's invocation, you need not give the + folder argument to _s_c_a_n as well. + + Regardless of the operation of the `-list' switch, the `-sequence + name' switch may be given once for each sequence the user wishes to + define. For each sequence named, that sequence will be defined to + mean exactly those messages selected by _p_i_c_k. For example, + + pick -from frated -seq fred + + defines a new message sequence for the current folder called "fred" + which contains exactly those messages that were selected. + + Note that whenever _p_i_c_k processes a `-sequence name' switch, it + sets `-nolist'. + + By default, _p_i_c_k will zero the sequence before adding it. This + action can be disabled with the `-nozero' switch, which means that + the messages selected by _p_i_c_k will be added to the sequence, if it + already exists, and any messages already a part of that sequence + will remain so. + + The `-public' and `-nopublic' switches are used by _p_i_c_k in the same + way _m_a_r_k uses them. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + + + _S_e_e _A_l_s_o + mark(1) + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + PICK(1) -70- PICK(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to all + `-datefield date' + `-nopublic' if the folder is read-only, `-public' otherwise + `-zero' + `-list' is the default if no `-sequence', `-nolist' otherwise + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. + + + _H_i_s_t_o_r_y + In previous versions of _M_H, the _p_i_c_k command would _s_h_o_w, _s_c_a_n, or + _r_e_f_i_l_e the selected messages. This was rather "inverted logic" + from the UNIX point of view, so _p_i_c_k was changed to define se- + quences and output those sequences. Hence, _p_i_c_k can be used to + generate the arguments for all other _M_H commands, instead of giving + _p_i_c_k endless switches for invoking those commands itself. + + Also, previous versions of _p_i_c_k balked if you didn't specify a + search string or a date/time constraint. The current version does + not, and merely matches the messages you specify. This lets you + type something like: + + show `pick last:20 -seq fear` + + instead of typing + + mark -add -nozero -seq fear last:20 + show fear + + Finally, timezones used to be ignored when comparing dates: they + aren't any more. + + _H_e_l_p_f_u_l _H_i_n_t_s + + Use "pick sequence -list" to enumerate the messages in a sequence + (such as for use by a shell script). + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + PICK(1) -71- PICK(1) + + + _B_u_g_s + The argument to the `-after' and `-before' switches must be inter- + preted as a single token by the shell that invokes _p_i_c_k. There- + fore, one must usually place the argument to this switch inside + double-quotes. Furthermore, any occurance of `-datefield' must oc- + cur prior to the `-after' or `-before' switch it applies to. + + If _p_i_c_k is used in a back-quoted operation, such as + + scan `pick -from jones` + + and _p_i_c_k selects no messages (e.g., no messages are from "jones"), + then the shell will still run the outer command (e.g., "scan"). + Since no messages were matched, _p_i_c_k produced no output, and the + argument given to the outer command as a result of backquoting _p_i_c_k + is empty. In the case of _M_H programs, the outer command now acts + as if the default `msg' or `msgs' should be used (e.g., "all" in + the case of _s_c_a_n ). To prevent this unexpected behavior, if + `-list' was given, and if its standard output is not a tty, then + _p_i_c_k outputs the illegal message number "0" when it fails. This + lets the outer command fail gracefully as well. + + The pattern syntax "[l-r]" is not supported; each letter to be + matched must be included within the square brackets. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + PREV(1) -72- PREV(1) + + + _N_A_M_E + prev - show the previous message + + _S_Y_N_O_P_S_I_S + prev [+folder] [-header] [-noheader] [-showproc program] + [-noshowproc] [-switches for _s_h_o_w_p_r_o_c] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _P_r_e_v performs a _s_h_o_w on the previous message in the specified (or + current) folder. Like _s_h_o_w, it passes any switches on to the pro- + gram named by _s_h_o_w_p_r_o_c, which is called to list the message. This + command is almost exactly equivalent to "show prev". Consult the + manual entry for _s_h_o_w (1) for all the details. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + showproc: Program to show the message + + + _S_e_e _A_l_s_o + show(1), next(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `-header' + + + _C_o_n_t_e_x_t + If a folder is specified, it will become the current folder. The + message that is shown (i.e., the previous message in sequence) will + become the current message. + + + _B_u_g_s + _p_r_e_v is really a link to the _s_h_o_w program. As a result, if you + make a link to _p_r_e_v and that link is not called _p_r_e_v, your link + will act like _s_h_o_w instead. To circumvent this, add a + profile-entry for the link to your _M_H profile and add the argument + _p_r_e_v to the entry. + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + PROMPTER(1) -73- PROMPTER(1) + + + _N_A_M_E + prompter - prompting editor front-end for MH + + _S_Y_N_O_P_S_I_S + prompter [-erase chr] [-kill chr] [-prepend] [-noprepend] [-rapid] + [-norapid] [-doteof] [-nodoteof] file [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + This program is normally not invoked directly by users but takes + the place of an editor and acts as an editor front-end. It + operates on an 822-style message draft skeleton specified by file, + normally provided by _c_o_m_p, _d_i_s_t, _f_o_r_w, or _r_e_p_l. + + _P_r_o_m_p_t_e_r is an editor which allows rapid composition of messages. + It is particularly useful to network and low-speed (less than 2400 + baud) users of _M_H. It is an _M_H program in that it can have its own + profile entry with switches, but it is not invoked directly by the + user. The commands _c_o_m_p, _d_i_s_t, _f_o_r_w, and _r_e_p_l invoke _p_r_o_m_p_t_e_r as + an editor, either when invoked with `-editor prompter', or by the + profile entry "Editor: prompter", or when given the command + `edit prompter' at "What now?" level. + + For each empty component _p_r_o_m_p_t_e_r finds in the draft, the user is + prompted for a response; A will cause the whole component + to be left out. Otherwise, a `\' preceding a will con- + tinue the response on the next line, allowing for multiline com- + ponents. Continuation lines must begin with a space or tab. + + Each non-empty component is copied to the draft and displayed on + the terminal. + + The start of the message body is denoted by a blank line or a line + of dashes. If the body is non-empty, the prompt, which isn't writ- + ten to the file, is + + "--------Enter additional text", + + or (if `-prepend' was given) + + "--------Enter initial text". + + Message-body typing is terminated with an end-of-file (usually + CTRL-D). With the `-doteof' switch, a period on a line all by + itself also signifies end-of-file. At this point control is + returned to the calling program, where the user is asked "What + now?". See _w_h_a_t_n_o_w for the valid options to this query. + + By using the `-prepend' switch, the user can add type-in to the + beginning of the message body and have the rest of the body follow. + This is useful for the _f_o_r_w command. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + PROMPTER(1) -74- PROMPTER(1) + + + By using the `-rapid' switch, if the draft already contains text in + the message-body, it is not displayed on the user's terminal. This + is useful for low-speed terminals. + + The line editing characters for kill and erase may be specified by + the user via the arguments `-kill chr' and `-erase chr', where chr + may be a character; or `\nnn', where "nnn" is the octal value for + the character. + + An interrupt (usually CTRL-C) during component typing will abort + _p_r_o_m_p_t_e_r and the _M_H command that invoked it. An interrupt during + message-body typing is equivalent to CTRL-D, for historical rea- + sons. This means that _p_r_o_m_p_t_e_r should finish up and exit. + + The first non-flag argument to _p_r_o_m_p_t_e_r is taken as the name of the + draft file, and subsequent non-flag arguments are ignored. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /tmp/prompter* Temporary copy of message + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + prompter-next: To name the editor to be used on exit from + _p_r_o_m_p_t_e_r + Msg-Protect: To set mode when creating a new draft + + + _S_e_e _A_l_s_o + comp(1), dist(1), forw(1), repl(1), whatnow(1) + + + _D_e_f_a_u_l_t_s + `-prepend' + `-norapid' + `-nodoteof' + + + _C_o_n_t_e_x_t + None + + _H_e_l_p_f_u_l _H_i_n_t_s + + The `-rapid' option is particularly useful with _f_o_r_w, and + `-noprepend' is useful with _c_o_m_p -_u_s_e. + + The user may wish to link _p_r_o_m_p_t_e_r under several names (e.g., "ra- + pid") and give appropriate switches in the profile entries under + these names (e.g., "rapid: -rapid"). This facilitates invoking + prompter differently for different _M_H commands (e.g., "forw: -edi- + tor rapid"). + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + PROMPTER(1) -75- PROMPTER(1) + + + _B_u_g_s + _P_r_o_m_p_t_e_r uses _s_t_d_i_o (3), so it will lose if you edit files with + nulls in them. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + RCVSTORE(1) -76- RCVSTORE(1) + + + _N_A_M_E + rcvstore - incorporate new mail asynchronously + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/rcvstore [+folder] [-create] [-nocreate] + [-sequence name ...] [-public] [-nopublic] [-zero] [-nozero] + [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _R_c_v_s_t_o_r_e incorporates a message from the standard input into an _M_H + folder. If `+folder' isn't specified, a folder in the user's _M_H + directory will be used, either that specified by the "Inbox:" entry + in the user's profile, or the folder named "inbox". The new mes- + sage being incorporated is assigned the next highest number in the + folder. If the specified (or default) folder doesn't exist, then + it will be created if the `-create' option is specified, otherwise + _r_c_v_s_t_o_r_e will exit. + + If the user's profile contains a "Msg-Protect: nnn" entry, it will + be used as the protection on the newly created messages, otherwise + the _M_H default of 0644 will be used. During all operations on mes- + sages, this initially assigned protection will be preserved for + each message, so _c_h_m_o_d(1) may be used to set a protection on an + individual message, and its protection will be preserved + thereafter. + + _R_c_v_s_t_o_r_e will incorporate anything except zero length messages into + the user's MH folder. + + If the profile entry "Unseen-Sequence" is present and non-empty, + then _r_c_v_s_t_o_r_e will add the newly incorporated message to each + sequence named by the profile entry. This is similar to the + "Previous-Sequence" profile entry supported by all _M_H commands + which take `msgs' or `msg' arguments. Note that _r_c_v_s_t_o_r_e will not + zero each sequence prior to adding messages. + + Furthermore, the incoming messages may be added to user-defined + sequences as they arrive by appropriate use of the `-sequence' + option. As with _p_i_c_k, use of the `-zero' and `-nozero' switches + can also be used to zero old sequences or not. Similarly, use of + the `-public' and `-nopublic switches may be used to force addi- + tions to public and private sequences. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + RCVSTORE(1) -77- RCVSTORE(1) + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Folder-Protect: To set mode when creating a new folder + Inbox: To find the default inbox + Msg-Protect: To set mode when creating a new message + Unseen-Sequence: To name sequences denoting unseen messages + + + _S_e_e _A_l_s_o + inc(1), pick(1), mh-mail(5) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to "inbox" + `-create' + `-nopublic' if the folder is read-only, `-public' otherwise + `-nozero' + + + _C_o_n_t_e_x_t + No context changes will be attempted, with the exception of se- + quence manipulation. + + + _B_u_g_s + If you use the "Unseen-Sequence" profile entry, _r_c_v_s_t_o_r_e could try + to update the context while another _M_H process is also trying to do + so. This can cause the context to become corrupted. To avoid + this, do not use _r_c_v_s_t_o_r_e if you use the "Unseen-Sequence" profile + entry. + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + REFILE(1) -78- REFILE(1) + + + _N_A_M_E + refile - file message in other folders + + _S_Y_N_O_P_S_I_S + refile [msgs] [-draft] [-link] [-nolink] [-preserve] [-nopreserve] + [-src +folder] [-file file] [-rmmproc program] [-normmproc] + +folder ... [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _R_e_f_i_l_e moves (_m_v (1)) or links (_l_n (1)) messages from a source + folder into one or more destination folders. If you think of a + message as a sheet of paper, this operation is not unlike filing + the sheet of paper (or copies) in file cabinet folders. When a + message is filed, it is linked into the destination folder(s) if + possible, and is copied otherwise. As long as the destination + folders are all on the same file system, multiple filing causes + little storage overhead. This facility provides a good way to + cross-file or multiply-index messages. For example, if a message + is received from Jones about the ARPA Map Project, the command + + refile cur +jones +Map + + would allow the message to be found in either of the two folders + `jones' or `Map'. + + The option `-file file' directs _r_e_f_i_l_e to use the specified file as + the source message to be filed, rather than a message from a + folder. Note that the file should be a validly formatted message, + just like any other _M_H message. It should NOT be in mail drop for- + mat (to convert a file in mail drop format to a folder of _M_H mes- + sages, see _i_n_c (1)). + + If a destination folder doesn't exist, _r_e_f_i_l_e will ask if you want + to create it. A negative response will abort the file operation. + If the standard input for _r_e_f_i_l_e is _n_o_t a tty, then _r_e_f_i_l_e will not + ask any questions and will proceed as if the user answered "yes" to + all questions. + + The option `-link' preserves the source folder copy of the message + (i.e., it does a _l_n(1) rather than a _m_v(1)), whereas, `-nolink' + deletes the filed messages from the source folder. Normally, when + a message is filed, it is assigned the next highest number avail- + able in each of the destination folders. Use of the `-preserve' + switch will override this message renaming, but name conflicts may + occur, so use this switch cautiously. + + If `-link' is not specified (or `-nolink' is specified), the filed + messages will be removed from the source folder, by renaming them + with a site-dependent prefix (usually a comma). + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + REFILE(1) -79- REFILE(1) + + + If the user has a profile component such as + + rmmproc: /bin/rm + + then _r_e_f_i_l_e will instead call the named program to delete the mes- + sage files. The user may specify `-rmmproc program' on the command + line to override this profile specification. The `-normmproc' + option forces the message files to be deleted by renaming them as + described above. + + The `-draft' switch tells _r_e_f_i_l_e to file the /draft. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Folder-Protect: To set mode when creating a new folder + rmmproc: Program to delete the message + + + _S_e_e _A_l_s_o + folder(1) + + + _D_e_f_a_u_l_t_s + `-src +folder' defaults to the current folder + `msgs' defaults to cur + `-nolink' + `-nopreserve' + + + _C_o_n_t_e_x_t + If `-src +folder' is given, it will become the current folder. If + neither `-link' nor `all' is specified, the current message in the + source folder will be set to the last message specified; otherwise, + the current message won't be changed. + + If the Previous-Sequence profile entry is set, in addition to de- + fining the named sequences from the source folder, _r_e_f_i_l_e will also + define those sequences for the destination folders. See + _m_h-_s_e_q_u_e_n_c_e (5) for information concerning the previous sequence. + + + _B_u_g_s + Since _r_e_f_i_l_e uses your _r_m_m_p_r_o_c to delete the message, the _r_m_m_p_r_o_c + must NOT call _r_e_f_i_l_e without specifying `-normmproc', or you will + create an infinte loop. + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + REPL(1) -80- REPL(1) + + + _N_A_M_E + repl - reply to a message + + _S_Y_N_O_P_S_I_S + repl [+folder] [msg] [-annotate] [-noannotate] [-cc all/to/cc/me] + [-nocc all/to/cc/me] [-draftfolder +folder] + [-draftmessage msg] [-nodraftfolder] [-editor editor] + [-noedit] [-fcc +folder] [-filter filterfile] [-form formfile] + [-inplace] [-noinplace] [-query] [-noquery] [-width columns] + [-whatnowproc program] [-nowhatnowproc] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _R_e_p_l aids a user in producing a reply to an existing message. _R_e_p_l + uses a reply template to guide its actions when constructing the + message draft of the reply. In its simplest form (with no argu- + ments), it will set up a message-form skeleton in reply to the + current message in the current folder, and invoke the whatnow + shell. The default reply template will direct _r_e_p_l to construct + the composed message as follows: + + To: or + cc: , , and yourself + Subject: Re: + In-reply-to: Your message of . + + + where field names enclosed in angle brackets (< >) indicate the + contents of the named field from the message to which the reply is + being made. A reply template is simply a format file. See + _m_h-_f_o_r_m_a_t (5) for the details. + + The `-cc type' switch takes an argument which specifies who gets + placed on the "cc:" list of the reply. The `-query' switch modi- + fies the action of `-cc type' switch by interactively asking you if + each address that normally would be placed in the "To:" and "cc:" + list should actually be sent a copy. (This is useful for + special-purpose replies.) Note that the position of the `-cc' and + `-nocc' switches, like all other switches which take a positive and + negative form, is important. + + Lines beginning with the fields "To:", "cc:", and "Bcc:" will be + standardized and have duplicate addresses removed. In addition, + the `-width columns' switch will guide _r_e_p_l's formatting of these + fields. + + If the file named "replcomps" exists in the user's MH directory, it + will be used instead of the default form. In either case, the file + specified by `-form formfile' will be used if given. + + If the draft already exists, _r_e_p_l will ask you as to the disposi- + tion of the draft. A reply of quit will abort _r_e_p_l, leaving the + + [mh.6] MH.6.8 UCI version + + + + + + + + + + REPL(1) -81- REPL(1) + + + draft intact; replace will replace the existing draft with a blank + skeleton; and list will display the draft. + + See _c_o_m_p (1) for a description of the `-editor' and `-noedit' + switches. Note that while in the editor, the message being replied + to is available through a link named "@" (assuming the default + _w_h_a_t_n_o_w_p_r_o_c ). In addition, the actual pathname of the message is + stored in the envariable $editalt, and the pathname of the folder + containing the message is stored in the envariable $mhfolder. + + Although _r_e_p_l uses the `-form formfile' switch to direct it how to + construct the beginning of the draft, the `-filter filterfile' + switch directs _r_e_p_l as to how the message being replied-to should + be formatted in the body of the draft. If `-filter' is not speci- + fied, then the message being replied-to is not included in the body + of the draft. If `-filter filterfile' is specified, then the mes- + sage being replied-to is filtered (re-formatted) prior to being + output to the body of the draft. The filter file for _r_e_p_l should + be a standard form file for _m_h_l, as _r_e_p_l will invoke _m_h_l to format + the message being replied-to. There is no default message filter + (`-filter' must be followed by a file name). A filter file that is + commonly used is: + + : + body:nocomponent,compwidth=9,offset=9 + + which says to output a blank line and then the body of the message + being replied-to, indented by one tab-stop. Another format popular + on USENET is: + + + message-id:nocomponent,nonewline,\ + formatfield="In message %{text}, " + from:nocomponent,formatfield="%(friendly{text}) writes:" + body:component=">",overflowtext=">",overflowoffset=0 + + Which cites the Message-ID and author of the message being + replied-to, and then outputs each line of the body prefaced with + the ">" character. + + If the `-annotate' switch is given, the message being replied-to + will be annotated with the lines + + Replied: date + Replied: addrs + + where the address list contains one line for each addressee. The + annotation will be done only if the message is sent directly from + _r_e_p_l. If the message is not sent immediately from _r_e_p_l, + "comp -use" may be used to re-edit and send the constructed mes- + sage, but the annotations won't take place. The `-inplace' switch + causes annotation to be done in place in order to preserve links to + + [mh.6] MH.6.8 UCI version + + + + + + + + + + REPL(1) -82- REPL(1) + + + the annotated message. + + The `-fcc +folder' switch can be used to automatically specify a + folder to receive Fcc:s. More than one folder, each preceeded by + `-fcc' can be named. + + In addition to the standard _m_h-_f_o_r_m_a_t (5) escapes, _r_e_p_l also recog- + nizes the following additional _c_o_m_p_o_n_e_n_t escape: + + _E_s_c_a_p_e _R_e_t_u_r_n_s _D_e_s_c_r_i_p_t_i_o_n + _f_c_c string Any folders specified with `-fcc folder' + + To avoid reiteration, _r_e_p_l strips any leading `Re: ' strings from + the _s_u_b_j_e_c_t component. + + The `-draftfolder +folder' and `-draftmessage msg' switches invoke + the _M_H draft folder facility. This is an advanced (and highly use- + ful) feature. Consult the Advanced Features section of the _M_H + manual for more information. + + Upon exiting from the editor, _r_e_p_l will invoke the _w_h_a_t_n_o_w program. + See _w_h_a_t_n_o_w (1) for a discussion of available options. The invoca- + tion of this program can be inhibited by using the `-nowhatnowproc' + switch. (In truth of fact, it is the _w_h_a_t_n_o_w program which starts + the initial edit. Hence, `-nowhatnowproc' will prevent any edit + from occurring.) + + _F_i_l_e_s + /usr/local/lib/mh/replcomps The reply template + or /replcomps Rather than the standard template + $HOME/.mh_profile The user profile + /draft The draft file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Alternate-Mailboxes: To determine the user's mailboxes + Current-Folder: To find the default current folder + Draft-Folder: To find the default draft-folder + Editor: To override the default editor + Msg-Protect: To set mode when creating a new message + (draft) + fileproc: Program to refile the message + mhlproc: Program to filter message being replied-to + whatnowproc: Program to ask the "What now?" questions + + + _S_e_e _A_l_s_o + comp(1), dist(1), forw(1), send(1), whatnow(1), mh-format(5) + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + REPL(1) -83- REPL(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msg' defaults to cur + `-nocc all' at ATHENA sites, `-cc all' otherwise + `-noannotate' + `-nodraftfolder' + `-noinplace' + `-noquery' + `-width 72' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. The mes- + sage replied-to will become the current message. + + + _H_i_s_t_o_r_y + Prior to using the format string mechanism, `-noformat' used to + cause address headers to be output as-is. Now all address fields + are formatted using Internet standard guidelines. + + + _B_u_g_s + If any addresses occur in the reply template, addresses in the tem- + plate that do not contain hosts are defaulted incorrectly. Instead + of using the localhost for the default, _r_e_p_l uses the sender's + host. Moral of the story: if you're going to include addresses in + a reply template, include the host portion of the address. + + The `-width columns' switch is only used to do address-folding; + other headers are not line-wrapped. + + If _w_h_a_t_n_o_w_p_r_o_c is _w_h_a_t_n_o_w, then _r_e_p_l uses a built-in _w_h_a_t_n_o_w, it + does not actually run the _w_h_a_t_n_o_w program. Hence, if you define + your own _w_h_a_t_n_o_w_p_r_o_c, don't call it _w_h_a_t_n_o_w since _r_e_p_l won't run + it. + + If your current working directory is not writable, the link named + "@" is not available. + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + RMF(1) -84- RMF(1) + + + _N_A_M_E + rmf - remove an MH folder + + _S_Y_N_O_P_S_I_S + rmf [+folder] [-interactive] [-nointeractive] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _R_m_f removes all of the messages (files) within the specified (or + default) folder, and then removes the folder (directory) itself. + If there are any files within the folder which are not a part of + _M_H, they will _n_o_t be removed, and an error will be produced. If + the folder is given explicitly or the `-nointeractive' option is + given, then the folder will be removed without confirmation. Oth- + erwise, the user will be asked for confirmation. If _r_m_f can't find + the current folder, for some reason, the folder to be removed + defaults to `+inbox' (unless overridden by user's profile entry + "Inbox") with confirmation. + + _R_m_f irreversibly deletes messages that don't have other links, so + use it with caution. + + If the folder being removed is a subfolder, the parent folder will + become the new current folder, and _r_m_f will produce a message tel- + ling the user this has happened. This provides an easy mechanism + for selecting a set of messages, operating on the list, then remov- + ing the list and returning to the current folder from which the + list was extracted. + + _R_m_f of a read-only folder will delete the private sequence and cur + information (i.e., "atr-_s_e_q-_f_o_l_d_e_r" entries) from the profile + without affecting the folder itself. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Inbox: To find the default inbox + + + _S_e_e _A_l_s_o + rmm(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder, usually with confirmation + `-interactive' if +folder' not given, `-nointeractive' otherwise + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + RMF(1) -85- RMF(1) + + + _C_o_n_t_e_x_t + _R_m_f will set the current folder to the parent folder if a subfolder + is removed; or if the current folder is removed, it will make "in- + box" current. Otherwise, it doesn't change the current folder or + message. + + + _B_u_g_s + Although intuitively one would suspect that _r_m_f works recursively, + it does not. Hence if you have a sub-folder within a folder, in + order to _r_m_f the parent, you must first _r_m_f each of the children. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + RMM(1) -86- RMM(1) + + + _N_A_M_E + rmm - remove messages + + _S_Y_N_O_P_S_I_S + rmm [+folder] [msgs] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _R_m_m removes the specified messages by renaming the message files + with preceding commas. Many sites consider files that start with a + comma to be a temporary backup, and arrange for _c_r_o_n (8) to remove + such files once a day. + + If the user has a profile component such as + + rmmproc: /bin/rm + + then instead of simply renaming the message file, _r_m_m will call the + named program to delete the file. Note that at most installations, + _c_r_o_n (8) is told to remove files that begin with a comma once a + night. + + Some users of csh prefer the following: + + alias rmm 'refile +d' + + where folder +d is a folder for deleted messages, and + + alias mexp 'rm `mhpath +d all`' + + is used to "expunge" deleted messages. + + The current message is not changed by _r_m_m, so a _n_e_x_t will advance + to the next message in the folder as expected. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + rmmproc: Program to delete the message + + + _S_e_e _A_l_s_o + rmf(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to cur + + [mh.6] MH.6.8 UCI version + + + + + + + + + + RMM(1) -87- RMM(1) + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. + + + _B_u_g_s + Since _r_e_f_i_l_e uses your _r_m_m_p_r_o_c to delete the message, the _r_m_m_p_r_o_c + must NOT call _r_e_f_i_l_e without specifying `-normmproc', or you will + create an infinte loop. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SCAN(1) -88- SCAN(1) + + + _N_A_M_E + scan - produce a one line per message scan listing + + _S_Y_N_O_P_S_I_S + scan [+folder] [msgs] [-clear] [-noclear] [-form formatfile] + [-format string] [-header] [-noheader] [-width columns] + [-reverse] [-noreverse] [-file filename] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _S_c_a_n produces a one-line-per-message listing of the specified mes- + sages. Each _s_c_a_n line contains the message number (name), the + date, the "From:" field, the "Subject" field, and, if room allows, + some of the body of the message. For example: + + 15+ 7/ 5 Dcrocker nned <> if the body is sufficiently short. _S_c_a_n + actually reads each of the specified messages and parses them to + extract the desired fields. During parsing, appropriate error mes- + sages will be produced if there are format errors in any of the + messages. + + The `-header' switch produces a header line prior to the _s_c_a_n list- + ing. Currently, the name of the folder and the current date and + time are output (see the HISTORY section for more information). + + If the `-clear' switch is used and _s_c_a_n'_s output is directed to a + terminal, then _s_c_a_n will consult the $TERM and $TERMCAP envariables + to determine your terminal type in order to find out how to clear + the screen prior to exiting. If the `-clear' switch is used and + _s_c_a_n'_s output is not directed to a terminal (e.g., a pipe or a + file), then _s_c_a_n will send a formfeed prior to exiting. + + For example, the command: + + (scan -clear -header; show all -show pr -f) | lpr + + produces a scan listing of the current folder, followed by a + formfeed, followed by a formatted listing of all messages in the + folder, one per page. Omitting `-show pr -f' will cause the mes- + sages to be concatenated, separated by a one-line header and two + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SCAN(1) -89- SCAN(1) + + + blank lines. + + If _s_c_a_n encounters a message without a "Date:" field, rather than + leaving that portion of the scan listing blank, the date is + filled-in with the last write date of the message, and post-fixed + with a `*'. This is particularly handy for scanning a _d_r_a_f_t + _f_o_l_d_e_r, as message drafts usually aren't allowed to have dates in + them. + + To override the output format used by _s_c_a_n, the `-format string' or + `-form file' switches are used. This permits individual fields of + the scan listing to be extracted with ease. The string is simply a + format string and the file is simply a format file. See + _m_h-_f_o_r_m_a_t (5) for the details. + + In addition to the standard _m_h-_f_o_r_m_a_t (5) escapes, _s_c_a_n also recog- + nizes the following additional _c_o_m_p_o_n_e_n_t escapes: + + _E_s_c_a_p_e _R_e_t_u_r_n_s _D_e_s_c_r_i_p_t_i_o_n + body string the (compressed) first part of the body + dtimenow date the current date + folder string the name of the current folder + + Also, if no date header was present in the message, the _f_u_n_c_t_i_o_n + escapes which operate on {_d_a_t_e} will return values for the date of + last modification of the message file itself. + + _s_c_a_n will update the _M_H context prior to starting the listing, so + interrupting a long _s_c_a_n listing preserves the new context. _M_H + purists hate this idea. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Alternate-Mailboxes: To determine the user's mailboxes + Current-Folder: To find the default current folder + + + _S_e_e _A_l_s_o + inc(1), pick(1), show(1), mh-format(5) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the folder current + `msgs' defaults to all + `-format' defaulted as described above + `-noheader' + `-width' defaulted to the width of the terminal + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SCAN(1) -90- SCAN(1) + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. + + + _H_i_s_t_o_r_y + Prior to using the format string mechanism, `-header' used to gen- + erate a heading saying what each column in the listing was. Format + strings prevent this from happening. + + + _B_u_g_s + The argument to the `-format' switch must be interpreted as a sin- + gle token by the shell that invokes _s_c_a_n. Therefore, one must usu- + ally place the argument to this switch inside double-quotes. + The value of each _c_o_m_p_o_n_e_n_t escape is set by _s_c_a_n to the contents + of the first message header _s_c_a_n encounters with the corresponding + component name; any following headers with the same component name + are ignored. + + The switch `-reverse', makes _s_c_a_n list the messages in reverse ord- + er; this should be considered a bug. + + The `-file filename' switch allows the user to obtain a _s_c_a_n list- + ing of a maildrop file as produced by _p_a_c_k_f. This listing includes + every message in the file. The user should use _m_s_h for more selec- + tive processing of the file. `-reverse' is ignored with this op- + tion. + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SEND(1) -91- SEND(1) + + + _N_A_M_E + send - send a message + + _S_Y_N_O_P_S_I_S + send [-alias aliasfile] [-draft] [-draftfolder +folder] + [-draftmessage msg] [-nodraftfolder] [-filter filterfile] + [-nofilter] [-format] [-noformat] [-forward] [-noforward] + [-msgid] [-nomsgid] [-push] [-nopush] [-verbose] [-noverbose] + [-watch] [-nowatch] [-width columns] [file ...] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _S_e_n_d will cause each of the specified files to be delivered (via + _p_o_s_t (8)) to each of the destinations in the "To:", "cc:", "Bcc:", + and "Fcc:" fields of the message. If _s_e_n_d is re-distributing a + message, as invoked from _d_i_s_t, then the corresponding "Resent-xxx" + fields are examined instead. + + If `-push' is specified, _s_e_n_d will detach itself from the user's + terminal and perform its actions in the background. If _p_u_s_h 'd and + the draft can't be sent, then the `-forward' switch says that draft + should be forwarded with the failure notice sent to the user. This + differs from putting _s_e_n_d in the background because the output is + trapped and analyzed by _M_H. + + If `-verbose' is specified, _s_e_n_d will indicate the interactions + occurring with the transport system, prior to actual delivery. If + `-watch' is specified _s_e_n_d will monitor the delivery of local and + network mail. Hence, by specifying both switches, a large detail + of information can be gathered about each step of the message's + entry into the transport system. + + The `-draftfolder +folder' and `-draftmessage msg' switches invoke + the _M_H draft folder facility. This is an advanced (and highly use- + ful) feature. Consult the Advanced Features section of the _M_H + manual for more information. + + _S_e_n_d with no _f_i_l_e argument will query whether the draft is the + intended file, whereas `-draft' will suppress this question. Once + the transport system has successfully accepted custody of the mes- + sage, the file will be renamed with a leading comma, which allows + it to be retrieved until the next draft message is sent. If there + are errors in the formatting of the message, _s_e_n_d will abort with a + (hopefully) helpful error message. + + If a "Bcc:" field is encountered, its addresses will be used for + delivery, and the "Bcc:" field will be removed from the message + sent to sighted recipients. The blind recipients will receive an + entirely new message with a minimal set of headers. Included in + the body of the message will be a copy of the message sent to the + sighted recipients. If `-filter filterfile' is specified, then + this copy is filtered (re-formatted) prior to being sent to the + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SEND(1) -92- SEND(1) + + + blind recipients. + + Prior to sending the message, the fields "From: user@local", and + "Date: now" will be appended to the headers in the message. If the + envariable $SIGNATURE is set, then its value is used as your per- + sonal name when constructing the "From:" line of the message. If + this envariable is not set, then _s_e_n_d will consult the profile + entry "Signature" for this information. On hosts where _M_H was con- + figured with the UCI option, if $SIGNATURE is not set and the "Sig- + nature" profile entry is not present, then the file + $HOME/.signature is consulted. If `-msgid' is specified, then a + "Message-ID:" field will also be added to the message. + + If _s_e_n_d is re-distributing a message (when invoked by _d_i_s_t ), then + "Resent-" will be prepended to each of these fields: "From:", + "Date:", and "Message-ID:". If the message already contains a + "From:" field, then a "Sender: user@local" field will be added as + well. (An already existing "Sender:" field is an error!) + + By using the `-format' switch, each of the entries in the "To:" and + "cc:" fields will be replaced with "standard" format entries. This + standard format is designed to be usable by all of the message + handlers on the various systems around the Internet. If `-nofor- + mat' is given, then headers are output exactly as they appear in + the message draft. + + If an "Fcc: folder" is encountered, the message will be copied to + the specified folder for the sender in the format in which it will + appear to any non-Bcc receivers of the message. That is, it will + have the appended fields and field reformatting. The "Fcc:" fields + will be removed from all outgoing copies of the message. + + By using the `-width columns' switch, the user can direct _s_e_n_d as + to how long it should make header lines containing addresses. + + The files specified by the profile entry "Aliasfile:" and any addi- + tional alias files given by the `-alias aliasfile' switch will be + read (more than one file, each preceeded by `-alias', can be + named). See _m_h-_a_l_i_a_s (5) for more information. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Draft-Folder: To find the default draft-folder + Aliasfile: For a default alias file + Signature: To determine the user's mail signature + mailproc: Program to post failure notices + postproc: Program to post the message + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SEND(1) -93- SEND(1) + + + _S_e_e _A_l_s_o + comp(1), dist(1), forw(1), repl(1), mh-alias(5), post(8) + + + _D_e_f_a_u_l_t_s + `file' defaults to /draft + `-alias /usr/local/lib/mh/MailAliases' + `-nodraftfolder' + `-nofilter' + `-format' + `-forward' + `-nomsgid' + `-nopush' + `-noverbose' + `-nowatch' + `-width 72' + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + Under some configurations, it is not possible to mointor the mail + delivery transaction; `-watch' is a no-op on those systems. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SHOW(1) -94- SHOW(1) + + + _N_A_M_E + show - show (list) messages + + _S_Y_N_O_P_S_I_S + show [+folder] [msgs] [-draft] [-header] [-noheader] + [-showproc program] [-noshowproc] [switches for _s_h_o_w_p_r_o_c] + [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _S_h_o_w lists each of the specified messages to the standard output + (typically, the terminal). Typically, the messages are listed + exactly as they are, with no reformatting. A program named by the + _s_h_o_w_p_r_o_c profile component is invoked to do the listing, and any + switches not recognized by _s_h_o_w are passed along to that program. + The default program is known as _m_o_r_e (1). To override the default + and the _s_h_o_w_p_r_o_c profile component, use the `-showproc program' + switch. For example, `-show pr' will cause the _p_r (1) program to + list the messages. The _M_H command _m_h_l can be used as a _s_h_o_w_p_r_o_c to + show messages in a more uniform format. Normally, this program is + specified as the _s_h_o_w_p_r_o_c is the user's .mh_profile. See _m_h_l (1) + for the details. If the `-noshowproc' option is specified, + `/bin/cat' is used instead of _s_h_o_w_p_r_o_c. + + The `-header' switch tells _s_h_o_w to display a one-line description + of the message being shown. This description includes the folder + and the message number. + + If no `msgs' are specified, the current message is used. If more + than one message is specified, _m_o_r_e will prompt for a + prior to listing each message. _m_o_r_e will list each message, a page + at a time. When the end of page is reached, _m_o_r_e will ring the + bell and wait for a or . If a is entered, + _m_o_r_e will print the next line, whereas will print the next + screenful. To exit _m_o_r_e, type "q". + + If the standard output is not a terminal, no queries are made, and + each file is listed with a one-line header and two lines of separa- + tion. + + "show -draft" will list the file /draft if it exists. + + If the profile entry "Unseen-Sequence" is present and non-empty, + then _s_h_o_w will remove each of the messages shown from each sequence + named by the profile entry. This is similar to the + "Previous-Sequence" profile entry supported by all _M_H commands + which take `msgs' or `msg' arguments. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SHOW(1) -95- SHOW(1) + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + Unseen-Sequence: To name sequences denoting unseen messages + showproc: Program to show messages + + + _S_e_e _A_l_s_o + mhl(1), more(1), next(1), pick(1), prev(1), scan(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to cur + `-header' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. The last + message shown will become the current message. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SHOW(1) -96- SHOW(1) + + + _B_u_g_s + The `-header' switch doesn't work when `msgs' expands to more than + one message. If the _s_h_o_w_p_r_o_c is _m_h_l, then is problem can be cir- + cumvented by referencing the "messagename" field in the _m_h_l format + file. + + _S_h_o_w updates the user's context before showing the message. Hence + _s_h_o_w will mark messages as seen prior to the user actually seeing + them. This is generally not a problem, unless the user relies on + the "unseen" messages mechanism, and interrupts _s_h_o_w while it is + showing "unseen" messages. + + If _s_h_o_w_p_r_o_c is _m_h_l, then _s_h_o_w uses a built-in _m_h_l: it does not ac- + tually run the _m_h_l program. Hence, if you define your own + _s_h_o_w_p_r_o_c, don't call it _m_h_l since _s_h_o_w won't run it. + + If _m_o_r_e (1) is your showproc (the default), then avoid running _s_h_o_w + in the background with only its standard output piped to another + process, as in + + show | imprint & + + Due to a bug in _m_o_r_e, show will go into a "tty input" state. To + avoid this problem, re-direct _s_h_o_w's diagnostic output as well. + For users of _c_s_h: + + show |& imprint & + + For users of _s_h: + + show 2>&1 | imprint & + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SLOCAL(1) -97- SLOCAL(1) + + + _N_A_M_E + slocal - special local mail delivery + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/slocal [address info sender] + [-addr address] [-info data] [-sender sender] + [-user username] [-mailbox mbox] [-file file] + [-maildelivery deliveryfile] [-verbose] [-noverbose] [-debug] + [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _S_l_o_c_a_l is a program designed to allow you to have your inbound mail + processed according to a complex set of selection criteria. You do + not normally invoke _s_l_o_c_a_l yourself, rather _s_l_o_c_a_l is invoked on + your behalf by your system's Message Transfer Agent. + + The message selection criteria used by _s_l_o_c_a_l is specified in the + file ._m_a_i_l_d_e_l_i_v_e_r_y in the user's home directory. The format of + this file is given below. + + The message delivery address and message sender are determined from + the Message Transfer Agent envelope information, if possible. + Under _S_e_n_d_M_a_i_l, the sender will obtained from the UUCP "From " + line, if present. The user may override these values with command + line arguments, or arguments to the `-addr' and `-sender' switches. + + The message is normally read from the standard input. The `-file' + switch sets the name of the file from which the message should be + read, instead of reading stdin. The `-user' switch tells _s_l_o_c_a_l + the name of the user for whom it is delivering mail. The `-mail- + box' switch tells _s_l_o_c_a_l the name of the user's maildrop file. + + The `-info' switch may be used to pass an arbitrary argument to + sub-processes which _s_l_o_c_a_l may invoke on your behalf. The `-ver- + bose' switch causes _s_l_o_c_a_l to give information on stdout about its + progress. The `-debug' switch produces more verbose debugging out- + put on stderr. + + + _M_e_s_s_a_g_e _T_r_a_n_s_f_e_r _A_g_e_n_t_s + + If your MTA is _S_e_n_d_M_a_i_l, you should include the line + + "| /usr/local/lib/mh/slocal -user username" + + in your .forward file in your home directory. This will cause + _S_e_n_d_M_a_i_l to invoke _s_l_o_c_a_l on your behalf. + + If your MTA is _M_M_D_F-_I, you should (symbolically) link + /usr/local/lib/mh/slocal to the file bin/rcvmail in your home + directory. This will cause _M_M_D_F-_I to invoke _s_l_o_c_a_l on your behalf + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SLOCAL(1) -98- SLOCAL(1) + + + with the correct "_a_d_d_r_e_s_s _i_n_f_o _s_e_n_d_e_r" arguments. + + If your MTA is _M_M_D_F-_I_I, then you should not use _s_l_o_c_a_l. An + equivalent functionality is already provided by _M_M_D_F-_I_I; see mail- + delivery(5) for details. + + + _T_h_e _M_a_i_l_d_e_l_i_v_e_r_y _F_i_l_e + + + The ._m_a_i_l_d_e_l_i_v_e_r_y file controls how local delivery is performed. + Each line of this file consists of five fields, separated by + white-space or comma. Since double-quotes are honored, these char- + acters may be included in a single argument by enclosing the entire + argument in double-quotes. A double-quote can be included by + preceding it with a backslash. Lines beginning with `#' are + ignored. The format of each line in the ._m_a_i_l_d_e_l_i_v_e_r_y file is: + + + header pattern action result string + + header: + The name of a header field that is to be searched for a pat- + tern. This is any field in the headers of the message that + might be present. The following special fields are also + defined: + + _s_o_u_r_c_e the out-of-band sender information + _a_d_d_r the address that was used to cause delivery to the + recipient + _d_e_f_a_u_l_t this matches _o_n_l_y if the message hasn't been + delivered yet + * this always matches + + pattern: + The sequence of characters to match in the specified header + field. Matching is case-insensitive, but does not use regular + expressions. + + action: + The action to take to deliver the message: + + _d_e_s_t_r_o_y This action always succeeds. + + _f_i_l_e or > Append the message to the file named by string. The + message is appended to the file in the maildrop for- + mat which is used by your message transport system. + If the message can be appended to the file, then + this action succeeds. When writing to the file, a + "Delivery-Date: date" header is added which indi- + cates the date and time that message was appended to + the file. + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SLOCAL(1) -99- SLOCAL(1) + + + _m_b_o_x Identical to _f_i_l_e, but always appends the message + using the format used by _p_a_c_k_f (the MMDF mailbox + format). + + _p_i_p_e or | Pipe the message as the standard input to the com- + mand named by string, using the Bourne shell _s_h(1) + to interpret the string. Prior to giving the string + to the shell, it is expanded with the following + built-in variables: + + $(sender) the out-of-band sender information + $(address) the address that was used to cause + delivery to the recipient + $(size) the size of the message in bytes + $(reply-to) either the "Reply-To:" or "From:" field + of the message + $(info) the out-of-band information specified + _q_p_i_p_e or + <_c_a_r_e_t> Similar to _p_i_p_e, but executes the command directly, + after built-in variable expansion, without assis- + tance from the shell. This action can be used to + avoid quoting special characters which your shell + might interpret. + + result: + Indicates how the action should be performed: + + _A Perform the action. If the action succeeds, then + the message is considered delivered. + + _R Perform the action. Regardless of the outcome of + the action, the message is not considered delivered. + + ? Perform the action only if the message has not been + delivered. If the action succeeds, then the message + is considered delivered. + + _N Perform the action only if the message has not been + delivered and the previous action succeeded. If + this action succeeds, then the message is considered + delivered. + + To summarize, here's an example: + + #_f_i_e_l_d _p_a_t_t_e_r_n _a_c_t_i_o_n _r_e_s_u_l_t _s_t_r_i_n_g + # lines starting with a '#' are ignored, as are blank lines + # + # file mail with mmdf2 in the "To:" line into file mmdf2.log + _T_o _m_m_d_f_2 _f_i_l_e _A _m_m_d_f_2._l_o_g + # Messages from mmdf pipe to the program err-message-archive + _F_r_o_m _m_m_d_f _p_i_p_e _A /_b_i_n/_e_r_r-_m_e_s_s_a_g_e-_a_r_c_h_i_v_e + # Anything with the "Sender:" address "mh-workers" + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SLOCAL(1) -100- SLOCAL(1) + + + # file in mh.log if not filed already + _S_e_n_d_e_r _m_h-_w_o_r_k_e_r_s _f_i_l_e ? _m_h._l_o_g + # "To:" unix - put in file unix-news + _T_o _U_n_i_x > _A _u_n_i_x-_n_e_w_s + # if the address is jpo=ack - send an acknowledgement copy back + _a_d_d_r _j_p_o=_a_c_k | _R "/_b_i_n/_r_e_s_e_n_d -_r $(_r_e_p_l_y-_t_o)" + # anything from steve - destroy! + _F_r_o_m _s_t_e_v_e _d_e_s_t_r_o_y _A - + # anything not matched yet - put into mailbox + _d_e_f_a_u_l_t - > ? _m_a_i_l_b_o_x + # always run rcvtty + * - | _R /_m_h/_l_i_b/_r_c_v_t_t_y + + The file is always read completely, so that several matches can be + made and several actions can be taken. The ._m_a_i_l_d_e_l_i_v_e_r_y file must + be owned either by the user or by root, and must be writable only + by the owner. If the ._m_a_i_l_d_e_l_i_v_e_r_y file cannot be found, or does + not perform an action which delivers the message, then the file + /usr/local/lib/mh/maildelivery is read according to the same rules. + This file must be owned by the root and must be writable only by + the root. If this file cannot be found or does not perform an + action which delivers the message, then standard delivery to the + user's maildrop is performed. + + + _S_u_b-_p_r_o_c_e_s_s _e_n_v_i_r_o_n_m_e_n_t + + When a process is invoked, its environment is: the user/group-ids + are set to recipient's ids; the working directory is the + recipient's home directory; the umask is 0077; the process has no + /dev/tty; the standard input is set to the message; the standard + output and diagnostic output are set to /dev/null; all other file- + descriptors are closed; the envariables $USER, $HOME, $SHELL are + set appropriately, and no other envariables exist. + + The process is given a certain amount of time to execute. If the + process does not exit within this limit, the process will be ter- + minated with extreme prejudice. The amount of time is calculated + as ((size x 60) + 300) seconds, where size is the number of bytes + in the message. + + The exit status of the process is consulted in determining the suc- + cess of the action. An exit status of zero means that the action + succeeded. Any other exit status (or abnormal termination) means + that the action failed. + + In order to avoid any time limitations, you might implement a pro- + cess that began by _f_o_r_k_i_n_g. The parent would return the appropri- + ate value immediately, and the child could continue on, doing what- + ever it wanted for as long as it wanted. This approach is somewhat + risky if the parent is going to return an exit status of zero. If + the parent is going to return a non-zero exit status, then this + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SLOCAL(1) -101- SLOCAL(1) + + + approach can lead to quicker delivery into your maildrop. + + _F_i_l_e_s + /usr/local/lib/mh/mtstailor MH tailor file + $HOME/.maildelivery The file controlling local delivery + /usr/local/lib/mh/maildelivery Rather than the standard file + /usr/spool/mail/$USER The default maildrop + + + _S_e_e _A_l_s_o + rcvstore(1), mhook(1), mh-format(5) + + + _D_e_f_a_u_l_t_s + `-noverbose' + `-maildelivery .maildelivery' + `-mailbox /usr/spool/mail/$USER' + `-file' defaults to stdin + `-user' defaults to the current user + + + _C_o_n_t_e_x_t + None + + + _H_i_s_t_o_r_y + _S_l_o_c_a_l is designed to be backward-compatible with the _m_a_i_l_d_e_l_i_v_e_r_y + facility provided by _M_M_D_F-_I_I. Thus, the ._m_a_i_l_d_e_l_i_v_e_r_y file syntax + is limited, as is the functionality of _s_l_o_c_a_l. + + In addition to an exit status of zero, the _M_M_D_F values _R_P__M_O_K (32) + and _R_P__O_K (9) mean that the message has been fully delivered. Any + other non-zero exit status, including abnormal termination, is in- + terpreted as the _M_M_D_F value _R_P__M_E_C_H (200), which means "use an al- + ternate route" (deliver the message to the maildrop). + + + _B_u_g_s + Only two return codes are meaningful, others should be. + + _S_l_o_c_a_l is designed to be backwards-compatible with the _m_a_i_l_d_e_l_i_v_e_r_y + functionality provided by MMDF-II. + + Versions of _M_M_D_F with the _m_a_i_l_d_e_l_i_v_e_r_y mechanism aren't entirely + backwards-compatible with earlier versions of _M_M_D_F. If you have an + _M_M_D_F-_I old-style hook, the best you can do is to have a one-line + ._m_a_i_l_d_e_l_i_v_e_r_y file: + + default - pipe A "bin/rcvmail $(address) $(info) $(sender)" + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SORTM(1) -102- SORTM(1) + + + _N_A_M_E + sortm - sort messages + + _S_Y_N_O_P_S_I_S + sortm [+folder] [msgs] [-datefield field] [-textfield field] + [-notextfield] [-limit days] [-nolimit] [-verbose] + [-noverbose] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _S_o_r_t_m sorts the specified messages in the named folder according to + the chronological order of the "Date:" field of each message. + + The `-verbose' switch directs _s_o_r_t_m to tell the user the general + actions that it is taking to place the folder in sorted order. + + The `-datefield field' switch tells _s_o_r_t_m the name of the field to + use when making the date comparison. If the user has a special + field in each message, such as "BB-Posted:" or "Delivery-Date:", + then the `-datefield' switch can be used to direct _s_o_r_t_m which + field to examine. + + The `-textfield field' switch causes _s_o_r_t_m to sort messages by the + specified text field. If this field is "subject", any leading + "re:" is stripped off. In any case, all characters except letters + and numbers are stripped and the resulting strings are sorted + datefield-major, textfield-minor, using a case insensitive com- + parison. + + With `-textfield field', if `-limit days' is specified, messages + with similar textfields that are dated within `days' of each other + appear together. Specifying `-nolimit' makes the limit infinity. + With `-limit 0', the sort is instead made textfield-major, + date-minor. + + For example, to order a folder by date-major, subject-minor, use: + + sortm -textfield subject +folder + + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Current-Folder: To find the default current folder + + + _S_e_e _A_l_s_o + folder (1) + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + SORTM(1) -103- SORTM(1) + + + _D_e_f_a_u_l_t_s + `+folder' defaults to the current folder + `msgs' defaults to all + `-datefield date' + `-notextfield' + `-noverbose' + `-nolimit' + + + _C_o_n_t_e_x_t + If a folder is given, it will become the current folder. If the + current message is moved, _s_o_r_t_m will preserve its status as + current. + + + _H_i_s_t_o_r_y + Timezones used to be ignored when comparing dates: they aren't any + more. + + Messages which were in the folder, but not specified by `msgs', + used to be moved to the end of the folder; now such messages are + left untouched. + + _S_o_r_t_m sometimes did not preserve the message numbering in a folder + (e.g., messages 1, 3, and 5, might have been renumbered to 1, 2, 3 + after sorting). This was a bug, and has been fixed. To compress + the message numbering in a folder, use "_f_o_l_d_e_r -_p_a_c_k" as always. + + + _B_u_g_s + If _s_o_r_t_m encounters a message without a date-field, or if the mes- + sage has a date-field that _s_o_r_t_m cannot parse, then _s_o_r_t_m attempts + to keep the message in the same relative position. This does not + always work. For instance, if the first message encountered lacks + a date which can be parsed, then it will usually be placed at the + end of the messages being sorted. + + When _s_o_r_t_m complains about a message which it can't temporally ord- + er, it complains about the message number _p_r_i_o_r to sorting. It + should indicate what the message number will be _a_f_t_e_r sorting. + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + VMH(1) -104- VMH(1) + + + _N_A_M_E + vmh - visual front-end to MH + + _S_Y_N_O_P_S_I_S + vmh [-prompt string] [-vmhproc program] [-novmhproc] + [switches for _v_m_h_p_r_o_c] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _v_m_h is a program which implements the server side of the _M_H window + management protocol and uses _c_u_r_s_e_s (3) routines to maintain a + split-screen interface to any program which implements the client + side of the protocol. This latter program, called the _v_m_h_p_r_o_c, is + specified using the `-vmhproc program' switch. + + The upshot of all this is that one can run _m_s_h on a display termi- + nal and get a nice visual interface. To do this, for example, just + add the line + + mshproc: vmh + + to your .mh_profile. (This takes advantage of the fact that _m_s_h is + the default _v_m_h_p_r_o_c for _v_m_h.) + + In order to facilitate things, if the `-novmhproc' switch is given, + and _v_m_h can't run on the user's terminal, the _v_m_h_p_r_o_c is run + directly without the window management protocol. + + After initializing the protocol, _v_m_h prompts the user for a command + to be given to the client. Usually, this results in output being + sent to one or more windows. If a output to a window would cause + it to scroll, _v_m_h prompts the user for instructions, roughly per- + mitting the capabilities of _l_e_s_s or _m_o_r_e (e.g., the ability to + scroll backwards and forwards): + + SPACE advance to the next windowful + RETURN * advance to the next line + y * retreat to the previous line + d * advance to the next ten lines + u * retreat to the previous ten lines + g * go to an arbitrary line + (preceed g with the line number) + G * go to the end of the window + (if a line number is given, this acts like `g') + CTRL-L refresh the entire screen + h print a help message + q abort the window + + (A `*' indicates that a numeric prefix is meaningful for this com- + mand.) + + Note that if a command resulted in more than one window's worth of + + [mh.6] MH.6.8 UCI version + + + + + + + + + + VMH(1) -105- VMH(1) + + + information being displayed, and you allow the command which is + generating information for the window to gracefully finish (i.e., + you don't use the `q' command to abort information being sent to + the window), then _v_m_h will give you one last change to peruse the + window. This is useful for scrolling back and forth. Just type + `q' when you're done. + + To abnormally terminate _v_m_h (without core dump), use (usu- + ally CTRL-\). For instance, this does the "right" thing with _b_b_c + and _m_s_h. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + + + _S_e_e _A_l_s_o + msh(1) + + + _D_e_f_a_u_l_t_s + `-prompt (vmh) ' + `-vmhproc msh' + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + The argument to the `-prompt' switch must be interpreted as a sin- + gle token by the shell that invokes _v_m_h. Therefore, one must usu- + ally place the argument to this switch inside double-quotes. + + At present, there is no way to pass signals (e.g., interrupt, quit) + to the client. However, generating QUIT when _v_m_h is reading a com- + mand from the terminal is sufficient to tell the client to go away + quickly. + + Acts strangely (loses peer or botches window management protocol + with peer) on random occasions. + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + WHATNOW(1) -106- WHATNOW(1) + + + _N_A_M_E + whatnow - prompting front-end for send + + _S_Y_N_O_P_S_I_S + whatnow [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [-editor editor] [-noedit] [-prompt string] [file] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _W_h_a_t_n_o_w is the default program that queries the user about the + disposition of a composed draft. It is normally invoked by one of + _c_o_m_p, _d_i_s_t, _f_o_r_w, or _r_e_p_l after the initial edit. + + When started, the editor is started on the draft (unless `-noedit' + is given, in which case the initial edit is suppressed). Then, + _w_h_a_t_n_o_w repetitively prompts the user with "What now?" and awaits a + response. The valid responses are: + + display to list the message being distributed/replied-to on + the terminal + edit to re-edit using the same editor that was used on the + preceding round unless a profile entry + "-next: " names an alternate editor + edit to invoke for further editing + list to list the draft on the terminal + push to send the message in the background + quit to terminate the session and preserve the draft + quit -delete to terminate, then delete the draft + refile +folder to refile the draft into the given folder + send to send the message + send -watch to cause the delivery process to be monitored + whom to list the addresses that the message will go to + whom -check to list the addresses and verify that they are + acceptable to the transport service + + For the edit response, any valid switch to the editor is valid. + Similarly, for the send and whom responses, any valid switch to + _s_e_n_d (1) and _w_h_o_m (1) commands, respectively, are valid. For the + push response, any valid switch to _s_e_n_d (1) is valid (as this + merely invokes _s_e_n_d with the `-push' option). For the _r_e_f_i_l_e + response, any valid switch to the _f_i_l_e_p_r_o_c is valid. For the + display and list responses, any valid argument to the _l_p_r_o_c is + valid. If any non-switch arguments are present, then the pathname + of the draft will be excluded from the argument list given to the + _l_p_r_o_c (this is useful for listing another _M_H message). + + See _m_h-_p_r_o_f_i_l_e (5) for further information about how editors are + used by MH. It also discusses how complex envariables can be used + to direct _w_h_a_t_n_o_w's actions. + + The `-prompt string' switch sets the prompting string for _w_h_a_t_n_o_w. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + WHATNOW(1) -107- WHATNOW(1) + + + The `-draftfolder +folder' and `-draftmessage msg' switches invoke + the _M_H draft folder facility. This is an advanced (and highly use- + ful) feature. Consult the Advanced Features section of the _M_H + manual for more information. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /draft The draft file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Draft-Folder: To find the default draft-folder + Editor: To override the default editor + -next: To name an editor to be used after exit from + + fileproc: Program to refile the message + lproc: Program to list the contents of a message + sendproc: Program to use to send the message + whomproc: Program to determine who a message would go to + + + _S_e_e _A_l_s_o + send(1), whom(1) + + + _D_e_f_a_u_l_t_s + `-prompt "What Now? "' + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + The argument to the `-prompt' switch must be interpreted as a sin- + gle token by the shell that invokes _w_h_a_t_n_o_w. Therefore, one must + usually place the argument to this switch inside double-quotes. + + If the initial edit fails, _w_h_a_t_n_o_w deletes your draft (by renaming + it with a leading comma); failure of a later edit preverves the + draft. + + If _w_h_a_t_n_o_w_p_r_o_c is _w_h_a_t_n_o_w, then _c_o_m_p, _d_i_s_t, _f_o_r_w, and _r_e_p_l use a + built-in _w_h_a_t_n_o_w, and do not actually run the _w_h_a_t_n_o_w program. + Hence, if you define your own _w_h_a_t_n_o_w_p_r_o_c, don't call it _w_h_a_t_n_o_w + since it won't be run. + + If _s_e_n_d_p_r_o_c is _s_e_n_d, then _w_h_a_t_n_o_w uses a built-in _s_e_n_d, it does not + actually run the _s_e_n_d program. Hence, if you define your own + _s_e_n_d_p_r_o_c, don't call it _s_e_n_d since _w_h_a_t_n_o_w won't run it. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + WHATNOW(1) -108- WHATNOW(1) + + + _N_A_M_E + whom - report to whom a message would go + + _S_Y_N_O_P_S_I_S + whom [-alias aliasfile] [-check] [-nocheck] [-draft] + [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [file] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _W_h_o_m is used to expand the headers of a message into a set of + addresses and optionally verify that those addresses are deliver- + able at that time (if `-check' is given). + + The `-draftfolder +folder' and `-draftmessage msg' switches invoke + the _M_H draft folder facility. This is an advanced (and highly use- + ful) feature. Consult the Advanced Features section of the _M_H + manual for more information. + + The files specified by the profile entry "Aliasfile:" and any addi- + tional alias files given by the `-alias aliasfile' switch will be + read (more than one file, each preceeded by `-alias', can be + named). See _m_h-_a_l_i_a_s (5) for more information. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + Draft-Folder: To find the default draft-folder + Aliasfile: For a default alias file + postproc: Program to post the message + + + _S_e_e _A_l_s_o + mh-alias(5), post(8) + + + _D_e_f_a_u_l_t_s + `file' defaults to /draft + `-nocheck' + `-alias /usr/local/lib/mh/MailAliases' + + + _C_o_n_t_e_x_t + None + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + WHOM(1) -109- WHOM(1) + + + _B_u_g_s + With the `-check' option, _w_h_o_m makes no guarantees that the ad- + dresses listed as being ok are really deliverable, rather, an ad- + dress being listed as ok means that at the time that _w_h_o_m was run + the address was thought to be deliverable by the transport service. + For local addresses, this is absolute; for network addresses, it + means that the host is known; for uucp addresses, it (often) means + that the _U_U_C_P network is available for use. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + -110- + + + _M_O_R_E _D_E_T_A_I_L_S + + This section describes some of the more intense points of the _M_H + system, by expanding on topics previously discussed. The format + presented conforms to the standard form for the description of UNIX + documentation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MH-ALIAS(5) -111- MH-ALIAS(5) + + + _N_A_M_E + mh-alias - alias file for MH message system + + _S_Y_N_O_P_S_I_S + any _M_H command + + _D_E_S_C_R_I_P_T_I_O_N + + This describes both _M_H personal alias files and the (primary) alias + file for mail delivery, the file + + /usr/local/lib/mh/MailAliases + + It does not describe aliases files used by the message transport + system. Each line of the alias file has the format: + + alias : address-group + or + alias ; address-group + or + < alias-file + or + ; comment + + where: + + address-group := address-list + | "<" file + | "=" UNIX-group + | "+" UNIX-group + | "*" + + address-list := address + | address-list, address + + Continuation lines in alias files end with `\' followed by the new- + line character. + + Alias-file and file are UNIX file names. UNIX-group is a group + name (or number) from /_e_t_c/_g_r_o_u_p. An address is a "simple" + Internet-style address. Througout this file, case is ignored, + except for alias-file names. + + If the line starts with a `<', then the file named after the `<' is + read for more alias definitions. The reading is done recursively, + so a `<' may occur in the beginning of an alias file with the + expected results. + + If the address-group starts with a `<', then the file named after + the `<' is read and its contents are added to the address-list for + the alias. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-ALIAS(5) -112- MH-ALIAS(5) + + + If the address-group starts with an `=', then the file /_e_t_c/_g_r_o_u_p + is consulted for the UNIX-group named after the `='. Each login + name occurring as a member of the group is added to the + address-list for the alias. + + In contrast, if the address-group starts with a `+', then the file + /_e_t_c/_g_r_o_u_p is consulted to determine the group-id of the UNIX-group + named after the `+'. Each login name occurring in the /_e_t_c/_p_a_s_s_w_d + file whose group-id is indicated by this group is added to the + address-list for the alias. + + If the address-group is simply `*', then the file /_e_t_c/_p_a_s_s_w_d is + consulted and all login names with a userid greater than some magic + number (usually 200) are added to the address-list for the alias. + + In match, a trailing * on an alias will match just about anything + appropriate. (See example below.) + + An approximation of the way aliases are resolved at posting time is + (it's not really done this way): + + 1) Build a list of all addresses from the message to be + delivered, eliminating duplicate addresses. + + 2) If this draft originated on the local host, then for those + addresses in the message that have no host specified, perform + alias resolution. + + 3) For each line in the alias file, compare "alias" against + all of the existing addresses. If a match, remove the matched + "alias" from the address list, and add each new address in the + address-group to the address list if it is not already on the + list. The alias itself is not usually output, rather the + address-group that the alias maps to is output instead. If + "alias" is terminated with a `;' instead of a `:', then both + the "alias" and the address are output in the correct format. + (This makes replies possible since _M_H aliases and personal + aliases are unknown to the mail transport system.) + + Since the alias file is read line by line, forward references work, + but backward references are not recognized, thus, there is no + recursion. + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-ALIAS(5) -113- MH-ALIAS(5) + + + Example: + " are defined to be "news". + + The key thing to understand about aliasing in _M_H is that aliases in + _M_H alias files are expanded into the headers of messages posted. + This aliasing occurs first, at posting time, without the knowledge + of the message transport system. In contrast, once the message + transport system is given a message to deliver to a list of + addresses, for each address that appears to be local, a system-wide + alias file is consulted. These aliases are NOT expanded into the + headers of messages delivered. + + _H_e_l_p_f_u_l _H_i_n_t_s + + To use aliasing in _M_H quickly, do the following: + + First, in your ._m_h__p_r_o_f_i_l_e, choose a name for your alias file, + say "aliases", and add the line: + + Aliasfile: aliases + + Second, create the file "aliases" in your _M_H directory. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-ALIAS(5) -114- MH-ALIAS(5) + + + Third, start adding aliases to your "aliases" file as + appropriate. + + _F_i_l_e_s + /usr/local/lib/mh/MailAliases Primary alias file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Aliasfile: For a default alias file + + + _S_e_e _A_l_s_o + ali(1), send(1), whom(1), group(5), passwd(5), conflict(8), post(8) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + None + + + _H_i_s_t_o_r_y + In previous releases of _M_H, only a single, system-wide mh-alias + file was supported. This led to a number of problems, since only + mail-system administrators were capable of (un)defining aliases. + Hence, the semantics of mh-alias were extended to support personal + alias files. Users of _M_H no longer need to bother mail-system ad- + ministrators for keeping information in the system-wide alias file, + as each _M_H user can create/modify/remove aliases at will from any + number of personal files. + + + _B_u_g_s + Although the forward-referencing semantics of _m_h-_a_l_i_a_s files + prevent recursion, the "< alias-file" command may defeat this. + Since the number of file descriptors is finite (and very limited), + such infinite recursion will terminate with a meaningless diagnos- + tic when all the fds are used up. + + Forward references do not work correctly inside blind lists. + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-FORMAT(5) -115- MH-FORMAT(5) + + + _N_A_M_E + mh-format - format file for MH message system + + _S_Y_N_O_P_S_I_S + some _M_H commands + + _D_E_S_C_R_I_P_T_I_O_N + + Several _M_H commands utilize either a _f_o_r_m_a_t string or a _f_o_r_m_a_t file + during their execution. For example, _s_c_a_n (1) uses a format string + which directs it how to generate the scan listing for each message; + _r_e_p_l (1) uses a format file which directs it how to generate the + reply to a message, and so on. + + Format strings are designed to be efficiently parsed by _M_H which + means they are not necessarily simple to write and understand. + This means that novice, casual, or even advanced users of _M_H should + not have to deal with them. Some canned scan listing formats are + in /usr/local/lib/mh/scan.time, /usr/local/lib/mh/scan.size, and + /usr/local/lib/mh/scan.timely. Look in /usr/local/lib/mh for other + _s_c_a_n and _r_e_p_l format files which may have been written at your + site. + + It suffices to have your local _M_H expert actually write new format + commands or modify existing ones. This manual section explains how + to do that. Note: familiarity with the C _p_r_i_n_t_f routine is + assumed. + + A format string consists of ordinary text, and special multi- + character _e_s_c_a_p_e sequences which begin with `%'. When specifying a + format string, the usual C backslash characters are honored: `\b', + `\f', `\n', `\r', and `\t'. Continuation lines in format files end + with `\' followed by the newline character. There are three types + of _e_s_c_a_p_e sequences: header _c_o_m_p_o_n_e_n_t_s, built-in _f_u_n_c_t_i_o_n_s, and + flow _c_o_n_t_r_o_l. + + A _c_o_m_p_o_n_e_n_t escape is specified as `%{_c_o_m_p_o_n_e_n_t}', and exists for + each header found in the message being processed. For example + `%{date}' refers to the "Date:" field of the appropriate message. + All component escapes have a string value. Normally, component + values are compressed by converting any control characters (tab and + newline included) to spaces, then eliding any leading or multiple + spaces. However, commands may give different interpretations to + some component escapes; be sure to refer to each command's manual + entry for complete details. + + A _f_u_n_c_t_i_o_n escape is specified as `%(_f_u_n_c_t_i_o_n)'. All functions are + built-in, and most have a string or numeric value. + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-FORMAT(5) -116- MH-FORMAT(5) + + + _C_o_n_t_r_o_l-_f_l_o_w _e_s_c_a_p_e_s + + A _c_o_n_t_r_o_l escape is one of: `%<', `%?', `%|', or `%>'. These are + combined into the conditional execution construct: + + % + + Extra white space is shown here only for clarity. These constructs + may be nested without ambiguity. They form a general + if-elseif-else-endif block where only one of the _f_o_r_m_a_t _t_e_x_t seg- + ments is interpreted. + + The `%<' and `%?' control escapes causes a condition to be + evaluated. This condition may be either a _c_o_m_p_o_n_e_n_t or a _f_u_n_c_t_i_o_n. + The four constructs have the following syntax: + + %<{component} + %<(function) + %?{component} + %?(function) + + These control escapes test whether the function or component value + is non-zero (for integer-valued escapes), or non-empty (for + string-valued escapes). + + If this test evaulates true, then the format text up to the next + corresponding control escape (one of `%|', `%?', or `%>') is inter- + preted normally. Next, all format text (if any) up to the + corresponding `%>' control escape is skipped. The `%>' control + escape is not interpreted; normal interpretation resumes after the + `%>' escape. + + If the test evaluates false, however, then the format text up to + the next corresponding control escape (again, one of `%|', `%?', or + `%>') is skipped, instead of being interpreted. If the control + escape encountered was `%?', then the condition associated with + that control escape is evaluated, and interpretation proceeds after + that test as described in the previous paragraph. If the control + escape encountered was `%|', then the format text up to the + corresponding `%>' escape is interpreted normally. As above, the + `%>' escape is not interpreted and normal interpretation resumes + after the `%>' escape. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-FORMAT(5) -117- MH-FORMAT(5) + + + The `%?' control escape and its following format text is optional, + and may be included zero or more times. The `%|' control escape + and its following format text is also optional, and may be included + zero or one times. + + + _F_u_n_c_t_i_o_n _e_s_c_a_p_e_s + + Most functions expect an argument of a particular type: + + _A_r_g_u_m_e_n_t _D_e_s_c_r_i_p_t_i_o_n _E_x_a_m_p_l_e _S_y_n_t_a_x + literal A literal number, %(_f_u_n_c 1234) + or string %(_f_u_n_c text string) + comp Any header component %(_f_u_n_c{_i_n-_r_e_p_l_y-_t_o}) + date A date component %(_f_u_n_c{_d_a_t_e}) + addr An address component %(_f_u_n_c{_f_r_o_m}) + expr An optional component, %(_f_u_n_c(_f_u_n_c_2)) + function or control, %(_f_u_n_c %<{_r_e_p_l_y-_t_o}%|%{_f_r_o_m}%>) + perhaps nested %(_f_u_n_c(_f_u_n_c_2{_c_o_m_p})) + + The types _d_a_t_e and _a_d_d_r have the same syntax as _c_o_m_p, but require + that the header component be a date string, or address string, + respectively. + + All arguments except those of type _e_x_p_r are required. For the _e_x_p_r + argument type, the leading `%' must be omitted for component and + function escape arguments, and must be present (with a leading + space) for control escape arguments. + + The evaluation of format strings is based on a simple machine with + an integer register _n_u_m, and a text string register _s_t_r. When a + function escape is processed, if it accepts an optional _e_x_p_r argu- + ment which is not present, it reads the current value of either _n_u_m + or _s_t_r as appropriate. + + + _R_e_t_u_r_n _v_a_l_u_e_s + + Component escapes write the value of their message header in _s_t_r. + Function escapes write their return value in _n_u_m for functions + returning _i_n_t_e_g_e_r or _b_o_o_l_e_a_n values, and in _s_t_r for functions + returning string values. (The _b_o_o_l_e_a_n type is a subset of integers + with usual values 0=false and 1=true.) Control escapes return a + _b_o_o_l_e_a_n value, and set _n_u_m. + + All component escapes, and those function escapes which return an + _i_n_t_e_g_e_r or _s_t_r_i_n_g value, pass this value back to their caller in + addition to setting _s_t_r or _n_u_m. These escapes will print out this + value unless called as part of an argument to another escape + sequence. Escapes which return a _b_o_o_l_e_a_n value do pass this value + back to their caller in _n_u_m, but will never print out the value. + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-FORMAT(5) -118- MH-FORMAT(5) + + + _F_u_n_c_t_i_o_n _A_r_g_u_m_e_n_t _R_e_t_u_r_n _D_e_s_c_r_i_p_t_i_o_n + msg integer message number + cur integer message is current + size integer size of message + strlen integer length of _s_t_r + width integer output buffer size in bytes + charleft integer bytes left in output buffer + timenow integer seconds since the UNIX epoch + me string the user's mailbox + eq literal boolean _n_u_m == _a_r_g + ne literal boolean _n_u_m != _a_r_g + gt literal boolean _n_u_m > _a_r_g + match literal boolean _s_t_r contains _a_r_g + amatch literal boolean _s_t_r starts with _a_r_g + plus literal integer _a_r_g plus _n_u_m + minus literal integer _a_r_g minus _n_u_m + divide literal integer _n_u_m divided by _a_r_g + modulo literal integer _n_u_m modulo _a_r_g + num literal integer Set _n_u_m to _a_r_g + lit literal string Set _s_t_r to _a_r_g + getenv literal string Set _s_t_r to environment value of _a_r_g + profile literal string Set _s_t_r to profile component _a_r_g value + nonzero expr boolean _n_u_m is non-zero + zero expr boolean _n_u_m is zero + null expr boolean _s_t_r is empty + nonnull expr boolean _s_t_r is non-empty + void expr Set _s_t_r or _n_u_m + comp comp string Set _s_t_r to component text + compval comp integer _n_u_m set to "atoi(_c_o_m_p)" + trim expr trim trailing white-space from _s_t_r + putstr expr print _s_t_r + putstrf expr print _s_t_r in a fixed width + putnum expr print _n_u_m + putnumf expr print _n_u_m in a fixed width + + These functions require a date component as an argument: + + _F_u_n_c_t_i_o_n _A_r_g_u_m_e_n_t _R_e_t_u_r_n _D_e_s_c_r_i_p_t_i_o_n + sec date integer seconds of the minute + min date integer minutes of the hour + hour date integer hours of the day (0-23) + wday date integer day of the week (Sun=0) + day date string day of the week (abbrev.) + weekday date string day of the week + sday date integer day of the week known? + (0=implicit,-1=unknown) + mday date integer day of the month + yday date integer day of the year + mon date integer month of the year + month date string month of the year (abbrev.) + lmonth date string month of the year + year date integer year (may be > 100) + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-FORMAT(5) -119- MH-FORMAT(5) + + + zone date integer timezone in hours + tzone date string timezone string + szone date integer timezone explicit? + (0=implicit,-1=unknown) + date2local date coerce date to local timezone + date2gmt date coerce date to GMT + dst date integer daylight savings in effect? + clock date integer seconds since the UNIX epoch + rclock date integer seconds prior to current time + tws date string official 822 rendering + pretty date string user-friendly rendering + nodate date integer _s_t_r not a date string + + These functions require an address component as an argument. The + return value of functions noted with `*' pertain only to the first + address present in the header component. + + _F_u_n_c_t_i_o_n _A_r_g_u_m_e_n_t _R_e_t_u_r_n _D_e_s_c_r_i_p_t_i_o_n + proper addr string official 822 rendering + friendly addr string user-friendly rendering + addr addr string mbox@host or host!mbox rendering* + pers addr string the personal name* + note addr string commentary text* + mbox addr string the local mailbox* + mymbox addr integer the user's addresses? (0=no,1=yes) + host addr string the host domain* + nohost addr integer no host was present* + type addr integer host type* (0=local,1=network, + -1=uucp,2=unknown) + path addr string any leading host route* + ingrp addr integer address was inside a group* + gname addr string name of group* + formataddr expr append _a_r_g to _s_t_r as a + (comma separated) address list + putaddr literal print _s_t_r address list with + _a_r_g as optional label; + get line width from _n_u_m + + When escapes are nested, evaluation is done from inner-most to + outer-most. The outer-most escape must begin with `%'; the inner + escapes must not. For example, + + %<(mymbox{from}) To: %{to}%> + + writes the value of the header component "From:" to _s_t_r; then (_m_y_m_- + _b_o_x) reads _s_t_r and writes its result to _n_u_m; then the control + escape evaluates _n_u_m. If _n_u_m is non-zero, the string "To: " is + printed followed by the value of the header component "To:". + + A minor explanation of (_m_y_m_b_o_x{_c_o_m_p}) is in order. In general, it + checks each of the addresses in the header component "_c_o_m_p" against + the user's mailbox name and any _A_l_t_e_r_n_a_t_e-_M_a_i_l_b_o_x_e_s. It returns + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-FORMAT(5) -120- MH-FORMAT(5) + + + true if any address matches, however, it also returns true if the + "_c_o_m_p" header is not present in the message. If needed, the (_n_u_l_l) + function can be used to explicitly test for this condition. + + When a function or component escape is interpreted and the result + will be immediately printed, an optional field width can be speci- + fied to print the field in exactly a given number of characters. + For example, a numeric escape like %4(_s_i_z_e) will print at most 4 + digits of the message size; overflow will be indicated by a `?' in + the first position (like `?234'). A string escape like %4(_m_e) will + print the first 4 characters and truncate at the end. Short fields + are padded at the right with the fill character (normally, a + blank). If the field width argument begins with a leading zero, + then the fill character is set to a zero. + + As above, the functions (_p_u_t_n_u_m_f) and (_p_u_t_s_t_r_f) print their result + in exactly the number of characters specified by their leading + field width argument. For example, %06(_p_u_t_n_u_m_f(_s_i_z_e)) will print + the message size in a field six characters wide filled with leading + zeros; %14(_p_u_t_s_t_r_f{_f_r_o_m}) will print the "From:" header component + in fourteen characters with trailing spaces added as needed. For + _p_u_t_s_t_r_f, using a negative value for the field width causes right- + justification of the string within the field, with padding on the + left up to the field width. The functions (_p_u_t_n_u_m) and (_p_u_t_s_t_r) + print their result in the minimum number of characters required, + and ignore any leading field width argument. + + The available output width is kept in an internal register; any + output past this width will be truncated. + + Comments may be inserted in most places where a function argument + is not expected. A comment begins with `%;' and ends with a (non- + escaped) newline. + + With all this in mind, here's the default format string for _s_c_a_n. + It's been divided into several pieces for readability. The first + part is: + + %4(msg)%<(cur)+%| %>%<{replied}-%?{encrypted}E%| %> + + which says that the message number should be printed in four + digits, if the message is the current message then a `+' else a + space should be printed, and if a "Replied:" field is present then + a `-' else if an "Encrypted:" field is present then an `E' other- + wise a space should be printed. Next: + + %02(mon{date})/%02(mday{date}) + + the month and date are printed in two digits (zero filled) + separated by a slash. Next, + + %<{date} %|*> + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-FORMAT(5) -121- MH-FORMAT(5) + + + If a "Date:" field was present, then a space is printed, otherwise + a `*'. Next, + + %<(mymbox{from})%<{to}To:%14(friendly{to})%>%> + + if the message is from me, and there is a "To:" header, print `To:' + followed by a "user-friendly" rendering of the first address in the + "To:" field. Continuing, + + %<(zero)%17(friendly{from})%> + + if either of the above two tests failed, then the "From:" address + is printed in a "user-friendly" format. And finally, + + %{subject}%<{body}<<%{body}%> + + the subject and initial body (if any) are printed. + + For a more complicated example, next consider the default _r_e_p_l_c_o_m_p_s + format file. + + %(lit)%(formataddr %<{reply-to} + + This clears _s_t_r and formats the "Reply-To:" header if present. If + not present, the else-if clause is executed. + + %?{from}%?{sender}%?{return-path}%>)\ + + This formats the "From:", "Sender:" and "Return-Path:" headers, + stopping as soon as one of them is present. Next: + + %<(nonnull)%(void(width))%(putaddr To: )\n%>\ + + If the _f_o_r_m_a_t_a_d_d_r result is non-null, it is printed as an address + (with line folding if needed) in a field _w_i_d_t_h wide with a leading + label of "To: ". + + %(lit)%(formataddr{to})%(formataddr{cc})%(formataddr(me))\ + + _s_t_r is cleared, and the "To:" and "Cc:" headers, along with the + user's address (depending on what was specified with the "-cc" + switch to _r_e_p_l) are formatted. + + %<(nonnull)%(void(width))%(putaddr cc: )\n%>\ + + If the result is non-null, it is printed as above with a leading + label of "cc: ". + + %<{fcc}Fcc: %{fcc}\n%>\ + + If a "-fcc folder" switch was given to _r_e_p_l (see _r_e_p_l (1) for more + details about %{_f_c_c}), an "Fcc:" header is output. + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-FORMAT(5) -122- MH-FORMAT(5) + + + %<{subject}Subject: Re: %{subject}\n%>\ + + If a subject component was present, a suitable reply subject is + output. + + %<{date}In-reply-to: Your message of "\ + %<(nodate{date})%{date}%|%(pretty{date})%>."%<{message-id} + %{message-id}%>\n%>\ + -------- + + If a date component was present, an "In-Reply-To:" header is output + with the preface "Your message of ". If the date was parseable, it + is output in a user-friendly format, otherwise it is output as-is. + The message-id is included if present. As with all plain-text, the + row of dashes are output as-is. + + This last part is a good example for a little more elaboration. + Here's that part again in pseudo-code: + + if (comp_exists(date)) then + print ("In-reply-to: Your message of \"") + if (not_date_string(date.value) then + print (date.value) + else + print (pretty(date.value)) + endif + print ("\"") + if (comp_exists(message-id)) then + print ("\n\t") + print (message-id.value) + endif + print ("\n") + endif + + Although this seems complicated, in point of fact, this method is + flexible enough to extract individual fields and print them in any + format the user desires. + + _F_i_l_e_s + None + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + scan(1), repl(1), ap(8), dp(8) + + + _D_e_f_a_u_l_t_s + None + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-FORMAT(5) -123- MH-FORMAT(5) + + + _C_o_n_t_e_x_t + None + + + _H_i_s_t_o_r_y + This software was contributed for MH 6.3. Prior to this, output + format specifications were much easier to write, but considerably + less flexible. + + + _B_u_g_s + On hosts where _M_H was configured with the BERK option, address + parsing is not enabled. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-MAIL(5) -124- MH-MAIL(5) + + + _N_A_M_E + mh-mail - message format for MH message system + + _S_Y_N_O_P_S_I_S + any _M_H command + + _D_E_S_C_R_I_P_T_I_O_N + + _M_H processes messages in a particular format. It should be noted + that although neither Bell nor Berkeley mailers produce message + files in the format that _M_H prefers, _M_H can read message files in + that antiquated format. + + Each user possesses a mail drop box which initially receives all + messages processed by _p_o_s_t (8). _I_n_c (1) will read from that drop + box and incorporate the new messages found there into the user's + own mail folders (typically `+inbox'). The mail drop box consists + of one or more messages. + + Messages are expected to consist of lines of text. Graphics and + binary data are not handled. No data compression is accepted. All + text is clear ASCII 7-bit data. + + The general "memo" framework of RFC-822 is used. A message con- + sists of a block of information in a rigid format, followed by gen- + eral text with no specified format. The rigidly formatted first + part of a message is called the header, and the free-format portion + is called the body. The header must always exist, but the body is + optional. These parts are separated by an empty line, i.e., two + consecutive newline characters. Within _M_H, the header and body may + be separated by a line consisting of dashes: + + To: + cc: + Subject: + -------- + + The header is composed of one or more header items. Each header + item can be viewed as a single logical line of ASCII characters. + If the text of a header item extends across several real lines, the + continuation lines are indicated by leading spaces or tabs. + + Each header item is called a component and is composed of a keyword + or name, along with associated text. The keyword begins at the + left margin, may NOT contain spaces or tabs, may not exceed 63 + characters (as specified by RFC-822), and is terminated by a colon + (`:'). Certain components (as identified by their keywords) must + follow rigidly defined formats in their text portions. + + The text for most formatted components (e.g., "Date:" and + "Message-Id:") is produced automatically. The only ones entered by + the user are address fields such as "To:", "cc:", etc. Internet + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-MAIL(5) -125- MH-MAIL(5) + + + addresses are assigned mailbox names and host computer specifica- + tions. The rough format is "local@domain", such as "MH@UCI", or + "MH@UCI-ICSA.ARPA". Multiple addresses are separated by commas. A + missing host/domain is assumed to be the local host/domain. + + As mentioned above, a blank line (or a line of dashes) signals that + all following text up to the end of the file is the body. No for- + matting is expected or enforced within the body. + + Following is a list of header components that are considered mean- + ingful to various MH programs. + Date: + Added by _p_o_s_t (8), contains date and time of the message's + entry into the transport system. + + From: + Added by _p_o_s_t (8), contains the address of the author or + authors (may be more than one if a "Sender:" field is + present). Replies are typically directed to addresses in the + "Reply-To:" or "From:" field (the former has precedence if + present). + + Sender: + Added by _p_o_s_t (8) in the event that the message already has a + "From:" line. This line contains the address of the actual + sender. Replies are never sent to addresses in the "Sender:" + field. + + To: + Contains addresses of primary recipients. + + cc: + Contains addresses of secondary recipients. + + Bcc: + Still more recipients. However, the "Bcc:" line is not copied + onto the message as delivered, so these recipients are not + listed. _M_H uses an encapsulation method for blind copies, see + _s_e_n_d (1). + + Fcc: + Causes _p_o_s_t (8) to copy the message into the specified folder + for the sender, if the message was successfully given to the + transport system. + + Message-ID: + A unique message identifier added by _p_o_s_t (8) if the `-msgid' + flag is set. + + Subject: + Sender's commentary. It is displayed by _s_c_a_n (1). + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-MAIL(5) -126- MH-MAIL(5) + + + In-Reply-To: + A commentary line added by _r_e_p_l (1) when replying to a mes- + sage. + + Resent-Date: + Added when redistributing a message by _p_o_s_t (8). + + Resent-From: + Added when redistributing a message by _p_o_s_t (8). + + Resent-To: + New recipients for a message resent by _d_i_s_t (1). + + Resent-cc: + Still more recipients. See "cc:" and "Resent-To:". + + Resent-Bcc: + Even more recipients. See "Bcc:" and "Resent-To:". + + Resent-Fcc: + Copy resent message into a folder. See "Fcc:" and + "Resent-To:". + + Resent-Message-Id: + A unique identifier glued on by _p_o_s_t (8) if the `-msgid' flag + is set. See "Message-Id:" and "Resent-To:". + + Resent: + Annotation for _d_i_s_t (1) under the `-annotate' option. + + Forwarded: + Annotation for _f_o_r_w (1) under the `-annotate' option. + + Replied: + Annotation for _r_e_p_l (1) under the `-annotate' option. + + + _F_i_l_e_s + /usr/spool/mail/$USER Location of mail drop + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + _S_t_a_n_d_a_r_d _f_o_r _t_h_e _F_o_r_m_a_t _o_f _A_R_P_A _I_n_t_e_r_n_e_t _T_e_x_t _M_e_s_s_a_g_e_s (aka + RFC-822) + + + _D_e_f_a_u_l_t_s + None + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-MAIL(5) -127- MH-MAIL(5) + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-PROFILE(5) -128- MH-PROFILE(5) + + + _N_A_M_E + mh-profile - user profile customization for MH message handler + + _S_Y_N_O_P_S_I_S + ._m_h__p_r_o_f_i_l_e + + _D_E_S_C_R_I_P_T_I_O_N + + Each user of _M_H is expected to have a file named ._m_h__p_r_o_f_i_l_e in his + or her home directory. This file contains a set of user parameters + used by some or all of the _M_H family of programs. Each line of the + file is of the format + + _p_r_o_f_i_l_e-_c_o_m_p_o_n_e_n_t: _v_a_l_u_e + + The possible profile components are exemplified below. Only + `Path:' is mandatory. The others are optional; some have default + values if they are not present. In the notation used below, (pro- + file, default) indicates whether the information is kept in the + user's _M_H profile or _M_H context, and indicates what the default + value is. + + Path: Mail + Locates _M_H transactions in directory "Mail". (profile, + no default) + + context: context + Declares the location of the _M_H context file, see the + HISTORY section below. (profile, default: + /context) + + Current-Folder: inbox + Keeps track of the current open folder. (context, + default: folder specified by "Inbox") + + Inbox: inbox + Defines the name of your inbox. (profile, default: + inbox) + + Previous-Sequence: pseq + Names the sequences which should be defined as the `msgs' + or `msg' argument given to the program. If not present, + or empty, no sequences are defined. Otherwise, for each + name given, the sequence is first zero'd and then each + message is added to the sequence. (profile, no default) + + Sequence-Negation: not + Defines the string which, when prefixed to a sequence + name, negates that sequence. Hence, "notseen" means all + those messages that are not a member of the sequence + "seen". (profile, no default) + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-PROFILE(5) -129- MH-PROFILE(5) + + + Unseen-Sequence: unseen + Names the sequences which should be defined as those mes- + sages recently incorporated by _i_n_c. _S_h_o_w knows to remove + messages from this sequence once it thinks they have been + seen. If not present, or empty, no sequences are + defined. Otherwise, each message is added to each + sequence name given. (profile, no default) + + mh-sequences: .mh_sequences + The name of the file in each folder which defines public + sequences. To disable the use of public sequences, leave + the value portion of this entry blank. (profile, + default: .mh_sequences) + + atr-_s_e_q-_f_o_l_d_e_r: 172 178-181 212 + Keeps track of the private sequence called _s_e_q in the + specified folder. (context, no default) + + Editor: /usr/ucb/ex + Defines editor to be used by _c_o_m_p (1), _d_i_s_t (1), + _f_o_r_w (1), and _r_e_p_l (1). (profile, default: prompter) + + Msg-Protect: 644 + Defines octal protection bits for message files. See + _c_h_m_o_d (1) for an explanation of the octal number. (pro- + file, default: 0644) + + Folder-Protect: 711 + Defines protection bits for folder directories. (pro- + file, default: 0711) + + _p_r_o_g_r_a_m: default switches + Sets default switches to be used whenever the mh program + _p_r_o_g_r_a_m is invoked. For example, one could override the + _E_d_i_t_o_r: profile component when replying to messages by + adding a component such as: + repl: -editor /bin/ed + (profile, no defaults) + + _l_a_s_t_e_d_i_t_o_r-next: nexteditor + Names "nexteditor" to be the default editor after using + "lasteditor". This takes effect at "What now?" level in + _c_o_m_p, _d_i_s_t, _f_o_r_w, and _r_e_p_l. After editing the draft with + "lasteditor", the default editor is set to be "nextedi- + tor". If the user types "edit" without any arguments to + "What now?", then "nexteditor" is used. (profile, no + default) + + bboards: system + Tells _b_b_c which BBoards you are interested in. (profile, + default: system) + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-PROFILE(5) -130- MH-PROFILE(5) + + + Folder-Stack: _f_o_l_d_e_r_s + The contents of the folder-stack for the _f_o_l_d_e_r command. + (context, no default) + + mhe: + If present, tells _i_n_c to compose an _M_H_E auditfile in + addition to its other tasks. _M_H_E is Brian Reid's _E_m_a_c_s + front-end for _M_H. An early version is supplied with the + _m_h._6 distribution. (profile, no default) + + Alternate-Mailboxes: mh@uci-750a, bug-mh* + Tells _r_e_p_l and _s_c_a_n which addresses are really yours. In + this way, _r_e_p_l knows which addresses should be included + in the reply, and _s_c_a_n knows if the message really ori- + ginated from you. Addresses must be separated by a + comma, and the hostnames listed should be the "official" + hostnames for the mailboxes you indicate, as local nick- + names for hosts are not replaced with their official site + names. For each address, if a host is not given, then + that address on any host is considered to be you. In + addition, an asterisk (`*') may appear at either or both + ends of the mailbox and host to indicate wild-card match- + ing. (profile, default: your user-id) + + Aliasfile: aliases other-alias + Indicates aliases files for _a_l_i, _w_h_o_m, and _s_e_n_d. This + may be used instead of the `-alias file' switch. (pro- + file, no default) + + Draft-Folder: drafts + Indicates a default draft folder for _c_o_m_p, _d_i_s_t, _f_o_r_w, + and _r_e_p_l. (profile, no default) + + digest-issue-_l_i_s_t: 1 + Tells _f_o_r_w the last issue of the last volume sent for the + digest _l_i_s_t. (context, no default) + + digest-volume-_l_i_s_t: 1 + Tells _f_o_r_w the last volume sent for the digest _l_i_s_t. + (context, no default) + + MailDrop: .mail + Tells _i_n_c your maildrop, if different from the default. + This is superceded by the MAILDROP envariable. (profile, + default: /usr/spool/mail/$USER) + + Signature: RAND MH System (agent: Marshall Rose) + Tells _s_e_n_d your mail signature. This is superceded by + the SIGNATURE envariable. If SIGNATURE is not set and + this profile entry is not present, the "gcos" field of + the /_e_t_c/_p_a_s_s_w_d file will be used; otherwise, on hosts + where _M_H was configured with the UCI option, the file + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-PROFILE(5) -131- MH-PROFILE(5) + + + $HOME/.signature is consulted. Your signature will be + added to the address _s_e_n_d puts in the "From:" header; do + not include an address in the signature text. (profile, + no default) + + The following profile elements are used whenever an _M_H program + invokes some other program such as _m_o_r_e (1). The ._m_h__p_r_o_f_i_l_e can + be used to select alternate programs if the user wishes. The + default values are given in the examples. + + fileproc: /usr/local/refile + incproc: /usr/local/inc + installproc: /usr/local/lib/mh/install-mh + lproc: /usr/ucb/more + mailproc: /usr/local/mhmail + mhlproc: /usr/local/lib/mh/mhl + moreproc: /usr/ucb/more + mshproc: /usr/local/msh + packproc: /usr/local/packf + postproc: /usr/local/lib/mh/post + rmmproc: none + rmfproc: /usr/local/rmf + sendproc: /usr/local/send + showproc: /usr/ucb/more + whatnowproc: /usr/local/whatnow + whomproc: /usr/local/whom + + If you define the envariable MH, you can specify a profile other + than ._m_h__p_r_o_f_i_l_e to be read by the _M_H programs that you invoke. If + the value of MH is not absolute, (i.e., does not begin with a / ), + it will be presumed to start from the current working directory. + This is one of the very few exceptions in _M_H where non-absolute + pathnames are not considered relative to the user's _M_H directory. + + Similarly, if you define the envariable MHCONTEXT, you can specify + a context other than the normal context file (as specified in the + _M_H profile). As always, unless the value of MHCONTEXT is absolute, + it will be presumed to start from your _M_H directory. + + _M_H programs also support other envariables: + + MAILDROP : tells _i_n_c the default maildrop + This supercedes the "MailDrop:" profile entry. + + SIGNATURE : tells _s_e_n_d and _p_o_s_t your mail signature + This supercedes the "Signature:" profile entry. + + HOME : tells all _M_H programs your home directory + + SHELL : tells _b_b_l the default shell to run + + TERM : tells _M_H your terminal type + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-PROFILE(5) -132- MH-PROFILE(5) + + + The TERMCAP envariable is also consulted. In particular, + these tell _s_c_a_n and _m_h_l how to clear your terminal, and how + many columns wide your terminal is. They also tell _m_h_l how + many lines long your terminal screen is. + + editalt : the alternate message + This is set by _d_i_s_t and _r_e_p_l during edit sessions so you can + peruse the message being distributed or replied to. The mes- + sage is also available through a link called "@" in the + current directory if your current working directory and the + folder the message lives in are on the same UNIX filesystem. + + mhdraft : the path to the working draft + This is set by _c_o_m_p, _d_i_s_t, _f_o_r_w, and _r_e_p_l to tell the _w_h_a_t_- + _n_o_w_p_r_o_c which file to ask "What now?" questions about. In + addition, _d_i_s_t, _f_o_r_w, and _r_e_p_l set mhfolder if appropriate. + Further, _d_i_s_t and _r_e_p_l set mhaltmsg to tell the _w_h_a_t_n_o_w_p_r_o_c + about an alternate message associated with the draft (the mes- + sage being distributed or replied to), and _d_i_s_t sets mhdist to + tell the _w_h_a_t_n_o_w_p_r_o_c that message re-distribution is occur- + ring. Also, mheditor is set to tell the _w_h_a_t_n_o_w_p_r_o_c the + user's choice of editor (unless overridden by `-noedit'). + Similarly, mhuse may be set by _c_o_m_p. Finally, mhmessages is + set by _d_i_s_t, _f_o_r_w, and _r_e_p_l if annotations are to occur (along + with mhannotate, and mhinplace). It's amazing all the infor- + mation that has to get passed via envariables to make the + "What now?" interface look squeaky clean to the _M_H user, isn't + it? The reason for all this is that the _M_H user can select + _a_n_y program as the _w_h_a_t_n_o_w_p_r_o_c, including one of the standard + shells. As a result, it's not possible to pass information + via an argument list. + If the WHATNOW option was set during _M_H configuration (type + `-help' to an _M_H command to find out), and if this envariable + is set, if the commands _r_e_f_i_l_e, _s_e_n_d, _s_h_o_w, or _w_h_o_m are not + given any `msgs' arguments, then they will default to using + the file indicated by mhdraft. This is useful for getting the + default behavior supplied by the default _w_h_a_t_n_o_w_p_r_o_c. + + mhfolder : the folder containing the alternate message + This is set by _d_i_s_t and _r_e_p_l during edit sessions so you can + peruse other messages in the current folder besides the one + being distributed or replied to. The mhfolder envariable is + also set by _s_h_o_w, _p_r_e_v, and _n_e_x_t for use by _m_h_l. + + MHBBRC : + If you define the envariable MHBBRC, you can specify a BBoards + information file other than ._b_b_r_c to be read by _b_b_c. If the + value of MHBBRC is not absolute, (i.e., does not begin with a + / ), it will be presumed to start from the current working + directory. + + MHFD : + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-PROFILE(5) -133- MH-PROFILE(5) + + + If the OVERHEAD option was set during _M_H configuration (type + `-help' to an _M_H command to find out), then if this envariable + is set, _M_H considers it to be the number of a file descriptor + which is opened, read-only to the _M_H profile. Similarly, if + the envariable MHCONTEXTFD is set, this is the number of a + file descriptor which is opened read-only to the _M_H context. + This feature of _M_H is experimental, and is used to examine + possible speed improvements for _M_H startup. Note that these + envariables must be set and non-empty to enable this feature. + However, if OVERHEAD is enabled during _M_H configuration, then + when _M_H programs call other _M_H programs, this scheme is used. + These file descriptors are not closed throughout the execution + of the _M_H program, so children may take advantage of this. + This approach is thought to be completely safe and does result + in some performance enhancements. + + + _F_i_l_e_s + $HOME/.mh_profile The user profile + or $MH Rather than the standard profile + /context The user context + or $CONTEXT Rather than the standard context + /.mh_sequences Public sequences for + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + All + + + _S_e_e _A_l_s_o + mh(1), environ(5), mh-sequence(5) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + All + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-PROFILE(5) -134- MH-PROFILE(5) + + + _H_i_s_t_o_r_y + In previous versions of _M_H, the current-message value of a writable + folder was kept in a file called "cur" in the folder itself. In + _m_h._3, the ._m_h__p_r_o_f_i_l_e contained the current-message values for all + folders, regardless of their writability. + + In all versions of _M_H since _m_h._4, the ._m_h__p_r_o_f_i_l_e contains only + static information, which _M_H programs will NOT update. Changes in + context are made to the _c_o_n_t_e_x_t file kept in the users MH _d_i_r_e_c_t_o- + _r_y. This includes, but is not limited to: the "Current-Folder" en- + try and all private sequence information. Public sequence informa- + tion is kept in a file called ._m_h__s_e_q_u_e_n_c_e_s in each folder. + + To convert from the format used in releases of _M_H prior to the for- + mat used in the _m_h._4 release, _i_n_s_t_a_l_l-_m_h should be invoked with the + `-compat' switch. This generally happens automatically on _M_H sys- + tems generated with the "COMPAT" option during _M_H configuration. + + The ._m_h__p_r_o_f_i_l_e may override the path of the _c_o_n_t_e_x_t file, by + specifying a "context" entry (this must be in lower-case). If the + entry is not absolute (does not start with a / ), then it is inter- + preted relative to the user's _M_H directory. As a result, you can + actually have more than one set of private sequences by using dif- + ferent context files. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-PROFILE(5) -135- MH-PROFILE(5) + + + _B_u_g_s + The shell quoting conventions are not available in the .mh_profile. + Each token is separated by whitespace. + + There is some question as to what kind of arguments should be + placed in the profile as options. In order to provide a clear + answer, recall command line semantics of all _M_H programs: conflict- + ing switches (e.g., `-header and `-noheader') may occur more than + one time on the command line, with the last switch taking effect. + Other arguments, such as message sequences, filenames and folders, + are always remembered on the invocation line and are not superseded + by following arguments of the same type. Hence, it is safe to + place only switches (and their arguments) in the profile. + + If one finds that an _M_H program is being invoked again and again + with the same arguments, and those arguments aren't switches, then + there are a few possible solutions to this problem. The first is + to create a (soft) link in your $_H_O_M_E/_b_i_n directory to the _M_H pro- + gram of your choice. By giving this link a different name, you can + create a new entry in your profile and use an alternate set of de- + faults for the _M_H command. Similarly, you could create a small + shell script which called the _M_H program of your choice with an al- + ternate set of invocation line switches (using links and an alter- + nate profile entry is preferable to this solution). + + Finally, the _c_s_h user could create an alias for the command of the + form: + + alias cmd 'cmd arg1 arg2 ...' + + In this way, the user can avoid lengthy type-in to the shell, and + still give _M_H commands safely. (Recall that some _M_H commands in- + voke others, and that in all cases, the profile is read, meaning + that aliases are disregarded beyond an initial command invocation) + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-SEQUENCE(5) -136- MH-SEQUENCE(5) + + + _N_A_M_E + mh-sequence - sequence specification for MH message system + + _S_Y_N_O_P_S_I_S + most _M_H commands + + _D_E_S_C_R_I_P_T_I_O_N + + Most _M_H commands accept a `msg' or `msgs' specification, where + `msg' indicates one message and `msgs' indicates one or more mes- + sages. To designate a message, you may use either its number + (e.g., 1, 10, 234) or one of these "reserved" message names: + + _N_a_m_e _D_e_s_c_r_i_p_t_i_o_n + first the first message in the folder + last the last message in the folder + cur the most recently accessed message + prev the message numerically preceding "cur" + next the message numerically following "cur" + + In commands that take a `msg' argument, the default is "cur". As a + shorthand, "." is equivalent to "cur". + + For example: In a folder containing five messages numbered 5, 10, + 94, 177 and 325, "first" is 5 and "last" is 325. If "cur" is 94, + then "prev" is 10 and "next" is 177. + + The word `msgs' indicates that one or more messages may be speci- + fied. Such a specification consists of one message designation or + of several message designations separated by spaces. A message + designation consists either of a message name as defined above, or + a message range. + + A message range is specified as "name1-name2" or "name:n", where + `name', `name1' and `name2' are message names, and `n' is an + integer. + + The specification "name1-name2" designates all currently-existing + messages from `name1' to `name2' inclusive. The message name "all" + is a shorthand for the message range "first-last". + + The specification "name:n" designates up to `n' messages. These + messages start with `name' if `name' is a message number or one of + the reserved names "first" "cur", or "next", The messages end with + `name' if `name' is "prev" or "last". The interpretation of `n' + may be overridden by preceding `n' with a plus or minus sign; `+n' + always means up to `n' messages starting with `name', and `-n' + always means up to `n' messages ending with `name'. + + In commands which accept a `msgs' argument, the default is either + "cur" or "all", depending on which makes more sense for each com- + mand (see the individual man pages for details). Repeated + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-SEQUENCE(5) -137- MH-SEQUENCE(5) + + + specifications of the same message have the same effect as a single + specification of the message. + + + _U_s_e_r-_D_e_f_i_n_e_d _M_e_s_s_a_g_e _S_e_q_u_e_n_c_e_s + + In addition to the "reserved" (pre-defined) message names given + above, _M_H supports user-defined sequence names. User-defined + sequences allow the _M_H user a tremendous amount of power in dealing + with groups of messages in the same folder by allowing the user to + bind a group of messages to a meaningful symbolic name. + + The name used to denote a message sequence must consist of an + alphabetic character followed by zero or more alphanumeric charac- + ters, and can not be one of the "reserved" message names above. + After defining a sequence, it can be used wherever an _M_H command + expects a `msg' or `msgs' argument. + + Some forms of message ranges are allowed with user-defined + sequences. The specification "name:n" may be used, and it desig- + nates up to the first `n' messages (or last `n' messages for `-n') + which are elements of the user-defined sequence `name'. + + The specifications "name:next" and "name:prev" may also be used, + and they designate the next or previous message (relative to the + current message) which is an element of the user-defined sequence + `name'. The specificaitions "name:first" and "name:last" are + equivalent to "name:1" and "name:-1", respectively. The specifica- + tion "name:cur" is not allowed (use just "cur" instead). The syn- + tax of these message range specifcations is subject to change in + the future. + + User-defined sequence names are specific to each folder. They are + defined using the _p_i_c_k and _m_a_r_k commands. + + + _P_u_b_l_i_c _a_n_d _P_r_i_v_a_t_e _U_s_e_r-_D_e_f_i_n_e_d _S_e_q_u_e_n_c_e_s + + There are two varieties of sequences: _p_u_b_l_i_c sequences and _p_r_i_v_a_t_e + sequences. _P_u_b_l_i_c sequences of a folder are accessible to any _M_H + user that can read that folder and are kept in the .mh_sequences + file in the folder. _P_r_i_v_a_t_e sequences are accessible only to the + _M_H user that defined those sequences and are kept in the user's _M_H + context file. By default, _p_i_c_k and _m_a_r_k create _p_u_b_l_i_c sequences if + the folder for which the sequences are being defined is writable by + the _M_H user. Otherwise, _p_r_i_v_a_t_e sequences are created. This can + be overridden with the `-public' and `-private' switches to _m_a_r_k. + + + _S_e_q_u_e_n_c_e _N_e_g_a_t_i_o_n + + _M_H provides the ability to select all messages not elements of a + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-SEQUENCE(5) -138- MH-SEQUENCE(5) + + + user-defined sequence. To do this, the user should define the + entry "Sequence-Negation" in the _M_H profile file; its value may be + any string. This string is then used to preface an existing user- + defined sequence name. This specification then refers to those + messages not elements of the specified sequence name. For example, + if the profile entry is: + + Sequence-Negation: not + + then anytime an _M_H command is given "notfoo" as a `msg' or `msgs' + argument, it would substitute all messages that are not elements of + the sequence "foo". + + Obviously, the user should beware of defining sequences with names + that begin with the value of the "Sequence-Negation" profile entry. + + + _T_h_e _P_r_e_v_i_o_u_s _S_e_q_u_e_n_c_e + + _M_H provides the ability to remember the `msgs' or `msg' argument + last given to an _M_H command. The entry "Previous-Sequence" should + be defined in the _M_H profile; its value should be a sequence name + or multiple sequence names separated by spaces. If this entry is + defined, when when an _M_H command finishes, it will define the + sequence(s) named in the value of this entry to be those messages + that were specified to the command. Hence, a profile entry of + + Previous-Sequence: pseq + + directs any _M_H command that accepts a `msg' or `msgs' argument to + define the sequence "pseq" as those messages when it finishes. + + Note: there can be a performance penalty in using the + "Previous-Sequence" facility. If it is used, all _M_H programs have + to write the sequence information to the .mh_sequences file for the + folder each time they run. If the "Previous-Sequence" profile + entry is not included, only _p_i_c_k and _m_a_r_k will write to the + .mh_sequences file. + + + _T_h_e _U_n_s_e_e_n _S_e_q_u_e_n_c_e + + Finally, some users like to indicate messages which have not been + previously seen by them. Both _i_n_c and _s_h_o_w honor the profile entry + "Unseen-Sequence" to support this activity. This entry in the + .mh_profile should be defined as one or more sequence names + separated by spaces. If there is a value for "Unseen-Sequence" in + the profile, then whenever _i_n_c places new messages in a folder, the + new messages will also be added to the sequence(s) named in the + value of this entry. Hence, a profile entry of + + Unseen-Sequence: unseen + + [mh.6] MH.6.8 UCI version + + + + + + + + + + MH-SEQUENCE(5) -139- MH-SEQUENCE(5) + + + directs _i_n_c to add new messages to the sequence "unseen". Unlike + the behavior of the "Previous-Sequence" entry in the profile, how- + ever, the sequence(s) will not be zeroed by _i_n_c. + + Similarly, whenever _s_h_o_w (or _n_e_x_t or _p_r_e_v) displays a message, that + message will be removed from any sequences named by the + "Unseen-Sequence" entry in the profile. + + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /context The user context + /.mh_sequences Public sequences for + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Sequence-Negation: To designate messages not in a sequence + Previous-Sequence: The last message specification given + Unseen-Sequence: Those messages not yet seen by the user + + + _S_e_e _A_l_s_o + mh(1), mark(1), pick(1), mh-profile(5) + + + _D_e_f_a_u_l_t_s + None + + + _C_o_n_t_e_x_t + All + + + _B_u_g_s + User-defined sequences are stored in the .mh_sequences file as a + series of message specifications separated by spaces. If a user- + defined sequence contains too many individual message specifica- + tions, that line in the file may become too long for _M_H to handle. + This will generate the error message ".mh_sequences is poorly for- + matted". You'll have to edit the file by hand to remove the of- + fending line. + + This can happen to users who define the "Previous-Sequence" entry + in the _M_H profile and have a folder containing many messages with + gaps in the numbering. A workaround for large folders is to minim- + ize numbering gaps by using "folder -pack" often. + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + AP(8) -140- AP(8) + + + _N_A_M_E + ap - parse addresses 822-style + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/ap [-form formatfile] [-format string] + [-normalize] [-nonormalize] [-width columns] addrs ... + [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _A_p is a program that parses addresses according to the ARPA Inter- + net standard. It also understands many non-standard formats. It + is useful for seeing how _M_H will interpret an address. + + The _a_p program treats each argument as one or more addresses, and + prints those addresses out in the official 822-format. Hence, it + is usually best to enclose each argument in double-quotes for the + shell. + + To override the output format used by _a_p, the `-format string' or + `-format file' switches are used. This permits individual fields + of the address to be extracted with ease. The string is simply a + format stringand thefile is simply a format file. See + _m_h-_f_o_r_m_a_t (5) for the details. + + In addition to the standard escapes, _a_p also recognizes the follow- + ing additional escape: + + _E_s_c_a_p_e _R_e_t_u_r_n_s _D_e_s_c_r_i_p_t_i_o_n + error string A diagnostic if the parse failed + + If the `-normalize' switch is given, _a_p will try to track down the + official hostname of the address. + + Here is the default format string used by _a_p: + + %<{error}%{error}: %{text}%|%(putstr(proper{text}))%> + + which says that if an error was detected, print the error, a `:', + and the address in error. Otherwise, output the 822-proper format + of the address. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /usr/local/lib/mh/mtstailor tailor file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + AP(8) -141- AP(8) + + + _S_e_e _A_l_s_o + dp(8), + _S_t_a_n_d_a_r_d _f_o_r _t_h_e _F_o_r_m_a_t _o_f _A_R_P_A _I_n_t_e_r_n_e_t _T_e_x_t _M_e_s_s_a_g_e_s (aka + RFC-822) + + + _D_e_f_a_u_l_t_s + `-format' defaults as described above + `-normalize' + `-width' defaults to the width of the terminal + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + The argument to the `-format' switch must be interpreted as a sin- + gle token by the shell that invokes _a_p. Therefore, one must usual- + ly place the argument to this switch inside double-quotes. + + On hosts where _M_H was configured with the BERK option, address + parsing is not enabled. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + CONFLICT(8) -142- CONFLICT(8) + + + _N_A_M_E + conflict - search for alias/password conflicts + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/conflict [-mail name] [-search directory] + [aliasfiles...] [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _C_o_n_f_l_i_c_t is a program that checks to see if the interface between + _M_H and transport system is in good shape + + _C_o_n_f_l_i_c_t also checks for maildrops in /usr/spool/mail which do not + belong to a valid user. It assumes that no user name will start + with `.', and thus ignores files in /usr/spool/mail which begin + with `.'. It also checks for entries in the _g_r_o_u_p (5) file which + do not belong to a valid user, and for users who do not have a + valid group number. In addition duplicate users and groups are + noted. + + If the `-mail name' switch is used, then the results will be sent + to the specified _n_a_m_e. Otherwise, the results are sent to the + standard output. + + The `-search directory' switch can be used to search directories + other than /usr/spool/mail and to report anomalies in those direc- + tories. The `-search directory' switch can appear more than one + time in an invocation to _c_o_n_f_l_i_c_t. + + _C_o_n_f_l_i_c_t should be run under _c_r_o_n (8), or whenever system account- + ing takes place. + + _F_i_l_e_s + /usr/local/lib/mh/mtstailor tailor file + /etc/passwd List of users + /etc/group List of groups + /usr/local/mhmail Program to send mail + /usr/spool/mail/ Directory of mail drop + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + mh-alias(5) + + + _D_e_f_a_u_l_t_s + `aliasfiles' defaults to /usr/local/lib/mh/MailAliases + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + CONFLICT(8) -143- CONFLICT(8) + + + _C_o_n_t_e_x_t + None + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + DP(8) -144- DP(8) + + + _N_A_M_E + dp - parse dates 822-style + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/dp [-form formatfile] [-format string] + [-width columns] dates ... [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _D_p is a program that parses dates according to the ARPA Internet + standard. It also understands many non-standard formats, such as + those produced by TOPS-20 sites and some UNIX sites using + _c_t_i_m_e (3). It is useful for seeing how _M_H will interpret a date. + + The _d_p program treats each argument as a single date, and prints + the date out in the official 822-format. Hence, it is usually best + to enclose each argument in double-quotes for the shell. + + To override the output format used by _d_p, the `-format string' or + `-format file' switches are used. This permits individual fields + of the address to be extracted with ease. The string is simply a + format stringand thefile is simply a format file. See + _m_h-_f_o_r_m_a_t (5) for the details. + + Here is the default format string used by _d_p: + + %<(nodate{text})error: %{text}%|%(putstr(pretty{text}))%> + + which says that if an error was detected, print the error, a `:', + and the date in error. Otherwise, output the 822-proper format of + the date. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + None + + + _S_e_e _A_l_s_o + ap(8) + _S_t_a_n_d_a_r_d _f_o_r _t_h_e _F_o_r_m_a_t _o_f _A_R_P_A _I_n_t_e_r_n_e_t _T_e_x_t _M_e_s_s_a_g_e_s (aka + RFC-822) + + + _D_e_f_a_u_l_t_s + `-format' default as described above + `-width' default to the width of the terminal + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + DP(8) -145- DP(8) + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + The argument to the `-format' switch must be interpreted as a sin- + gle token by the shell that invokes _d_p. Therefore, one must usual- + ly place the argument to this switch inside double-quotes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + FMTDUMP(8) -146- FMTDUMP(8) + + + _N_A_M_E + fmtdump - decode MH format files + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/fmtdump [-form formatfile] [-format string] + [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _F_m_t_d_u_m_p is a program that parses an _M_H format file and produces a + pseudo-language listing of the how _M_H interprets the file. + + The `-format string' and `-form formatfile' switches may be used to + specify a format string or format file to read. The string is sim- + ply a format string and the file is simply a format file. See _m_h- + _f_o_r_m_a_t(5) for the details. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + /usr/local/lib/mh/scan.default The default format file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To determine the user's MH directory + + + _S_e_e _A_l_s_o + mh-format(5), mh-sequences(8) + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + The output may not be useful unless you are familiar with the + internals of the mh-format subroutines. + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + INSTALL-MH(8) -147- INSTALL-MH(8) + + + _N_A_M_E + install-mh - initialize the MH environment + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/install-mh [-auto] [-compat] + + _D_E_S_C_R_I_P_T_I_O_N + + When a user runs any _M_H program for the first time, the program + will invoke _i_n_s_t_a_l_l-_m_h (with the `-auto' switch) to query the user + for the initial _M_H environment. The user does NOT invoke this pro- + gram directly. The user is asked for the name of the directory + that will be designated as the user's _M_H directory. If this direc- + tory does not exist, the user is asked if it should be created. + Normally, this directory should be under the user's home directory, + and has the default name of Mail/. After _i_n_s_t_a_l_l-_m_h has written + the initial .mh_profile for the user, control returns to the origi- + nal _M_H program. + + As with all _M_H commands, _i_n_s_t_a_l_l-_m_h first consults the $HOME + envariable to determine the user's home directory. If $HOME is not + set, then the /_e_t_c/_p_a_s_s_w_d file is consulted. + + When converting from _m_h._3 to _m_h._4, _i_n_s_t_a_l_l-_m_h is automatically + invoked with the `-compat' switch. + + _F_i_l_e_s + $HOME/.mh_profile The user profile + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + Path: To set the user's MH directory + + + _C_o_n_t_e_x_t + With `-auto', the current folder is changed to "inbox". + + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + POST(8) -148- POST(8) + + + _N_A_M_E + post - deliver a message + + _S_Y_N_O_P_S_I_S + /usr/local/lib/mh/post [-alias aliasfile] [-filter filterfile] + [-nofilter] [-format] [-noformat] [-msgid] [-nomsgid] + [-verbose] [-noverbose] [-watch] [-nowatch] [-width columns] + file [-help] + + _D_E_S_C_R_I_P_T_I_O_N + + _P_o_s_t is the program called by _s_e_n_d (1) to deliver the message in + _f_i_l_e to local and remote users. In fact, all of the functions + attributed to _s_e_n_d on its manual page are performed by _p_o_s_t, with + _s_e_n_d acting as a relatively simple preprocessor. Thus, it is _p_o_s_t + which parses the various header fields, appends From: and Date: + lines, and interacts with the _S_e_n_d_M_a_i_l transport system. _P_o_s_t will + not normally be called directly by the user. + + _P_o_s_t searches the "To:", "cc:", "Bcc:", "Fcc:", and "Resent-xxx:" + header lines of the specified message for destination addresses, + checks these addresses for validity, and formats them so as to con- + form to ARPAnet Internet Message Format protocol, unless the + `-noformat' flag is set. This will normally cause "@_l_o_c_a_l-_s_i_t_e" to + be appended to each local destination address, as well as any local + return addresses. The `-width columns' switch can be used to indi- + cate the preferred length of the header components that contain + addresses. + + If a "Bcc:" field is encountered, its addresses will be used for + delivery, and the "Bcc:" field will be removed from the message + sent to sighted recipients. The blind recipients will receive an + entirely new message with a minimal set of headers. Included in + the body of the message will be a copy of the message sent to the + sighted recipients. If `-filter filterfile' is specified, then + this copy is filtered (re-formatted) prior to being sent to the + blind recipients. + + The `-alias aliasfile' switch can be used to specify a file that + post should take aliases from. More than one file can be speci- + fied, each being preceded with `-alias'. In any event, the primary + alias file is read first. + + The `-msgid' switch indicates that a "Message-ID:" or + "Resent-Message-ID:" field should be added to the header. + + The `-verbose' switch indicates that the user should be informed of + each step of the posting/filing process. + + The `-watch' switch indicates that the user would like to watch the + transport system's handling of the message (e.g., local and "fast" + delivery). + + [mh.6] MH.6.8 UCI version + + + + + + + + + + POST(8) -149- POST(8) + + + _P_o_s_t consults the envariable $SIGNATURE to determine the sender's + personal name in constructing the "From:" line of the message. + + _F_i_l_e_s + /usr/local/lib/mh/mtstailor tailor file + /usr/local/refile Program to process Fcc:s + /usr/local/lib/mh/mhl Program to process Bcc:s + /usr/local/lib/mh/MailAliases Primary alias file + + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + _p_o_s_t does NOT consult the user's .mh_profile + + + _S_e_e _A_l_s_o + _S_t_a_n_d_a_r_d _f_o_r _t_h_e _F_o_r_m_a_t _o_f _A_R_P_A _I_n_t_e_r_n_e_t _T_e_x_t _M_e_s_s_a_g_e_s (aka + RFC-822), + mhmail(1), send(1), mh-mail(5), mh-alias(5) + + + _D_e_f_a_u_l_t_s + `-alias /usr/local/lib/mh/MailAliases' + `-format' + `-nomsgid' + `-noverbose' + `-nowatch' + `-width 72' + `-nofilter' + + + _C_o_n_t_e_x_t + None + + + _B_u_g_s + "Reply-To:" fields are allowed to have groups in them according to + the 822 specification, but _p_o_s_t won't let you use them. + + + + + + + + + + + + + + + + + [mh.6] MH.6.8 UCI version + + + + + + + + + + + + + _5. _R_E_P_O_R_T_I_N_G _P_R_O_B_L_E_M_S + + + + + + If problems are encountered with an _M_H program, the problems should + be reported to the local maintainers of _M_H. When doing this, the name + of the program should be reported, along with the version information + for the program. To find out what version of an _M_H program is being + run, invoke the program with the `-help' switch. In addition to listing + the syntax of the command, the program will list information pertaining + to its version. This information includes the version of _M_H, the host + it was generated on, and the date the program was loaded. A second line + of information, found on versions of _M_H after #5.380 include _M_H confi- + guration options. For example, + + version: MH 6.1 #1[UCI] (nrtc-gremlin) of Wed Nov 6 01:13:53 PST + 1985 + options: [BSD42] [MHE] [NETWORK] [SENDMTS] [MMDFII] [SMTP] [POP] + + The `6.1 #1[UCI]' indicates that the program is from the UCI _m_h._6 ver- + sion of _M_H. The program was generated on the host `nrtc-gremlin' on + `Wed Nov 6 01:13:53 PST 1985'. It's usually a good idea to send the + output of the `-help' switch along with your report. + + If there is no local _M_H maintainer, try the address Bug-MH. If that + fails, use the Internet mailbox Bug-MH@ICS.UCI.EDU. + + + + + + + + + + + + + + + + + + + + + + + + + + -150- + + + + + + + + + + + + + _6. _A_D_V_A_N_C_E_D _F_E_A_T_U_R_E_S + + + + + + This section describes some features of _M_H that were included + strictly for advanced _M_H users. These capabilities permit _M_H to exhibit + more powerful behavior for the seasoned _M_H users. + + + _U_S_E_R-_D_E_F_I_N_E_D _S_E_Q_U_E_N_C_E_S + + User-defined sequences allow the _M_H user a tremendous amount of + power in dealing with groups of messages in the same folder by allowing + the user to bind a group of messages to a meaningful symbolic name. The + user may choose any name for a message sequence, as long as it consists + of alphanumeric characters and does not conflict with the standard _M_H + reserved message names (e.g., "first", etc). After defining a sequence, + it can be used wherever an _M_H command expects a `msg' or `msgs' argu- + ment. + + A restricted form of message ranges are allowed with user-defined + sequences. The form "name:n", specifies up to the first `n' messages + which are part of the user-defined sequence `name'. A leading plus sign + is allowed on `n', but is ignored. The interpretation of n is overrid- + den if n is preceded by a minus sign; `-n' always means up to the last + `n' messages which are part of the sequence `name'. + + Although all _M_H commands expand user-defined sequences as appropri- + ate, there are two commands that allow the user to define and manipulate + them: _p_i_c_k and _m_a_r_k. + + _P_i_c_k _a_n_d _U_s_e_r-_D_e_f_i_n_e_d _S_e_q_u_e_n_c_e_s + + Most users of _M_H will use user-defined sequences only with the _p_i_c_k + command. By giving the `-sequence name' switch to _p_i_c_k (which can occur + more than once on the command line), each sequence named is defined as + those messages which _p_i_c_k matched according the the selection criteria + it was given. Hence, + + pick -from frated -seq fred + + finds all those messages in the current folder which were from "frated", + creates a sequence called "fred", and then adds them to the sequence. + The user could then invoke + + scan fred + + to get a _s_c_a_n listing of those messages. Note that by default, _p_i_c_k + creates the named sequences before it adds the selected messages to the + sequence. Hence, if the named sequence already existed, the sequence is + + -151- + + + + + + + + + + -152- + + + destroyed prior to being re-defined (nothing happens to the messages + that were a part of this sequence, they simply cease to be members of + that sequence). By using the `-nozero' switch, this behavior can be + inhibited, as in + + pick -from frated -seq sgroup + pick -from fear -seq sgroup -nozero + pick -from freida -seq sgroup -nozero + + finds all those messages in the current folder which were from "frated", + "fear", or "freida", and defines the sequence called "sgroup" as exactly + those messages. These operations amounted to an "inclusive-or" of three + selection criteria, using _p_i_c_k, one can also generate the "and" of some + selection criteria as well: + + pick -from frated -seq fred + pick -before friday -seq fred fred + + This example defines the sequence called "fred" as exactly those mes- + sages from "frated" that were dated prior to "friday".[1] + + _P_i_c_k is normally used as a back-quoted command, for example, + + scan `pick -from postmaster` + + Now suppose that the user decides that another command should be issued, + using exactly those messages. Since, _p_i_c_k wasn't given a + `-sequence name' argument in this example, the user would end-up typing + the entire back-quoted command again. A simpler way is to add a default + sequence name to the .mh_profile. For example, + + pick: -seq select -list + + will tell _p_i_c_k to always define the sequence "select" whenever it's run. + The `-list' is necessary since the `-sequence name' switch sets `-nol- + ist' whenever the former is encountered. Hence, this profile entry + makes _p_i_c_k define the "select" sequence and otherwise behave exactly as + + + [1] Of course, it is much easier to simply use the built-in boolean + operation of _p_i_c_k to get the desired results: + + pick -from frated -or -from fear -or -from freida -seq sgroup + + and + + pick -from frated -and -before friday -seq fred + + do exactly the same thing as the five commands listed above. Hence, the + `-nozero' option to _p_i_c_k is only useful to manipulate existing se- + quences. + + + + + + + + + + + + + -153- + + + if there was no profile entry at all. + + _M_a_r_k _a_n_d _U_s_e_r-_D_e_f_i_n_e_d _S_e_q_u_e_n_c_e_s + + The _m_a_r_k command lets the user perform low-level manipulation of + sequences, and also provides a well-needed debug facility to the + implementors/developers/maintainers of _M_H (the _M_H-hacks). In the + future, a user-friendly "front-end" for _m_a_r_k will probably be developed + to give the _M_H user a way to take better advantage of the underlying + facilities. + + _P_u_b_l_i_c _a_n_d _P_r_i_v_a_t_e _U_s_e_r-_D_e_f_i_n_e_d _S_e_q_u_e_n_c_e_s + + There are two kinds of sequences: _p_u_b_l_i_c sequences, and _p_r_i_v_a_t_e + sequences. _P_u_b_l_i_c sequences of a folder are accessible to any _M_H user + that can read that folder and are kept in the .mh_sequences file in the + folder. _P_r_i_v_a_t_e sequences are accessible only to the _M_H user that + defined those sequences and are kept in the user's _M_H context file. By + default, _p_i_c_k (and _m_a_r_k ) create _p_u_b_l_i_c sequences if the folder for + which the sequences are being defined is writable by the _M_H user. Oth- + erwise, _p_r_i_v_a_t_e sequences are created. This can be overridden with the + `-public' and `-nopublic' switches. + + _S_e_q_u_e_n_c_e _N_e_g_a_t_i_o_n + + In addition to telling an _M_H command to use the messages in the + sequence "seen", as in + + refile seen +old + + it would be useful to be easily able to tell an _M_H command to use all + messages _e_x_c_e_p_t those in the sequence. One way of doing this would be + to use _m_a_r_k and define the sequence explicitly, as in + + mark -delete -zero seen -seq notseen + + which, owing to _m_a_r_k 's cryptic interpretation of `-delete' and `-zero', + defines the sequence "notseen" to be all messages not in the sequence + "seen". Naturally, anytime the sequence "seen" is changed, "notseen" + will have to be updated. Another way to achieve this is to define the + entry "Sequence-Negation:" in the .mh_profile. If the entry was + + Sequence-Negation: not + + then anytime an _M_H command was given "notseen" as a `msg' or `msgs' + argument, it would substitute all messages that are not a member of the + sequence "seen". That is, + + refile notseen +new + + does just that. The value of the "Sequence-Negation:" entry in the pro- + file can be any string. Hence, experienced users of _M_H do not use a + + + + + + + + + + + + -154- + + + word, but rather a special character which their shell does not inter- + pret (users of the _C_S_h_e_l_l use a single caret or circumflex (usually + shift-6), while users of the Bourne shell use an exclamation-mark). + This is because there is nothing to prevent a user of _M_H from defining a + sequence with this string as its prefix, if the string is nothing by + letters and digits. Obviously, this could lead to confusing behavior if + the "Sequence-Negation:" entry leads _M_H to believe that two sequences + are opposites by virtue of their names differing by the prefix string. + + _T_h_e _P_r_e_v_i_o_u_s _S_e_q_u_e_n_c_e + + Many times users find themselves issuing a series of commands on + the same sequences of messages. If the user first defined these mes- + sages as a sequence, then considerable typing may be saved. If the user + doesn't have this foresight, _M_H provides a handy way of having _M_H + remember the `msgs' or `msg' argument last given to an _M_H command. If + the entry "Previous-Sequence:" is defined in the .mh_profile, then when + the command finishes, it will define the sequence(s) named in the value + of this entry as being exactly those messages that were specified. + Hence, a profile entry of + + Previous-Sequence: pseq + + directs any _M_H command that accepts a `msg' or `msgs' argument to define + the sequence "pseq" as those messages when it finishes. More than one + sequence name may be placed in this entry, separated with spaces. The + one disadvantage of this approach is that the _M_H progams have to update + the sequence information for the folder each time they run (although + most programs read this information, usually only _p_i_c_k and _m_a_r_k have to + write this information out). + + _T_h_e _U_n_s_e_e_n _S_e_q_u_e_n_c_e + + Finally, some users like to distinguish between messages which have + been previously seen by them. Both _i_n_c and _s_h_o_w honorthe profile entry + "Unseen-Sequence" to support this activity. Whenever _i_n_c places new + messages in a folder, if the entry "Unseen-Sequence" is defined in the + .mh_profile, then when the command finishes, _i_n_c will add the new mes- + sages to the sequence(s) named in the value of this entry. Hence, a + profile entry of + + Unseen-Sequence: unseen + + directs _i_n_c to add new messages to the sequence "unseen". Unlike the + behavior of the "Previous-Sequence" entry in the profile however, the + sequence(s) will not be zero'd. + + Similarly, whenever _s_h_o_w (or _n_e_x_t or _p_r_e_v ) displays a message, + they remove those messages from any sequences named by the + "Unseen-Sequence" entry in the profile. + + + + + + + + + + + + + + -155- + + + _C_O_M_P_O_S_I_T_I_O_N _O_F _M_A_I_L + + There are a number of interesting advanced facilities for the com- + position of outgoing mail. + + + _T_h_e _D_r_a_f_t _F_o_l_d_e_r + + The _c_o_m_p, _d_i_s_t, _f_o_r_w, and _r_e_p_l commands have two switches, + `-draftfolder +folder' and `-draftmessage msg'. If + `-draftfolder +folder' is used, these commands are directed to construct + a draft message in the indicated folder. (The "Draft-Folder:" profile + entry may be used to declare a default draft folder for use with _c_o_m_p, + _d_i_s_t, _f_o_r_w, and _r_e_p_l) If `-draftmessage msg' is not used, it defaults to + `new' (unless the user invokes _c_o_m_p with `-use', in which case the + default is `cur'). Hence, the user may have several message composi- + tions in progress simultaneously. Now, all of the _M_H tools are avail- + able on each of the user's message drafts (e.g., _s_h_o_w, _s_c_a_n, _p_i_c_k, and + so on). If the folder does not exist, the user is asked if it should be + created (just like with _r_e_f_i_l_e ). Also, the last draft message the user + was composing is known as `cur' in the draft folder. + + Furthermore, the _s_e_n_d command has these switches as well. Hence, + from the shell, the user can send off whatever drafts desired using the + standard _M_H `msgs' convention with `-draftmessage msgs'. If no `msgs' + are given, it defaults to `cur'. + + In addition, all five programs have a `-nodraftfolder' switch, + which undoes the last occurrence of `-draftfolder folder' (useful if the + latter occurs in the user's _M_H profile). + + If the user does not give the `-draftfolder +folder' switch, then + all these commands act ``normally''. Note that the `-draft' switch to + _s_e_n_d and _s_h_o_w still refers to the file called `draft' in the user's _M_H + directory. In the interests of economy of expression, when using _c_o_m_p + or _s_e_n_d, the user needn't prefix the draft `msg' or `msgs' with `-draft- + message'. Both of these commands accept a `file' or `files' argument, + and they will, if given `-draftfolder +folder' treat these arguments as + `msg' or `msgs'.[2] Hence, + + send -draftf +drafts first + + is the same as + + send -draftf +drafts -draftm first + + + + + [2] This may appear to be inconsistent, at first, but it saves a lot + of typing. + + + + + + + + + + + + + -156- + + + To make all this a bit more clear, here are some examples. Let's + assume that the following entries are in the _M_H profile: + + Draft-Folder: +drafts + sendf: -draftfolder +drafts + + Furthermore, let's assume that the program _s_e_n_d_f is a (symbolic) link in + the user's $HOME/bin/ directory to _s_e_n_d. Then, any of the commands + + comp + dist + forw + repl + + constructs the message draft in the `draft' folder using the `new' mes- + sage number. Furthermore, they each define `cur' in this folder to be + that message draft. If the user were to use the _q_u_i_t option at `What + now?' level, then later on, if no other draft composition was done, the + draft could be sent with simply + + sendf + + Or, if more editing was required, the draft could be edited with + + comp -use + + Instead, if other drafts had been composed in the meantime, so that this + message draft was no longer known as `cur' in the `draft' folder, then + the user could _s_c_a_n the folder to see which message draft in the folder + should be used for editing or sending. Clever users could even employ a + back-quoted _p_i_c_k to do the work: + + comp -use `pick +drafts -to bug-mh` + + or + + sendf `pick +drafts -to bug-mh` + + Note that in the _c_o_m_p example, the output from _p_i_c_k must resolve to a + single message draft (it makes no sense to talk about composing two or + more drafts with one invocation of _c_o_m_p ). In contrast, in the _s_e_n_d + example, as many message drafts as desired can appear, since _s_e_n_d + doesn't mind sending more than one draft at a time. + + Note that the argument `-draftfolder +folder' is not included in + the profile entry for _s_e_n_d, since when _c_o_m_p, et. al., invoke _s_e_n_d + directly, they supply _s_e_n_d with the UNIX pathname of the message draft, + and not a `draftmessage msg' argument. As far as _s_e_n_d is concerned, a + _d_r_a_f_t _f_o_l_d_e_r is not being used. + + It is important to realize that _M_H treats the draft folder like a + standard _M_H folder in nearly all respects. There are two exceptions: + + + + + + + + + + + + -157- + + + first_____, under no circumstancs will the `-draftfolder folder' switch cause + the named folder to become the current folder.[3] Second______, although con- + ceptually _s_e_n_d deletes the `msgs' named in the draft folder, it does not + call `delete-prog' to perform the deletion. + + + _W_h_a_t _H_a_p_p_e_n_s _i_f _t_h_e _D_r_a_f_t _E_x_i_s_t_s + + When the _c_o_m_p, _d_i_s_t, _f_o_r_w, and _r_e_p_l commands are invoked and the + draft you indicated already exists, these programs will prompt the user + for a reponse directing the program's action. The prompt is + + Draft ``/usr/src/uci/mh/mhbox/draft'' exists (xx bytes). + Disposition? + + The appropriate responses and their meanings are: replace_______: deletes the + draft and starts afresh; list____: lists the draft; refile______: files the draft + into a folder and starts afresh; and, quit____: leaves the draft intact and + exits. In addition, if you specified `-draftfolder folder' to the com- + mand, then one other response will be accepted: new___: finds a new draft, + just as if `-draftmessage new' had been given. Finally, the _c_o_m_p com- + mand will accept one more response: use___: re-uses the draft, just as if + `-use' had been given. + + + _T_h_e _P_u_s_h _O_p_t_i_o_n _a_t _W_h_a_t _n_o_w? _L_e_v_e_l + + The _p_u_s_h option to the "What now?" query in the _c_o_m_p, _d_i_s_t, _f_o_r_w, + and _r_e_p_l commands, directs the command to _s_e_n_d the draft in a special + detached fashion, with all normal output discarded. If _p_u_s_h is used and + the draft can not be sent, then _M_H will send the user a message, indi- + cating the name of the draft file, and an explanation of the failure. + + The user can also invoke _s_e_n_d from the shell with the `-push' + switch, which makes _s_e_n_d act like it had been _p_u_s_h 'd by one of the com- + position commands. + + By using _p_u_s_h, the user can free the shell to do other things, + because it appears to the shell that the _M_H command has finished. As a + result the shell will immediately prompt for another command, despite + the fact that the command is really still running. Note that if the + user indicates that annotations are to be performed (with `-annotate' to + + + [3] Obviously, if the folder appeared in the context of a standard + `+folder' argument to an _M_H program, as in + + scan +drafts + + it might become the current folder, depending on the context changes of + the _M_H program in question. + + + + + + + + + + + + + -158- + + + _d_i_s_t, _f_o_r_w, or _r_e_p_l), the annotations will be performed after the mes- + sage has been successfully sent. This action will appear to occur asyn- + chronously. Obviously, if one of the messages that is to be annotated + is removed before the draft has been successfully sent, then when _M_H + tries to make the annotations, it won't be able to do so. In previous + versions of _M_H, this resulted in an error message mysteriously appearing + on the user's terminal. In _m_h._5 and later versions, in this special + circumstance, no error will be generated. + + If send is _p_u_s_h 'd, then the `-forward' switch is examined if a + failure notice is generated. If given, then the draft is forwarded with + the failure notice sent to the user. This allows rapid _b_u_r_s_t 'ing of + the failure notice to retrieve the unsent draft. + + + _O_p_t_i_o_n_s _a_t _W_h_a_t _n_o_w? _L_e_v_e_l + + By default, the message composition programs call a program called + _w_h_a_t_n_o_w before the initial draft composition. The _M_H user can specify + any program for this. Following is some information about the default + "What now?" level. More detailed information can be found in the _w_h_a_t_- + _n_o_w (1) manual entry. + + When using the _c_o_m_p, _d_i_s_t, _f_o_r_w, and _r_e_p_l commands at "What now?" + level, the _e_d_i_t, _l_i_s_t, _h_e_a_d_e_r_s, _r_e_f_i_l_e, and (for the _d_i_s_t and _r_e_p_l com- + mands) the _d_i_s_p_l_a_y options will pass on any additional arguments given + them to whatever program they invoke. + + In _m_h._1 (the original RAND _M_H ) and _m_h._2 (the first UCI version of + _M_H ), _M_H used a complicated heuristic to determine if the draft should + be deleted or preserved after an unsuccessful edit. In _m_h._3, _M_H was + changed to preserve the draft always, since _c_o_m_p, et. al., could usually + look at a draft, apply another set of heuristics, and decide if it was + important or not. With the notion of a _d_r_a_f_t _f_o_l_d_e_r, in which one by + default gets a `new' message draft, the edit deletion/preservation algo- + rithm was re-implemented, to keep the draft folder from being cluttered + with aborted edits. + + Also, note that by default, if the draft cannot be successfully + sent, these commands return to "What now?" level. But, when _p_u_s_h is + used, this does not happen (obviously). Hence, if these commands were + expected to annotate any messages, this will have to be done by hand, + later on, with the _a_n_n_o command. + + Finally, if the `-delete' switch is not given to the _q_u_i_t option, + then these commands will inform the user of the name of the unsent draft + file. + + + _D_i_g_e_s_t_s + + + + + + + + + + + + + + -159- + + + The _f_o_r_w command has the beginnings of a digestifying facility, + with the `-digest list', `-issue number', and `-volume number' switches. + + If _f_o_r_w is given "list" to the `-digest' switch as the name of the dis- + cussion group, and the `-issue number' switch is not given, then _f_o_r_w + looks for an entry in the user's _M_H context called "_d_i_g_e_s_t-issue-list" + and increments its value to use as the issue number. Similarly, if the + `-volume number' switch is not given, then _f_o_r_w looks for + "_d_i_g_e_s_t-volume-list" (but does not increment its value) to use as the + volume number. + + Having calculated the name of the digest and the volume and issue + numbers, _f_o_r_w will now process the components file using the same format + string mechanism used by _r_e_p_l. The current `%'-escapes are: + + _e_s_c_a_p_e _t_y_p_e _s_u_b_s_t_i_t_u_t_i_o_n + digest string digest name + msg integer issue number + cur integer volume number + + In addition, to capture the current date, any of the escapes valid for + _d_p (8) are also valid for _f_o_r_w. + + The default components file used by _f_o_r_w when in digest mode is: + + From: %{digest}-Request + To: %{digest} Distribution: dist-%{digest}; + Subject: %{digest} Digest V%(cur) #%(msg) + Reply-To: %{digest} + -------- + %{digest} Digest %(weekday{date}), %2(mday{date}) %(month{date}) 19%02(year{date}) + Volume %(cur) : Issue %(msg) + + Today's Topics: + + Hence, when the `-digest' switch is present, the first step taken by + _f_o_r_w is to expand the format strings in the component file. The next + step is to compose the draft using the standard digest encapsulation + algorithm (even putting an "End of list Digest" trailer in the draft). + Once the draft is composed by _f_o_r_w, _f_o_r_w writes out the volume and issue + profile entries for the digest, and then invokes the editor. + + Naturally, when composing the draft, _f_o_r_w will honor the + `-filter filterfile' switch, which is given to _m_h_l to filter each mes- + sage being forwarded prior to encapsulation in the draft. A good filter + file to use, which is called _m_h_l._d_i_g_e_s_t, is: + + + + + + + + + + + + + + + + + + -160- + + + width=80,overflowoffset=10 + leftadjust,compress,compwidth=9 + Date:formatfield="%<(nodate{text})%{text}%|%(tws{text})%>" + From: + Subject: + : + body:nocomponent,overflowoffset=0,noleftadjust,nocompress + + + + _F_O_L_D_E_R _H_A_N_D_L_I_N_G + + There are two interesting facilities for manipulating folders: + relative folder addressing, which allows a user to shorten the typing of + long folder names; and the folder-stack, which permits a user to keep a + stack of current folders. + + + _R_e_l_a_t_i_v_e _F_o_l_d_e_r _A_d_d_r_e_s_s_i_n_g + + By default, when `+folder' is given, and the folder name is not + absolute (does not start with /, ./, or ../), then the UNIX pathname of + the folder is interpreted relative to the user's _M_H directory. Although + this mechanism works fine for top-level folders and their immediate + sub-folders, once the depth of the sub-folder tree grows, it becomes + rather unwieldly: + + scan +mh/mh.4/draft/flames + + is a lot of typing. _M_H can't do anything if the current folder was + "+inbox", but if the current folder was, say, "+mh/mh.4/draft", _M_H has a + short-hand notation to reference a sub-folder of the current folder. + Using the `@folder' notation, the _M_H user can direct any _M_H program + which expects a `+folder' argument to look for the folder relative to + the current folder instead of the user's _M_H directory. Hence, if the + current folder _w_a_s "+mh/mh.4/draft", then + + scan @flames + + would do the trick handily. In addition, if the current folder _w_a_s + "+mh/mh.4/draft", + + scan @../pick + + would scan the folder "+mh/mh.4/pick", since, in the UNIX fashion, it + references the folder "pick" which is a sub-folder of the folder that is + the parent of the current folder. Since most advanced _M_H users seem to + exhibit a large degree of locality in referencing folders when they pro- + cess mail, this convention should receive a wide range of uses. + + + + + + + + + + + + + + + -161- + + + _T_h_e _F_o_l_d_e_r-_S_t_a_c_k + + The _f_o_l_d_e_r-_s_t_a_c_k mechanism in _M_H gives the _M_H user a facility simi- + lar to the _C_S_h_e_l_l 's directory-stack. Simply put, + + folder -push +foo + + makes "foo" the current folder, saving the folder that was previously + the current folder on the _f_o_l_d_e_r-_s_t_a_c_k. As expected, + + folder -pop + + takes the top of the _f_o_l_d_e_r-_s_t_a_c_k and makes it the current folder. Each + of these switches lists the _f_o_l_d_e_r-_s_t_a_c_k when they execute. It is sim- + ple to write a _p_u_s_h_f command as a shell script. It's one line: + + exec folder -push $@ + + Probably a better way is to link _f_o_l_d_e_r to the $HOME/bin/ directory + under the name of _p_u_s_h_f and then add the entry + + pushf: -push + + to the .mh_profile. + + The manual page for _f_o_l_d_e_r discusses the analogy between the _C_S_h_e_l_l + directory stack commands and the switches in _f_o_l_d_e_r which manipulate the + _f_o_l_d_e_r-_s_t_a_c_k. The _f_o_l_d_e_r command uses the context entry `Folder-Stack:' + to keep track of the folders in the user's stack of folders. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Appendix A + _C_O_M_M_A_N_D _S_U_M_M_A_R_Y + + + + + ali [-alias aliasfile] [-list] [-nolist] [-normalize] + [-nonormalize] [-user] [-nouser] aliases ... [-help] + + anno [+folder] [msgs] [-component field] [-inplace] [-noinplace] + [-date] [-nodate] [-text body] [-help] + + bbc [bboards ...] [-topics] [-check] [-read] [-quiet] [-verbose] + [-archive] [-noarchive] [-protocol] [-noprotocol] + [-mshproc program] [switches for _m_s_h_p_r_o_c] [-rcfile rcfile] + [-norcfile] [-file BBoardsfile] [-user BBoardsuser] [-help] + + burst [+folder] [msgs] [-inplace] [-noinplace] [-quiet] [-noquiet] + [-verbose] [-noverbose] [-help] + + comp [+folder] [msg] [-draftfolder +folder] [-draftmessage msg] + [-nodraftfolder] [-editor editor] [-noedit] [-file file] + [-form formfile] [-use] [-nouse] [-whatnowproc program] + [-nowhatnowproc] [-help] + + dist [+folder] [msg] [-annotate] [-noannotate] + [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [-editor editor] [-noedit] [-form formfile] [-inplace] + [-noinplace] [-whatnowproc program] [-nowhatnowproc] [-help] + + /usr/local/lib/mh/fmtdump [-form formatfile] [-format string] + [-help] + + folder [+folder] [msg] [-all] [-fast] [-nofast] [-header] + [-noheader] [-pack] [-nopack] [-recurse] [-norecurse] [-total] + [-nototal] [-print] [-noprint] [-list] [-nolist] [-push] + [-pop] [-help] + + folders + + forw [+folder] [msgs] [-annotate] [-noannotate] + [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [-editor editor] [-noedit] [-filter filterfile] + [-form formfile] [-format] [-noformat] [-inplace] [-noinplace] + [-whatnowproc program] [-nowhatnowproc] [-help] + + forw [+folder] [msgs] [-digest list] [-issue number] + [-volume number] [other switches for _f_o_r_w] [-help] + + + + + + -162- + + + + + + + + + + + + + inc [+folder] [-audit audit-file] [-noaudit] [-changecur] + [-nochangecur] [-file name] [-form formatfile] + [-format string] [-silent] [-nosilent] [-truncate] + [-notruncate] [-width columns] [-help] + + mark [+folder] [msgs] [-sequence name ...] [-add] [-delete] [-list] + [-public] [-nopublic] [-zero] [-nozero] [-help] + + /usr/local/lib/mh/mhl [-bell] [-nobell] [-clear] [-noclear] + [-folder +folder] [-form formfile] [-length lines] + [-width columns] [-moreproc program] [-nomoreproc] [files ...] + [-help] + + mhmail [ addrs ... [-body text] [-cc addrs ...] [-from addr] + [-subject subject]] [-help] + + mhparam [profile-components] [-components] [-nocomponents] [-all] + [-help] + + mhpath [+folder] [msgs] [-help] + + msgchk [-date] [-nodate] [-notify all/mail/nomail] + [-nonotify all/mail/nomail] [users ...] [-help] + + msh [-prompt string] [-scan] [-noscan] [-topcur] [-notopcur] [file] + [-help] + + next [+folder] [-header] [-noheader] [-showproc program] + [-noshowproc] [switches for _s_h_o_w_p_r_o_c] [-help] + + packf [+folder] [msgs] [-file name] [-help] + + pick [+folder] [msgs] [-and ...] [-or ...] [-not ...] + [-lbrace ... -rbrace] [--component pattern] [-after date] + [-before date] [-datefield field] [-sequence name ...] + [-public] [-nopublic] [-zero] [-nozero] [-list] [-nolist] + [-help] + + + prev [+folder] [-header] [-noheader] [-showproc program] + [-noshowproc] [switches for _s_h_o_w_p_r_o_c] [-help] + + prompter [-erase chr] [-kill chr] [-prepend] [-noprepend] [-rapid] + [-norapid] [-doteof] [-nodoteof] file [-help] + + /usr/local/lib/mh/rcvstore [+folder] [-create] [-nocreate] + [-sequence name ...] [-public] [-nopublic] [-zero] [-nozero] + [-help] + + + + + + -163- + + + + + + + + + + + + + refile [msgs] [-draft] [-link] [-nolink] [-preserve] [-nopreserve] + [-src +folder] [-file file] +folder ... [-help] + + repl [+folder] [msg] [-annotate] [-noannotate] [-cc all/to/cc/me] + [-nocc all/to/cc/me] [-draftfolder +folder] + [-draftmessage msg] [-nodraftfolder] [-editor editor] + [-noedit] [-fcc +folder] [-filter filterfile] [-form formfile] + [-inplace] [-noinplace] [-query] [-noquery] + [-whatnowproc program] [-nowhatnowproc] [-width columns] + [-help] + + rmf [+folder] [-interactive] [-nointeractive] [-help] + + rmm [+folder] [msgs] [-help] + + scan [+folder] [msgs] [-clear] [-noclear] [-form formatfile] + [-format string] [-header] [-noheader] [-width columns] + [-reverse] [-noreverse] [-file filename] [-help] + + send [-alias aliasfile] [-draft] [-draftfolder +folder] + [-draftmessage msg] [-nodraftfolder] [-filter filterfile] + [-nofilter] [-format] [-noformat] [-forward] [-noforward] + [-msgid] [-nomsgid] [-push] [-nopush] [-verbose] [-noverbose] + [-watch] [-nowatch] [-width columns] [file ...] [-help] + + show [+folder] [msgs] [-draft] [-header] [-noheader] + [-showproc program] [-noshowproc] [switches for _s_h_o_w_p_r_o_c] + [-help] + + sortm [+folder] [msgs] [-datefield field] [-textfield field] + [-notextfield] [-limit days] [-nolimit] [-verbose] + [-noverbose] [-help] + + vmh [-prompt string] [-vmhproc program] [-novmhproc] + [switches for _v_m_h_p_r_o_c] [-help] + + whatnow [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [-editor editor] [-noedit] [-prompt string] [file] [-help] + + whom [-alias aliasfile] [-check] [-nocheck] [-draft] + [-draftfolder +folder] [-draftmessage msg] [-nodraftfolder] + [file] [-help] + + /usr/local/lib/mh/ap [-form formatfile] [-format string] + [-normalize] [-nonormalize] [-width columns] addrs ... + [-help] + + /usr/local/lib/mh/conflict [-mail name] [-search directory] + [aliasfiles ...] [-help] + + + + + -164- + + + + + + + + + + + + + /usr/local/lib/mh/dp [-form formatfile] [-format string] + [-width columns] dates ... [-help] + + /usr/local/lib/mh/install-mh [-auto] [-compat] + + /usr/local/lib/mh/post [-alias aliasfile] [-filter filterfile] + [-nofilter] [-format] [-noformat] [-msgid] [-nomsgid] + [-verbose] [-noverbose] [-watch] [-nowatch] [-width columns] + file [-help] + + /usr/local/lib/mh/slocal [address info sender] [-addr address] + [-info data] [-sender sender] [-user username] [-mailbox mbox] + [-file file] [-maildelivery deliveryfile] [-verbose] + [-noverbose] [-debug] [-help] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -165- + + + + + + + + + + + + + Appendix B + _M_E_S_S_A_G_E _N_A_M_E _B_N_F + + + + + + msgs := msgspec | + msgs msgspec + + msgspec := msg | + msg-range | + msg-sequence | + user-defined-sequence + + msg := msg-name | + + + msg-name := "first" | + "last" | + "cur" | + "." | + "next" | + "prev" + + msg-range := msg"-"msg | + "all" + + msg-sequence := msg":"signed-number + + signed-number := "+" | + "-" | + + + user-defined-sequence := | + * + + + Where is a decimal number greater than zero. + + Msg-range specifies all of the messages in the given range and must not + be empty. + + Msg-sequence specifies up to of messages, beginning with "msg" + (in the case of first, cur, next, or ), or ending with "msg" (in + the case of prev or last). + forces "starting with msg", and + - forces "ending with number". In all cases, "msg" must exist. + + User-defined sequences are defined and manipulated with the _p_i_c_k and + _m_a_r_k commands. + + + + -166- + + + + + + + + + + + + + _R_E_F_E_R_E_N_C_E_S + + + + 1. Crocker, D. H., J. J. Vittal, K. T. Pogran, and D. A. Henderson, + Jr., "Standard for the Format of ARPA Network Text Messages," + _R_F_C_7_3_3, November 1977. + + 2. Thompson, K., and D. M. Ritchie, "The UNIX Time-sharing System," + _C_o_m_m_u_n_i_c_a_t_i_o_n_s _o_f _t_h_e _A_C_M, Vol. 17, July 1974, pp. 365-375. + + 3. McCauley, E. J., and P. J. Drongowski, "KSOS-The Design of a Secure + Operating System," _A_F_I_P_S _C_o_n_f_e_r_e_n_c_e _P_r_o_c_e_e_d_i_n_g_s, National Computer + Conference, Vol. 48, 1979, pp. 345-353. + + 4. Crocker, David H., _F_r_a_m_e_w_o_r_k _a_n_d _F_u_n_c_t_i_o_n_s _o_f _t_h_e "_M_S" _P_e_r_s_o_n_a_l _M_e_s_- + _s_a_g_e _S_y_s_t_e_m, The RAND Corporation, R-2134-ARPA, December 1977. + + 5. Thompson, K., and D. M. Ritchie, _U_N_I_X _P_r_o_g_r_a_m_m_e_r'_s _M_a_n_u_a_l, 6th ed., + Western Electric Company, May 1975 (available only to UNIX licen- + sees). + + 6. Crocker, D. H., "Standard for the Format of ARPA Internet Text Mes- + sages," _R_F_C_8_2_2, August 1982. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -167- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -i- + + + + + + + + + + + + + _R_E_A_D _T_H_I_S + + + + + Although the _M_H system was originally developed by the RAND Cor- + poration, and is now in the public domain, the RAND Corporation assumes + no responsibility for _M_H or this particular version of _M_H. + + In addition, the Regents of the University of California issue the + following disclaimer in regard to the UCI version of _M_H: + + "Although each program has been tested by its contributor, no war- + ranty, express or implied, is made by the contributor or the + University of California, as to the accuracy and functioning of the + program and related program material, nor shall the fact of distri- + bution constitute any such warranty, and no responsibility is + assumed by the contributor or the University of California in con- + nection herewith." + + This version of _M_H is in the public domain, and as such, there are + no real restrictions on its use. The _M_H source code and documentation + have no licensing restrictions whatsoever. As a courtesy, the authors + ask only that you provide appropriate credit to the RAND Corporation and + the University of California for having developed the software. + + _M_H is a software package that is supported neither by the RAND Cor- + poration nor the University of California. However, since we do use the + software ourselves and plan to continue using (and improving) _M_H, bug + reports and their associated fixes should be reported back to us so that + we may include them in future releases. The current computer mailbox + for _M_H is Bug-MH@ICS.UCI.EDU (in the ARPA Internet), and + ...!ucbvax!ucivax!bug-mh (UUCP). Presently, there are two Internet dis- + cussion groups, MH-Users@ICS.UCI.EDU and MH-Workers@ICS.UCI.EDU. + MH-Workers is for people discussing code changes to _M_H. MH-Users is for + general discussion about how to use _M_H. MH-Users is bi-directionally + gatewayed into USENET as comp.mail.mh. + + _H_O_W _T_O _G_E_T _M_H + + Since you probably already have _M_H, you may not need to read this + unless you suspect you have an old version. There are two ways to get + the latest release: + + 1. If you can FTP to the ARPA Internet, use anonymous FTP to + ics.uci.edu [128.195.1.1] and retrieve the file pub/mh/mh-6.8.tar.Z. + This is a tar image after being run through the compress program + (approximately 1.8MB). There should also be a README file in that + directory which tells what the current release of _M_H is, and how to get + updates. + + + + -i- + + + + + + + + + + -ii- + + + This tar file is also available on louie.udel.edu [128.175.1.3] in + portal/mh-6.8.tar.Z. You may also find MH on various other hosts; to + make sure you get the latest version and don't waste your time re-fixing + bugs, it's best to get it from either ics.uci.edu or louie.udel.edu. + + 2. You can send $75 US to the address below. This covers the cost + of a 6250 BPI 9-track magtape, handling, and shipping. In addition, + you'll get a laser-printed hard-copy of the entire MH documentation set. + Be sure to include your USPS address with your check. Checks must be + drawn on U.S. funds and should be made payable to: + + Regents of the University of California + + The distribution address is: + + Computing Support Group + Attn: MH distribution + Department of Information and Computer Science + University of California, Irvine + Irvine, CA 92717 + + 714/856-7554 + + If you just want the hard-copies of the documentation, you still + have to pay the $75. The tar image has the documentation source (the + manual is in roff format, but the rest are in TeX format). Postscript + formatted versions of the TeX papers are available, as are crude tty- + conversions of those papers. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _F_O_R_E_W_O_R_D + + + + + This document describes the RAND _M_H Message Handling System. Its + primary purpose is to serve as a user's manual. It has been heavily + based on a previous version of the manual, prepared by Bruce Borden, + Stockton Gaines, and Norman Shapiro. + + _M_H is a particularly novel system, and thus it is often more prone + to change than other pieces of production software. As such, some + specific points in this manual may not be correct in the future. In all + cases, the on-line sections of this manual, available through the + UNIX[1] _m_a_n command, should present the most current information. + + When reading this document as a user's manual, certain sections are + more interesting than others. The Preface and Summary are not particu- + larly interesting to those interested in learning _M_H. The Introduction + is slightly more interesting, as it touches upon the organization of the + remainder of this document. The most useful sections are the Overview, + Tutorial, and Detailed Description. The Overview should be read by all + _M_H users, regardless of their expertise (beginning, novice, advanced, or + hacker). The Tutorial should be read by all beginning and novice _M_H + users, as it presents a nice description of the _M_H system. The Detailed + Description should be read by the day-to-day user of _M_H, as it spells + out all of the realities of the _M_H system. The Advanced Features sec- + tion discusses some powerful _M_H capabilities for advanced users. Appen- + dix A is particularly useful for novices, as it summarizes the invoca- + tion syntax of all the _M_H commands. + + There are also several other documents which may be useful to you: + _T_h_e _R_A_N_D _M_H _M_e_s_s_a_g_e _H_a_n_d_l_i_n_g _S_y_s_t_e_m: _T_u_t_o_r_i_a_l, which is a tutorial for + _M_H; _T_h_e _R_A_N_D _M_H _M_e_s_s_a_g_e _H_a_n_d_l_i_n_g _S_y_s_t_e_m: _T_h_e _U_C_I _B_B_o_a_r_d_s _F_a_c_i_l_i_t_y, which + describes the BBoards handling under _M_H; _M_H._5: _H_o_w _t_o _p_r_o_c_e_s_s _2_0_0 _m_e_s_- + _s_a_g_e_s _a _d_a_y _a_n_d _s_t_i_l_l _g_e_t _s_o_m_e _r_e_a_l _w_o_r_k _d_o_n_e, which was presented at + the 1985 Summer Usenix Conference and Exhibition in Portland, Oregon; + _M_H: _A _M_u_l_t_i_f_a_r_i_o_u_s _U_s_e_r _A_g_e_n_t, which has been accepted for publication + by Computer Networks; _M_Z_n_e_t: _M_a_i_l _S_e_r_v_i_c_e _f_o_r _P_e_r_s_o_n_a_l _M_i_c_r_o-_C_o_m_p_u_t_e_r + _S_y_s_t_e_m_s, which was presented at the First International Symposium on + Computer Message Systems in Nottingham, U.K.; and, _D_e_s_i_g_n _o_f _t_h_e _T_T_I + _P_r_o_t_o_t_y_p_e _T_r_u_s_t_e_d _M_a_i_l _A_g_e_n_t, which describes a proprietary "trusted" + mail system built on _M_H. There are also documents, mostly specific to + U.C. Irvine which you may find interesting: _M_H _f_o_r _B_e_g_i_n_n_e_r_s, and _M_H _f_o_r + _M_M _U_s_e_r_s. All of these documents exist in the _m_h._6 distribution sent to + your site. There's also a document, _C_h_a_n_g_e_s _t_o _t_h_e _R_A_N_D _M_H _M_e_s_s_a_g_e _H_a_n_- + _d_l_i_n_g _S_y_s_t_e_m: _M_H._6, which describes user-visible changes made to _M_H + since the last major release. + + + [1] UNIX is a trademark of AT&T Bell Laboratories. + + + -iii- + + + + + + + + + + -iv- + + + This manual is very large, as it describes a large, powerful system + in gruesome detail. The important thing to remember is: + + + _D_O_N'_T _P_A_N_I_C[_2] + + + As explained in the tutorial, you really need to know only 5 commands to + handle most of your mail. + + Very advanced users may wish to consult _T_h_e _R_A_N_D _M_H _M_e_s_s_a_g_e _H_a_n_- + _d_l_i_n_g _S_y_s_t_e_m: _A_d_m_i_n_i_s_t_r_a_t_o_r'_s _G_u_i_d_e, which is also present in the _m_h._6 + distribution sent to your site. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [2] Note the large, _f_r_i_e_n_d_l_y letters. + + + + + + + + + + + + + + + + _A_C_K_N_O_W_L_E_D_G_M_E_N_T_S + + + + + The _M_H system described herein is based on the original RAND _M_H + system. It has been extensively developed (perhaps too much so) by + Marshall T. Rose and John L. Romine at the University of California, + Irvine. Einar A. Stefferud, Jerry N. Sweet, and Terry P. Domae provided + numerous suggestions to improve the UCI version of _M_H. Of course, a + large number of people have helped _M_H along. The list of ``_M_H immor- + tals'' is too long to list here. However, Van Jacobson deserves a spe- + cial acknowledgement for his tireless work in improving the performance + of _M_H. Some programs have been speeded-up by a factor of 10 or 20. All + of users of _M_H, everywhere, owe a special thanks to Van. For this + release, numerous _M_H-_W_o_r_k_e_r_s sent in fixes and other changes. A handful + of courageous _M_H-_W_o_r_k_e_r_s volunteered to beta-test these changes; their + help is particularly appreciated. + + This manual is based on the original _M_H manual written at RAND by + Bruce Borden, Stockton Gaines, and Norman Shapiro. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -v- + + + + + + + + + + + + + _P_R_E_F_A_C_E + + + + + This report describes a system for dealing with messages transmit- + ted on a computer. Such messages might originate with other users of + the same computer or might come from an outside source through a network + to which the user's computer is connected. Such computer-based message + systems are becoming increasingly widely used, both within and outside + the Department of Defense. + + The message handling system _M_H was developed for two reasons. One + was to investigate some research ideas concerning how a message system + might take advantage of the architecture of the UNIX time-sharing + operating system for Digital Equipment Corporation PDP-11 and VAX com- + puters, and the special features of UNIX's command-level interface with + the user (the "shell"). The other reason was to provide a better and + more adaptable base than that of conventional designs on which to build + a command and control message system. The effort has succeeded in both + regards, although this report mainly describes the message system itself + and how it fits in with UNIX. + + The present report should be of interest to three groups of + readers. First, it is a complete reference manual for the users of _M_H. + Second, it should be of interest to those who have a general knowledge + of computer-based message systems, both in civilian and military appli- + cations. Finally, it should be of interest to those who build large + subsystems that interface with users, since it illustrates a new + approach to such interfaces. + + The original _M_H system was developed by Bruce Borden, using an + approach suggested by Stockton Gaines and Norman Shapiro. Valuable + assistance was provided by Phyllis Kantar in the later stages of the + system's implementation. Several colleagues contributed to the ideas + included in this system, particularly Robert Anderson and David Crocker. + In addition, valuable experience in message systems, and a valuable + source of ideas, was available to us in the form of a previous message + system for UNIX called MS, designed at RAND by David Crocker. + + This report was originally prepared as part of the RAND project + entitled "Data Automation Research", sponsored by Project AIR FORCE. + + + + + + + + + + + + -vi- + + + + + + + + + + + + + _S_U_M_M_A_R_Y + + + + + Electronic communication of text messages is becoming commonplace. + Computer-based message systems-software packages that provide tools for + dealing with messages-are used in many contexts. In particular, message + systems are becoming increasingly important in command and control and + intelligence applications. + + This report describes a message handling system called _M_H. This + system provides the user with tools to compose, send, receive, store, + retrieve, forward, and reply to messages. _M_H has been built on the UNIX + time-sharing system, a popular operating system developed for the DEC + PDP-11 and VAX classes of computers. + + A complete description of _M_H is given for users of the system. For + those who do not intend to use the system, this description gives a gen- + eral idea of what a message system is like. The system involves some + new ideas about how large subsystems can be constructed. + + The interesting and unusual features of _M_H include the following: + The user command interface to _M_H is the UNIX "shell" (the standard UNIX + command interpreter). Each separable component of message handling, + such as message composition or message display, is a separate command. + Each program is driven from and updates a private user environment, + which is stored as a file between program invocations. This private + environment also contains information to "custom tailor" _M_H to the + individual's tastes. _M_H stores each message as a separate file under + UNIX, and it utilizes the tree-structured UNIX file system to organize + groups of files within separate directories or "folders". All of the + UNIX facilities for dealing with files and directories, such as renam- + ing, copying, deleting, cataloging, off-line printing, etc., are appli- + cable to messages and directories of messages (folders). Thus, impor- + tant capabilities needed in a message system are available in _M_H without + the need (often seen in other message systems) for code that duplicates + the facilities of the supporting operating system. It also allows users + familiar with the shell to use _M_H with minimal effort. + + + + + + + + + + + + + + + -vii- + + + + + + + + + + + + + _C_O_N_T_E_N_T_S + + + + + READ THIS ......................................................... i + + FOREWORD .......................................................... iii + + ACKNOWLEDGMENTS ................................................... v + + PREFACE ........................................................... vi + + SUMMARY ........................................................... vii + + Section + + 1. INTRODUCTION ............................................... 1 + + 2. OVERVIEW ................................................... 4 + + 3. TUTORIAL ................................................... 7 + + 4. DETAILED DESCRIPTION ....................................... 10 + THE USER PROFILE ............................................. 10 + MESSAGE NAMING ............................................... 13 + OTHER MH CONVENTIONS ......................................... 14 + MH COMMANDS .................................................. 16 + ALI ....................................................... 17 + ANNO ...................................................... 19 + BBC ....................................................... 21 + BBOARDS ................................................... 24 + BURST ..................................................... 26 + COMP ...................................................... 28 + DIST ...................................................... 30 + FOLDER .................................................... 33 + FORW ...................................................... 37 + INC ....................................................... 41 + MARK ...................................................... 44 + MHL ....................................................... 46 + MHMAIL .................................................... 51 + MHOOK ..................................................... 53 + MHPARAM ................................................... 55 + MHPATH .................................................... 57 + MSGCHK .................................................... 60 + MSH ....................................................... 61 + NEXT ...................................................... 65 + PACKF ..................................................... 66 + PICK ...................................................... 67 + PREV ...................................................... 72 + PROMPTER .................................................. 73 + RCVSTORE .................................................. 76 + + + + + + + + + + + + + + + REFILE .................................................... 78 + REPL ...................................................... 80 + RMF ....................................................... 84 + RMM ....................................................... 86 + SCAN ...................................................... 88 + SEND ...................................................... 91 + SHOW ...................................................... 94 + SLOCAL .................................................... 97 + SORTM ..................................................... 102 + VMH ....................................................... 104 + WHATNOW ................................................... 106 + WHOM ...................................................... 108 + MORE DETAILS ................................................. 110 + MH-ALIAS .................................................. 111 + MH-FORMAT ................................................. 115 + MH-MAIL ................................................... 124 + MH-PROFILE ................................................ 128 + MH-SEQUENCE ............................................... 136 + AP ........................................................ 140 + CONFLICT .................................................. 142 + DP ........................................................ 144 + FMTDUMP ................................................... 146 + INSTALL-MH ................................................ 147 + POST ...................................................... 148 + + 5. REPORTING PROBLEMS ......................................... 150 + + 6. ADVANCED FEATURES .......................................... 151 + USER-DEFINED SEQUENCES ....................................... 151 + Pick and User-Defined Sequences ........................... 151 + Mark and User-Defined Sequences ........................... 153 + Public and Private User-Defined Sequences ................. 153 + Sequence Negation ......................................... 153 + The Previous Sequence ..................................... 154 + The Unseen Sequence ....................................... 154 + COMPOSITION OF MAIL .......................................... 155 + The Draft Folder .......................................... 155 + What Happens if the Draft Exists .......................... 157 + The Push Option at What now? Level ........................ 157 + Options at What now? Level ................................ 158 + Digests ................................................... 159 + FOLDER HANDLING .............................................. 160 + Relative Folder Addressing ................................ 160 + The Folder-Stack .......................................... 161 + + Appendix + A. Command Summary ............................................ 162 + B. Message Name BNF ........................................... 166 + + REFERENCES ........................................................ 167 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + THE RAND MH + + + MESSAGE HANDLING + + + SYSTEM: + + + USER'S MANUAL + + + + + + + UCI Version + + + + + + Marshall T. Rose + + John L. Romine + + + + + Based on the original manual by + + Borden, Gaines, and Shapiro + + + + + + + + November 30, 1993 + + + + + + + + + + + + + + + + 6.8.3 #1[UCI] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/historical/README b/docs/historical/README new file mode 100644 index 0000000..5fdb663 --- /dev/null +++ b/docs/historical/README @@ -0,0 +1,108 @@ +The most recent versions of the documents in this directory were +downloaded from ftp://ftp.vim.org/pub/mail/mh/doc/ + +These older versions: + ADMIN-19910201.txt + MH-19910201.txt + MH-19921214.pdf + MH-19921214.txt +were downloaded from ftp://munnari.oz.au/pub/mh/doc/ + +designOfMH.pdf was downloaded from +http://www.dtic.mil/cgi-bin/GetTRDoc?AD=ADA257836 + +The README below is retained in its original form for posterity. All +of the txt (.doc and .tty) files have been renamed to .txt. All of +the postscript (.ps) files have been converted to pdf using ps2pdf. + +D. Levine 28 Feb 2012 + +------------------------------------------------------------------------ +------------------------------------------------------------------------ + +mh/doc/README + +These are formatted versions of the major MH documents (written +using the troff "-ms" and "-me" macro packages). The ".doc" files +are formatted for 66 lines/page: + + ADMIN.doc - The MH Administrator's Manual - how to configure MH + MH.doc - The MH User's Manual + changes.doc - Changes from MH 6.6 to MH 6.8 + mh-gen.doc - The "READ-ME" file - how to generate MH (aka mh-gen(8)) + +Postscript versions are also available: + + ADMIN.ps - The MH Administrator's Manual - how to configure MH + MH.ps - The MH User's Manual + changes.ps - Changes from MH 6.6 to MH 6.8 + mh-gen.ps - The "READ-ME" file - how to generate MH (aka mh-gen(8)) + +------------------------------------------------------------------------ + +These are postscript conversions of the MH papers which were written +using the TeX typesetting language: + + bboards.ps - The UCI BBoards Facility + beginners.ps - UCI MH for Beginners + mh4mm.ps - MH for MM users + mh6.ps - Changes from MH 6.0 to MH 6.5 for 4.3BSD + multifarious.ps - MH: A Multifarious User Agen + mznet.ps - MZnet - Mail Service for Personal Micro Comp. Sys. + realwork.ps - MH.5 - How to process 200 messages... + trusted.ps - Design of the TTI Prototype Trusted Mail Agent + tutorial.ps - The MH Tutorial + +These conversions have been provided because they may be of use to some +sites who retrieved MH using FTP, and who do not have TeX to typeset +the papers themselves. Of course, all recipients of an MH distribution +tape receive a complete set of laser-printed manuals. + +These conversions were generated with the "dvips" program. I have +printed them on an Imagen 5320 w/ Turboscript, and the output is +identical to the original "dvi" versions of these papers. + +As yet, I have had no success downloading the postscript files to a Mac- +intosh, and printing them on a Laserwriter. If you are able to generate +copies of these papers which will print (identically to the originals or +otherwise) on a Laserwriter, please contact "Bug-MH@ICS.UCI.EDU". + +------------------------------------------------------------------------ + +These files are tty-readable conversions of the MH papers which were +written using the TeX typesetting language: + + bboards.tty - The UCI BBoards Facility + beginners.tty - UCI MH for Beginners + mh4mm.tty - MH for MM users + mh6.tty - Changes from MH 6.0 to MH 6.5 for 4.3BSD + multifarious.tty - MH: A Multifarious User Agen + mznet.tty - MZnet - Mail Service for Personal Micro Comp. Sys. + realwork.tty - MH.5 - How to process 200 messages... + trusted.tty - Design of the TTI Prototype Trusted Mail Agent + tutorial.tty - The MH Tutorial + +These conversions have been provided because they may be of use to some +sites who retrieved MH using FTP, and who do not have TeX or a laser +printer on which to print the papers. If you have a Postscript +printer, you may want to retrieve the Postscript conversion of these +papers, available in a different tar archive. + +Of course, all recipients of an MH distribution tape receive a complete +set of laser-printed manuals, and these conversions are not a +substitute for properly-formatted copies of the originals. + +The conversion was generated by the "dvi2tty" program. As full use of +TeX's rich typesetting environment was used in writing many of these +papers, and since the output is intended for a line printer, it is +necessarily quite primitive. + +Font changes and special character representations are lost entirely. +White-space between words may be deleted or expanded, especially near +punctuation characters. Blank lines may be added or deleted. + +Since typeset lines are typically longer than 80 tty characters, the +output has been generated for 132-colunm output devices. A typical +page has about 76 lines. Pages are separated by a formfeed character. + +/JLR diff --git a/docs/historical/bboards.pdf b/docs/historical/bboards.pdf new file mode 100644 index 0000000..6e7d2cf Binary files /dev/null and b/docs/historical/bboards.pdf differ diff --git a/docs/historical/bboards.txt b/docs/historical/bboards.txt new file mode 100644 index 0000000..ace0d08 --- /dev/null +++ b/docs/historical/bboards.txt @@ -0,0 +1,965 @@ + + + + + The Rand MH Message Handling System: + + + + The UCI BBoards Facility + + + Marshall T. Rosey + + Wed May 21 21:03:57 PDT 1986 + + + + Abstract + + + This document discusses how to process BBoards using the + + Rand MH system. In particular, this guide discusses: check- + + ing the status of a BBoard, viewing new messages, archive + + handling, composing mail destined for a BBoard, and reply- + + ing to a message posted to a BBoard. + + + Although this document is based on the standard MH + + user manual[MH], this document is meant to supplement, not + + supersede, that lengthier work. + + + Comments concerning this documentation should be ad- + + dressed to the Internet mailbox Bug-MH@ICS.UCI.EDU. + + + +_____________________________________ +y Computer Mail: MRose@NRTC.NORTHROP.COM. + + + The Rand MH Message Handling System: + + + + The UCI BBoards Facility + + + +Acknowledgements + + The MH system described herein is based on the original Rand MH system. + +It has been extensively developed (perhaps too much so) by Marshall Rose and + +John Romine at the University of California, Irvine. Einar Stefferud, Jerry Sweet, + +and Terry Domae provided numerous suggestions to improve the UCI version of + +MH. + + + In particular, the UCI BBoards facility, which was suggested by Einar + +Stefferud, has been in place at the University of California, Irvine (in one form or + +another) for the last two and one-half years. The UCI BBoards facilities runs under + +both MMDF and SendMail, and, in a more restricted form, under stand-alone MH. + + + +Disclaimer + + The Regents of the University of California wish to make it known that: + + + + "Although each program has been tested by its contributor, no warranty, express or + implied, is made by the contributor or the University of California, as to the accuracy + and functioning of the program and related program material, nor shall the fact of + distribution constitute any such warranty, and no responsibility is assumed by the + contributor or the University of California in connection herewith." + + + +Scope + + This document explains how to use the UCI BBoards facility to a user + +familiar with MH and the UNIX1 operating system in general. A large degree of + +expertise is not assumed. This document does not attempt to introduce MH to the + +novice user (for that task, consult the MH tutorial known as [MH.TUT]). Additional + +information on the programs discussed here (particularly bbc) is to be found in + +[MH]. + + + +_____________________________________ +1 UNIX is a trademark of AT&T Bell Laboratories. + + + + 1 + 2 + + +Conventions + + In this document, certain TEX-formatting conventions are adhered to: + + + 1. The names of UNIX commands, such as comp, are presented in text + + italics. + + + 2. Arguments to programs, such as `msgs' , are presented in typewriter + + style and delimited by single-quotes. + + + 3. UNIX pathnames and envariables, such as /usr/uci/ and $ SIGNATURE , + + are presented in slanted roman. + + + 4. Text presenting an example, such as + + + comp -editor zz + + + is presented in typewriter style. + + + +Introduction + + MH is a very powerful message handling system that runs under the UNIX + +operating system. One of the many features which MH offers is an interface to + +the UCI BBoards facility. This facility permits the efficient distribution of interest + +group messages on a single host, a group of hosts under a single administration, + +and the ARPA Internet community. + + + Described simply, a interest group is composed of a number of subscribers + +with a common interest. These subscribers post mail to a single address, known + +as a distribution address. From this distribution address, a copy of the message + +is sent to each subscriber. Each group has a moderator, which is the person that + +runs the the group. This moderator can usually be reached at a special address, + +known as a request address. Usually, the responsibilities of the moderator are quite + +simple, since the mail system handles the distribution to subscribers automatically. + +In some cases, the interest group, instead of being distributed directly to its + +subscribers, is put into a digest format by the moderator and then sent to the + +subscribers. Although this requires more work on the part of the moderator, such + +groups tend to be better organized. + + + Unfortunately, there are a few problems with the scheme outlined above. + +First, if two users on the same host subscribe to the same interest group, two copies + +of the message get delivered. This is wasteful of both processor and disk resources. + + + Second, some of these groups carry a lot of traffic. Although subscription + +to an group does indicate interest on the part of a subscriber, it is usually not + +interesting to get 50 messages or so delivered to the user's private maildrop each + +day, interspersed with personal mail, that is likely to be of a much more important + +and timely nature. + 3 + + + Third, if a subscriber on the distribution list for a group becomes "bad" + +somehow, the originator of the message and not the moderator of the group is + +notified. It is not uncommon for a large list to have 10 or so bogus addresses + +present. This results in the originator being flooded with "error messages" from + +mailers across the ARPA Internet stating that a given address on the list was bad. + +Needless to say, the originator usually could not care less if the bogus addresses + +got a copy of the message or not. The originator is merely interested in posting a + +message to the group at large. Furthermore, the moderator of the group does care + +if there are bogus addresses on the list, but ironically does not receive notification. + + + To solve all of these problems, the UCI BBoards facility introduces a new + +entity into the picture: all interest group mail is handled by a special component of + +the mail system. The distribution address maps to a special channel that performs + +several actions. First, if local delivery is to be performed, then a copy of the + +message is placed in a global maildrop for the interest group with a timestamp + +and a unique number. Local users can read messages posted for the interest group + +by reading the file. Second, if further distribution is to take place, a copy of + +the message is sent to the distribution address in such a way that if any of the + +addresses are bogus, the failure notice is sent to the maintainer of the group and + +not the originator. + + + This scheme has several advantages: First, messages delivered to the host + +are processed and saved once in a globally accessible area. The UCI BBoards + +facility supports software which allows a user to query the interest group for + +new messages and to read those messages in the MH-style. Second, once a host + +subscribes to an interest group, a user can add or remove him/herself from the list + +without contacting the moderator. Third, a hierarchical distribution scheme can + +be constructed to further reduce the amount of message traffic. Fourth, errors are + +prevented from propagating. When an address on the distribution list goes bad, + +the request address immediately responsible for the address is notified. Usually, + +this is the local PostMaster and not the group moderator. + + + In addition to solving the problems outlined above, the UCI BBoards facility + +supports several other capabilities. BBoards may be automatically archived in + +order to conserve disk space and reduce processing time when reading them. + + + Special alias files may be generated which allow the MH user to shorten + +address type-in. For example, instead of sending to ``SF-Lovers@Rutgers'' , + +a user of MH usually sends to ``SF-Lovers'' and the MH aliasing facility + +automatically makes the appropriate expansion in the headers of the outgoing + +message. Hence, one need only know the name of a interest group and not its + +address. + 4 + + + Finally, the UCI BBoards facility supports private interest groups using the + +UNIX group access mechanism. This allows a group of people on the same or + +different machines to conduct a private discussion. + + + The practical upshot of all this is that the UCI BBoards facility automates the + +vast majority of BBoards handling from the point of view of both the PostMaster + +and the user. + + + +BBoard Handling + + Usually the term BBoard is used interchangeably with the terms discussion + +group and interest group. This is true of the discussion that follows. + + + The messages for a BBoard delivered locally are kept in the same format as a + +maildrop.2 Unlike the user's private maildrop however, the inc program is not run + +to incorporate new BBoard messages into the user's MH ``+inbox'' folder. The + +programs which are used will be discussed momentarily. + + + Each message in a BBoard maildrop has a unique number and a timestamp. + +The number, called the BBoard-ID, is always ascending. The BBoard-ID of a + +message should NOT be confused with the message number of a message, which + +can change as messages are removed from the BBoard. The BBoard-ID is a value + +which is unique for every message delivered locally to the BBoard. + + + To read BBoards, the MH user invokes bbc. The bbc program has several + +switches to direct it's action. The `-topics' switch to bbc tells the MH user about + +the status of a BBoard. The `-check' switch to bbc lets the MH user check on the + +activity of a BBoard. The `-read' switch to bbc invokes the msh program on the + +BBoard. msh is a monolithic program which contains most of the functionality of + +MH in a single program. These commands are now discussed in greater detail. + + +BBoard status + + The `-topics' option to the bbc program can be used to report information + +about a BBoard that does not pertain to the user's reading habits. If the MH users + +types + + + bbc -topics + + +then bbc will list the following information for all BBoards received on the host: + + + - the official name of the BBoard + + + - the number of messages delivered to the BBoard (but not necessarily + + present) + + +_____________________________________ +2 Actually, your site might be running with all BBoards kept on a single host. MH supports the + +remote access of BBoards using a modified version of the ARPA Post Office Protocol (POP). This +has the advantage that it saves a lot of disk space, and incurs only a modest performance penalty. + 5 + + + - the date and time of the last message delivered to the BBoard + + + +In addition to `-topics' , if the `-verbose' option is given to bbc, then more + +information is listed: + + + - any aliases the BBoard is known as + + + - the local leaders of the BBoard + + + - the file that the BBoard is locally delivered to + + + - the "global" distribution address + + + - the "global" request address + + + - the host that distributes the BBoard to the local host + + + - the addresses to which this host distributes + + + - miscellaneous information (presently only archiving status) + + + +Naturally, bbc can be invoked with the `-topics' option and one or more BBoard + +names listed on its command line. For example + + + bbc -topics unix-wizards + + +is completely acceptable _ it tells bbc to report the status of the BBoard + +``unix-wizards'' . + + +BBoard checking + + The `-check' option to the bbc program can be used to check for new BBoard + +messages in a synchronous fashion (i.e., when you specifically ask for it). The MH + +users types + + + bbc -check + + +and bbc consults the profile entry for ``bboards:'' in the user's .mh_profile file. + +For each BBoard listed, bbc prints one of several messages depending on the status + +of both the BBoard and the user's reading habits (for example, in the case of the + +mythical BBoard ``foo'' ): + + + 1. ``foo -- n items unseen'' + + This message indicates items in the BBoard have not been seen by the + + user. When bbc is invoked with the ``quiet'' switch, this is the only + + informative message that bbc will print out. Users of MH usually put + + + bbc -check -quiet + + + in their $ HOME/.login file. + 6 + + + 2. ``foo -- empty'' + + The BBoard is empty. + + + 3. ``foo -- n items (none seen)'' + + The BBoard has n items in it, but the user hasn't seen any. + + + 4. ``foo -- n items (all seen)'' + + The BBoard is non-empty, and the user has seen everything in it. + + + 5. ``foo -- n items seen out of m'' + + The BBoard has at most m n items that the user has not seen. + + + +It is important to note that bbc performs its calculations on BBoard-ID:s and not + +the messages actually present in a BBoard. This means that the numbers given by + +bbc are maximal end-points. When bbc says n, bbc means "at most n". + + + Naturally, bbc can be invoked with the `-check' option and one or more + +BBoards listed on its command line. For example + + + bbc -check info-c poli-sci + + +is completely acceptable _ it tells bbc to check on the BBoards ``info-c'' and + +``poli-sci'' only. + + + There are two ways to check for new BBoard messages in an asynchronous + +fashion: using the CShell variable $ mail and running the useto program. + + +Asynchronous Checking with the CShell + + The CShell has a variable called $ mail . This variable can contain one or more + +words. Each word should be a filename where the shell should check for new mail. + +The check is performed after a specified time interval has elapsed just before the + +shell would prompt the user. + + + If the first word of $ mail is a number, then this number specifies a different + +checking interval, in seconds, than the default, which is 10 minutes. + + + Whenever the time interval elapses and the shell is ready to prompt the user, + +the shell looks at the file and decides if new messages have arrived. If so, it says + + + You have new mail. + + +if only one file is present in $ mail . Otherwise, if more than one file is present in + +$ mail , then the shell says + + + New mail in foo. + + +whenever there is new mail in the file called ``foo'' . + 7 + + + To find out what file is associated with a BBoard, say ``info-unix'' , the + +MH user types + + + bbc -topics -verbose info-unix + + +Usually the local file for a BBoard has an extension of .mbox . + + +Asynchronous Checking with Useto + + In contrast to using the $mail variable in the CShell, the MH user might + +employ useto instead.3 The useto program is a continuous update display that + +prints information on the status line of your terminal. Needless to say, your + +terminal must support a status line in order to run useto. Not all terminals have + +this capability, but for those that do it's usually well worth the effort to run useto. + + + For example, users of MH could put + + + useto -bepf tcp-ip sftp % D % M % d % h:% m% z% b % n.tty% t:% l1 + + +in their $ HOME/.login file. This command line to useto says to inform the user of + + + - the current date and time + + + - new mail for the user + + + - new messages for the BBoards ``tcp-ip'' and ``sftp'' + + + - the name of the host and tty that the user is logged in on + + + - the 5-minute load average of that host + + + The useto program is really quite amusing and useful.4 + + +BBoard reading + + If bbc is not given either the `-check' or `-topics' option, the bbc program + +reads BBoard messages. For each BBoard listed in the MH user's profile entry for + +``bboards:'' , bbc checks to see if there is unread mail. If so, bbc starts msh on + +the BBoard, telling msh which messages haven't been seen.5 + + + When msh starts it identifies the BBoard being read and indicates how many + +messages are present and how many the user has read. Usually, in the user's MH + +profile, the user has the entry + + + msh: -scan + + + +_____________________________________ +3 Not all sites have useto; contact the same people who supplied MH to get a copy. +4 To be honest, the author considers computing environments without useto to be less than + +adequate. +5 If the `-verbose' option is given to bbc, then bbc will start msh on the BBoard regardless of + +whether there are unseen messages there. + 8 + + + This says that when msh starts, it should print a scan listing of the messages which + + the user hasn't seen yet. + + + The msh program now prompts the user for MH commands. The user may + + type most of the normal MH command. The syntax and semantics of the commands + + typed to msh are identical to their MH counterparts. For example, to reply to + + a message on the BBoard, the MH user types ``repl'' ; other MH commands + + likewise may be applied to BBoard messages. In cases where the nature of msh + + would be inconsistent (e.g., specifying a `+folder' with some commands), msh + + will duly inform the user. In addition to supporting most MH commands, msh also + + has a ``help'' command which gives a brief overview. + + + The only command that behaves entirely differently in msh is the ``mark'' + + command when given no arguments. The msh program maintains a special + + sequence, ``unseen'' , which it uses to keep track of the messages you've seen. If + + the ``mark'' command is given without any arguments, then msh will interpret it + + as + + + mark -sequence unseen -delete -nozero all + + + Hence, to discard all of the messages in the current BBoard being read, the MH + + user types ``mark'' which says to remove all messages from sequence called + + ``unseen'' . + + + To leave msh use the ``quit'' command. This tells msh to terminate and + + bbc to go to the next BBoard. Instead, if the user types EOT (usually CTRL-D), + + then bbc will exit as well, updating whatever information was appropriate. + + + + Current BBoards + + There are many, many active interest groups. Consult the BBoard called + + ``list-of-lists'' for a comprehensive description. Here are a few of the more + + popular: + + + system Important announcements for the local system are posted here. + + + mh-users A discussion group for users of MH. + + +arpanet-bboards Redistribution address for all known BBoards on the ARPAnet. + + + editor-people Discussion of topics related to computerized text editing, display + + editors, and human factors in man/machine interaction. The theoretical + + discussion is catholic, but practical discussion focuses particularly on + + Tops206 and UNIX. + + + franz-friends Discusses the Franz Lisp language. + + + _____________________________________ + 6 Tops20 is a trademark of Digital Equipment Corporation. + 9 + + +header-people Interest specifically in the format of message headers and related issues + + such as inter-network mail formats/standards, etc. + + + human-nets Human-Nets has discussed many topics, all of them related in some + + way to the theme of a world-wide computer and telecommunications + + network usually called WorldNet. The topics have ranged very widely, + + from something like tutorials, to state of the art discussions, to rampant + + speculation about technology and its impact. + + + info-micro Information/discussion list on the general interest topic of microcom- + + puters. + + + info-unix Info-UNIX is intended for question/answer discussion, where "novice" + + system administrators can pose questions. + + + msggroup Interest in electronic mail, message formats, message systems, and the + + sociological implications of the above. + + + poli-sci A permanent distributed political "bull" session. + + + sf-lovers Science Fiction lovers. SF-Lovers has discussed many topics, all of them + + related in some way to the theme of science fiction or fantasy. + + + space Discussions (daily digest) on space-related topics. + + + telecom A broad spectrum moderated-digest-format discussion on telecommu- + + nictions technology: the telephone system, modems, and other more + + technical aspects of telecommunications systems. + + + unix-emacs Used for new release announcements and general discussions of Gosling's + + EMACS. + + + unix-wizards Distribution list for people maintaining machines running the UNIX + + operating system. + + + + As discussed earlier, to find out about all of the BBoards that the local host + + subscribes to, the MH users types + + + bbc -topics + + + + More on BBoards + + Finally, here are a few more operational details: + + + Creating a BBoard + + Contact the PostMaster at your host to have a BBoard created. Be sure to + + indicate its status (public or private) and scope (where distribution should occur). + 10 + + + Subscribing to a BBoard + + If your local host already receives an interest group, then simply add the + + name of the BBoard to the ``bboards:'' entry in your MH profile. If not, ask the + + PostMaster to create the BBoard and contact the global request address for you. + + + BBoard Archives + + BBoard messages are automatically archived on a weekly basis. Usually, this + + results in messages older than 12 days being moved to an archive area. To read + + the archives for a BBoard, the `-archive' option is used. For example, + + + bbc -archive telecom + + + tells bbc to invoke msh on the archives for the ``telecom'' BBoard. + + + Note that the archives may not be present for all BBoards on a given host; + + also note that the archives may be periodically moved to tape and expunged from + + the system. Contact your local PostMaster for the details. + + + BBoard Addresses + + Each BBoard has associated with it 4 addresses (for example, in the case of + + the mythical BBoard ``foo'' ): + + + foo The global distribution list + + If you post a message addressed to foo then the message is distributed + + to everyone who subscribes to ``foo'' . + + + dist-foo The local distribution list + + If you post a message addressed to dist-foo then the message is + + distributed to the local BBoard for ``foo'' and to any sites which the + + local system distributes to. + + + foo-request The global moderator + + If you post a message addressed to foo-request then the message is + + sent to the moderator for the entire interest group called ``foo'' . + + +local-foo-request The local moderator + + If you post a message addressed to local-foo-request then the + + message is sent to the person responsible for the BBoard ``foo'' on + + the local system. + + + + These addresses are defined by the MH alias facility. Users of the BBoards facility + + who do not use MH may not be able to make use of them. + + + Leading a BBoard + + Except for special circumstances, this task is wholly automated. For more + + information though, see the manual entries for bbl (1) and bbleaders (8). + 11 + + +Extra for Experts + + Some clever MH users might ask why BBoards aren't kept as folders instead + +of pack'd files. This is a good question. Perhaps some future release of MH and the + +UCI BBoards facility will treat BBoards as a variant of read-only folders. + + + The problem with msh, of course, is that it's a monolithic program, and + +although it does support input/output redirection and a few other primitive + +shell-like properties, it's still not the CShell. + 12 + + + References + + + +[MH] M.T. Rose, J.L. Romine. The Rand MH Message Handling System: + + User's Manual. UCI Version. Department of Information and Computer + + Science, University of California, Irvine (July, 1984). + + + +[MH.TUT] M.T. Rose. The Rand MH Message Handling System: Tutorial. + + Department of Computer and Information Sciences, University of + + Delaware (October, 1984). + + + + + Contents + + + + Page + + Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 + + Disclaimer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 + + Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 + + Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 + + Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 + + BBoard Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 + + BBoard status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 + + BBoard checking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 + + Asynchronous Checking with the CShell. . . . . . . . . . . . . . . . 6 + + Asynchronous Checking with Useto. . . . . . . . . . . . . . . . . . . 7 + + BBoard reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 + + Current BBoards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 + + More on BBoards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 + + Creating a BBoard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 + + Subscribing to a BBoard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 + + BBoard Archives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 + + BBoard Addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 + + Leading a BBoard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 + + Extra for Experts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 + + References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 + + + + _____________________________________ +This document (version #2.6) was TEXset April 12, 1990 with DISS.STY v103. + + + + i diff --git a/docs/historical/beginners.pdf b/docs/historical/beginners.pdf new file mode 100644 index 0000000..8d12ca0 Binary files /dev/null and b/docs/historical/beginners.pdf differ diff --git a/docs/historical/beginners.txt b/docs/historical/beginners.txt new file mode 100644 index 0000000..18cf893 --- /dev/null +++ b/docs/historical/beginners.txt @@ -0,0 +1,1011 @@ + + + + + MH for Beginners + + + + Mary Hegardt Tim Morgan + + + + April 12, 1990 + + + +This document is intended to be an introduction for new users to the MH + +mail system. For more detailed information, users will want to read the + +document called The Rand MH Message Handling System: User's Manual + +by Marshall T. Rose and John L. Romine. It is available for Xeroxing in + +suite CS408. + + + +1 Using Electronic Mail + + + +Electronic mail (e-mail) is a quick, convenient way to send a message to + +another person (or persons). The message recipient can read and reply to + +the message at his convenience. E-mail is much faster than a paper memo + +and avoids inconveniences associated with the telephone such as unwanted + +interruptions and "phone tag." + + +At UCI, one can send e-mail to people within the ICS department, people in + +other units on campus, and to people at some other institutions off campus + +(usually other universities). + + +An electronic mail message consists of two parts: the headers and the body. + +The body comes after the headers and consists of the "message": whatever + +the sender types in. The headers are the lines at the top of the message + +including the subject and addresses of the people to whom the message is + +addressed. It is similar to the top lines of a memo: To:, From:, Subject:, + +and so on. The headers are separated from the body by a blank line. As in + + + + 1 + + + + +memos, the people listed in the Cc: field are not intended to be the primary + +recipients of the message. The message is for their information only, and + +they are not expected to reply. + + +E-mail is also useful for discussions among groups of people. This "bboards" + +(electronic bulletin boards) facility will be discussed later. + + +An electronic mail address looks like "name @site ". The name is a person's + +"mail handle" _ usually his first initial followed by his last name. For + +example, Mary Hegardt's mail handle is "mhegardt". The site is the system + +where the addressee receives mail. Within the ICS Department, you need + +only know the person's mail handle; the mail system will automatically fill + +in the "@site " part. + + + +2 Why MH ? + + + +The MH system is very different from most mail user agents. Instead of + +running one large program which handles all mail functions and keeps mes- + +sages in one large file, MH is a collection of smaller single-purpose programs + +used to manipulate mail messages which are kept in individual files. MH + +may seem to be more complicated or harder to use than other mail systems + +(MM, for example), but MH has been designed to allow you to take full ad- + +vantage of existing Unix1 commands and programs in connection with mail + +messages. For example, you can use your usual text editor, spelling program, + +and printer commands on individual messages. + + + +3 The Basics + + + +The first time you use an MH command (probably inc), MH will create a + +directory called "Mail" in your home (login) directory. All your mail will be + +stored in directories beneath this one. It will also create a file in your home + +directory called .mh_profile. It is a file that allows you to tailor your MH + +environment. We'll discuss this more later. +________________________________________________ + 1 Unix is a trademark of AT&T Bell Laboratories + + + + 2 + + + + +3.1 Reading Mail + + + +When someone sends a mail message to you, it is delivered to a file called + +your "mail drop" file. When you are ready to read your mail, you have to + +incorporate (or "inc") your mail messages from the mail drop area into your + +account. + + +Everytime you log in to your Unix account, you will be told if you have + +new mail messages. When you are ready to read them, type inc. The inc + +program will copy your mail into your "inbox" and generate a "scan" listing + +of the new messages. For example, + + + +4.2 BSD UNIX #116: Mon Jul 15 14:03:21 PDT 1985 +You have new ZOTnet mail, type "inc" (or mail) + +TERM = (dm1520) + +% inc + +Incorporating new mail into inbox ... + + 1+ 10/29 1732-PST Tim Morgan new bboard! < + + + + 3 + + + + + Please add us to the unix-sw list. Also, if RAJ hasn't mentioned it, + and if it still exists, we should get on the Astronomy bboard. + + Tim + + + +If the message is longer than one screenful, you will see the word "more" at + +the bottom_of_the_screen.__When you are ready to see "more" of the message,______ + +press the __space_bar______ __to see another screenful, or press the __return____ _key to see + +just one more line. + + +To see the next message, you could type a couple of different commands: + + + % next + + +or + + + % show next + + +or + + + % show 2 + + +All of these commands would have the same effect: to type out the next + +message in the list. The most efficient thing to do is to type "next". When + +You do that, message number 2 will be shown and become the "current + +message". + + + +% next + + +(Message inbox:2) +Received: from UCI-20B by UCI-ICSA id aa01222; 12 Nov 85 0:23 PST +Date: 12 Nov 1985 0016-PST +From: ROODE@uci-20b +Subject: CP6 from the 20s +To: zotnet@uci-20b +cc: dana_roode%ucicp6@UCI.EDU + + +What is (will be) the prescribed method of addressing for sending +CP6 mail from the 20s? They dont seem to know about @CF, @UCICP6, +but "Name_Name%UCICP6"@ICSA seems to fly. + + +dana + + + + 4 + + + + +3.2 Selecting Messages + + + +As you have seen, messages can be referred to by their message numbers. + +Some MH commands, such as show, can act upon more than one message + +at a time. A range of messages can be specified using the form "name1- + +name2 " where name is a message number or one of the reserved message + +names described below: + + + + cur The current message (the last one that was handled) + + + next The next message (same as cur + 1) + + + prev The previous message (cur 1) + + + first The first message in the current folder + + + last The last message in the folder + + + all All messages (first last ) + + + +If you do not name a specific message, the command will act upon the "cur- + +rent message". + + + +3.3 Sending Messages + + + +A mail message consists of two parts: the headers and the body. The headers + +are the lines at the top of the message that say "To:" and so on. The body + +is the actual text of the message (what you want to say). To send someone + +a message, you start with the comp command. This will start up an editor + +called prompter that will prompt you to fill in_the_headers._ You should type + +the requested information for that header or a __return____ _to_omit_it._ You should + +end the message by typing control-D (press down the key marked __ctrl__ __and + +strike the D key) at the beginning of a new line. Here's an example: + + + +% comp + +To: morgan, raj + +Cc: + + + + 5 + + + + +Subject: Lunch + +--------- + +Where are we going for lunch today ? + + + +Mary + + + +-------- + +What now ? send + + + +At the "What now ?" prompt you can type a ? to see what commands you + +can type next. One of the most useful options at this point is to edit the + +draft of the message to correct any mistakes. To do this you type: + + + What now ? edit vi + + +This will put you in the vi editor to edit the message. If you use emacs or any + +other editor, just type "edit emacs" or whatever. When you have finished + +editing, just exit the editor as you would normally. You will then get another + +"What now ?" prompt. Here are some of the "What now" options: + + + + edit editor Edit the message using the specified editor. When you + + exit, you will be back at What now. + + + list Shows the message you just typed + + + whom -check Verifies that the addresses you have used are valid as far + + as our system can tell + + + send Sends the message to the recipients + + + push Sends the message in the background + + + quit Quits without sending the message. Saves the text of + + the message as a "draft". Type comp -use to get back + + to that draft later. + + + quit -delete Quit, throwing away the draft + + + +Make sure you are happy with your message before typing send. There is no + +way to recall a message once it has been sent. + + + + 6 + + + + +3.4 Replying to Messages + + + +To reply to the current message type repl. When you do this, the reply + +headers will be printed out and you will be put in the prompter editor to + +type in your reply text. When you are replying to a message, the name of + +the sender of the original message will appear in the "To:" field. Any people + +on the "To:" or "Cc:" lists will also be copied on your reply message. As + +with comp, when you have finished, type control-D and send (or whatever) + +at What now ?. + + + +3.5 Forwarding Messages + + + +If you receive a particularly interesting message and can't resist sharing + +it with others, you can forward it using the forw command. You will be + +prompted to fill in the headers (the address to which the message is to be + +forwarded, etc.). When you have done this, you will see the text of the mes- + +sage which you are forwarding and will be given the opportunity to add some + +enlightening text to the message. Exit with control-D and do whatever feels + +good at the What now ? prompt. + + + +3.6 The Advanced Features + + + +You will probably want to master the beginning MH concepts before you + +tackle the following. . . + + + +3.7 Folders + + + +Folders are really just directories for storing mail messages in an organized + +way. To store a message in a folder named "inbox", type: + + + % refile 5 +inventory + + +If the folder doesn't exist yet, you will be asked if it should be created. To + +access messages in another folder, you can change your current folder from + + + + 7 + + + + +"inbox" to something else. If you want to look at all the messages pertaining + +to the inventory, you type: + + + % folder +inventory + + +and now you use scan, show, etc., to manipulate the messages in that folder. + +To change back to inbox, type: + + + % folder +inbox + + +Using the inc command will change your current folder to be the "inbox" + +automatically. + + + +4 Mailing files + + + +Mailing files is usually not a good idea, especially for large files. The mail + +system was never designed for moving big files. You can use the cp file to + +move the file to another account much more efficiently: + + + % cp "frated/desired-file "./newfile + + +This will copy the file from frated's account to the current directory and call + +it "newfile". + + +You can also copy files across the network using rcp: + + + % rcp icsd:frated/desired-file ./newfile + + +This copies frated's file on the system icsd to the current directory. + + +If you really have to mail a file, you use the mhmail program. To mail a file + +"myfile" to another user "frated", with "MyFile" as the subject type: + + + % mhmail frated -subject MyFile < myfile + + + +5 Searching for messages + + + +The pick program allows you to search your inbox (or any other) folder to + +find messages which contain a certain word. If you want to list all messages + + + + 8 + + + + +from Smith you can type: + + + % pick -from smith -list + + +and it will list the numbers of all messages from Smith that are in the cur- + +rent folder. You can pick messages according to any of the headers (-to + +-from -subj -cc or -date) or just search all the messages for a given word + +(-search). + + + +6 The MH Profile + + + +Each MH user has a file in his directory called .mh_profile. This file contains + +a list of user-specified default options for MH programs. The only required + +entry is the name of your MH directory: + + + Path: Mail + + +or + + + Path: mhbox + + +To make a change to your .mh_profile, you edit the file and add a line for + +the applicable program. For example, if you would like to use vi instead of + +prompter as your initial editor when composing messages, you would add + +this line to your .mh_profile: + + + comp: -editor vi + + +or, if you want to have a format file for scan to use, you should have: + + + scan: -form formatfile + + +Almost all of the MH programs have options that can be set using the + +.mh_profile. You should consult the MH User's Manual for more infor- + +mation about this. + + +Many people will want to add a signature line to their .mh_profile. This + +line will appear as your signature on the From: line in messages you send. It + +looks like this: + + + + 9 + + + + + Signature: John Q. Public + + +Occasionally people express an interest in getting rid of some of the header + +lines in their mail messages. They don't want to see the "Received from", + +"Via" information, or some other header. It is possible to prevent these + +and other annoying headers from being displayed by changing your show + +processor to be mhless. To do this you must add this line + + + showproc: mhless + + +to your .mh_profile. You also must create a file called ".mhlessrc" contain- + +ing the words which appear at the beginning of the lines you don't want to + +see. + + +The typical ".mhlessrc" file will look like this: + + + +Received + +Via + +BB-Posted + +Return-Path + + + +The ".mhlessrc" file must be in your home directory. + + + +7 BBoards + + + +Electronic bulletin boards (BBoards) are a convenient way for a group of peo- + +ple to discuss a particular topic. Messages are sent to an address where they + +can be read and replied to by all interested parties. In the ICS department + +we have some "local" BBoards which involve only people in the department. + +We also subscribe to many nationally distributed BBoards. BBoards are + +read using the bbc program which will allow you to read the messages with + +an MH-like interface. + + +One very important BBoard is "system". It contains vital news about + +changes in software, system downtime, new programs, and other informa- + +tion useful to all users. + + + + 10 + + + + +To read a BBoard, you type "bbc BBoard__name ". The bbc program will + +check to see if there are new messages in the named BBoard and if there are, + +it will start up msh so you can read them. The msh program allows you to + +use regular MH commands when reading BBoards. Type "show" to see the + +current message, "next" to see the next message, and so on. Type "quit" to + +quit reading the current BBoard. If you have named more than one BBoard + +on the command line or in your .mh_profile, bbc will continue processing + +the next BBoard in the list. + + +Here is an example of using bbc to read the system BBoard: + + + + 11 + + + + +% bbc system +Reading system, currently at message 1 of 22 +(msh) show + + +(Message 1, BBoard-ID: 1360) +BBoard-ID: 1360 +BB-Posted: Wed, 29 Jan 86 15:36:39 PST +Received: from localhost by UCI.EDU id a006693; 29 Jan 86 15:20 PST +To: network@UCI.EDU +Subject: Imagen 24300 +Date: Wed, 29 Jan 86 15:19:43 -0800 +From: Tinh Tang + + +The Imagen 24300 is now operating normally. It was broken down +due to the paper jammed in the drum. Luckily, it didn't cause +any damage. + + +/ttang + + +(msh) next + + +(Message 4, BBoard-ID: 1363) +BBoard-ID: 1363 +BB-Posted: Fri, 31 Jan 86 13:33:37 PST +Received: from localhost by UCI.EDU id a001631; 31 Jan 86 13:30 PST +To: msgs@UCI.EDU +Subject: uci.edu down 2/7/86 17:10 - 2/7/86 20:30 +Date: Fri, 31 Jan 86 13:30:27 -0800 +From: root@UCI.EDU + + +The uci.edu will be down from +February 7,1986 17:10 till February 7,1986 20:30. +The reason for the downtime is: +Both, the Computing Facility and the Physical Sciences Dataswitches +will be unavailable from 5:10pm until 8:30pm on Friday, February 7th. +Therefore all the Computers attached to those switches and the +corresponding tandem link will be unavailable to users on +the specified time. (RJ). + + +Downtime Scheduler + + +(msh) quit +% + + + + 12 + + + + +You can see a list of all the available BBoards by typing: + + + % bbc -topics + + +You can also put a line in your ".mh_profile" listing all the BBoards you + +want to read on a regular basis: + + + bboards: system movies mh-users events + + +Then you only need to type "bbc" to read all your BBoards. + + + +8 Checking for Mail + + + +Under Unix, there are many different ways to check for new mail. The easiest + +way to do it is to set the csh variable named "mail" to tell csh to check for + +new mail for you periodically. To do this, add the line + + + set mail=(60 /usr/spool/mail/$USER) + + +to the .login file in your home directory. This command says to check for + +mail if csh is about to prompt you with a % sign, and if it has been at least + +60 seconds since it last checked for mail. The advantage of this method of + +mail notification, besides simplicity, is that you will never be interrupted by + +a mail notification. You will only be notified about new mail when you are + +between commands. + + +If you want asynchronous mail notification, which will print to your terminal + +regardless of what you are currently doing, you may make use of a "receive + +mail hook" called "rcvtty". To do this, create a file in your home directory + +called ".maildelivery". In this file, put the line + + + * - pipe R /usr/uci/lib/mh/rcvtty + + +Then, each time mail arrives, you will receive a one-line "scan" listing of + +the mail if your terminal is world-writable. For more information on mail + +delivery files, type: + + + % man 5 maildelivery + + + + 13 + + + + +This will tell you about all the options available to you if you use maildelivery + +files. + + + +9 Aliases + + + +Using MH, you may specify your own private mail aliases. This feature allows + +you to store lists of addresses or long internet addresses of people with whom + +you frequently correspond in one file, and then to address them using short + +mnemonic names. Typically, you will call your alias file "aliases"; it must + +be stored in your MH directory. The format of this file is simple. The alias + +is given, followed by a colon, followed by one or more legal mail addresses + +separated by commas. For example, you might for some reason have an alias + +for all the users named "Rose" in the ICS department: + + + roses: prose, srose, mrose, drose + + +In addition to your "aliases" file, you will need to modify your + +.mh_profile in order to use aliases. You should add the flag "-alias + +aliases" to the entries for the commands ali, whom, send, and push, cre- + +ating entries for these programs if they aren't already in your .mh_profile. + +Now, messages addressed to "roses" will be distributed to all the people + +listed in the alias. + + +The ali command is used to show you what an alias expands to. You just + +type + + + % ali alias + + +and ali will respond with the expansion of the alias. Ali searches the system + +aliases file in addition to your private ones. + + + +10 Blind Lists + + + +There are two different types of so-called "blind addressing" of messages. + +The BCC: field allows you to add recipients to your message just like those + +who are CC'd, but the normal recipients will not see that the BCC recipients + + + + 14 + + + + +were copied on the message, their replies will not go to the blind recipients, + +and the blind recipients cannot (easily) reply to the message. + + +The second type of blind mailing is actually called a "group address list", + +although it is commonly referred to as a "blind list". The format of this type + +of address is + + + phrase : address__list ; + + +where the "phrase " is any English phrase of one or more words, and the + +address__list consists of one or more addresses separated by commas. The + +recipients of a message addressed in this fashion will see simply + + + phrase : ; + + +so when they reply to the message, their reply will come only to the sender + +(or the Reply-To: field, if one was specified), rather than going to all the + +recipients of the original list. For example, to use a group address list for the + +"roses" alias you would type: + + + To: People Named Rose: roses; + + +This type of group address is very useful for making up lists of related people, + +such as all the people working on a particular research project. + + + + 15 diff --git a/docs/historical/changes.pdf b/docs/historical/changes.pdf new file mode 100644 index 0000000..12b4c64 Binary files /dev/null and b/docs/historical/changes.pdf differ diff --git a/docs/historical/changes.txt b/docs/historical/changes.txt new file mode 100644 index 0000000..813e341 --- /dev/null +++ b/docs/historical/changes.txt @@ -0,0 +1,1452 @@ + + + + + + + + + + Changes to + The RAND MH Message Handling System: + UCI version MH 6.8 + + + John L. Romine + + Computing Support Group + Department of Information and Computer Science + University of California, Irvine + Irvine, CA 92717-3425 + Bug-MH@ICS.UCI.EDU + + + _A_B_S_T_R_A_C_T + + + This document describes the changes to the + UCI version of the RAND MH system from MH 6.6 to + this release of MH 6.8. This document is meant to + supplement, not supersede, the standard MH User's + manual and MH Administrator's manual. + + Comments concerning this documentation should + be addressed to the mailbox Bug-MH@ICS.UCI.EDU, or + ucbvax!ucivax!bug-mh. + + + + _A_C_K_N_O_W_L_E_D_G_E_M_E_N_T_S + + The _M_H system described herein is based on the original RAND + _M_H system. It has been extensively developed (perhaps too + much so) by Marshall T. Rose and John L. Romine at the + University of California, Irvine. Einar A. Stefferud, Jerry + N. Sweet, and Terry P. Domae provided numerous suggestions + to improve the UCI version of _M_H. + + Of course, a large number of people have helped _M_H + along. The list of "_M_H immortals" is too long to list here. + For this release, numerous _M_H-_W_o_r_k_e_r_s sent in fixes and + other changes. A handful of courageous _M_H-_W_o_r_k_e_r_s volun- + teered to beta-test these changes; their help is particu- + larly appreciated. + + + + + + + + + + + December 1, 1993 + + + + + + Changes to MH 6.8 2 + + + + _D_I_S_C_L_A_I_M_E_R + + The Regents of the University of California wish to make it + known that: + + Although each program has been tested by its con- + tributor, no warranty, express or implied, is made + by the contributor or the University of Califor- + nia, as to the accuracy and functioning of the + program and related program material, nor shall + the fact of distribution constitute any such war- + ranty, and no responsibility is assumed by the + contributor or the University of California in + connection herewith. + + _C_O_N_V_E_N_T_I_O_N_S + + In this document, certain formatting conventions are adhered + to: + + The names of UNIX commands, such as _c_o_m_p are presented + in _i_t_a_l_i_c_s. + + Arguments to programs, such as `msgs' and `-nobell' are + delimited by single-quotes. + + Text that should be typed exactly as-is, such as com- + mand lines (e.g., "folder -pack"), are delimited by + double-quotes. + + UNIX pathnames and envariables, such as /usr/uci and + $SIGNATURE, are presented in bold font. + + + + + + + + + + + + + + + + + + + + + + + + + December 1, 1993 + + + + + + Changes for MH 6.8.3 3 + + + _C_H_A_N_G_E_S _F_O_R _M_H _6._8._3 + + The MH 6.8.3 maintenance release contains few user-visible + changes. Most of the changes are internal to the multi- + media display program _m_h_n to support RFC 1521 (the new MIME + standard). This is the current version of MH as of December + 1, 1993. + + _R_u_n_t_i_m_e _T_a_i_l_o_r_i_n_g + + When posting mail using the SMTP, _p_o_s_t does not normally + send the HELO command. This is because _S_e_n_d_M_a_i_l would fail + if the host name given in the HELO command was the local + host. Later versions of _S_e_n_d_M_a_i_l will now complain if you + omit the HELO command. + + If you specify a hostname with the clientname: option + in the _m_t_s_t_a_i_l_o_r file, _p_o_s_t will give the HELO command with + that name, otherwise no HELO command is given. See _m_h- + _t_a_i_l_o_r(5) for more details. + + _U_s_e_r _I_n_t_e_r_f_a_c_e _P_r_o_g_r_a_m_s + + folder The _f_o_l_d_e_r command now has `-create' and `-nocreate' + options. See _f_o_l_d_e_r(1) for details. + + inc A bug where `-host' would not override the pophost + as set in the _m_t_s_t_a_i_l_o_r file has been fixed. This + bug was also fixed in _m_s_g_c_h_k. + + mhn The _m_h_n command has several changes: updates for + conformance with RFC 1521, addition of two caches: + public and private, addition of two caching poli- + cies: one for reading and one for writing, support + for storing multipart entities, and a few bug fixes. + See _m_h_n(1) for complete details. + + _C_H_A_N_G_E_S _F_O_R _M_H _6._8._2 + + The MH.6.8.2 patch release contains only internal changes to + support the BSD 4.4 and 386BSD versions of UNIX. This ver- + sion of _M_H was released August 25, 1993, but was not widely + distributed. + + _C_H_A_N_G_E_S _F_O_R _M_H _6._8._1 + + The MH.6.8.1 patch release is a maintenance release. This + is the current released version of _M_H as of August 20, 1993. + + This release includes a small number of bug fixes, a + few minor enhancements, some changes for the new MIME stan- + dard, and support for ESMTP (RFC 1425). Support for BSD 4.4 + and 386BSD is planned for the next release. + + + + + December 1, 1993 + + + + + + Changes for MH 6.8.3 4 + + + Many other fixes which have already been received are + still being merged. If you've sent an update for MH 6.8 to + Bug-MH@ics.uci.edu and it isn't in this release, it'll prob- + ably appear in the next release. + + _F_i_x_e_s _a_n_d _E_n_h_a_n_c_e_m_e_n_t_s + + Many minor documentation corrections were made. There are + also a few program changes: + + mhn The `-cache policy', `-[no]check', and `-[no]pause' + switches have been added. Some other minor changes + have been made to comply with the new MIME standard. + See _m_h_n(1) for complete details. + + post When posting mail with SendMail, _p_o_s_t will not use the + ONEX command when it is posting a message with BCCs. + + scan _s_c_a_n will now work with big width values. + + _F_o_r_m_a_t _S_t_r_i_n_g_s + + One new function has been added: + + %(profile arg) This function looks up a component in the + .mh_profile or context files and returns the + value of that component. + + _C_o_n_f_i_g_u_r_a_t_i_o_n + + Two new configuration options are present: + + GCOS_HACK The so-called "gcos" field of the password file + is used as a last resort to find the user's + full name (see _m_h-_p_r_o_f_i_l_e(5) for details). + Enable this option if your _p_a_s_s_w_d(5) man page + notes that the `&' character in the "gcos" + field stands for the login name. + + NORUSERPASS Tells _M_H that your system doesn't have the + _r_u_s_e_r_p_a_s_s(3) routine; _M_H will include its own + copy of this routine in its library. + + + + + + + + + + + + + + + + December 1, 1993 + + + + + + Changes for MH 6.8 5 + + + _C_H_A_N_G_E_S _F_O_R _M_H _6._8 + + This is the current released version of _M_H as of December + 14, 1992. This release includes a number of bug fixes and + internal changes to make the code more portable. Two new + authentication methods are provided for the POP, and support + for SVR4 shared libraries is complete. + + The major user-visible change in this release is the + incorporation of support for multi-media mail as specified + by the Multi-purpose Internet Mail Extensions (MIME) + RFC 1341. This allows you to include things like audio, + graphics, and the like, in your mail messages. A new com- + mand, _m_h_n, has been provided to support MIME and a detailed + man page is provided in _m_h_n(1). + + _D_o_c_u_m_e_n_t_a_t_i_o_n + + The documentation has some general improvements, and the + READ-ME document has been re-organized to help _M_H adminis- + trators find the appropriate configuration options for their + system. The Makefiles in the papers/ hierarchy have been + changed to invoke _T_e_X as "tex" (instead of "tex82"). + + The following new man pages are also available: + + _m_h_n(1) _m_h_n helps the user process multi-media mail. + + _m_h_p_a_r_a_m(1) _m_h_p_a_r_a_m lets the user extract information from + the _M_H profile. + + _p_o_p_a_u_t_h(8) the APOP database administration program (see + below). + + _p_o_p_i(1) the POP initiator (see below). + + _s_l_o_c_a_l(1) fully documents _s_l_o_c_a_l. The _m_h_o_o_k(1) man page + now documents only the _M_H receive-mail hooks. + + _I_n_t_e_r_n_a_l _C_h_a_n_g_e_s + + The _M_H source code is in the process of being cleaned up to + make pedantic ANSI C compilers happy. Occurrences of "NULL" + have been replaced by "0" where appropriate. Extra tokens + after "#else" and "#endif" have been put inside comments + (this is still in progress). The code should now compile + cleanly on many more systems, specifically, more variants of + SVR4. + + The version of tws/dtimep.c which was included in MH + 6.7.2 was incompatible with the _l_e_x library on some systems, + and has been removed. + + A bug in the handling of blind lists inside alias files + + + + December 14, 1992 + + + + + + Changes for MH 6.8 6 + + + has been fixed. + + _P_o_s_t _O_f_f_i_c_e _P_r_o_t_o_c_o_l + + There were three new options added to the POP. + + APOP This option indicates that the POP daemon will support + the non-standard APOP command which provides a + challenge-based authentication system using the MD5 + message digest algorithm. + + This option also causes the _p_o_p_a_u_t_h program to be in- + stalled, which allows the administrator to manipulate + the APOP authorization database. + + KPOP Support for KERBEROS with POP. This code builds _p_o_p_d, + _i_n_c and _m_s_g_c_h_k to support only the "kpop" protocol. + This code is still expiremental, but is available for + those sites wishing to test it. + + MPOP This option indicates that the POP daemon will support + the non-standard XTND SCAN command which provides per- + formance enhancements when using the POP over low- + speed connections. + + This option also causes an interactive POP client pro- + gram, _p_o_p_i, to be compiled and installed. A man page + for the _p_o_p_i program is also provided. This option + requires the configuration to have "bboards: pop". + + The APOP and MPOP non-standard POP facilities are documented + in _T_h_e _I_n_t_e_r_n_e_t _M_e_s_s_a_g_e (ISBN 0-13-092941-7), a book by + Marshall T. Rose. For more details, see support/pop/pop- + more.txt and the _A_d_m_i_n_i_s_t_r_a_t_o_r'_s _G_u_i_d_e. The APOP option + peacefully co-exists with the standard POP, KPOP completely + replaces the standard POP, and MPOP requires "bboards: pop". + + _F_i_l_e _L_o_c_k_i_n_g + + The file locking code has been cleaned up to support three + kinds of kernel-level file locking. As appropriate for your + system, include the LOCKF, FCNTL or FLOCK option. For more + details, see _m_h-_t_a_i_l_o_r(5). + + + + + + + + + + + + + + + December 14, 1992 + + + + + + Changes for MH 6.8 7 + + + Configuration Directives + + A number of new configuration directives have been added or + changed. The full details are given in the READ-ME. + + cp: The command used to install new files if not + "cp". + + ln: The command used to link files together in the + source tree if not "ln". + + mts: Full support for ZMAILER has been added. + + popdir: The directory where _p_o_p_d will be installed if not + /usr/etc. + + regtest: Set to "on" to prevent the hostname and compile + date from being included in _M_H binaries. + + sharedlib: You may now specify "sun4" or "sys5" (for SVR4) + shared libraries. + + signal: Specifies the base type of the function returned + by _s_i_g_n_a_l(). This was previously defined with + "options TYPESIG". + + Several `-D' options to _c_c have been added or changed: + + APOP Authenticated POP (see above). + + AUX Support for A/UX systems. + + DBMPWD The DBM option has been renamed DBMPWD. + + HESIOD Support for the HESIOD name server. + + KPOP KERBEROS POP (see above). + + LOCALE Support for local characters sets; uses the _s_e_t_- + _l_o_c_a_l() function. + + MAILGROUP Makes _i_n_c set-group-id. You may need this option + if your /usr/spool/mail is not world-writeable. + + MIME Multi-media mail. + + MPOP Mobile POP (see above). + + MSGID Enables _s_l_o_c_a_l to detect and surpress duplicate + messages. + + OSF1 Support for DEC OSF1 systems. May be incomplete. + + RENAME Include this option if your system has a _r_e_n_a_m_e() + + + + December 14, 1992 + + + + + + Changes for MH 6.8 8 + + + system call. + + SVR4 Support for System 5 Release 4 or newer systems. + + TYPESIG This option has been dropped. See `signal' + above. + + UNISTD Include this option if your system has the + include file . + + VSPRINTF Include this option if your system has the + _v_s_p_r_i_n_t_f() library routine; otherwise, __d_o_p_r_n_t() + will be used. + + YEARMOD Forces the _m_h-_f_o_r_m_a_t `year' function to return + 2-digit values. Use this option during a brief + transition period if you have local _m_h-_f_o_r_m_a_t + files which need to be converted to support 4- + digit years. + + _F_U_N_C_T_I_O_N_A_L _C_H_A_N_G_E_S + + In addition to the configuration changes mentioned above, a + number of functional changes have been made to the system. + Many programs have new features added and a few new programs + have are provided. Each command's manual page gives complete + information about the its operation. Here is a short sum- + mary of the changes. + + _M_H _S_e_q_u_e_n_c_e_s + + A larger number of user-defined sequences are available. + Previously, this number had been 10. On 32-bit systems, 26 + user-defined sequences are available. + + _P_r_o_f_i_l_e _C_o_m_p_o_n_e_n_t_s + + _M_H programs will now complain if the .mh_profile does not + end in a newline. Also, one enhancement and one new profile + component are provided: + + Aliasfile: Multiple filenames may now be given. + + Inbox: New; the default folder (for _i_n_c, etc.) if not + "inbox". + + + + + + + + + + + + + December 14, 1992 + + + + + + Changes for MH 6.8 9 + + + + _F_o_r_m_a_t _S_t_r_i_n_g_s + + A few minor bugs were fixed in format string handling, and a + few new features were added. See _m_h-_f_o_r_m_a_t(5) for complete + details. + + Addresses An attempt is made to decipher X.400 + RFC 987-style addresses. + + Comments Comments may be added to _m_h-_f_o_r_m_a_t files; a + comment begins with the 2-character sequence + "%;", and ends with an un-escaped newline. + + %(modulo n) The `modulo' function escape has been added. + + %(year{date}) The date parser has been enhanced to under- + stand more illegal date formats; `year' now + returns a 4-digit number. + + _U_s_e_r _I_n_t_e_r_f_a_c_e _P_r_o_g_r_a_m_s + + A number of _M_H commands have minor changes: + + ali The output with `-user -list' was changed to match + the output with `-nouser -list'. + + burst Will no longer drop the last message of a digest. + + inc Accepts the `-apop' switch for authenticated POP + (see above); will attempt to detect write errors + (e.g., no space left on device) when incorporating + mail; no longer replaces newline characters with + NULLs. + + folder The `-noprint' option was broken and has been + dropped. + + forw Supports `-mime' to use MIME-style multi-part mes- + sages. + + mhl Will no longer put an extra space at the end of + the `%{text}' in a formatfield. + + mhn New; manipulates multi-media (MIME) messages; a + detailed man page is provided. + + mhparam New; reads the _M_H profile (and context) and writes + the values of the specified components on the + standard output; useful in programmatic con- + structs. + + msgchk Supports `-apop' (see above). + + + + + December 14, 1992 + + + + + + Changes for MH 6.8 10 + + + packmbox New; packs an _M_H folder into a UUCP-style mailbox. + + popi New; a client-side POP initiator; available only + if you built _M_H with the MPOP option (see above). + + refile A bug where the `rmmproc' did not remove all + specified message files has been fixed. + + scan The `-file' option is fully supported and will no + longer complain about empty folders. + + send Supports `-mime' and `-split' to split large mes- + sages into multiple partial messages using MIME. + + _S_u_p_p_o_r_t _P_r_o_g_r_a_m_s + + fmtdump Can now read a format file, or a format string + given on the command line. + + popauth New; manages the APOP authorization database (see + above). + + sendmail The _s_e_n_d_m_a_i_l replacement will be installed only if + your `mts' setting uses the `/smtp' option. + + slocal A new man page for _s_l_o_c_a_l is available; the new + `mbox' action is available to write a file in + _p_a_c_k_f format; a bug where extra `>' characters + were written to MMDF-style maildrops has been + fixed; if compiled with the MSGID option, can + detect and suppress reception of duplicate mes- + sages. + + viamail New; bundles a directory (like _s_h_a_r) and sends it + through multi-media mail. + + + + + + + + + + + + + + + + + + + + + + + December 14, 1992 + + + + + + Changes for MH 6.7.2 11 + + + _C_H_A_N_G_E_S _F_O_R _M_H _6._7._2 + + The MH.6.7.2 patch release is a maintenance release. This + is the current released version of _M_H as of February 1, + 1992. + + This release now supports the NCR Tower running SYS5R4. + The WP changes installed in MH.6.7.0 have been removed. + + _S_h_a_r_e_d _L_i_b_r_a_r_i_e_s + + Support for SYS 5 shared libraries is in progress. + + Support for Sun OS 4.0 shared libraries had been + improved. The _M_H library has been modified to move initial- + ized data into a data definition file. The shared library + will now consist of a libmh.so and libmh.sa file. The + shared library version number will no longer track the _M_H + patch release number, and its numbering begins with version + `1.1' with this release. + + _R_e_p_l_a_c_e_m_e_n_t _S_e_n_d_M_a_i_l + + Since many standard system programs expect to post mail by + invoking /usr/lib/sendmail, a minimal replacement _S_e_n_d_M_a_i_l + is provided in this release. This replacement is meant to + be installed on (e.g., diskless) client workstations which + post mail using SMTP, and do not run a message transport + system. It will call _p_o_s_t to post mail; be sure you have + configured _M_H with the `/smtp' mts option. This sendmail + replacement is installed in your _M_H etc directory, and you + should link /usr/lib/sendmail to it. + + _F_o_r_m_a_t _S_t_r_i_n_g_s + + A manual page for the _f_m_t_d_u_m_p format string disassembler is + supplied, and some new format functions were added: + + folder In _s_c_a_n, this component escape contains the name of + the current folder. It is not defined for other _M_H + commands. + + getenv This function escape returns the value of an en- + vironment variable. + + There will be some additional changes in these routines + in the next patch release. + + + + + + + + + + + Feb 1, 1992 + + + + + + Changes for MH 6.7.2 12 + + + + _O_t_h_e_r _B_u_g _F_i_x_e_s _a_n_d _E_n_h_a_n_c_e_m_e_n_t_s + + In addition to some other minor enhancements, some bugs were + fixed which in general were not user-visible: + + Blind lists Users may now specify RFC822 address groups in + their alias files. These groups are imple- + mented by _M_H as blind lists. + + date parsing A number of sites have brain-damaged versions + of lex. _M_H will now come with the date parser + already run through lex. + + mark A bug dealing with _m_a_r_k and the sequence named + `cur' is fixed. This was previously a problem + for mh-e users. + + MH.doc The _M_H nroff version of the manual no longer + contains teletype escape sequences. + + scan Can now handle headers as long as 512 bytes. + + Signals _M_H programs will no longer catch the HUP and + TERM signals while waiting for a sub-process. + This was causing hung processes when your ter- + minal line was was dropped unexpectedly. + + Signature If your signature is not defined, _M_H will use + the value of the gecos field of your + /etc/passwd entry as your signature. + + version.sh A bug in the awk script in config/version.sh + was fixed. + + + + + + + + + + + + + + + + + + + + + + + + Feb 1, 1992 + + + + + + Changes for MH 6.7.1a 13 + + + _C_H_A_N_G_E_S _F_O_R _M_H _6._7._1_a + + The MH.6.7.1a patch was made available on January 25, 1991 + for limited distribution only. (This release had some known + bugs, and so was not widely distributed.) This release + incorporates several new features of particular note to + users of sequences and format strings, as well as some gen- + eral documentation improvements. There are a few minor + enhancements and internal bug fixes also. Complete documen- + tation of these changes is given in the individual manual + pages, and the READ-ME file. + + _M_e_s_s_a_g_e _S_e_q_u_e_n_c_e_s + + A new manual page, _m_h-_s_e_q_u_e_n_c_e (5), has been added. This + manual page attempts to completely document the syntax and + semantics of _M_H message sequence specifications. + + A powerful new feature is the ability to specify mes- + sage ranges with user-defined sequences. The specification + "name:n" may be used, and it designates up to the first `n' + messages (or last `n' messages for `-n') which are + elements of the user-defined sequence `name'. + + The message specifications "name:next" and "name:prev" + may also be used, and they designate the next or previous + message (relative to the current message) which is an ele- + ment of the user-defined sequence `name'. The specifica- + tions "name:first" and "name:last" are equivalent to + "name:1" and "name:-1", respectively. The specification + "name:cur" is not allowed (use just "cur" instead). + + These specifications allow the user to step through a + sequence with a command like "show name:next". + + _F_o_r_m_a_t _S_t_r_i_n_g_s + + _M_H format strings now support an if-then-elseif-else clause + (the `elseif' is new). This will make format strings with + multi-case conditions somewhat less complex. + + A new format function `addr' had been added. This + function takes an address header name as its argument, and + returns a rendering of the address contained in that header + as "user@host" or "host!user". + + Format widths now may be specified as a negative + number. This causes the output to be right-justified within + the format width. + + + + + + + + + January 25, 1991 + + + + + + Changes for MH 6.7.1a 14 + + + + _O_t_h_e_r _C_h_a_n_g_e_s + + Along with a few minor enhancements, some bugs were fixed + which in general were not user-visible: + + fmtdump This new program produces an pseudo-language + representation of an _M_H format file, vaguely remin- + iscent of assembly language. While this output + format is not explicitly documented, it can still + be useful when debugging _M_H format files. + + refile Now takes a `-[no]rmmproc' switch. This makes it + easier to avoid loops when your "rmmproc" calls _r_e- + _f_i_l_e. + + slocal A problem with the UUCP-style mailboxes, the + `RPATHS' configuration option, and the "Return- + Path:" header was fixed. + + sortm Will ensure that no messages are lost if it is in- + terrupted. + + whatnow Will now tell you where it is leaving the draft, + when interrupted in the initial edit. Previously + the draft was simply unlinked. + + _C_o_m_p_i_l_a_t_i_o_n _O_p_t_i_o_n_s + + LOCKF This option causes _M_H to use the lockf() system + call for locking (if available), instead of + flock(). + + + + + + + + + + + + + + + + + + + + + + + + + + January 25, 1991 + + + + + + Changes for MH 6.7.1 15 + + + _C_H_A_N_G_E_S _F_O_R _M_H _6._7._1 + + The MH.6.7.1 patch release is a maintenance release, and as + such, provides few changes from the previous release. This + is the current released version of _M_H as of December 14, + 1990. + + _U_s_e_r-_V_i_s_i_b_l_e _C_h_a_n_g_e_s + + The major change in this release is to the POP daemon + (popd). In _M_H 6.7, it was changed to be able to read both + UUCP and MMDF-style mailboxes. This did not work as + reported. The code has now been changed to parse MMDF-style + mailboxes if you are configuring MH to run with MMDF as your + message transport system. Otherwise, UUCP-style mailboxes + are expected. + + Since there are number of client programs available for + only the POP2 protocol instead of POP3, popd has been + updated to support both protocols. This is a major win. If + you are compiling with POP turned on, add the `POP2' option + to your _M_H config file, and the POP daemon will respond to + POP2 or POP3 commands. If you're using POP, there's no rea- + son not to include this option; it does not affect the + existing support for POP3. + + _I_n_t_e_r_n_a_l _C_h_a_n_g_e_s + + Some bugs were fixed which in general were not user-visible: + + context Errors when writing out sequences are detected + correctly. + + inc No longer inserts extra blank lines into mes- + sages. + + mh-format A nil pointer bug in the address parser was + fixed. + + repl, etc. The malloc/free problem has been fixed. + + rmf A spelling error in the `-nointeractive' switch + has been corrected. + + rcvtty Will not print the message size if not available + (i.e., zero). + + send/post Illegal signatures (those containing unquoted + "."s) will be quoted. + + + + + + + + + December 14, 1990 + + + + + + Changes for MH 6.7.0 16 + + + _G_E_N_E_R_A_L _C_H_A_N_G_E_S _F_O_R _M_H _6._7._0 + + The author is pleased to announce that there are very few + user-visible changes to _M_H 6.7 from the previous _M_H 6.6 dis- + tribution. The majority of development was in the form of + bug fixes and slight enhancements. In addition, this + release is slightly faster than the previous release. With + a few minor exceptions, it is backward-compatible with the + previous release. _M_H 6.7.0 is the current released version + of _M_H as of April 12, 1990. + + The changes were made mainly to generalize the source + code to be compatible with a larger range of systems and + compilers. There were many small changes to add declara- + tions for ANSI C compliance. The System 5 support has been + brought up to SYS5 R3, and there is support for Sun OS 4.0. + + _U_s_e_r-_V_i_s_i_b_l_e _C_h_a_n_g_e_s + + Here a quick summary of the changes that were made which are + not backward-compatible with the previous release of _M_H: + + repl The `-format' and `-noformat' switches have not been + functional since _M_H 5, and have been removed. Any + users who have these switches in their .mh_profile, + will have to remove them. + + sortm Previously, in most cases _s_o_r_t_m would fill-in any + gaps in the numbering of a folder, by renumbering the + messages starting with `1'. This will no longer + occur; for this behavior, use "folder -pack". + + + _U_s_i_n_g _A_l_i_a_s_e_s + + A new profile entry `Aliasfile:' has been added. The _a_l_i, + _s_e_n_d, and _w_h_o_m programs will look for this profile entry and + treat it as they would an argument to `-alias'. This should + make it easier for novice _M_H users to begin using aliases. + + + _R_e_a_d_i_n_g _N_e_t_w_o_r_k _N_e_w_s & _B_B_o_a_r_d_s + + The UCI BBoards facility can read local BBoards, and if com- + piled with the `bboards: pop' and `pop: on' options, can + also read remote BBoards using the Post Office Protocol (POP + ver. 3). With this release, _M_H can instead be compiled to + read the Network News (i.e., USENET) using the Network News + Transfer Protocol (NNTP). + + This capability is enabled by compiling _M_H with the + `bboards: nntp' and `pop: on' options. Unfortunately, read- + ing remote BBoards via the POP and reading the Network News + via the NNTP are mutually exclusive options. + + + + April 12, 1990 + + + + + + Changes for MH 6.7.0 17 + + + To support the NNTP, a new module, uip/pshsbr.c, is + compiled and loaded into _b_b_c and _m_s_h instead of + uip/popsbr.c. The default BBoard is changed from "system" + to "general" for the NNTP. + + When reading BBoards, _b_b_c will first look for local + BBoards, and then contact the NNTP server to read the Net- + work News. The location of the NNTP server should be speci- + fied with the `nntphost:' entry in the mtstailor file (see + the _M_H Administrator's Guide for details), or may be speci- + fied on the command line with the `-host' switch. + + + _F_o_r_m_a_t _S_t_r_i_n_g_s + + The manual page _m_h-_f_o_r_m_a_t (5) has been rewritten to give a + better explanation of how to write format strings, and how + they are interpreted by _M_H. A line-by-line description of + the default _r_e_p_l form file (replcomps) is now included in + that manual page. + + Some new format functions were added, and others were aug- + mented: + + trim Strips any leading and trailing white-space from + the current string value. + + date2local Will coerce the date to the local timezone. + + date2gmt Will coerce the date to GMT. + + divide Divides the current numeric value by its argu- + ment. This could be useful for building _s_c_a_n + format strings which print large message sizes + in "Kb" or "Mb". + + friendly If the address field cannot be parsed, this + function will return the text of the address + header, instead of a null string. + + szone A flag indicating whether the timezone was ex- + plicit in the date string. + + _P_R_O_G_R_A_M _C_H_A_N_G_E_S + + In addition to the general changes mentioned above, many + programs have specific new features added, either by new + switches or by expanded functionality. Each command's + manual page gives complete information about its new + options. Here is a short summary. + + _U_s_e_r _I_n_t_e_r_f_a_c_e _P_r_o_g_r_a_m_s + + anno Accepts a `-nodate' switch which inhibits the date + + + + April 12, 1990 + + + + + + Changes for MH 6.7.0 18 + + + annotation, leaving only the body annotation. + + folder When invoked with the `-pack' switch and the new + `-verbose' switch, _f_o_l_d_e_r will give information + about the actions taken to renumber the folder. + + On most systems, _f_o_l_d_e_r can now create any + non-existing parent folders of a new sub-folder. + + forw When making digests, _f_o_r_w will put the issue and + volume numbers in addition to the digest list + name, in the digest trailer. + + inc Detects NFS write failures, and will not zero your + maildrop in that event. + + msh Supports a variant of the new _s_o_r_t_m. + + prompter Considers a period on a line by itself to signify + end-of-file when the `-doteof' switch is speci- + fied. + + repl The `-[no]format' switches have not been used + since _M_H 5 and have been deleted. _r_e_p_l will now + find filter files in the _M_H library area. + + scan With the `-file msgbox' switch, _s_c_a_n can list a + _p_a_c_k_f'd-format file directly (without using _m_s_h). + + Lists messages in reverse order with the + `-reverse' switch. This should be considered a + bug. + + sortm Now has the options: `-textfield field', `-notext- + field', `-limit days', and `-nolimit'. + + With these options, _s_o_r_t_m can be instructed to + sort a folder based on the contents of an arbi- + trary header such as "subject". + + _s_o_r_t_m minimizes renaming messages, and will no + longer arbitrarily pack folders; for this + behavior, use "folder -pack". + + whatnow Deletes the draft by renaming it with leading + comma, instead of unlinking it. + + _M_H _S_u_p_p_o_r_t _P_r_o_g_r_a_m_s + + The following support programs also have changes or enhance- + ments: + + mhl Will now accept a format string on any component, + not just on addresses and dates. + + + + April 12, 1990 + + + + + + Changes for MH 6.7.0 19 + + + popd Will use _s_h_a_d_o_w passwords if compiled with the SHA- + DOW option. It can now also read UUCP-style mail- + drops directly. + + rcvtty If given no arguments, _r_c_v_t_t_y will produce a scan + listing as specified by a format string or file; a + default format string is used if one is not speci- + fied. + + Before the listing is written to the users terminal, + the terminal's bell is rung and a newline is output. + The `-nobell' and the `-nonewline' options inhibit + these functions. + + _r_c_v_t_t_y will obey terminal write notification set by + _m_e_s_g. With the `-biff' switch, _r_c_v_t_t_y will also + obey the mail notification status set by _b_i_f_f. + + On BSD43 systems, as with _w_r_i_t_e, _r_c_v_t_t_y will be + installed set-group-id to the group "tty". + + slocal Understands UUCP-style "From " lines and will write + output files using this format if appropriate. + Before invoking a delivery program, _s_l_o_c_a_l will + strip such lines unless compiled with the RPATHS + option, in which case it will will convert such + lines into "Return-Path:" headers. + + _s_l_o_c_a_l has a new result code "N", for use in .mail- + delivery files. With this result code, _s_l_o_c_a_l will + perform the action only if the message has not been + delivered and the previous action succeeded. This + allows for performing an action only if multiple + conditions are true. + + _D_O_C_U_M_E_N_T_A_T_I_O_N + + Several of the older _M_H papers have been difficult to format + because they depended on an older version of PhDTeX which + was not supplied. These papers have been updated, and some + TeX library files are supplied in papers/doclib/, so that + these papers may be generated on any system with TeX. + + Many of the manual pages have been revised to include + documentation of new command options, and some have been + expanded to give more detail. All are now slightly refor- + matted at installation time to make them more compatible + with programs like _m_a_k_e_w_h_a_t_i_s. + + + _M_H _A_D_M_I_N_I_S_T_R_A_T_I_O_N + + This section describes changes in configuring, compiling and + installing _M_H 6.7 and should not be of interest to casual _M_H + + + + April 12, 1990 + + + + + + Changes for MH 6.7.0 20 + + + users. The READ-ME file has been considerably revised and + expanded to give more detail about the configuration and + compilation options which have been included in this + release. Some compilation options have been removed, and + many new options have been added. + + All _M_H Makefiles have been updated to work around some + incompatibilities introduced in newer versions of _m_a_k_e. _M_H + programs will no longer be installed with the sticky-bit + turned on. + + Reading this section not a substitute for carefully + reading the READ-ME file before attempting to compile _M_H + + + _B_u_g _F_i_x_e_s + + Some bugs were fixed which in general were not user-visible: + + address parser Fixed to allow use of the "AT" domain, and + some minor bugs were fixed pertaining to ad- + dress groups. + + date parser Improved to accept more forms of illegal + dates. Military timezones were removed. + + dynamic memory Many problems with corruption of the dynamic + memory pool have been fixed. + + locking Will open files for write, if necessary to + enable locking. + + nil pointers All reported nil pointer problems have been + fixed. + + replcomps The "In-Reply-To:" header had quotes added + around the date field to comply with RFC822. + + _W_h_i_t_e _P_a_g_e_s + + If _M_H is compiled with the WP option, _s_e_n_d recognizes an + address between "<<" and ">>" characters such as: + + To: << rose -org psi >> + + to be a name meaningful to a whitepages service. In order + to expand the name, _s_e_n_d must be invoked interactively + (i.e., not from _p_u_s_h). For each name, _s_e_n_d will invoke a + command called _f_r_e_d in a special mode asking to expand the + name. + + To get a copy of the white pages service, contact + wpp-manager@psi.com. + + + + + April 12, 1990 + + + + + + Changes for MH 6.7.0 21 + + + _C_o_n_f_i_g_u_r_a_t_i_o_n _O_p_t_i_o_n_s + + Some configuration options have been added or changed: + + cc To specify an alternate C compiler. + + ccoptions Defaults to `-O'. + + bboards May now be defined as "on", "off", "pop", or + "nntp". + + bbdelivery Determines whether the bboard delivery agent and + library files should be installed. + + lex To specify an alternate version of _l_e_x. + + mailgroup If defined, _i_n_c will be made set-group-id to + this group. + + sharedlib For SUN40 systems; if "on", makes libmh.a into a + shared library. + + slibdir The directory where the above shared library + should be installed. + + sprintf Set this to "int" if that's what your + _s_p_r_i_n_t_f (3) library routine returns. + + _C_o_m_p_i_l_a_t_i_o_n _O_p_t_i_o_n_s + + For different configurations, several `-D' options to _c_c + have been added or changed: + + BERK This disables the address and date parsing rou- + tines. If you want to do much with + _m_h-_f_o_r_m_a_t (5), don't enable this. + + BSD43 Will make _r_c_v_t_t_y set-group-id to the group + "tty". + + DBM For sites with a dbm-style password file (such + as with Yellow Pages), _M_H will not read the + entire passwd file into a cache. At one site + that runs YP on a large passwd file, using this + showed a 6:1 performance improvement. + + NETWORK This option has been deleted. See SOCKETS. + + NOIOCTLH Tells _M_H not to include the file sys/ioctl.h. + Use this if this file is not present on your + system. + + NTOHLSWAP On systems with TCP/IP networking, _m_s_h will try + to use the ntohl() macro from the file + + + + April 12, 1990 + + + + + + Changes for MH 6.7.0 22 + + + netinet/in.h to byte-swap the binary map files + it writes. + + SENDMAILBUG Some versions of _s_e_n_d_m_a_i_l return a 451 (failure) + reply code when they don't mean to indicate + failure. This option considers that code to be + equivalent to 250 (OK). + + SHADOW Causes _p_o_p_d to read the file /etc/shadow for + encrypted passwords instead of /etc/passwd. Use + this if you have a shadow password file (such as + on newer versions of SYSTEM 5). + + SOCKETS Enable this if you are on a non-BSD system with + a socket interface for TCP/IP networking compa- + tible with 4.2BSD UNIX. + + SUN40 Use on Suns running Sun OS 4.0 and later. + + SYS5 This option has been updated to refer to SYS5 R3 + and later systems. + + SYS5DIR Use this if your system uses "struct dirent" + instead of "struct direct". This should be true + for systems based on SYS5 R3 and later. + + TYPESIG Defines the base type for the _s_i_g_n_a_l system + call. This defaults to "int", but should be + defined as "void" if appropriate for your sys- + tem. + + WP Enables support for the White Pages service. + + _I_n_s_t_a_l_l_a_t_i_o_n + + _M_H will now explicitly set the protection mode on every file + it installs. + + Previously any existing file installed by _M_H would be + backed up into the source tree, and then overwritten. Now, + a few system-dependent files will not be overwritten, and + your changes will have to be merged in by hand. See the + READ-ME file for more details. + + + + + + + + + + + + + + + April 12, 1990 + + diff --git a/docs/historical/designOfMH.pdf b/docs/historical/designOfMH.pdf new file mode 100644 index 0000000..bf86e4f Binary files /dev/null and b/docs/historical/designOfMH.pdf differ diff --git a/docs/historical/mh-gen.pdf b/docs/historical/mh-gen.pdf new file mode 100644 index 0000000..d71cd7d Binary files /dev/null and b/docs/historical/mh-gen.pdf differ diff --git a/docs/historical/mh-gen.txt b/docs/historical/mh-gen.txt new file mode 100644 index 0000000..6c7f755 --- /dev/null +++ b/docs/historical/mh-gen.txt @@ -0,0 +1,1452 @@ + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + +NAME + mh-gen - generating the MH system + +READ THIS + This documentation describes how to configure, generate, and + install the UCI version of the RAND _M_H system. Be certain + to read this document completely before you begin. You + probably will also want to familiarize yourself with the _M_H + Administrator's Guide before you install _M_H. A copy can be + found in the file doc/ADMIN.doc is the _M_H sources. + +DISCLAIMER + Although the _M_H system was originally developed by the RAND + Corporation, and is now in the public domain, the RAND Cor- + poration assumes no responsibility for _M_H or this particular + modification of _M_H. + + In addition, the Regents of the University of California + issue the following disclaimer in regard to the UCI version + of _M_H: + "Although each program has been tested by its contribu- + tor, no warranty, express or implied, is made by the + contributor or the University of California, as to the + accuracy and functioning of the program and related + program material, nor shall the fact of distribution + constitute any such warranty, and no responsibility is + assumed by the contributor or the University of Cali- + fornia in connection herewith." + + This version of _M_H is in the public domain, and as such, + there are no real restrictions on its use. The _M_H source + code and documentation have no licensing restrictions what- + soever. As a courtesy, the authors ask only that you pro- + vide appropriate credit to the RAND Corporation and the + University of California for having developed the software. + +GETTING HELP + _M_H is a software package that is neither supported by the + RAND Corporation nor the University of California. However, + since we do use the software ourselves and plan to continue + using (and improving) _M_H, bug reports and their associated + fixes should be reported back to us so that we may include + them in future releases. The current computer mailbox for + _M_H is Bug-MH@ICS.UCI.EDU (in the ARPA Internet), and + ...!ucbvax!ucivax!bug-mh (UUCP). + + Presently, there are two Internet discussion groups, + MH-Users@ICS.UCI.EDU and MH-Workers@ICS.UCI.EDU. MH-Workers + is for people discussing code changes to _M_H. MH-Users is + for general discussion about how to use _M_H. MH-Users is + bi-directionally gatewayed into USENET as comp.mail.mh. + + + + +[mh.6] Last change: MH.6.8.3 1 + + + + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + +HOW TO GET MH + Since you probably already have _M_H, you may not need to read + this unless you suspect you have an old version. There are + two ways to get the latest release: + + 1. If you can FTP to the ARPA Internet, use anonymous FTP + to ftp.ics.uci.edu [128.195.1.1] and retrieve the file + pub/mh/mh-6.8.tar.Z. This is a tar image after being run + through the compress program (approximately 1.8MB). There + should also be a README file in that directory which tells + what the current release of _M_H is, and how to get updates. + + This tar file is also available on louie.udel.edu + [128.175.1.3] in portal/mh-6.8.tar.Z. You may also find MH + on various other hosts; to make sure you get the latest ver- + sion and don't waste your time re-fixing bugs, it's best to + get it from either ftp.ics.uci.edu or louie.udel.edu. + + 2. You can send $75 US to the address below. This covers + the cost of a 6250 BPI 9-track magtape, handling, and ship- + ping. In addition, you'll get a laser-printed hard-copy of + the entire MH documentation set. Be sure to include your + USPS address with your check. Checks must be drawn on U.S. + funds and should be made payable to: + + Regents of the University of California + + The distribution address is: + + Univeristy of California at Irvine + Office of Academic Computing + 360 Computer Science + Irvine, CA 92717 USA + + +1 714 856 5153 + + Sadly, if you just want the hard-copies of the documenta- + tion, you still have to pay the $75. The tar image has the + documentation source (the manual is in roff format, but the + rest are in TeX format). Postscript formatted versions of + the TeX papers are available, as are crude tty-conversions + of those papers. + +SYNOPSIS + MAKE + +DESCRIPTION + This is a description of how one can bring up an _M_H system. + It is assumed that you have super-user privileges in order + to (re-)install _M_H. Super-user privileges are not required + to configure or generate _M_H. + + + + +[mh.6] Last change: MH.6.8.3 2 + + + + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + + Become the super-user and cd to /usr/src/local/ (or whatever + you keep your local sources). The distribution tape con- + tains the hierarchy for the mh.6-8/ directory. Bring the + sources on-line: + + # cd /usr/src/local + % tar xv + % cd mh-6.8 + +CONFIGURATION + First, go to the conf/ directory. + + % cd conf/ + + This directory contains files that will produce source files + tailored for your choice of _M_H configuration. You should + edit only the file MH. This file contains configuration + directives. These configuration directives are read by the + _m_h_c_o_n_f_i_g program to produce customized files. + + For examples of various configurations, look in the direc- + tory conf/examples/. The file MH provided in conf/ is a + reasonable default. Lines beginning with `#' are comments, + and are not otherwise interpreted. + + Here are the _M_H configuration directives available. Be sure + to read through this list completely before attempting to + decide what directives are appropriate for your system. + + More information on some of these options is available in + the the _A_d_m_i_n_i_s_t_r_a_t_o_r'_s _G_u_i_d_e. If you do not have a printed + copy, you should configure your system with the default con- + figuration file, MH, then generate and print a copy of the + guide (as described below). + + Installation paths + bin: /usr/local + The directory where user-invoked programs go (see + manual section 1). + + etc: /usr/local/lib/mh + The directory where pgm-invoked programs go (see manual + section 8). + + mail: /usr/spool/mail + The directory where the maildrops are stored. If this + pathname is absolute (i.e., begins with a / ), then the + user's maildrop is a file called $USER in this direc- + tory. If the pathname is not absolute, then the user's + maildrop is in the user's home directory under the + given name. + + + + +[mh.6] Last change: MH.6.8.3 3 + + + + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + + mandir: /usr/man + The parent directory of the manual entries. + + manuals: standard + Where manual entries should be installed, relative to + the directory given with "mandir". Either "local" to + install manual entries under manl/, or "new" to install + manual entries under mann/, or "old" to install manual + entries under mano/, or "standard" to install manual + entries under man?/, or "bsd44" to install manual + entries as man?/_p_a_g_e.0, or "gen" to generate but not + install them, or "none" to neither generate nor install + them. + + Any of these values may have the suffix "/cat" appended + to it. In that case, the manual entries will be for- + matted with "nroff -man" and they will be installed in + the corresponding "cat?" directories. + + For example, to install manual entries under + /usr/man/u_man/man?, use "standard" and /usr/man/u_man + for "mandir". To install formatted manual entires + under /usr/contrib/man/cat?, use "standard/cat" and + /usr/contrib/man for "mandir". To install formatted + manual entries using the BSD44 convention, use + "bsd44/cat". + + chown: /etc/chown + The location of the _c_h_o_w_n(8) on your system. If _c_h_o_w_n + is in your search path, just use the value of "chown". + On SYS5 systems, this should probably be "/bin/chown". + + cp: cp + The command to copy files when installing, if not "cp". + (Some sites use "cp -p".) + + ln: ln + The command to link files together in the source tree, + if not "ln". If you're using something like lndir to + keep your compile tree separate from your source tree, + set this to "ln -s" or "cp". + + remove: mv -f + How _M_H should make backup copies of existing files when + installing new files. To simply remove the old files, + use "rm -f". + + Compiler/loader + cc: cc + The name of your C compiler, if not "cc". + + ccoptions: -O + + + +[mh.6] Last change: MH.6.8.3 4 + + + + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + + Options given directly to _c_c(1). The most common is + "-M" if you're running _M_H on an ALTOS. This defaults + to "-O". If you define this and want to keep "-O", be + sure to include it explicitly. If you're using the _G_N_U + C compiler, it should include `-traditional'. See + "options:" for `-D' options. + + curses: -lcurses -ltermlib + This should be the loader option required to load the + _t_e_r_m_c_a_p(3) and _c_u_r_s_e_s(3) libraries on your system. On + SYS5 systems, it probably should be just "-lcurses". + Some sites have reported that both "-lcurses" and + "-ltermlib" are necessary. + + ldoptions: -s + Options given directly to _l_d(1) (via _c_c) at the begin- + ning of the command line. Useful for machines which + require arguments to tell _l_d to increase the stack + space (e.g. the Gould, which uses "-m 8"). Usually, + "-s" is a good choice in any event. + + ldoptlibs: + Options given directly to _l_d(1) (via _c_c) at the end of + the command line. The two most common are: "-ldbm" if + you're running MMDF with the _d_b_m package; and, "-lndir" + if you are generating _M_H on a system which does not + load the new directory access mechanism by default + (e.g., 4.1BSD, SYS5). If you don't have _l_i_b_n_d_i_r on + your system, the sources are in miscellany/libndir/. + + lex: lex -nt + Alternative version of _l_e_x. Used in zotnet/tws/. + + oldload: off + This controls how _M_H will try to process library object + files to eliminate local symbols. Support for the + ALTOS loader if "on". Support for loaders not handling + `-x -r' correctly if "none". + + ranlib: on + Support for systems with _r_a_n_l_i_b(1). For SYSTEM 5 sys- + tems, this should be "off" which tells _M_H to use _l_o_r_d_e_r + and _t_s_o_r_t instead. Some SYSTEM 5 sites reported that + running this isn't always sufficient. If this is the + case, then you should edit conf/makefiles/uip to + include ../sbr/libmh.a and ../zotnet/libzot.a twice in + the LIBES variable. + + Message Transport System + mts: sendmail + Which message transport system to use. Either "mmdf" + to use _M_M_D_F as the transport system, "mmdf2" to use + + + +[mh.6] Last change: MH.6.8.3 5 + + + + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + + _M_M_D_F-_I_I as the transport system, "sendmail" to have + _S_e_n_d_M_a_i_l as the transport system, "zmailer" to have + _Z_M_A_I_L_E_R as the transport system, or, "mh" to have _M_H as + the transport system. + + On UNIX systems supporting TCP/IP networking via sock- + ets you can add the suffix "/smtp" to the mts setting. + This often yields a superior interface as _M_H will post + mail with the local _S_M_T_P server instead of interacting + directly with _M_M_D_F or _S_e_n_d_M_a_i_l. Hence, for TCP/IP UNIX + systems, the "/smtp" suffix to either "sendmail" or + "mmdf2" is the preferred MTS configuration. The + "/smtp" suffix is described in detail in the + _A_d_m_i_n_i_s_t_r_a_t_o_r'_s _G_u_i_d_e; be sure to set "servers:" as + described in _m_h-_t_a_i_l_o_r(8) if you use this option. + + mf: off + Support for mail filtering on those systems in which + the message transport system isn't integrated with _U_U_C_P + This option is strictly for an _M_H system using either + _M_M_D_F-_I as its transport system or one using + "stand-alone delivery". + + UCI BBoards Facility + bboards: off + If "on", include support for the UCI BBoards facility. + BBoards may be enabled with any mts setting. If "off", + the BBoard reading program _b_b_c will not be installed. + If "nntp", include support for the UCI BBoards facility + to read the Network News via the NNTP. If "pop" (form- + erly "popbboards: on"), include support for the UCI + BBoards facility via the POP3 service; this setting + requires "pop: on". + + bbdelivery: off + If "off", the BBoards delivery agent and library files + will not be installed. If "on", and you set "bboards:" + to something besides "off", then the BBoards delivery + agent and library files will be installed in the _b_b_h_o_m_e + directory (see below). To read remote BBoards, the + usual configuration would have _b_b_c talk to a _P_O_P_3 or + _N_N_T_P server. However, it may be useful to set this to + "off" if you NFS mount the _b_b_h_o_m_e directory from + another host and want to use _b_b_c to read those files + directly. + + bbhome: /usr/spool/bboards + The home directory for the BBoards user. + + + + + + + +[mh.6] Last change: MH.6.8.3 6 + + + + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + + Post Office Protocol + pop: off + Support for POP service. This allows local delivery + for non-local users (a major win). See + support/pop/pop.rfc for more information on the POP. + This option currently works only on UNIX systems with + TCP/IP sockets. (It doesn't hurt to enable this option + regardless of whether or not you intend to use POP.) + See also "bboards: pop" to enable reading bboards with + the POP. + + popdir: /usr/etc + The directory where the POP daemon (popd) will be + installed. + + options: + `-D' options to _c_c(1). + + APOP='"/etc/pop.auth"' + This option indicates that the POP daemon will sup- + port the non-standard APOP command, and specifies the + name of APOP authorization database. The APOP com- + mand provides a challenge-based authentication system + using the MD5 message digest algorithm. This facil- + ity is documented in _T_h_e _I_n_t_e_r_n_e_t _M_e_s_s_a_g_e (ISBN + 0-13-092941-7), a book by Marshall T. Rose. + + This option also causes the popauth program to be + installed, which allows the administrator to manipu- + late the APOP authorization database. For more + details, see support/pop/pop-more.txt and the + _A_d_m_i_n_i_s_t_r_a_t_o_r'_s _G_u_i_d_e. + + DPOP + This option indicates that POP subscribers do not + have entries in the _p_a_s_s_w_d(5) file, and instead have + their own separate database (a win). + + KPOP + Support for KERBEROS with POP. This code builds + _p_o_p_d, _i_n_c and _m_s_g_c_h_k to support only the "kpop" pro- + tocol. This code is still experimental, but is + available for those sites wishing to test it. + + MPOP + This option indicates that the POP daemon will sup- + port the non-standard XTND SCAN command which pro- + vides performance enhancements when using the POP + over low-speed connections. This option also causes + an interactive POP client program, popi, to be com- + piled and installed. A man page for the popi program + is also provided. + + + +[mh.6] Last change: MH.6.8.3 7 + + + + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + + These extensions are described in _T_h_e _I_n_t_e_r_n_e_t _M_e_s_- + _s_a_g_e, a book by Marshall T. Rose. For more details, + see support/pop/pop-more.txt. Note: this option + requires "bboards: pop". + + POP2 + Have the POP daemon understand the older POP2 proto- + col as well as the _M_H POP3 protocol - a major win. + The POP daemon auto-magically determines which POP + protocol your client is using. If you're enabling + POP service, there's no reason not to enable this + option as well. See also _P_O_P_S_E_R_V_I_C_E. + + POPSERVICE + The port name the _M_H POP will use. For historical + reasons, this defaults to "pop". + + In 1987, the _M_H POP protocol (POP version 3) was pub- + lished as RFC1081 and was assigned its own port + number (110), which differs from the original POP + (version 1 and 2) port number (109). + + To have _M_H POP use the new assigned port number, set + POPSERVICE='"pop3"', and be sure that this service + name is listed in your /etc/services file on both POP + client and server hosts as "110/tcp". If you enable + _P_O_P_2, you can safely leave _P_O_P_S_E_R_V_I_C_E undefined + unless you are using POP3 clients besides _M_H. + + RPOP + This option indicates that support for the UNIX vari- + ant of POP, RPOP, which uses privileged sockets for + authentication be enabled. This peacefully co-exists + with the standard POP. + + SHADOW + Indicates that the popd POP server can find encrypted + passwords in the /etc/shadow file (and not in the + /etc/passwd file). It should be used only for some + (newer) SYSTEM 5 systems. + + The "APOP" and "MPOP" non-standard POP facilities are + documented in _T_h_e _I_n_t_e_r_n_e_t _M_e_s_s_a_g_e (ISBN 0-13-092941-7), + a book by Marshall T. Rose. For more details, see + support/pop/pop-more.txt. The "APOP" option peacefully + co-exists with the standard POP. The "MPOP" option + requires "bboards: pop". + + Shared libraries + sharedlib: off + If "sun4", makes libmh.a into a SunOS 4.0 (and later) + shared library. If you enable this, be sure to also use + + + +[mh.6] Last change: MH.6.8.3 8 + + + + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + + "options SUN40". If "sys5", makes libmh.a into a SYS5 + R4 (and later) shared library. If you enable this, be + sure to also use "options SVR4". + + slflags: -pic + The compiler flags to produce position independent code. + + slibdir: /usr/local/lib + The directory where the _M_H shared library should go. + + Under SunOS (sun4) + Since some _M_H programs are setuid, they'll only look for + the library in "trusted" locations. Putting the library + somewhere besides /usr/lib or /usr/local/lib is not + advisable. + + If you must do this, be sure that you add the path given + by slibdir to the compiler's library search list (e.g., + "ldoptions: -L/usr/mh/lib") and make sure the path + starts with a leading `/'. + + You may need to run _l_d_c_o_n_f_i_g(8) manually whenever a new + shared object is installed on the system. See _l_d(1) for + more information about using shared libraries. + + Under Solaris 2.0 (and newer) + The above instructions for SunOS apply, except you + should set the run-time library search path using `-R' + instead of `-L' (e.g., "ldoptions: -R/usr/mh/lib"). + + General System Dependencies + You should include the following directives which are + appropriate for your version of UNIX. If you don't know what + an option does, it probably doesn't apply to you. + + mailgroup: off + If set, _i_n_c is made set-group-id to this group name. + Some SYS5 systems want this to be set to "mail". Set + this if your /usr/spool/mail is not world-writeable. + + Note that slocal doesn't know how to deal with this, and + will not work under these systems; just making it set- + group-id will open a security hole. If you're using + "mailgroup", you should remove slocal (and its man page) + from your system. + + signal: int + The base type (int or void) of the function + parameter/return value of _s_i_g_n_a_l(2). The default is + int. Set "signal void" on systems which use this type + (e.g., SYSTEM 5 V3.0 and later or Sun OS 4.0 and later). + + + + +[mh.6] Last change: MH.6.8.3 9 + + + + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + + sprintf: char * + The return value of the _s_p_r_i_n_t_f library routine. This + defaults to "char *". Set this to "int" if you have an + older version of SYSTEM 5 which has this routine return + an "int" type. + + options: + `-D' options to _c_c(1). + + ALTOS + Use on XENIX/v7 systems. Also, be sure to use + "options V7". + + ATTVIBUG + This option causes _M_H to return to the "What now?" + prompt if your initial editor is vi and it exits with + non-zero status. Use on Sun OS 4.1 and other systems + where the /usr/ucb/vi editor was changed to exit with + its status equal to the number of pseudo-"errors" + encountered during the edit. This causes a problem + for programs that test the exit status of their editor + and abort if the status is non-zero. (This includes + _M_H and programs like /usr/etc/vipw). + + AUX + Use with AUX systems. + + BIND + If you are running with the BIND code on UNIX systems + with TCP/IP sockets (e.g. 4.{2,3}BSD), be sure to + define this. + + BSD41A + Use on 4.1a Berkeley UNIX systems. + + BSD42 + Use on Berkeley UNIX systems on or after 4.2BSD. + + BSD43 + Use on 4.3 Berkeley UNIX systems. Also, be sure to + use "options BSD42". If _o_p_e_n_l_o_g(3) (see "man 3 sys- + log") takes three arguments instead of two, and your + _w_r_i_t_e(1) command is set-group-id to group "tty", use + this option. If only one of these conditions is true, + you lose. + + BSD44 + Use on Berkeley UNIX systems on or after 4.4BSD. + Also, be sure to use "options BSD43" and "options + BSD42". + + DBMPWD + + + +[mh.6] Last change: MH.6.8.3 10 + + + + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + + Use this option if your _g_e_t_p_w_e_n_t(3) routines read a + dbm database (such as with Yellow Pages) instead of + doing a sequential read of /etc/passwd. Without + DBMPWD the entire passwd file is read into memory one + entry at a time for alias expansion. This is a per- + formance improvement when reading a standard + /etc/passwd file, but is _v_e_r_y slow on systems with a + dbm database. At one site that runs YP on a large + passwd file, it showed a 6:1 performance improvement. + + GCOS_HACK + The so-called "gcos" field of the password file is + used as a last resort to find the user's full name + (see _m_h-_p_r_o_f_i_l_e(5) for details). Enable this option + if your _p_a_s_s_w_d(5) man page notes that the `&' charac- + ter in the "gcos" field stands for the login name. + + FCNTL + Directs _M_H to use the fcntl() system call for kernel- + level locking. If you're using a SYS5 system, you may + want this option. (See also `FLOCK' and `LOCKF'). + + FLOCK + Directs _M_H to use the flock() system call for kernel- + level locking. If you're on a BSD42 system, and + you're not using NFS to read or write maildrops, you + should enable this option. (See also `FCNTL' and + `LOCKF'). + + HESIOD + Support for HESIOD. This code was contributed, and + included no documentation. + + LOCKF + Directs _M_H to use the lockf() system call for kernel- + level locking. If you're using NFS to read or write + maildrops, you should enable this option. (See also + `FLOCK' and `FCNTL'). + + locname + Hard-wires the local name for the host _M_H is running + on. For example, locname='"PICKLE"'. It's probably + better to either let UNIX tell _M_H this information, or + to put the information in the host specific mtstailor + file. + + MORE + Defines the location of the _m_o_r_e(1) program. On + ALTOS and DUAL systems, set MORE='"/usr/bin/more"'. + The default is "/usr/ucb/more". + + NDIR + + + +[mh.6] Last change: MH.6.8.3 11 + + + + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + + For non-Berkeley UNIX systems, this _M_H will try to + find the new directory access mechanism by looking in + if this option is given. Otherwise, _M_H will + try . If you still can't get this to work on + your system, edit h/local.h as appropriate. (See also + `SYS5DIR'.) + + NFS + Tells _M_H to hack around a problem in the NFS C + library. If you get an undefined symbol "ruserpass" + when compiling _M_H, you probably need this option. If, + however, you include this option and get an undefined + symbol "__ruserpass" when compiling, then you should + omit this option. (See also `NORUSERPASS'.) + + NOIOCTLH + Tells _M_H not to include the file . To be + used on systems where this file is not present. + + NORUSERPASS + Tells _M_H that your system doesn't have the _r_u_s_e_r_- + _p_a_s_s(3) routine; _M_H will include its own copy of this + routine in its library. (See also `NFS'.) + + NTOHLSWAP + Tells _M_H to use the ntohl() macro when processing _m_s_h + binary map files. _M_H can use this macro on systems + with the include file netinet/in.h, to byte-swap the + binary information in these map files. If you're + using the same map files on machines of different + architectures, enable this option. + + RENAME + Include this option if your system has a rename() + library call. This is true on BSD42 and newer and + some SYS5 systems. + + SENDMAILBUG + Causes SMTP reply code 451 (failure) to be considered + the same as code 250 (OK). Since this might cause + problems, only enable this if you are certain that + your SendMail will return this code even when it + doesn't mean to indicate a failure. + + SOCKETS + Indicates the availability of a socket interface for + TCP/IP networking that is compatible with 4.{2,3}BSD + UNIX. It is not necessary to define this when BSD42 + is already defined, but it might be useful for SYSTEM + 5 or HPUX systems with TCP/IP sockets. + + SUN40 + + + +[mh.6] Last change: MH.6.8.3 12 + + + + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + + Use on Sun OS 4.0 (and later?) systems. You also will + need "options BSD42", "options BSD43", and "signal + void". + + If you're using Sun's brain-damaged approach to offer- + ing Domain Name Service through NIS, be sure to + include "options BIND" and "ldoptions -lresolv" to + work around some NIS/DNS bugs. + + SYS5 + Use on AT&T SYSTEM 5 R3 (and newer?) UNIX systems. + See also _m_a_i_l_g_r_o_u_p. + + SYS5DIR + Define this if your system uses "struct dirent" + instead of "struct direct". This is true of System V + Release 3.0 and later. Uses include file + and the routines _m_k_d_i_r, _r_m_d_i_r and _g_e_t_c_w_d. + + SVR4 + Use on AT&T SYSTEM 5 R4 (and newer?) UNIX systems. You + should also include "options SYS5" and "options + SYS5DIR". See also _m_a_i_l_g_r_o_u_p. You will also need to + include "oldload none" if your ld doesn't handle + `-x -r' correctly. + + TERMINFO + Define TERMINFO if you have it. You get it automati- + cally if you're running SYS5, and you don't get it if + you're not. (If you're not SYS5, you probably have + termcap.) + + TZNAME + Use time zone names from the _t_z_n_a_m_e variable, set via + _t_z_s_e_t. Only applicable on SYSTEM 5 systems and only + effective when you have asked for alpha-timezones (see + the ATZ option). See also ZONEINFO. + + UNISTD + Include this option if your system has the file + . If not specified, the LOCKF option will + include . + + V7 + Use on V7 UNIX systems. Also, be sure to use "options + void=int". + + VSPRINTF + Include this option if your system has the _v_s_p_r_i_n_t_f(3) + library routine; otherwise, __d_o_p_r_n_t(3) will be used. + + WAITINT + + + +[mh.6] Last change: MH.6.8.3 13 + + + + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + + BSD42 based systems call the _w_a_i_t(2) system routine + with a pointer to type _u_n_i_o_n _w_a_i_t. Include this + option if you included "options BSD42", but your sys- + tem calls the _w_a_i_t(2) system routine with a pointer to + type _i_n_t (the non-BSD42 default). + + ZONEINFO + Specify this if you have a BSD43 based system that + keeps time zone information /etc/zoneinfo or + /usr/lib/zoneinfo (SunOS), and where the _s_t_r_u_c_t _t_m + returned by _l_o_c_a_l_t_i_m_e(3) contains a _t_m__g_m_t_o_f_f element + (see /usr/include/time.h). With this fix the GMT + offset specified in outgoing mail will be corrected + when the TZ enviornment variable is set to a different + time zone. See also TZNAME. + +Site Preferences + These options change the default behavior of _M_H or enable + optional features. Add the options which are appropriate for + your configuration or your site preferences. + + editor: prompter + The default editor for _M_H. + + options: + `-D' options to _c_c(1). + + ATZ + Directs _M_H to use alpha-timezones whenever possible. + You should not use this option if you are on the Inter- + net, since it will make your host non-compliant with + RFC-1123 (Requirements for Internet Hosts). + + ATHENA + Makes _r_e_p_l `-nocc all' the default instead of + `-cc all'. You may want to enable this if you're using + _x_m_h. + + BANG + Directs _M_H to favor `!' over `@' in addressing. + + BERK + Optional for for 4.{2,3}BSD sites running SendMail. + Disables nearly all of the RFC822 address and header- + parsing routines in favor of recognizing such formats + as ASCnet, and so on. If you don't need to disable the + parser for this reason, you probably want to use + "options DUMB" instead. + + COMPAT + If you previously ran a version of _M_H earlier than mh.4 + use this option. After a short grace period, remove it + + + +[mh.6] Last change: MH.6.8.3 14 + + + + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + + and re-{configure,generate,install} everything. + + DUMB + Directs _M_H not to try and rewrite addresses to their + "official" form. + + FOLDPROT + Defines the octal value for default folder-protection. + For example, FOLDPROT='"0700"'. The default is "0711". + + ISI + When using "repl -ccme", only "cc:" the first address + found which belongs to the user; any other _A_l_t_e_r_n_a_t_e- + _M_a_i_l_b_o_x_e_s do not receive "cc:"s. + + LINK + Defines the filename for alternate file name for _d_i_s_t + and _r_e_p_l. For example, LINK='"\\043"' to use the + pound-sign character. The default is "@". + + MHE + Enables crude support for Brien Reid's MHE interface. + Recommended for use with the GNU Emacs mh-e package. + + MHRC + Enables _M_H to recognize the _C_S_h_e_l_l's `~'-construct. + This is useful for sites that run with a ~/.mhrc for + their users. + + MIME + Enables support for multi-media messages, as specified + in RFC 1341 -- a major win. This allows you to include + things like audio, graphics, and the like, in your mail + messages. Several _M_H commands are extended to support + these multi-media messages, and the _m_h_n command is pro- + vided to encode and decode MIME messages. For more + details, see miscellany/multi-media/READ-ME and _m_h_n(1). + + MSGID + Enables slocal to detect and surpress duplicate mes- + sages received. This code uses the library, + and requires "options BSD42" since it uses the _f_l_o_c_k(2) + system call for locking. (Note that this means its + database locking does not work over NFS.) It has only + been tested under SUN40. + + MSGPROT + Defines the octal value for default folder-protection. + For example, MSGPROT='"0600"'. The default is "0644". + + NOMHSEQ + Directs _M_H to make private sequences the default. + + + +[mh.6] Last change: MH.6.8.3 15 + + + + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + + OVERHEAD + Enable _M_H commands to read profile/context from open + fd:s without doing an open(); see _m_h-_p_r_o_f_i_l_e(5) for the + details. + + RPATHS + Directs _i_n_c to note UNIX "From " lines as Return-Path: + info. + + SBACKUP + Defines the prefix string for backup file names. For + example, SBACKUP='"\\043"'. The default is ",". + + TMA + Support for the TTI _t_r_u_s_t_e_d _m_a_i_l _a_g_e_n_t (TMA). Although + the TTI TMA is not in the public domain, the _M_H support + for the TTI TMA is in the public domain. You should + enable this option only if you are licensed to run the + TMA software (otherwise, you don't have the software in + your _M_H source tree). + + TTYD + Support for TTYD. This is no longer in wide use, and + is not recommended. + + UCI + First, "_" and "#" are recognized as the prefixes for + scratch files. Second, support for the UCI + group-leadership mechanism is enabled in _c_o_n_f_l_i_c_t. + Third, the first line of the file file $HOME/.signature + is used as the _F_u_l_l _N_a_m_e part of your "From:" header. + This may conflict with the interpretation of this file + by _N_e_w_s. If you're not at UCI, you probably don't want + this option. + + UK + Directs the _s_c_a_n program to generate UK-style dates by + default. + + WHATNOW + Enable certain _M_H commands to act differently when + $mhdraft set. + + YEARMOD + This option makes the _m_h-_f_o_r_m_a_t %(year) function always + return a value less than 100. Enable this option if + you have local _m_h-_f_o_r_m_a_t(5) files which cannot handle + 4-digit years. You should convert these files to use a + 4-character field width, or use the %(modulo 100) func- + tion to obtain a 2-digit year value. After a short + grace period, remove `YEARMOD' and re- + {configure,generate,install} everything. + + + +[mh.6] Last change: MH.6.8.3 16 + + + + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + +Testing/debugging + debug: off + Support for debug mode of _M_H. Don't use this unless you + know what you're doing, which isn't likely if you're read- + ing this document! + + regtest: off + Set this to "on" if you are doing regression testing among + different compilations of _M_H, and you do not want the + hostname and compile date included in _M_H binaries. + + + + Now edit conf/config/mtstailor, depending on your choice of + the setting for mts in the _M_H configuration file. for an + mts setting of "mh", look at the file conf/tailor/mhmts; for + an mts setting of "sendmail", "sendmail/smtp", "mmdf/smtp", + or "mmdf2/smtp", look at the file conf/tailor/sendmts; and, + for an mts setting of "mmdf", or "mmdf2", look at the file + conf/tailor/mmdf. + + Now install the configured files into the source areas. (On + SYS5 systems, or other systems where you get complaints + about "_index" and "_rindex" being undefined, you should use + "make sys5" to compile mhconfig.) + + % make + % ./mhconfig MH + + Before proceeding, you should familiarize yourself with the + _A_d_m_i_n_i_s_t_r_a_t_o_r'_s _G_u_i_d_e. To generate an _n_r_o_f_f version, go to + the doc/ directory and type: + + % (cd ../doc/; make ADMIN.doc) + + + If you're already running _M_H at your site, you should also + read the _m_h changes document CHANGES. The source is in + papers/changes/. + + After reading the _A_d_m_i_n_i_s_t_r_a_t_o_r'_s _G_u_i_d_e, you may decide to + change your MH configuration. If so, cd back to the conf/ + directory, re-edit the files MH and conf/config/mtstailor, + and re-run _m_h_c_o_n_f_i_g. + + You now proceed based on your choice of a transport system + (the setting for mts above). The best interface is achieved + with "sendmail" followed by "mmdf" or ("mmdf2"), and then + "mh" (stand-alone delivery, not recommended). + + SENDMAIL + If you have not enabled BBoards or POP then no further + + + +[mh.6] Last change: MH.6.8.3 17 + + + + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + + MTS-specific action is required on your part! + + If you have enabled POP, but you want to let _S_e_n_d_M_a_i_l + deliver mail POP mail using its standard delivery program + /bin/mail, then, again, no further MTS-specific action is + required on your part! + + Otherwise, go to the mts/sendmail/ directory. + + % cd ../mts/sendmail/ + + This directory contains files whose definitions correspond + to the configuration of your _S_e_n_d_M_a_i_l system. If you have + enabled BBoards or POP service, then you will need to + re-configure _S_e_n_d_M_a_i_l. First, in the "local info" section + of your site's _S_e_n_d_M_a_i_l configuration file, choose a free + macro/class (B is used in this distribution), and add these + lines: + + # BBoards support + DBbboards + CBbboards + + Second, immediately after the inclusion of the zerobase + file, in the "machine dependent part of ruleset zero" sec- + tion, add these lines: + + # resolve names for the BBoards system + R$+<@$=B> $#bboards$@$2$:$1 topic@bboards + + Be sure to use tabs when separating these fields. Third, + add the line + + include(bboardsMH.m4) + + after the line + + include(localm.m4) + + in your site's _S_e_n_d_M_a_i_l configuration file. Finally, you + should link the file mts/sendmail/bboardsMH.m4 into your + _S_e_n_d_M_a_i_l cf/ directory and re-configure _S_e_n_d_M_a_i_l. + + If you have enabled POP service, a similar procedure must be + used on the POP service host, to re-configure _S_e_n_d_M_a_i_l. + First, in the "local info" section of your site's _S_e_n_d_M_a_i_l + configuration file, choose a free macro/class (P is used in + this distribution), and add these lines: + + # POP support + DPpop + CPpop + + + +[mh.6] Last change: MH.6.8.3 18 + + + + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + + Second, immediately after the inclusion of the zerobase + file, in the "machine dependent part of ruleset zero" sec- + tion, add these lines: + + # resolve names for the POP system + R$+<@$=P> $#pop$@$2$:$1 subscriber@pop + + Be sure to use tabs when separating these fields. Third, + add the line + + include(popMH.m4) + + after the line + + include(localm.m4) + + in your site's _S_e_n_d_M_a_i_l configuration file. Finally, you + should link the file mts/sendmail/popMH.m4 into your _S_e_n_d_- + _M_a_i_l cf/ directory and re-configure _S_e_n_d_M_a_i_l. + + MMDF + If you want _M_M_D_F to be your transport service, and have NOT + specified "mmdf/smtp" (or "mmdf2/smtp") as your mts setting, + then go to the mmdf/ directory. (If you're using + "mmdf/smtp" or "mmdf2/smtp" as your mts setting, then skip + to the next section.) + + % cd ../mts/mmdf/ + + This directory contains files whose definitions correspond + to the configuration of your _M_M_D_F system. + + If you're running _M_M_D_F-_I, then copy the following files from + wherever you keep the _M_M_D_F sources to this directory: + mmdf/h/ch.h, mmdf/h/conf.h, utildir/conf_util.h, + utildir/ll_log.h, mmdf/h/mmdf.h, utildir/util.h, + mmdf/mmdf_lib.a, and utildir/util_lib.a. + + If you're running _M_M_D_F-_I_I, then copy the following files + from where you keep the _M_M_D_F sources to this directory: + h/ch.h, h/conf.h, h/dm.h, h/ll_log.h, h/mmdf.h, h/util.h, + and lib/libmmdf.a + + If you have enabled bboards, then the directories + support/bboards/mmdfI and support/bboards/mmdfII contain + information you'll need to put a UCI BBoards channel in your + _M_M_D_F configuration. Similarly, if you have enabled option + "mf" and are running _M_M_D_F-_I, then the zotnet/mf/mmdfI/ + directory contains information you'll need to put a _U_U_C_P + channel in your _M_M_D_F-_I configuration. Finally, the direc- + tory support/pop/mmdfII contains information you'll need to + put a POP channel in your _M_M_D_F-_I_I configuration. + + + +[mh.6] Last change: MH.6.8.3 19 + + + + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + + Note that _M_M_D_F-_I_I is distributed with the BBoards channel, + although the version in the _M_H distribution might be more + current, the version in the _M_M_D_F-_I_I distribution has been + tested with that revision of _M_M_D_F. + + MMDF/SMTP + If you are using "mmdf/smtp" as your mts setting, then no + further MTS-specific action is required on your part! + + MMDF2/SMTP + If you are using "mmdf2/smtp" as your mts setting, then no + further MTS-specific action is required on your part! + + STAND-ALONE DELIVERY + If, instead, you want _M_H to handle its own mail delivery, + then no further MTS-specific action is required on your + part! + +GENERATION + Go to the _M_H top-level directory and generate the system. + + % cd ../; make + + This will cause a complete generation of the _M_H system. If + all goes well, proceed with installation. If not, complain, + as there "should be no problems" at this step. + +INSTALLATION + If the directories you chose for the user-programs, + support-programs and manuals ("bin", "etc", "popdir", "slib- + dir", and "mandir" in the conf/MH file) don't exist, you + should create them at this point. + + Next, if you enabled support for the UCI BBoards facility, + then create a login called "bboards" with the following + characteristics: home directory is /usr/spool/bboards/ with + mode 755 (actually, use the value for "bbhome" given in the + _M_H configuration file), login shell is /bin/csh (or + /bin/sh), and, encrypted password field is "*". The + "bboards" login should own the /usr/spool/bboards/ direc- + tory. In addition to creating /usr/spool/bboards/, also + create /usr/spool/bboards/etc/ and + /usr/spool/bboards/archive/. These directories should also + be owned by the "bboards" login. + + If you enabled support for POP, then on the POP service + host, create a login called "pop" with the following charac- + teristics: home directory is /usr/spool/pop/ with mode 755, + login shell is /bin/csh, and, encrypted password field is + "*". If you don't have /bin/csh on your system (V7), then + /bin/sh is just fine. The "pop" login should own the + /usr/spool/pop/ directory. You'll also need to add a line + + + +[mh.6] Last change: MH.6.8.3 20 + + + + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + + to the /etc/services file and the /etc/rc.local file, see + the _A_d_m_i_n_i_s_t_r_a_t_o_r'_s _G_u_i_d_e for more details. + + If this is not the first time you have installed _M_H, these + files will need particular attention: + + _D_i_r_e_c_t_o_r_y _F_i_l_e_s + "etc/" MailAliases, BBoardAliases, mtstailor + /usr/spool/bboards/ BBoards, .cshrc, .mh_profile + /usr/spool/bboards/etc/ * + + The MailAliases, BBoardAliases, mtstailor and BBoards files + will NOT be installed over existing copies; you will need to + edit these by hand and merge in any changes from your previ- + ous _M_H release. The other files under /usr/spool/bboards/ + will be overwritten if they exist. You may wish to preserve + your old versions of these before installing _M_H. + + As the super-user, and from the mh.6/ directory, install the + system. + + # make inst-all + + This will cause the _M_H processes and files to be transferred + to the appropriate areas with the appropriate attributes. + +TAILORING + See the _A_d_m_i_n_i_s_t_r_a_t_o_r'_s _G_u_i_d_e for information on tailoring + _M_H for the MTS, BBoards, and POP. + +DOCUMENTATION + In addition to this document, the _A_d_m_i_n_i_s_t_r_a_t_o_r'_s _G_u_i_d_e, and + the _U_s_e_r'_s _M_a_n_u_a_l, there are several documents referenced by + the user's manual which may be useful. The sources for all + of these can be found under the papers/ directory. + +OTHER THINGS + Consult the directory miscellany/ for the sources to a + number of things which aren't part of the mainstream _M_H dis- + tribution, but which are still quite useful. + +FILES + Too numerous to mention. Really. + +SEE ALSO + make(1) + +BUGS + The _m_h_c_o_n_f_i_g program should be smarter. + + There's no way to print the _A_d_m_i_n_i_s_t_r_a_t_o_r'_s _G_u_i_d_e until + after you have configured the system; it is difficult to + + + +[mh.6] Last change: MH.6.8.3 21 + + + + + + +MH-GEN(8) MAINTENANCE COMMANDS MH-GEN(8) + + + + configure the system without the _A_d_m_i_n_i_s_t_r_a_t_o_r'_s _G_u_i_d_e. + + The Makefiles should know when _m_h_c_o_n_f_i_g has been run and + force "make clean" behavior. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[mh.6] Last change: MH.6.8.3 22 + + + diff --git a/docs/historical/mh4mm.pdf b/docs/historical/mh4mm.pdf new file mode 100644 index 0000000..466d319 Binary files /dev/null and b/docs/historical/mh4mm.pdf differ diff --git a/docs/historical/mh4mm.txt b/docs/historical/mh4mm.txt new file mode 100644 index 0000000..3aa30f1 --- /dev/null +++ b/docs/historical/mh4mm.txt @@ -0,0 +1,1168 @@ + + + + + MH for MM Users + + + + Mary Hegardt Tim Morgan + + + + April 12, 1990 + + + +1 Introduction + + + +This document is another in a continuing series on use of the MH mail system + +at UCI. It is intended for those users accustomed to the mm "user agent" + +(mail program) under Tops-20 and who are already familiar with network + +mail, but who may not be experienced Unix users. For an introduction + +to MH, see "MH For Beginners" by Mary Hegardt and Tim Morgan. For + +complete, detailed information on the MH system, see The Rand MH Message + +Handling System: User's Manual by Marshall T. Rose and John L. Romine. + +Both documents are available for Xeroxing in suite CS408. + + + +1.1 UNIX Versus Tops-20 + + + +The Unix1 paradigm is that each command, or program, should perform + +only one function. An extension of this idea is that the operating system + +implements only those functions which are necessary, but it does so in a + +very general way so that programs may still accomplish their functions. This + +philosophy probably evolved because the original versions of Unix ran on + +PDP-11 minicomputers which had only a small memory space for each pro- + +cess. +________________________________________________ + 1 Unix is a trademark of AT&T Bell Laboratories + + + + 1 + + + + +Consequently, all commands in Unix, with a very few exceptions, are in + +actuality programs. On Tops-20, in contrast, many of the most frequently + +used commands are built into the user's shell, or exec. Both the Exec and + +csh, which is typically the user's command interface on Unix, will accept + +and parse command lines, attempting to invoke a command as a program if + +it is not one of the built-in commands. Unix and Tops-20 are surprisingly + +similar internally: the use of the shell, separate processes for each command + +or program to execute, standard input and output for each program, and + +many other ideas are common to both operating systems. Users should be + +familiar with the capabilities of the shell, which is described in the document + +"Introduction to the Csh." + + + +1.2 The MH User Interface + + + +The MH mail "user agent" is different from most other mail systems. mm, + +for example, is a monolithic system because one program implements all the + +mail-related functions. The disadvantages of monolithic systems are that + +(a) they are large, so they tend to put more burden on the computer system, + +and (b) they allow for much less flexibility. In contrast, MH implements each + +mail command as a separate program: there is no single program called mh. + +This approach facilitates interspersing mail commands with other, perhaps + +unrelated, commands. + + +Another unique feature of MH is that it takes advantage of the facilities + +provided by the operating system. Most mail agents, such as mm, maintain + +a file containing the user's mail in a special, usually undocumented, format. + +When a message is deleted, mm must take care of compacting the mail file. + +It must be able to distinguish the separate messages contained in the file. + +mm must also implement a simple text editor to allow the user to enter and + +modify a message while it is being composed. These functions are essentially + +those provided by the operating system when separate files are stored within + +a directory. Therefore, the approach taken by MH is that each message is + +kept in a separate file. This file simply contains the message, with no other + +special formatting characters or requirements. All the messages are stored + +within a normal Unix directory. This approach makes it easy to add new + +MH commands, to edit messages using standard text editors, etc. + + + + 2 + + + + +All your MH related files are stored in a directory within your home directory. + +Usually this directory is called Mail or mhbox, although you are free to name + +it as you choose. Another file in your home directory called .mh_profile is + +equivalent to the MM.INIT file under mm. It contains all the options which + +you prefer for the various MH commands. It also contains the name of the + +MH directory and the name that you want on your outgoing mail in the + +From: field (your "signature "). + + + +2 Getting Started + + + +2.1 Incorporating Mail + + + +Another important difference between mm and MH is the concept of the mail- + +drop file. Under Tops-20, the mail transport system delivers new messages + +directly into the recipient's MAIL.TXT file, where they may then be processed + +with mm. In contrast, the Unix mail transport system, called MMDF-II, + +makes no assumptions about the user agent used by the recipient. Instead, + +it puts all new mail into a special file called the maildrop. This file is in the + +/usr/spool/mail directory. When you log in, if there is new mail for you + +in your maildrop, you will be so notified by the message + + + You have new ZOTnet mail -- type inc (or mail) + + +When you are ready to process this new mail, you may type the command + + + % inc + + +("incorporate") which will copy the new mail into separate files, one per mes- + +sage, stored in your "inbox" folder. A folder is a subdirectory beneath your + +MH directory which is used to store related messages. Additional information + +on folders is given in Section 4.5, page 13. The "inbox" is a distinguished + +folder because by default inc will always copy new mail into that folder, + +removing it from the maildrop. + + +If this is the first time you have used inc or any other MH command, the + +mh-install program will inform you that it is creating your Mail directory. + +It will also create the "inbox" folder directory, and .mh_profile. + + + + 3 + + + + +2.2 Message Numbers + + + +As inc processes each message, it prints a "scan" listing showing the message + +number, the date the message was sent, the name of the sender, the subject, + +and sometimes the initial part of the text of the message. A "scan" listing + +is thus similar to the output of the HEADERS command in mm. Each message + +within a folder is given a number, starting with 1, by which it can be ref- + +erenced. Inc will display the numbers assigned to each new message in its + +"scan" listing. + + +As in mm, there is a "current message" number which usually identifies the + +message most recently manipulated by the user. With most MH commands, + +this will be the default message if no messages are explicitly specified in + +a command. Inc makes the first new message the current message, which + +is indicated by a "+" character in the scan listing, just after the message + +number. + + +Many MH commands take a list of messages to process. A message desig- + +nation is either a single message number, two message numbers separated + +by a dash. The dash format indicates a range of messages including the + +endpoints. A message list consists of one or more message designations sep- + +arated by spaces. For example, messages 11 through 15 and message 17 may + +be indicated by typing + + + 11-15 17 + + +as the argument to some command. There are also several predefined names + +for messages or lists of messages which may be used in place of message + +numbers: + + + cur The current message (the last one that was handled). Equivalent + + to "." or "CURRENT" in mm. + + next The next message + + prev The previous message + + first The first message in the current folder. + + last The last message in the folder. Equivalent to % or * in mm. + + all All messages (first last ). Same as in mm. + + +It is also possible for you to define your own named sequences of messages. + + + + 4 + + + + +See the pick command description for more details. + + + +3 Processing Messages + + + +This section contains a list of the common mm commands and their equiva- + +lents in the in MH mail system. A short textual note describes how the MH + +commands differ from their mm counterparts. + + + +3.1 Listing Messages + + + +As mentioned in Section 2.2, the scan command may be used to summarize + +the messages in a folder, similar to the HEADERS command in mm. Unlike + +most MH commands, however, scan defaults to all the messages in the current + +folder unless you specify one or messages on the command line to be scanned. + +So simply typing + + + % scan + + +is equivalent to typing HEADERS ALL (or H A) in mm. + + + +3.2 Reading Mail + + + +Unlike the READ command in mm, in MH there is no special mail-reading + +mode (indicated in mm by the R> prompt). The command to read messages + +in MH is show. If no message list is specified, then the current message + +is displayed. The message is displayed by your "showproc", as specified in + +the .mh_profile, described in Section 4.2. Normally, your "showproc" will + +be more or mhless. Both of these programs__will__display_ your messages one + +screenful at a time. You press the __space_bar______ __on your terminal to see the + ____________ +next screenful, or the __return____ _key to see the next line. + + +The command + + + % show next + + + + 5 + + + + +(which will display the first message following the current message in the + +current folder) can be abbreviated as simply + + + % next + + +Similarly, the command "show prev" can be abbreviated as simply "prev". + + +To get a paper copy of a mail message, take the output from the show com- + +mand and pipe it into the imprint command. + + + % show 5 _ imprint + + +See the manual page for imprint for more information. + + + +3.3 Deleting Messages + + + +The equivalent of the DELETE command in mm is rmm in MH (remove mes- + +sages). It acts on the current message unless messages are specified on the + +command line. Unlike mm, the deleted messages will no longer show up in + +a "scan" listing. But the messages are not completely removed; they are + +renamed to have a comma prepended to the name of the file containing the + +message within its folder directory. Therefore, if you need to recover a mes- + +sage, it is possible to go into the directory and rename the message back. + +Be careful in doing this not to overwrite a new message with the same mes- + +sage number! It is a Unix convention that files whose names begin with a + +comma will be removed from disk (expunged ) early each morning. Therefore, + +your deleted messages will be available for the rest of the day, unless you re- + +move another message subsequently which has the same message. Then the + +previously deleted message is gone. + + + +3.4 Replying to Mail + + + +The equivalent of the REPLY command in mm is repl in MH. Repl may be + +given the number of the message to which you wish to reply, or it will default + +to the current message. When replying in mm, you are prompted asking + +if you wish to reply to all the recipients of the message to which you are + +replying, or only to its sender. In MH, normally the reply will be constructed + + + + 6 + + + + +to be sent to all the recipients. You may select which recipients receive copies + +of your reply by using the -query option on repl, or by putting this option + +in your .mh_profile, as described in Section 4.2. If you wish a reply to go + +to everyone but yourself, you can use repl -nocc me. + + + +3.5 Sending Mail + + + +The equivalent of the SEND mm command is comp ("compose") in MH. These + +two commands are fairly similar, except that the recipient of the message + +cannot be specified on the comp command line. The comp program invokes + +a simple editor called prompter which will prompt you for the To:, Cc:, and + +Subject: fields of the message. Then a line of dashes is typed, and you + +may enter the__body__of your message (its text,__in__mm_ terms). When you are + +finished, type __ctrl__-__D (equivalent to typing __ESC_______or control-Z in mm). Then + +you'll receive the prompt + + + What now? + + +which is similar to mm's S> prompt. You may receive a list__of__the_ options + +that you have at this point by typing "?" followed by __return____._ Here is a + +short list of the options and their meanings. Notice that, unlike mm, there + +are very few commands to modify the message (such as the TEXT, TO, CC, etc., + +commands which may be typed at the S> prompt in mm). In place of these + +commands, you use the edit command to invoke your favorite text editor + +on the message, and you use it to make the equivalent changes. You also use + +your editor to include other files into the body of the message, rather than + +using control-B, as in mm. One additional use of the edit command is for + +spelling checking. In mm, you may use the command SPELL for this purpose. + +In MH, you type "edit spell"2 instead. This will cause the spelling checker + +to be run, giving you a list of the possibly misspelled words in your message. + + + + edit editor Edit the message using the specified editor. When you + + exit, you will be back at What now?. +________________________________________________ + 2 Actually, any program named after the "edit" command will be invoked with what- + +ever arguments you have given and a path to the file containing the message you are +editing. + + + + 7 + + + + + list Shows the message you just typed + + + whom -check Verifies that the addresses you have used are valid as far + + as our system can tell + + + send Sends the message to the recipients + + + push Sends the message in the background + + + quit Quits without sending the message. Saves the text of + + the message as a "draft". Type comp -use to get back + + to that draft later. + + + quit -delete Quit, throwing away the draft + + + +3.6 Forwarding Mail + + + +The forw command is used in MH to forward messages. It will take a list + +of messages on the command line to be forwarded, or it will default to the + +current message if none are specified. It will prompt you like comp does + +for the To:, Cc:, and Subject: fields. Note that, unlike mm's FORWARD + +command, forw will not construct a subject line automatically. Also as with + +comp, you will have the opportunity to add additional text to the message(s) + +which you are forwarding, ended with a control-D. + + + +3.7 Resending Mail + + + +The equivalent of the RESEND command in mm is the dist ("distribute") + +command in MH. Dist works very much like the forw command, except + +that the prompts will be Resend-To:, Resend-Cc:, etc. After filling in the + +headers, a line of dashes is typed giving the impression that additional text + +can be entered. Nothing could be further from the truth; if you add any text + +at this point the dist will fail. Your only opportunity to add text is in the + +Resend-Note: field. + + + + 8 + + + + +4 Advanced Topics + + + +4.1 Selecting Messages + + + +In mm, you may use several reserved command words to select messages + +in place of an explicit list of message numbers. For example, you can + +type "DELETE FROM SMITH" to remove all the messages from a user named + +"Smith". Rather than building such a capability into each MH program + +which can process message lists, a special program called pick is used in- + +stead. Just as there are predefined sequences of messages, such as "all", + +"cur", etc., you may use pick to define your own sequences. Pick is capable + +of selecting messages from a folder based on the To:, From:, Subject:, Cc:, + +or Date: fields, or by searching the body of the message. The patterns to + +be searched for may include full regular expressions (see the "man" page for + +ed(1) for more information) or simple strings. + + +Pick may be used in one of two ways. First, it may output the sequence of + +message numbers which match the search parameters. Using the backquot- + +ing mechanism of the shell, these message numbers may then become the + +arguments to other MH programs. The second way to use pick is to have it + +define a new sequence name which will be the messages which were selected. + +Only this second method of using pick will be described here; see pick(l) if + +you wish to use the first method. + + +In your .mh_profile, add the line + + + pick: -seq sel + + +Then each time you use the pick command, it will define the resulting se- + +quence of messages to be called "sel". Then to "pick" all the messages in the + +current folder which are from "Smith", just type + + + % pick -from smith + + +To see a summary of those messages, type + + + % scan sel + + +Then to the remove the messages, type the command + + + + 9 + + + + + % rmm sel + + +You can pick messages according to any of the headers (-to -from -subj + +-cc or -date) or just search all the messages for a given word (-search). + + + +4.2 Customizing Your Mail Environment + + + +In mm, you use the PROFILE command to tailor your mail environment. + +This command writes a file called MM.INIT in your home directory which + +is then read by subsequent executions of mm. In the MH system, the file + +.mh_profile serves the same purpose. It is edited with any normal text + +editor, rather than using a special-purpose command to modify it. The + +format of the file is line oriented, one line per MH program or MH option to + +be set. The only required line in the profile is the name of the primary MH + +mail directory, which is by default Mail. This information is specified by the + +line + + + Path: Mail + + +The textual name you would like to have on your outgoing mail is specified + +by the Signature: line. For example, + + + Signature: Mary Hegardt + + +The BBoards which you like to read should also be listed in the .mh_profile + +(see Section 4.6, page 14, for additional information). For example, if you + +read the "system" BBoard (where all important announcements are posted), + +as well as "whimsey" and "imagen-users" BBoards, your .mh_profile should + +contain the line + + + bboards: system whimsey imagen-users + + +Other options may be specified on a per-program basis. The format for these + +lines is the same. First, the program name is given followed by a colon. Then + +any flags which are to be the default options for that program are given. Here + +is a short list of the most common options which you may want to set in your + +.mh_profile: + + + showproc: mhless + + + + 10 + + + + +The showproc is the program used to show messages to you. By default, it + +is the more command. Mhless is the same as more except that it omits the + +headers of the messages which you indicate that you wish not to see. Type + + + % man mhless + + +for more information about this program. + + + msh: -scan + + +Selecting this option causes an automatic scan of new messages on BBoards to + +be made when reading BBoards with bbc, similar to the scan listing produced + +by inc. + + + repl: -query + + +causes repl to ask for each address in the message being replied to if it should + +be included in the To: or Cc: fields of the reply being composed. + + + pick: -seq sel + + +This line will cause messages "picked" by the pick command to be put into + +a sequence named "sel". This sequence name may then be used just as the + +built-in sequences ("last", "first", etc.). + + + +4.3 Aliases + + + +Using MH, you may specify your own private mail aliases. This feature allows + +you to store lists of addresses or long internet addresses of people with whom + +you frequently correspond in one file, and then to address them using short + +mnemonic names. Typically, you will call your alias file "aliases"; it must + +be stored in your MH directory. The format of this file is simple. The alias + +is given, followed by a colon, followed by one or more legal mail addresses + +separated by commas. For example, you might for some reason have an alias + +for all the users named "Rose" in the ICS department: + + + roses: prose, srose, mrose, drose + + +In addition to your "aliases" file, you will need to modify your .mh_profile + +in order to use aliases. You should add the flag "-alias aliases" to the + + + + 11 + + + + +entries for the commands ali, whom, send, and push, creating entries for + +these programs if they aren't already in your .mh_profile. Now, messages + +addressed to "roses" will be distributed to all the people listed in the alias. + + +The ali command is used to show you what an alias expands to. You just + +type + + + % ali alias + + +and ali will respond with the expansion of the alias. Ali searches the system + +aliases file in addition to your private ones. + + + +4.4 Blind Lists + + + +There are two different types of so-called "blind addressing" of messages. + +Users of mm may already be familiar with the "Blind Carbon Copy", or + +BCC: field. It allows you to add recipients to your message just like those + +who are CC'd, but the normal recipients will not see that the BCC recipients + +were copied on the message, their replies will not go to the blind recipients, + +and the blind recipients cannot (easily) reply to the message. + + +The second type of blind mailing is actually called a "group address list", + +although it is commonly referred to as a "blind list". The format of this type + +of address is + + + phrase : address__list ; + + +where the "phrase " is any English phrase of one or more words, and the + +address__list consists of one or more addresses separated by commas. The + +recipients of a message addressed in this fashion will see simply + + + phrase : ; + + +so when they reply to the message, their reply will come only to the sender + +(or the Reply-To: field, if one was specified), rather than going to all the + +recipients of the original list. For example, to use a group address list for the + +"roses" alias you would type: + + + To: People Named Rose: roses; + + + + 12 + + + + +This type of group address is very useful for making up lists of related people, + +such as all the people working on a particular research project. + + + +4.5 Folders + + + +As mentioned previously, folders are directories within your MH directory + +used to store related messages. There is no equivalent of the folder concept + +in the mm system. Usually, you will use only the folder "inbox", so you won't + +have to worry about folders. However, if you process a large volume of mail, + +then folders become invaluable in managing the messages which you wish to + +keep for future reference. + + +Just as there is a "current message," MH maintains a "current folder," which + +will normally be "inbox". You can change folders either by specifying the + +folder on the command line of MH programs which take a list of messages as + +an argument, or by using the folder command: + + + % folder +folder__name + + +In general, the folder name is indicated by a "+" sign followed immediately + +by the folder name, all preceeding any list of messages. For example, you + +may read the most recent message in a folder called "job__offers" using the + +command + + + % show +job__offers last + + +This command will have the side-effect of setting the current folder to be + +"job__offers". You may move messages from the current folder into the + +"job__offers" folder using the command + + + % refile +job__offers messages + + +where, as usual, the messages list will default to the current message in the + +current folder if none are specified. Note that, in contrast with the show + +command and most other MH commands, the messages are not considered + +to be in the folder "job__offers". You may obtain a summary of all your folders + +by typing the command + + + % folders + + + + 13 + + + + +When you remove messages from a folder using the rmm command, the + +deleted messages will show up as a "hole" in the message numbering. The + +command + + + % folder -pack + + +will cause all the messages within one folder to be renumbered starting with 1. + +Similarly, the command + + + % folders -pack + + +will do the same thing for all your folders. + + +To remove an empty folder, use the command + + + % rmf +folder + + + +4.6 Reading BBoards + + + +Two special-purpose programs are utilized in reading BBoards. The first is + +bbc, which is used to check a list of BBoards for new messages. The list of + +messages may be given on the command line, or if not, it will be taken from + +the BBoards: list in your .mh_profile. You may obtain a list of all the + +available BBoards by typing the command + + + % bbc -topics + + +For each BBoard with unseen messages, bbc will invoke the MH shell, msh, + +whose prompt is + + + (msh) + + +The msh program allows you to read BBoard mail as if it were normal mes- + +sages in one of your folders. Almost all the MH commands will work just + +as the normally do. Typing the command "quit" to msh causes it to stop + +reading the current BBoard and go on to the next one containing unseen + +messages, or to exit if there are no more such BBoards. Typing control-D + +causes msh to exit unconditionally. The command mark followed by a mes- + +sage number causes msh to act as if you have seen that message and all + +previous ones. + + + + 14 + + + + +4.7 Checking for Mail + + + +Under Unix, there are about a dozen different ways to check for new mail. + +The easiest way to do it is to set the csh variable named "mail" to tell csh + +to check for new mail for you periodically. To do this, add the line + + + set mail=(60 /usr/spool/mail/$USER) + + +to your .login file in your home directory. This command says to check + +for mail if csh is about to prompt you with a % sign, and if it has been at + +least 60 seconds since it last checked for mail. The advantage of this method + +of mail notification, besides simplicity, is that you will never be interrupted + +by a mail notification. You will only be notified of new mail when you are + +between commands, when the shell is about to prompt you. + + +If you desire asynchronous mail notification, which will print to your terminal + +regardless of what you are currently doing, you may make use of a "Receive + +Mail Hook" called "rcvtty". To do this, create a file in your home directory + +called ".maildelivery". In this file, put the line + + + * - pipe R /usr/uci/lib/mh/rcvtty + + +Then each time new mail arrives, you will receive a one-line "scan" listing + +of the mail if your terminal is world-writable. For more information on + +"maildelivery" files, type: + + + % man 5 maildelivery + + + +4.8 Saving Drafts + + + +Normally when you use comp, it creates the message being composed in a + +file called "draft" in your MH directory. If you use the "quit" option at + +the "What now?" prompt, this file will remain there. You may later use the + +command + + + % comp -use + + +to resume composing the message. + + + + 15 + + + + +If you begin composing a new message and there is already a "draft" file,_you___ + +will be asked for the disposition of this file. Typing ? __return____ _will give you + +a list of the options at this point. Normally you will either replace (delete) + +the old draft and begin a new one or use the old one. + + +The -file switch to comp may be used to specify the name of a draft other + +than "draft". For example, one might type + + + % comp -file mary + + +to begin composing a message maintained in the draft file "mary". Typing + + + % comp -file mary -use + + +would cause comp to resume composing this same draft after a "quit" com- + +mand to the "What now?" prompt. + + +Very advanced users of MH maintain multiple draft files in a draft folder. + +This is a normal folder which holds all your drafts, rather than having just + +one draft in your MH directory named "draft". If you feel that you need to + +use draft folders, you should consult the MH User's Manual for additional + +information. + + + + 16 diff --git a/docs/historical/mh6.pdf b/docs/historical/mh6.pdf new file mode 100644 index 0000000..482ccc5 Binary files /dev/null and b/docs/historical/mh6.pdf differ diff --git a/docs/historical/mh6.txt b/docs/historical/mh6.txt new file mode 100644 index 0000000..46c0ca0 --- /dev/null +++ b/docs/historical/mh6.txt @@ -0,0 +1,1030 @@ + + + + + Changes to + + + The Rand MH Message Handling System: + + + MH #6.5 for 4.3BSD UNIX + + + + Marshall T. Rose + + Northrop Research and Technology Center + + One Research Park + + Palos Verdes Peninsula, CA 90274 + + + + April 12, 1990 + + + + Abstract + + This document describes the user-visible change to the UCI ver- + sion of the Rand MH system that were made from mh.5 to MH #6.5. + It is based on the mh.6 changes document, but has been updated to + accurately reflect the MH distributed with 4.3bsd UNIX1 . This docu- + ment does not describe bug-fixes, per se, or internal changes, unless + these activities resulted in a visible change for the MH user. + This document is meant to supplement, not supersede, the stan- + dard MH User's manual[MRose85 ]. + Comments concerning this documentation should be addressed to + the Internet mailbox Bug-MH@ICS.UCI.EDU. + + + +________________________________________________ + T0his document (version #2.10) was LaTEX set April 12, 1990 with lplain v2.09-10/29/85. + 1 UNIX is a trademark of AT&T Bell Laboratories. + + + + 1 + + + + +Acknowledgements + + +The MH system described herein is based on the original Rand MH system. + +It has been extensively developed (perhaps too much so) by Marshall T. Rose + +and John L. Romine at the University of California, Irvine. Einar A. Stef- + +ferud, Jerry N. Sweet, and Terry P. Domae provided numerous suggestions + +to improve the UCI version of MH . Of course, a large number of people have + +helped MH along. The list of "MH immortals" is too long to list here. How- + +ever, Van Jacobson deserves a special acknowledgement for his tireless work + +in improving the performance of MH . Some programs have been speeded-up + +by a factor of 10 or 20. All of users of MH , everywhere, owe a special thanks + +to Van. + + + +Disclaimer + + +The Regents of the University of California wish to make it known that: + + + Although each program has been tested by its contributor, no + + warranty, express or implied, is made by the contributor or the + + University of California, as to the accuracy and functioning of + + the program and related program material, nor shall the fact of + + distribution constitute any such warranty, and no responsibility + + is assumed by the contributor or the University of California in + + connection herewith. + + + + 2 + + + + +Conventions + + +In this document, certainaL TE X -formatting conventions are adhered to: + + + 1. The names of UNIX commands, such as comp , are presented in text + + italics. + + + 2. Arguments to programs, such as `msgs', are presented in typewriter + + style and delimited by single-quotes. + + + 3. UNIX pathnames and envariables, such as + + + /usr/uci/ and $SIGNATURE ; + + + are presented in slanted roman. + + + 4. Text presenting an example, such as + + + + comp -editor zz + + + + is presented in typewriter style. + + + + 3 + + + + +General Changes + + +Unlike the changes between mh.4 and mh.5 , a large number of user-visible + +changes have been made in mh.6 . These changes have been in the form of + +bug fixes and several generalizations. The majority of these will not affect + +novice users. In addition, mh.6 is a great deal faster than mh.5 : all programs + +have been speeded-up significantly, thanks to work done by Van Jacobson as + +part of the process of including mh.6 in the 4.3bsd UNIX distribution. + + This document describes all user-visible changes to mh.5 from it's initial + +release to the intermediate release of MH #6.5. + + + +System-5 Support + + +In addition to support for bsd UNIX, V7 UNIX and Xenix2 variants of UNIX, + +MH finally has support for the AT&T variant of UNIX, System 5. Hopefully + +this will greatly expand the number of system which can run MH . Ironically, + +it appears that five ports of earlier versions of MH (including mh.5 ) were + +done, but news of the work was not widespread.3 + + + +Documentation + + +Several new documents have been included in the mh.6 distribution: The + +paper MH.5: How to process 200 messages a day and still get some real work + +done was presented at the 1985 Summer Usenix Conference and Exhibition + +in Portland, Orgeon. Another paper, MH: A Multifarious User Agent, has + +been accepted for publication by Computer Networks. Both describe MH , the + +former from a more technical and somewhat humorous perspective, the latter + +from a more serious and research-oriented perspective. In addition, a third + +paper has been included, Design of the TTI Prototype Trusted Mail Agent, + +which describes a so-called "trusted" mail agent built on top of MH . This + +paper was presented at the Second International Symposium on Computer + +Message Systems in Washington, D.C. A fourth paper, MZnet: Mail Service + +for Personal Micro-Computer Systems, is also included. This paper, which +________________________________________________ + 2 Xenix is a trademark of Microsoft Corporation. + 3 In fact, three groups in one large organization ported MH independently, each without + +knowledge of the others' work. + + + + 4 + + + + +was presented at the First International Symposium on Computer Message + +Systems in Nottingham, U.K., describes a CP/M4 -based version of MH . + + In addition, the MH tutorial, The Rand MH Message Handling System: + +Tutorial, and, The Rand MH Message Handling System: The UCI BBoards + +Facility, have both been updated by Jerry N. Sweet. + + For MH administrators (PostMasters and the like), there's an entirely + +new document, The Rand MH Message Handling System: Administrator's + +Guide. It explains most of the "ins and outs" of maintaining an MH system. + + Finally, all of the manual entries and the MH manual have had a thorough + +working over. The documentation is expanded, more accurate, and more + +detailed. + + + +Help Listings + + +When any MH command is invoked with the `-help' switch, in addition to + +listing the syntax of the command and version information, the MH config- + +uration options will be listed. MH has so many configuration options, that + +when debugging problems, this information is invaluable. + + + +The MH Profile + + +There are two new profile entries worth noting: MH-Sequences tells MH the + +name of the file to record public sequences in. Users of vm , a proprietary, + +visual front-end to MH , make use of this to disable the public sequences + +feature of MH . + + The profile entry Unseen-Sequence names those sequences which should + +be defined as those messages recently incorporated by inc . The show program + +knows to remove messages from this sequence once it thinks they have been + +seen. If this profile entry is not present, or is empty, then no sequences are + +defined. Otherwise, for each name given, the sequence is first zero'd and then + +each message incorporated is added to the sequence. As such, this profile + +entry is rather analogous to the Previous-Sequence entry in the user's MH + +profile. + + In addition, the Alternate-Mailboxes entry in the profile has been ex- + +panded to support simple wild-carding. Also, the default for this profile entry +________________________________________________ + 4 CP/M is a trademark of Digital Research Corporation. + + + + 5 + + + + +is now the user's mail-id at any host. This change was made since MH can + +no longer reliably figure out what the user's real outgoing address looks like. + + Finally, when the install-mh program is automatically invoked by MH , it + +won't prompt the user for information. Instead, it notes that it's setting up + +the default environment. In addition, the MH administrator may set-up a + +file called mh.profile in the MH library area which is consulted by install-mh + +when initializing the user's .mh__profile . + + + +The MH Context + + +The folder , scan , and show programs have been modified to update the user's + +MH context prior to writing to the user's terminal. This allows the MH user + +interrupt output to the terminal and still have the expected context. This is + +especially useful to interrupt long scan listings. This change also introduces + +a subtle bug between show and messages denoted by the Unseen-Sequence. + +See show (1) for the details. + + + +Addresses and 822 support + + +MH now fully supports the RFC-822 routing syntax for addresses (it used to + +recognize the syntax, but ignore the information present). In addition, there + +are three major modes for support of non-822 addressing in MH : + + + - BERK + + This is useful on sites running SendMail . It doesn't support full 822- + + style addressing, in favor of recognizing such formats as ACSnet, and + + so on. For sites that can't run in an 822-compliant environment, this is + + the option to use (at the price of sacrificing some of the power of 822- + + style addressing). This also drastically reduces the address formatting + + facilities described below. + + + - DUMB + + Although not as liberal as BERK, the DUMB option is useful on sites + + in which the message transport system conforms to the 822 standard, + + but wants to do all the defaulting itself. + + + - BANG + + From out in left field, the BANG option favors UUCP -style addressing + + + + 6 + + + + + over 822-style addressing. Hopefully when all the UUCP sites around + + get around to adopting domain-style addresses, this option won't be + + needed. + + + The ap program (mentioned momentarily) and the ali program both sup- + +port a `-normalize' switch indicate if addresses should be resolved to their + +"official" hostnames. + + + +New Programs + + +There are five new programs available: The ap program is the MH stand- + +alone address parser. It's useful for printing address in various formats (and + +for debugging address strings). The dp program is similar, but works on + +dates instead of addresses. + + The msgchk program checks for new mail, possibly using the Post Office + +Protocol, POP, described below. + + A new receive mail hook, the rcvstore program, which was written by + +Julian L. Onions is available. + + Finally, a visual front-end to msh called vmh has been included. (This + +program is discussed in greater detail later on.) + + + +Message Numbering + + +MH now no longer restricts the number of messages which may reside in a + +folder (beyond that of system memory constraints). This means that message + +numbers larger than 2000 are permissible. Hopefully this will make life easier + +for people reading the network news using MH . + + + +The WhatNow Shell + + +In mh.6 , there is now the concept of a unified What now? processor that + +the four composition programs, comp , dist , forw , and repl all invoke. This + +permits a greater flexibility in building mail applications with MH . As a + +result, there's a new program, whatnow , which acts as the default What now? + +program. Consult the whatnow (1) manual entry for all the details. The only + +important user-visible change is the headers option went away, which wasn't + +used that much anyway. + + + + 7 + + + + + The only other thing worth noting is that unless MH has been compiled + +with the UCI option, the user's $HOME/.signature file is not consulted for + +the user's personal name. + + + +Format Strings + + +A general format string facility has been added to allow MH users to tailor + +the output of certain commands. + + The inc , scan , ap , and dp programs all consult a file containing format + +strings. Format strings, which look a lot like printf (3) strings, give these MH + +commands precise instructions on how to format their output. + + As a result, the inc and scan programs no longer have the `-size', `- + +nosize', `-time', `-notime', `-numdate', and `-nonumdate' switches. These + +switches have been replaced with the `-form formatfile' switch and the + +`-format string' switch. The former directs the program to consult the + +named file for the format strings. The latter directs the program to use the + +named string as the format. To get the behavior of the old `-time' option, + +use the `-form scan.time' option. Similarly, to get the effect of `-size', use + +`-form scan.size'. + + A fun form to use is `-form scan.timely' with scan . Try it sometime. + + The repl command uses a file containing format files to indicate how the + +reply draft should be constructed. Note that reply templates prior to mh.6 + +are incompatible with mh.5 .5 Don't worry though, it's quite easy to convert + +the templates by hand. (Those clever enough to have written a reply template + +to begin with won't have any problem.) + + Similarly, when the forw program is constructing a digest, it uses a file + +containing format strings to indicate how to build the encapsulating draft. + + Finally, you can use these facilities in mhl as well. + + + +News + + +The depreciated MH news system (from mh.1 ) is now de-supported. Use the + +"hoopy" BBoards facility instead. +________________________________________________ + 5 In fact, reply templates between mh.6 and MH #6.5 are imcompatible. + + + + 8 + + + + +BBoards + + +MH maintainers take note: the default home directory for the bboards login + +has changed from /usr/bboards/ to /usr/spool/bboards/ . Use the bbhome + +directive in your MH configuration file to set it back to the old value if you + +wish. + + In addition, the aliases field for a BBoard in the BBoards file is now + +deemed useful only for addressing, not for user input to bbc . This means + +when giving the name of a BBoard to bbc , only the official name should be + +used. + + A final note for mailsystem maintainers: the MMDF-II BBoards chan- + +nel and the SendMail BBoards mailer have been modified to use the stan- + +dard message encapsulation format when returning failed messages to the list + +maintainer. This means that the failure notices that the maintainer receives + +can simply be burst . + + + +New Switches in bbc + + +The bbc program permits you to specify the mshproc to use on the command + +line by using the `-mshproc program' option. There's also a `-rcfile file' + +option which does "the obvious thing". In addition, options which aren't + +understood by bbc are passed along to the mshproc. + + In addition, the following commands pass any unrecognized switches on + +to the program that they invoke: bbc , next , show , prev , and vmh . + + + +Distributed BBoards + + +If both BBoards and POP (see the next section) are enabled, then distributed + +BBoards can be supported on top of the POP service. This allows the MH + +user to read BBoards on a server machine instead of the local host (which + +saves a lot of wasted disk space when the same BBoards are replicated sev- + +eral times at a site with several hosts). See the Administrator's Guide for + +information on how this can be made completely transparent to the MH user. + + If you have several machines at your site running 4.2bsd UNIX and con- + +nected by an Ethernet6 (or other high-speed LAN), you want this software. +________________________________________________ + 6 Ethernet is a trademark of the Xerox Corporation. + + + + 9 + + + + +Visual Front-End to msh + + +A simple window management protocol has been implemented for MH pro- + +grams that might wish to act as a back-end to a sophisticated visual front- + +end. + + The first implementation of a server side (front-end) program is vmh , + +which uses curses (3) to maintain a split-screen interface. Perhaps look for a + +mhtool program for the SUN next! + + The msh program has been modified to speak the client side (back-end) + +of this protocol, if so directed. At present, msh is the only program in the + +MH distribution which implements the client side of the window management + +protocol. + + + +Updates in msh + + +Prior to quitting, the msh command now asks if the packf 'd file you've been + +perusing should be updated if you've modified it and the file is writable by + +you. The file can be modified by using burst , rmm , rmm , or sortm commands. + +The file can also be modified by using the refile command without the `-link' + +option. (Or course, the `-link' option doesn't actually link anything to the + +file.) + + + +Distributed Mail + + +MH now contains a powerful facility for doing distributed mail (having MH + +reside on a host different than the message transport agent). For general + +information, consult either the MH.5: How to process 200 messages a day + +and still get some real work done paper, or the MH: A Multifarious User + +Agent paper. For specific information, consult the Administrator's Guide. + +Here's a brief synopsis: + + This POP facility in MH is based on a modification of the ARPA Post + +Office Protocol (POP). A POP subscriber is a remote user, on a POP client + +host, that wishes to pick-up mail on a POP service host. + + There are two ways to administer POP: + + + - Naive Mode + + Each user-id in the passwd (5) file is considered a POP subscriber. No + + + + 10 + + + + + changes are required for the mailsystem on the POP service host. How- + + ever, this method requires that each POP subscriber have an entry in + + the password file. The POP server will fetch the user's mail from wher- + + ever maildrops are kept on the POP service host. This means that if + + maildrops are kept in the user's home directory, then each POP sub- + + scriber must have a home directory. + + + - Smart Mode + + This is based on the notion that the list of POP subscribers and the + + list of login users are completely separate name spaces. A separate + + database (similar to the BBoards (5) file) is used to record information + + about each POP subscriber. Unfortunately, the local mailsystem must + + be changed to reflect this. This requires two changes (both of which + + are simple): + + + 1. Aliasing + + The aliasing mechanism is augmented so that POP subscriber ad- + + dresses are diverted to a special delivery mechanism. MH comes + + with a program, popaka (8), which generates the additional infor- + + mation to be put in the mailsystem's alias file. + + 2. Delivery + + A special POP delivery channel (for MMDF-II ) or POP mailer (for + + SendMail ) performs the actual delivery (mh.6 supplies both). All + + it really does is just place the mail in the POP spool area. + + + Clever mailsystem people will note that the POP mechanism is really + + a special case of the more general BBoards mechanism. + + +These two different philosophies are not compatible on the same POP service + +host: one or the other, but not both, may be run. + + In addition, there is one user-visible difference, which the administrator + +controls the availability of. The difference is whether the POP subscriber + +must supply a password to the POP server: + + + - ARPA standard method + + This uses the standard ARPA technique of sending a username and a + + password. The appropriate programs (inc , msgchk , and possibly bbc ) + + will prompt the user for this information. + + + + 11 + + + + + - UNIX remote method + + This uses the Berkeley UNIX reserved port method for authentication. + + This requires that the two or three mentioned above programs be setuid + + to root. (There are no known holes in any of these programs.) + + +These two different philosophies are compatible on the same POP service + +host: to selectively disable RPOP for hosts which aren't trusted, either mod- + +ify the .rhosts file in the case of POP subscribers being UNIX logins, or zero + +the contents of network address field of the pop (5) file for the desired POP + +subscribers. + + The inc command also has two other switches when MH is enabled for + +POP: `-pack file' and `-nopack'. Normally, inc will use the POP to incor- + +porate mail from a POP service host into an MH folder (+inbox). However, + +there are some misguided individuals who prefer to msh to read their mail- + +drop. By using the `-pack file' option, these individuals can direct inc to + +fetch their maildrop from the POP service host and store it locally in the + +named file. As expected, inc will treat the local file as a maildrop, performing + +the appropriate locking protocols. And, if the file doesn't exist, the user is + +now asked for confirmation. + + + +Rcvmail hooks + + +In order to offer users of MH increased rcvmail hook functionality, the slocal + +program has been upgraded to support the semantics of the MMDF-II mail- + +delivery mechanism. This means that users of mh.6 can maintain identi- + +cal .maildelivery files regardless of the underlying transport system. See + +mhook (1) for all the details. + + + +Change in rcvdist + + +The rcvdist rcvmail hook now uses the MH formatting facility when redis- + +tributing a message. + + + +Field change in rcvpack + + +The rcvpack rcvmail hook now adds the field name Delivery-Date: instead + +of Cron-Date: to messages it pack s. + + + + 12 + + + + +GNU Emacs Support + + +James Larus' mh-e macro package for GNU Emacs (version 17) is included + +in the distribution. When loaded in Emacs, this provides a handy front-end. + + + +Other Changes + + +Here's the miscellany: + + + +Continuation Lines + + +Alias files used by MH , display templates used by mhl , and format files used + +by forw , repl , and scan all support a standard continuation line syntax. To + +continue a line in one of these files, simply end the line with the backslash + +character (`n'). All the other files used by MH are in 822-format, so the + +822-continuation mechanism is used.7 + + + +Default Date Format + + +MH now uses numeric timezones instead of locally-meaningful alpha time- + +zones when generating mail. This change was made to encourage the use + +of unambiguous, globally-meaningful timezone strings. A local configura- + +tion option can disable this correct behavior. All of the mhl templates have + +been modified to use locally-meaningful alpha timezones when displaying + +messages. + + + +New switch in ali + + +The ali command now has a `-noalias' switch to prevent system-wide aliases + +from being interpreted. + + + +Modifications to show + + +The `-format', `-noformat', `-pr', and `-nopr' options to show have gone away + +in favor of a more general mechanism. The `-showproc program' option tells +________________________________________________ + 7 Looking back, it would have been best had all files in MH used the 822-format. + + + + 13 + + + + +show (or next or prev ) to use the named program as the showproc. The + +`-noshowproc' option tells show , et. al., to use the cat (1) program instead of + +a showproc. As a result, the profile entry prproc is no longer used. + + + +Switch change in inc + + +The `-ms ms-file' switch in inc has been changed to `-file name' to be + +more consistent. + + + +Front-End to mhl + + +When outputting to a terminal, the mhl program now runs the program + +denoted by the profile entry moreproc. If this entry is not present, the + +default is the UCB more program. If the entry is non-empty, then that + +program is spliced between mhl and the user's terminal. The author uses the + +less program as his moreproc. + + Of course, if mhl isn't outputting to a terminal, then moreproc is not + +invoked. + + Finally, to aid in the construction of replies, a prefix string may be speci- + +fied for the body component of the message being replied-to. Simply use the + +component= construct in mhl for body:. + + + +Confirmation in packf + + +If the file specified by the `-file name' switch doesn't exist, the user is now + +asked for confirmation. + + + +Complex Expressions in pick + + +The pick command now handles complex boolean expressions. + + + +Defaults change in prompter and burst + + +The `-prepend' option is now the default in prompter . The `-noinplace' + +option is now the default in burst . + + + + 14 + + + + +Fcc:s and post + + +If multiple Fcc:s for a message are specified during posting, post will try much + +harder to preserve links. + + + +Interactive option in rmf + + +The rmf program has been changed to support an `-interactive' switch. + +If given, then the user is prompted regarding whether the folder should be + +deleted. If the folder to be removed is not given by the user, this switch is + +defaulted to on. + + + +Trusted Mail Interface + + +MH now has an interface for so-called "trusted mail" applications. Although + +the modifications to MH to support this are in the public domain, the actual + +library that MH uses is not. Contact Professor David J. Farber (Farber@UDel) + +for more information. + + + +References + + +[MRose85] Marshall T. Rose and John L. Romine. The Rand MH Message + + Handling System: User's Manual. Department of Information + + and Computer Science, University of California, Irvine, mh.6 edi- + + tion, November, 1985. UCI Version. + + + + 15 diff --git a/docs/historical/multifarious.pdf b/docs/historical/multifarious.pdf new file mode 100644 index 0000000..25d07ed Binary files /dev/null and b/docs/historical/multifarious.pdf differ diff --git a/docs/historical/multifarious.txt b/docs/historical/multifarious.txt new file mode 100644 index 0000000..195c2aa --- /dev/null +++ b/docs/historical/multifarious.txt @@ -0,0 +1,2284 @@ + + + + + MH: A Multifarious User Agent + + + Marshall T. Rose + + Member, Research Technical Staff + + Northrop Research and Technology Centery + + + + Einar A. Stefferud + + President, Network Management Associatesz + + and Visiting Lecturer, University of California, Irvine + + + + Jerry N. Sweet + + Member, Technical Staff + + Local Network Systems./ + + + + Abstract + + +The UCI version of the Rand Message Handling System (MH) is discussed, including + +important extensions. MH is a powerful user agent which operates in the ARPA + +Internet and UUCP environments. In addition to the basic functions provided + +by a user agent, such as reading and sending mail, MH has several distinguishing + +characteristics which give the user additional message handling capabilities. In + +particular, MH provides mechanisms for organizing messages, tailoring its own + +behavior, and extending its functions. + + +This document describes MH from several perspectives. Particular emphasis is + +given to: the MH user environment, advanced features of MH which have proven to + +be particularly useful for sophisticated users of electronic mail, MH's potential as + +a record manager, and MH as a part of a distributed mail environment. Although + +MH as been widely used since its creation in 1979, a discussion of its perspectives + +and functionality has not appeared in the open literature. + + +________________________________________ +y One Research Park, Palos Verdes Peninsula, CA 90274. Telephone: 213/377-4811. + +Computer mail: MRose% NRTC@USC-ECL +z 17301 Drey Lane, Huntington Beach, CA 92647. Telephone: 714/842-3711. + +Computer mail: EStefferud@ICS.UCI.EDU +./ 130 McCormick Avenue, Suite 102, Costa Mesa, CA 92626. Telephone: 714/754-6631. + +Computer mail: JSweet@ICS.UCI.EDU + + + MH: A Multifarious User Agent + + + +Introduction + + The UCI version of the Rand Message Handling System, MH, is a user agent. + +In the interests of brevity, we dispense with the usual definition of terms, refer the + +reader to Figure 1, and simply note that MH is not responsible for delivering mail. + +Rather, it interacts with a message transport system, MTS, at two interfaces: it + +sends mail by placing it through a posting slot to the MTS, and it receives mail by + +retrieving it through a delivery slot from the MTS. Besides these two MTS-specific + +activities, the tasks which MH addresses are: the composition of messages (which + +may, or may not, be in reference to previously sent messages), the reading of + +messages, and the organization of messages. + + + MH was originally developed by the Rand Corporation, and initially was + +proprietary software. The Department of Information and Computer Science + +at University of California, Irvine, shortly after joining the Computer Science + +Network (CSnet), acquired a copy of MH, and began additional development of + +the software. Since that time, the Rand Corporation has declared MH to be in the + +public domain, and the UCI version of MH has passed through four major releases. + + + Much credit must be given to the initial designers and implementors of MH: + +Bruce Borden, Stockton Gaines, and Norman Shapiro. Although MH has suffered + +significant development at UCI since Rand's initial release, the fundamental + +concepts of MH's environs have remained nearly unchanged. In addition, the + +current maintainers of MH gratefully acknowledge the comments of the many sites + +which have run various releases of MH in the past. + + + MH runs on different versions of the UNIX1 operating system (such as + +4.2bsd UNIX and various flavors of v7 UNIX). In addition, MH supports four + +different MTS interfaces: SendMail[EAllm83], the standard mailer for 4.2bsd + +systems; MMDF[DCroc79] and MMDF-II[DKing84], the Multi-Channel Memo + +Distribution Facility developed by the University of Delaware which forms the + +software-backbone for CSnet[DCome83] mail relays service; SMTP, the ARPA + +Internet Simple Mail Transfer Protocol[SMTP]; and, a stand-alone delivery system. + + + The organization of this paper is straight-forward, given space considerations. + +Initially, the MH philosophy of mail handling is presented, along with a description + +of the environment which the MH user is given to process mail. Following this, + +certain advanced features of MH are discussed in more detail. In particular, the + + +________________________________________ +1 UNIX is a trademark of AT&T Bell Laboratories. + + + + Copyright fcl1985, North Holland Publishing Company 1 + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 2 +______________________________________________________________________________________________________________________ + + + + UA UA + + + + POSTING RECEIPT + + + + MTS + + + + MTA MTA : : : : : : MTA + + RELAYING + + + + Figure 1 + +___________________________________________________MTS_model__________________________________________________________ + + + +notion of a draft folder is introduced, which permits the handling of multiple drafts + +during composition. In addition, message selection facilities are described. Next, + +two different aspects of MH's power as a software system are discussed: record + +handling, in which MH facilitates record processing systems; and, how MH can be + +employed in a distributed mail environment. This latter section raises questions + +as to the location of the posting and delivery slots, along with authentication + +mechanisms. Finally, we conclude by discussing areas of future development which + +MH may endure. + + + Although familiarity with MH is not assumed on the part of the reader, + +some knowledge of the UNIX operating system is useful. Appendix A gives a short + +synopsis of the MH commands. + + + +The MH Philosophy + + Although MH has many traits which tend to differ it from other user agents, + +the design aspect which fundamentally influences the interface between MH and + +the user is that it is composed of many small programs instead of one very large + +one. This architecture gives MH much of its strength, since intermediate and + +advanced users are able to take advantage of this flexibility. + + + The key to this flexibility is that the UNIX shell (usually the C shell or the + +Bourne shell), is the user's interface to MH. This means that when handling mail, + +the entire power of the shell is at the user's disposal in addition to the facilities + +which MH provides. Hence, the user may intersperse mail handling commands + +with other commands in an arbitrary fashion, making use of command handling + +capabilities that the user's shell provides. + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 3 + + + Furthermore, rather than storing messages in a complicated data structure + +within a monolithic file, in MH, each message is a UNIX file, and each folder (an + +object which holds groups of messages) is a UNIX directory. That is, the directory + +and file structure of UNIX is used directly. As a result, any UNIX file-handling + +command can be applied to any message. + + + To the novice, this may not make much sense or may not seem important. + +From three years of observation, we have seen that as users of MH have become + +more experienced they have found this capability to be quite attractive. In + +addition, this approach is often quite pleasing to system implementors, because + +it minimizes the amount of coding to be performed and, given a modular design, + +changes to the software system can be maintained easily. Our empirical findings + +confirm our theoretical expectations regarding the MH architecture. + + + Having described how MH fits into the UNIX environment, we now discuss + +the mail handling environment which is available to the MH user. + + +The MH Environs + + MH provides a complementary environment to the user's shell. While the + +shell maintains a context related to the user's focus in the file system (a current + +working directory ), mail handling is performed in a separate mail folder context. + +Operations on mail can therefore be performed entirely without regard to the + +current file system context, although MH does not prevent the user from making + +use of that context. Certain mail handling functions do make use of information + +maintained by the shell. For instance, by setting certain shell parameters, called + +environment variables, alternate mail handling contexts can be selected. + + + MH conventions often have direct analogs to shell or file system conventions. + +The shell has a current working directory; MH has a current mail folder. When + +the user begins a session on the system, the user's "home directory" is the base + +context; MH's default base area, the Mail directory, is found under the user's home + +directory. The user's default shell parameters are set upon beginning a new session + +from a startup profile (called .profile for sh users or .cshrc for csh users); the default + +parameters for MH commands are taken from a file called .mh_profile in the user's + +home directory. The shell has an environment ; MH has a context file. Each of the + +user's directories has files; each of the user's MH folders has messages. + + + These parallels have a basis not only in MH's high level mail handling model, + +but also in the way low level shell and file system conventions have been abstracted + +to implement MH conventions. Directories are folders; files are messages. The Mail + +directory forms the root of a virtual file subsystem within which the user operates + +on mail without disturbing files outside this mail handling domain. + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 4 +______________________________________________________________________________________________________________________ + + + + $HOME/ (user's home directory) + + + + .mh_profile Mail + + + + context inbox/ mhl.format replcomps drafts/ chron/ + + + + 1 2 3 1 + sequences yr.1984/ yr.1985/ + + + + Figure 2 + + MH File Subsystem + +__________________________________________(directories_are_shaded)____________________________________________________ + + + +The MH Profile + + The .mh_profile contains plaintext that describes the user's default mail + +handling parameters. An example of an elaborated profile is shown in Figure 3. + + + Each line in the profile consists of an MH parameter name terminated with + +a colon (`:') followed by parameter values. In this example, "global" parameters + +are listed in the first few lines, with program-specific parameters following. Each + +MH program examines global parameters as well as any parameter with the same + +name by which the program was invoked. For example, the comp program, which + +is used to compose new messages to be sent, examines the entries: + + + + Path___: The path parameter specifies the name of the MH root directory. + + This is normally named Mail. + + + Editor____: The editor parameter specifies which text editor is first invoked + + to create the header information and body of a message draft. In + + most cases, this editor is the MH default editor, prompter. + + + Draft-Folder______: This parameter specifies a folder within which new message drafts + + are to be created. The draft folder mechanism is an advanced + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 5 +______________________________________________________________________________________________________________________ + +Path: Mail +Editor: prompter +prompter-next: emacs +Folder-Protect: 700 +Msg-Protect: 600 +Previous-Sequence: pseq +Alternate-Mailboxes: jsweet@uci-icse, jsweet@uci-750a +Draft-Folder: drafts +Sequence-Negation: not +bbc: -quiet +bboards: system mh-workers sf-lovers whimsey +comp: -form mycomponents +dist: -annotate -inplace +folder: -noheader +forw: -annotate -inplace -format +mhl: -noclear +next: -noheader +prev: -noheader +prompter: -prepend +repl: -annotate -inplace -cc me +send: -format -msgid +scan: -noheader -time +show: -noheader -format +showproc: mhl + + + Figure 3 + +___________________________________________Elaborated_MH_Profile______________________________________________________ + + + + feature of MH that is given separate treatment in a later segment + + of this paper. + + + comp____: The program-specific parameter examined by comp lists user- + + default options. + + + +Other programs invoked by comp (e.g. prompter and send ) would examine their + +own profile entries as well. MH programs have reasonable compiled-in defaults + +and also permit options to be specified on the shell command line with which the + +programs are invoked. The order of override precedence is: command line options + +first, .mh_profile options second, and compiled-in defaults last. + + + Each program option is prefixed by a dash (`-') following the UNIX convention. + +Unlike most UNIX-style options, however, the options are words rather than single + +letters. An option may be abbreviated to an unambiguous prefix. Each MH + +program has a `-help' option that displays a brief summary of the program's + +available options. + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 6 + + +Folders and Messages + + In a typical paper-oriented office, new correspondence arrives and is stacked + +in an "in box", while outgoing correspondence is placed in an "out box". Processed + +material is stored in appropriately labelled folders and filed away for future + +reference. This state of affairs is modelled in MH with folders and messages, which + +are simply text files (one message per file) stored under the folder directories. Most + +of the user's folders are kept under the Mail directory. + + + A folder is given an alphanumeric name permissible within the UNIX file + +system structure, and each message stored therein is given a numeric name in the + +range 1..1999. The upper bound on message numbers was selected for efficient + +access to an internal representation, an array of bits (a "bit set"), with each bit + +indicating the presence or absence of a message with a number in the range 1..1999. + +This internal representation also restricts the order of multiple message reference + +to an ascending numerical sequence. Other representations have been studied + +(e.g., an unsorted sparse array of integers), but have been rejected for reasons of + +efficiency. Folders may contain subfolders, corresponding to UNIX tree-structured + +directories. For the sake of completeness, it might be said that "sub-messages" + +exist insofar as message "digests", which nest messages inside other messages, are + +supported by certain advanced MH functions. + + + The current working folder is the default folder selected for almost all MH + +commands. To select explicitly a folder for mail handling commands entails + +specifying the name of the folder, prefixing the name with a plus-symbol (`+'). An + +example is: + + + refile 1 2 3 +chron/yr.1984 + + +This command re-files the selected messages (1 , 2, and 3 here) from the current + +working folder to a subfolder under the folder chron named yr.1984 . To see the + +folder/subfolder relationship, refer to Figure 2. + + + The plus-symbol notation is specific to those folders immediately subordinate + +to the Mail directory. This is analogous to "absolute pathnames" in UNIX_those + +files whose positions in the file system hierarchy are given starting with the system + +root, names prefixed with the slash character (`/'). To specify folders subordinate to + +the current working folder, an at-sign (`@') is substituted for (`+'). It is permitted + +to use UNIX dot notation to specify parent folders. Referring to Figure 2, if the + +current working folder were ``+chron/yr.1985'' , then the command + + + folder @../yr.1984 + + +selects the subfolder yr.1984 in the parent directory chron , as the new current + +working folder. While the current working folder is normally the default, it may + +be specified explicitly as ``@.'' . + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 7 +______________________________________________________________________________________________________________________ + +To: +cc: ,, +Subject: Re: +In-reply-to: Your message of . + +In-reply-to: Your message of . +Fcc: +-------- + + + Figure 4 + +_______________________________________Elaborated_Reply_Template______________________________________________________ + + + +The Context File + + The .mh_profile contains static information about the user's preferences. A + +context file, contained in the Mail directory, contains the current mail handling + +environment information, which changes as different folders, messages, and named + +message lists (called message sequences ) are selected, created, and updated. This + +information is retained between invocations of MH commands, and is preserved + +across system sessions. + + +Templates + + The message draft composition functions (comp, repl, forw, and dist ) use + +certain default header formats, which may be changed by the user through the use + +of message templates. The exact format of a template may vary among commands. + +An example of an elaborated template for the reply command repl is shown in + +Figure 4. + + + This template specifies how the automatically-generated header for a draft + +message in reply to a source message is to be formatted. The syntax is capable of + +directing output of header lines based on the presence or absence of other header + +lines in the source message. + + + Other kinds of templates are used to specify the display formats of messages, + +or to specify the way that messages are to be included in other messages. This is + +similar to the functionality provided by BBN Hermes[HERMES], another powerful + +mail handling system for Tops202 based systems. + + +Explaining All This to New Users + + There do exist people who do not like MH.3 The emerging pattern of + +complaints from such people indicates that MH accentuates their perceptions of + +the deficiencies of UNIX, to wit, lack of interactivity and lack of easily found help + +facilities. Also, some feel that the proximity of the mail handling environment + +to the operating system is a distraction, rather than an asset. There have been + +________________________________________ +2 Tops20 is a trademark of Digital Equipment Corporation. +3 At UCI, these people are reported to be weeded out at an early stage and quietly taken to the + +Ministry of Love to be made uncrimethinkful. + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 8 + + +some attempts to make MH more accessible to users who prefer menu-oriented or + +monolithic mail system interfaces.4 + + + In truth, users new to UNIX do not always acclimate to MH easily. The + +command set is undistinguishably mixed in with all other UNIX utilities, and it + +is not easy, without aid of a manual, to pick out the necessary commands. MH + +does not provide any "hand-holding" to guide the user through a minimally useful + +command subset. + + + Another problem is that the initial default user profile is too often sparse, + +containing only a ``Path:'' parameter. MH commands will perform adequately + +without specific information in the profile, so new users often neglect optionally + +useful MH capabilities, eventually becoming frustrated with the limited default + +capabilities, yet unable to determine without researching through the user's + +manual, the necessary options that would solve their problems. + + + The currently available means for learning how to use MH are: + + + + - One-on-one tutoring by knowledgeable MH users, which has so far + + shown the best results with new users. + + + - Consulting the MH Tutorial [MRose84b], or the MH User's + + Manual [MRose85a]. + + + - Using the msh ("MH shell") program as a training shell to read + + bulletin boards. The msh command is an interactive program that + + provides some help messages and can list available MH commands. + + + +No on-line tutorial materials are presently distributed with the mh.5 system, + +although there are some plans in the works to provide a program to help with + +setting up the user profile that would also provide operational tips for MH and + +UNIX. + + + It should be noted that these perceived defects of MH do not affect its utility + +any more than analogous problems with any operating system will diminish its + +actual capabilities. Users may quarrel with the means chosen for orchestrating + +MH, but the fact remains that MH is a very useful set of mail handling tools that + +is flexible, infinitely interoperable with other UNIX text handling tools, and yet + +simple enough for new users to grasp once they are given the proper start. The + +fact that better tutorial materials and training do not exist only means that some + +further work needs to be done in the area of user-education. + + + +________________________________________ +4 For example, mhe from Brian Reid of Stanford University and emh from Marshall Rose are + +instances of macro packages for James Gosling's EMACS extensible editor, while the hm program +from Jim Guyton of the Rand Corporation is a monolithic MH interface. As of this writing, none +of these programs is documented in the literature. + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 9 + + +A Few Advanced Features + + We now consider certain advanced features in MH. These features have been + +chosen to demonstrate some useful capabilities available to the MH user. It should + +be noted that many capabilities of MH, such as shell scripts for extensibility, mail + +delivery hooks, the personal aliasing facility, and so forth, are not described here + +for lack of space. + + +Draft Folders + + The draft folder facility provides a method by which several message drafts can + +be simultaneously composed and maintained until sent. The rationale for this is that + +partially composed message drafts, perhaps elaborate sets of separate messages, + +can be incrementally completed, while a folder provides a consistent organization + +for drafts in progress. This is comparable to similar situations in the "paper world" + +where contracts, business correspondence, and other communications, rather than + +being created serially with each posted in turn before composing the next, are + +usually left in various stages of completion before they are eventually mailed. + + + The ``Draft-Folder:'' parameter value in the MH profile is used to specify + +a default draft folder, where each draft is given a number and an "artificial" date + +stamp. Provided that the proper header fields have been completed, a scan listing + +of the draft folder provides a summary of each draft in progress: to whom the + +message is to be sent, the subject, the date of the draft's initial creation and + +optionally, the current size of the draft in terms of characters. Experienced users + +of MH may often keep as many as five to ten unfinished drafts in their draft folder. + +"Draft clutter" can be remedied easily with the rmm command. + + +Message Selection + + MH commands accept message sequence specifications to specify which `msg' + +or `msgs' are to be operated upon. Here are some examples: + + + scan 1 3 5 19 185 + + +to get a scan listing of messages 1, 3, 5, 19 and 185. + + + scan pseq + + +to get a scan listing of whatever message sequence was given to the previous MH + +command (in this case 1, 3, 5, 19, and 185). + + + show first last + + +to get a display of the first and last messages in the folder. The MH sequences + +named ``first'' and ``last'' are system defined pseudo sequences which act like + +explicit sequences when given to MH commands. Others are ``cur'' , ``next'' , + +``prev'' , and ``all'' which respectively specify the "current" message, the + +"next" after cur, the "previous" message before cur, or "all" messages in the + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 10 + + +current-folder. The scan assumes ``all'' while show assumes ``cur'' , unless + +overridden on the command line. Over-ride precedence is: command-line first, + +.mh_profile second, and compiled-in default last. + + + Users can define additional sequences for similar use, but must avoid using + +reserved names. A few optional sequence names have been preempted by MH, such + +as ``pseq'' to mean the "sequence used by the previous MH command," and + +``unseen'' to mean the "messages not yet seen by the user." Sometimes these + +preempted names can be changed by resetting them in the user's MH profile, but + +these facilities are beyond the scope of this discussion. + + + The mark command can be used to set the values for user-defined sequences: + + + mark 1 3 5 -seq zzz + + mark 4 5 9 -seq zzz -nozero + + +will create a user-sequence named ``zzz'' and put the sequence ``1 3 5'' in it. + +The mark command assumes that any prior content in an existing user-sequence + +should be "zeroed" before the new sequence value is recorded. This can be + +prevented with a `-nozero' switch on the command line, to add ``4 5 9'' to + +the original ``1 3 5'' to yield ``1 3 4 5 9'' . + + + mark pseq zzz -seq zzznew + + +will create a new sequence named ``zzznew'' and set its value to the combined + +(inclusive or) of the existing user-sequences in ``pseq'' and ``zzz'' for its value. + + + Another more powerful way to set the values of a user-sequence is with the + +pick command, which provides full string search capabilities: + + + pick -from mrose -seq yyy + + pick -from mrose -seq yyy -list + + +will search though all the ``From:'' fields in the current folder for the string + +``mrose'' and place the list of "hits" in the sequence named ``yyy'' . The + +`-list' switch will cause the resulting list to also be displayed on the user's + +terminal. If no `-seq name' switch is given, pick will assume `-list' and will + +simply display the resulting list of hits on the user's terminal. + + + This `-list' behavior of pick allows users to take advantage of the UNIX + +backquoting facility to embed searches in other MH commands. + + + scan `pick -from mrose` + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 11 + + +will produce a scan listing of `-from mrose' hits because the UNIX shell will + +spawn a process to execute the ``pick -from mrose'' segment and return the + +`-list' results as the message sequence to be scanned. + + + mark pseq -seq zzz + + +could then be used to capture the "previous sequence" in zzz for later use. + + + One last facility should be mentioned here. It is also possible to negate a + +sequence to specify a new sequence. The default negation string is ``not'' . + + + scan notzzz + + mark notzzz -seq zzznot + + +will give the user a scan listing of all the messages in the current folder that are + +not included in the sequence ``zzz'' . The mark example will of course record + +the negation of zzz in zzznot. It is a bad idea to use the string ``not'' as the + +beginning of any user-sequence name, if ``not'' is defined as the negation string. + +(Users can choose a different negation string.) + + + From this discussion, it should be clear that MH provides a uniform set of + +ways to capture and use sequences to augment the user's short- and long-term + +memory and to manipulate lists of interesting messages. User-sequences are + +normally stored as RFC822 labeled text lines in a file (e.g., sequences) in the folder + +with the messages referred to in the sequence. If a user does not have write access + +to a folder, then the MH mark and pick commands will create a "private" sequence + +in the user's context file. Switches are available to give the user control over the + +choice of `-private' or `-public' sequence options. + + + Since user-sequences are stored as ordinary text lines in RFC822 labeled fields, + +there is no prohibition against someone writing programs to perform any kind of + +useful manipulation on MH sequences. Boolean operators can be implemented, + +or complex indexing structures could be developed to serve special purposes. If a + +DBMS can utilize UNIX pathnames or MH `+folder' and message names, then + +the full power of the DBMS might be applied. The intention of MH development + +teams has always been to leave open the widest possible array of options for + +later extension. The only restrictions should be the user's ingenuity, programming + +prowess, and the available machine resources. Unfortunately these resources always + +seem to be available in limited quantities. + + +Distribution Lists + + MH has a convenient interface to the UCI BBoards facility[MRose84a].5 This + +facility permits the efficient distribution of interest group messages on a single + + + +________________________________________ +5 The UCI BBoards facility can run under either the MMDF or SendMail, or in a more restricted + +form under stand-alone MH. + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 12 + + +host, to a group of hosts under a single administration, and to the ARPA Internet + +community. + + + Described simply, an interest group is composed of a number of subscribers + +with a common interest. These subscribers post mail to a single address, known + +as a distribution address (e.g., MH-Workers@UCI). From this distribution address, + +a copy of the message is sent to each subscriber. Each group has a moderator, + +which is the person that runs the group. This moderator can usually be reached + +at a special address, known as a request address (e.g., MH-Workers-Request@UCI). + +Usually, the responsibilities of the moderator are quite simple, since the mail + +system handles distribution to subscribers automatically. In some interest groups, + +instead of each separate message being distributed directly to subscribers, a batch + +of (related) messages are put into a digest format by the moderator and then sent + +to the subscribers. Although this requires more work on the part of the moderator + +and introduces delays, such groups tend to be better organized. + + + Unfortunately, some problems arise with the scheme outlined above. First, if + +two users on the same host subscribe to the same interest group, two copies of the + +message will be delivered. This is wasteful of both processor and disk resources at + +that host. + + + Second, some groups carry a lot of traffic. Although subscription to a group + +does indicate interest on the part of a subscriber, it is usually not interesting to get + +50 messages or so delivered to the user's private maildrop each day, interspersed + +with personal mail, that is likely to be of a much more important and timely + +nature. + + + Third, if a subscriber's address in a distribution list becomes "bad" somehow + +and causes failed mail to be returned, the originator of the message is normally + +notified. It is not uncommon for a large list to have several bogus addresses. This + +results in the originator being flooded with "error messages" from mailers across + +the Internet stating that a given address on the list was bad. Needless to say, the + +originator usually does not care if the bogus addresses got a copy of the message + +or not. The originator is merely interested in posting a message to the group at + +large. On the other hand, the moderator of the group does care if there are bogus + +addresses on the list, but ironically does not receive notification. + + + To solve all of these problems, the UCI BBoards facility introduces a new + +entity into the picture: all interest group mail is handled by a special component of + +the mail system. The distribution address maps to a special channel that performs + +several actions. First, if local delivery is to be performed, then a copy of the + +message is placed in a global maildrop for the interest group with a timestamp and + +a unique number. Local users can read messages posted for the interest group by + +reading this "public" maildrop. Second, if further distribution is to take place, a + +copy of the message is sent to the distribution address in such a way that if any of + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 13 + + +the addresses are bogus, failure notices will be returned to the local maintainer of + +the group address list, rather than the originator of the message. + + + This scheme has several advantages: First, messages delivered to the local + +host are processed and saved once in a globally accessible area. The UCI BBoards + +facility supports software which allows a user to query an interest group for new + +messages and to read and process those messages in the MH-style. Second, once + +a host administrator subscribes to an interest group, each user can join or quit + +the list's readership without contacting anyone. Third, a hierarchical distribution + +scheme can be constructed to reduce the amount of delivery effort. Fourth, errors + +are prevented from propagating. When an address on the distribution list goes + +bad, the list moderator who is immediately responsible for the address is notified. + +If a local moderator does not exist, then the local PostMaster is notified (not the + +global group moderator). + + + In addition to solving the problems outlined above, the UCI BBoards facility + +supports several other capabilities. BBoards may be automatically archived in + +order to conserve disk space and reduce processing time when reading current + +items. Also, the archives can be separately maintained on tape for access by + +interested researchers. + + + Special alias files may be generated which allow the MH user to shorten + +address type-in. For example, instead of sending to SF-Lovers@Rutgers, a user + +of MH usually sends to ``SF-Lovers'' and the MH aliasing facility automatically + +makes the appropriate expansion in the headers of the outgoing message. Hence, + +the user need only know the name of an interest group and not its global network + +address. + + + Finally, the UCI BBoards facility supports private interest groups using the + +UNIX group access mechanism. This allows a group of people on the same or + +different machines to conduct a private discussion. + + + The practical upshot of all this is that the UCI BBoards facility automates the + +vast majority of BBoards handling from the point of view of both the PostMaster + +and the user. + + + MH provides three programs to deal with interest groups. The bbc program + +is used to check on the status of one or more groups, and to optionally start an + +MH shell on those groups which the user is interested in. The bbl program can be + +used to perform manual maintenance on a discussion group beyond the normal + +automatic capabilities of the UCI BBoards facility. Finally, the msh program + +implements an MH shell for reading BBoards, in which nearly all of the MH + +commands are implemented in a single program. + + + Observant readers may note that the use of msh is contrary to the MH + +philosophy of using relatively small, single-purposed programs. Sadly, the authors + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 14 + + +admit that this is true. In an effort to avoid some problems with shared-access and + +message naming conventions (which are beyond the scope of this paper), BBoards + +are kept in maildrop format (monolithic) instead of folders. Some research has + +gone into overcoming this problem in order to restore MH's purity of purpose, but + +all solutions proposed to date are either unworkable or require significant recoding + +of MH's internals. + + +Encapsulation + + As described above, some interest groups appear in digest form. This + +means that the messages which appear in such a forum actually encapsulate other + +messages in their body. It turns out that the generation of a digest is not at + +all unlike the generation of a draft which forwards one or more messages. In + +RFC934[MRose85b], a method is proposed to standardize message encapsulation + +for the ARPA Internet community. MH uses this method for the generation of + +digests, forwardings, and blind-carbon-copies. + + + A key requisite for using an encapsulation technique for digests and + +forwardings is the ability to later decapsulate the contents. Without this ability, + +the forwarded messages are of little use to the recipients because they can not be + +distributed, forwarded, replied-to, searched-for, or otherwise processed as separate + +individual messages. In the case of a digest, a bursting capability is especially + +useful. Not only does the ability to burst a digest permit a recipient of the digest + +to reply to an individual digestified message, but it also allows the recipient to + +selectively process the other messages encapsulated in the digest. + + + For example, a single digest issue usually contains more than one topic. A + +subscriber may only be interested in a subset of the topic discussed in a particular + +issue. With a bursting capability, the subscriber can burst the digest, scan the + +headers, and process those messages which are of interest. The others can be + +ignored, if the user so desires. + + + Note that with proper encapsulation technology, one can argue for the + +re-distribution of messages simply becoming special cases of message forwarding. + +For example, the NBS Standard for Mail Interchange[FIPS98] and the recent + +CCITT draft on Mail Handling Systems standards[X.400] both discourage the + +re-distribution facility in favor of forwarding by encapsulation. + + +Encapsulation and Blind-Carbon-Copies + + Many user agents support a blind-carbon-copy facility. MH implements this + +using a form of encapsulation. It may not be apparent to the reader as to why + +encapsulation of the original message is a good way to deliver blind-carbon-copies. + +With a blind-carbon-copy facility, two types of addressees are possible in the draft + +to be sent: visible and blind. The visible recipients are listed as addresses in the + +``To:'' and ``cc:'' fields, and the blind recipients are listed in the ``Bcc:'' + +fields of the draft. The idea behind this facility is that copies of the draft which are + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 15 + + +delivered to the ``To:'' and ``cc:'' recipients should show the visible recipients + +only. + + + A major concern with a blind-carbon-copy facility is that blind recipients + +should be prevented from accidentally replying to the message in such a way that + +the visible recipients are included as addressees in the reply. + + + There are several methods to implement this facility. Most rely on posting + +two drafts with the MTS. One draft is destined for visible recipients, and simply + +lacks the ``Bcc:'' fields of the original draft. The second draft is destined for the + +blind recipients. The question then arises as to what form this latter draft posted + +should take. + + + One approach might be to disable the ``To:'' and ``cc:'' fields of the + +draft sent to the blind recipients (e.g., by prefixing the string ``BCC-'' to these + +fields). Unfortunately, this is often very confusing to the blind recipients because + +it differs from what the visible recipients got. Although accidental replies are not + +possible, it is often difficult to tell that the message received is the result of a + +blind-carbon-copy. + + + The method used by MH is to post two drafts, a visible draft for the visible + +recipients, and a blind draft for the blind recipients. The visible draft consists + +of the original draft without any ``Bcc:'' fields. The blind draft contains the + +visible message as a forwarded message. The headers for the blind draft contain + +the minimal RFC822 headers (``From:'' and ``Date:'' ) and, if the original + +draft had a "Subject:" field, then this header field is also included. In addition, + +MH alerts the recipient that the message is a blind-carbon-copy by placing this + +information in the initial encapsulation information in the blind recipient's copy. + +This scheme prevents inadvertent replies while allowing the recipient full access to + +an exact copy of what was sent to the visible recipients. + + + +MH as a Record Handler + + Although message format standards such as RFC822 (and its predecessors) + +were originally devised to facilitate computer processing of interpersonal messages, + +there is no special reason why the concept should be limited to interpersonal + +message processing. Messages are just one of a variety of useful record forms that + +might be created in one place and transfered to another for processing. In this + +regard, RFC822 wisely left open the option for higher level applications to use + +arbitrary header names or field contents by proscribing MTS use of header names + +beginning with ``X-'' . + + + MH carries though on this idea by allowing the pick command to accept any + +arbitrary field name for string searches, so MH users can select on any arbitrary + +field name without prior definition. Beyond this, since all messages are simply files + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 16 + + +in UNIX directories, applications can be developed to apply any programmable + +process to any selected message. + + + For example, a Time Card Form might be called up by an MH user with + + + comp -form timecomps + + +to enter time and attendance information into ``X-time: : ::'' fields in a draft + +message record. The timecomps form would include the address of a supervisor + +who should validate the information, along with empty fields to be filled in with + +data. In fancy applications, this might be done with a sophisticated interactive + +data entry tool which would validate entered information, but this is an open choice + +within the MH framework. Another alternative would be to use a received message + +as the blank form to add a degree of central control over time and attendance + +reporting forms. + + + Receiving supervisors could simply register approval by using the MH dist + +command to resend subordinates' time cards to higher approval levels, or to send + +them to a time card collection address. The MH dist command automatically + +inserts "ReSent" header fields showing who resent it and the resending date. + +Alternatively, the MH forw command could be used to transfer a batch of approved + +time cards to the next processing station. If desired, a new "approval" command + +could be programmed to provide a more trusted authentication, perhaps with + +encryption of the content. Trusted mail systems, such as Trusted Mail6 [MRose85c], + +are becoming available for this purpose. + + + At the final collection destination, an automated User Agent could be + +programmed to directly load the data into the Time and Attendance DBMS by + +parsing and decoding the data contained in the ``X-time: : ::'' fields. It might be + +noted that while the RFC822 does not restrict the internal forms of messages, it is + +necessary to conform to the interchange standard if specialized filters for message + +headers are not to be built to serve as export laundries (a term originating with + +Stephen H. Willson to describe conformance transformations in Ada7 ). + + +Mapping Between Record Modes (DBMS/MHS) + + This time and attendance example suggests that it is possible to define one-to- + +one mappings between RFC822 fields and DBMS data elements. For every DBMS + +data element definition, there is a potential corresponding RFC822 transferable + +equivalent definition which can facilitate mail transfers of record information. + +Indeed, a large portion of the definitional work is already done where a Data Base + +has already been defined. All that remains is to define the RFC822 equivalents. + + + +________________________________________ +6 Trusted Mail is a trademark of Trusted Technologies, Incorporated. +7 Ada is a trademark of the Department of Defense (Ada Joint Program Office). + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 17 + + + The suggestion that a batch of time cards be forwarded inside a "cover" + +message implies that it is possible in the MH framework to recursively bundle + +messages within messages, and be able to recover the originals for separate + +processing at a receiving destination. The MH burst command can be applied + +recursively for this purpose because MH encapsulation uses an unambiguous scheme + +to delimit messages that are enclosed inside other messages. Thus, it should be + +possible to extract a structured set of records from a DBMS and mail the set to a + +foreign site for processing, or reinsertion into another DBMS. As long as the DBMS + +data element definitions correctly correspond to the RFC822 definitions, it is not + +even necessary for the source and destination DBMS systems to be the same. + + + From this discussion, it is concluded that the MH framework can be useful + +for building distributed record handling systems where people at widely scattered + +locations must create and submit record forms for processing at distant locations. + +This might prove to be especially effective when a mail system is also needed + +for other communication purposes. A network of sales offices is a good example, + +where general message service would be used for communications with remote + +manufacturing and distribution centers, and could also be used for an order entry + +system. + + + Another example might be for structured communications, as occur in + +requisition and purchasing systems. Requisitions could be filled in and mailed to + +approval offices, and resent or forwarded to others for action. At some point, the + +requisitions could flow into other other more suitable processing systems as needed. + +At the very least, the ability to originate requisitions can be distributed to anyone + +with access to a mail system that can originate a proper requisition form. + + + As a last example, MH already supports group discussions with its BBoard + +facilities which allow for automatic sorting of mail by group address, with shared + +private or public group access to contributed items. As has been shown to be + +possible with administrative record systems, there is no obvious limit to the ways + +that group discussion traffic might be organized into structured collections with + +indices, annotations, or reference pointers to aid in making conference archives + +more useful. Indeed, MH tools could even be used to feed discussion items into + +existing conference systems. + + + +Distributed Mail + + Next, we consider how MH might be used in a distributed mail environment. + +Two schemes are discussed: one in which connectivity is high and connections + +are relatively "cheap", and one in which connectivity is low and connections are + +"expensive". + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 18 + + +The ARPA Internet Environs + + The ARPA Internet community consists of many types of heterogeneous + +nodes. Some hosts are large mainframe computers, others are personal work- + +stations. All communicate using the milstd TCP/IP protocol suite[IP, TCP]. + +Messages which conform to the Standard for the Format of ARPA Internet Text + +Messages[DCroc82] are exchanged using the Simple Mail Transfer Protocol[SMTP]. + + + On smaller nodes in the ARPA Internet it is often impractical to maintain + +a message transport agent. For example, a workstation may not have sufficient + +resources (cycles, disk space) in order to permit an SMTP server and associated + +local mail delivery system to be kept resident and continuously running. + +Furthermore, the workstation could be off-net for extended periods of time. + +Similarly, it may be expensive (or impossible) to keep a personal computer + +interconnected to an IP-style network for long periods of time. In other words, the + +node is lacking the resource known as "connectivity". + + + Despite this, it is often desirable to be able to process mail with MH on + +these smaller nodes, and they often support a user agent to aid the tasks of mail + +handling. To solve this problem, a network node which can support a message + +transport entity (known as service host) offers a maildrop service to these less + +endowed nodes (known as client hosts). The Post Office Protocol[JReyn84] (POP) + +is intended to permit a workstation to dynamically access a maildrop on a service + +host to pick-up mail.8 The level of access includes the ability to determine the + +number of messages in the maildrop and the size of each message, as well as to + +retrieve and delete individual messages. More sophisticated implementations of the + +POP server are able to distinguish between the header and body portion of each + +message, and send n lines of a message to the POP client. This capability is useful + +in thinly connected environments where conservation of bandwidth is important. + +By utilizing a more intelligent POP client, a user may generate "scan listings" and + +dynamically decide which messages are worth taking delivery on. The philosophy + +of the POP is to put intelligence in the POP clients and not the POP servers. + + + The underlying paradigm in which the POP functions is that of a split- + +slot/remote-UA model. The client host (such as a workstation) is without a + +co-resident message transport agent (MTA), and thus makes use of a service host + +with an MTA to obtain posting (SMTP) and delivery (POP) services. The entity + +which supports this type of environment is called a remote-UA since the user agent + +resides on a different host than its associated message transport agent. + + + +________________________________________ +8 Actually, there are three different descriptions of the POP. The first, cited in [JReyn84], was the + +original description of the protocol, which suffered from certain problems. Since then, two alternate +descriptions have been developed. The official revision of the POP[MButl85], and the revision of the +POP which MH uses (which is documented in an internal memorandum in the MH release). This +paper considers the POP in the context of the MH release. + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 19 + + + One very important issue which must be raised at this point is one of + +authentication. The POP requires that a client identify itself to the server using + +a server-specific user-id and a server/user-specific password. This authentication + +is required to prevent unauthorized entities from accessing a maildrop on a POP + +service host. It must be emphasized that the POP client is not a "trusted" entity + +of the MTS in any sense at all. + + + Ideally, one would also like to authenticate mail as it is posted on the POP + +service host using the SMTP. Currently, in the ARPA Internet community, no + +authentication is done with SMTP transactions. This is considered a shortcoming + +by those interested in researching the split-UA model of distributed mail. The + +MZnet environment, discussed in the next section, has authentication facilities for + +posting mail. + + + The current release of MH supports the above model fully: a POP client + +program is available to retrieve a maildrop on a POP service host. In addition, + +using the SMTP configuration for delivery in MH, a user is able to specify a + +search-list of service hosts (and networks) with which to try to post mail. Using + +this search-list, when an MH user posts a draft, the post program will attempt + +to establish an SMTP connection with each host in the list to post the message + +until it succeeds. Initial experimentation with the split-UA in a local network + +environment has proved quite successful. + + +The MZnet Environs + + In 1983, the MZnet project[EStef84] at the University of California, Irvine + +set out to study the problems involved with bringing Internet-class mail handling + +facilities to personal computers. The project used Apple II computers running the + +CP/M 2.2 operating system. Programming was done in a subset of the C language + +called BDS C. The transport system was based on the MMDF PhoneNet software, + +and implemented a split-slot arrangement between a personal computer and a + +larger, centralized mail distribution system that performed user authentication and + +provided a relatively secure mail transfer channel. The user agent, CP/MH, was + +based on MH. + + + A conclusion of the experiment was that small personal computer systems + +with dial-up phone connections constrain user agent systems design in ways that + +require use of a split-slot interface between the UA and its supporting MTA, and that + +this interface best provides the required services if it has error controlled command + +and data transfer facilities, with interactive behavior. Another conclusion indicated + +that a good design for a user agent in such a small personal computer environment + +could be based on a very modular architecture, such as MH. A final conclusion was + +that session-level authentication of the client UA is required for both posting and + +delivery. + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 20 + + + It should be noted that the MZnet project had a profound influence on the + +development of the POP used by MH. A somewhat more detailed discussion of + +the relations between the two environments can be found in the POP description + +contained in the MH release. + + + +A Final Note + + With the fifth major release of the MH system, it has become clear that most + +major increases in functionality can come only at the expense of either efficiency or + +portability. Although there has been great effort to keep MH portable to a number + +of UNIX implementations,9 the divergence in process management facilities, file + +system enhancements, and even C compiler capabilities has already presented + +obstacles to some attempts to rehost the MH code. + + + There has been some discussion of implementing specialized MH daemons + +that maintain context information over one or more sessions, thus decreasing the + +amount of overhead involved in starting each MH command. Unfortunately, even + +if such daemons were to be implemented, they would be very difficult to move to + +versions of UNIX without sophisticated process management facilities, and even + +then the differences in "philosophies" of process management[WJoy83, EOlse84] + +would tend to keep such daemons system specific. A better solution seems to be + +simply to tune existing code. + + + +Acknowledgements + + The authors would like to thank Norman Z. Shapiro and Phyllis Kantar of + +the Rand Corporation for their invaluable comments during the preparation of this + +paper. + + + +Distribution Information + + For information concerning distribution mechanics for the current release of + +MH, please contact: + + + Support Group + + Attn: MH Distribution + + Department of Information and Computer Science + + University of California, Irvine + + Irvine, CA 92717 USA + + + + 714/856-6852 + + + +________________________________________ +9 As of this writing, there are approximately 75 sites running mh.5 on five different implementations + +of UNIX. + + + References + + + +[DCome83] D. Comer. The Computer Science Research Network CSnet: A + + History and Status Report. Communications of the ACM 26, 10 + + (October, 1983), 747-753. + + + +[DCroc79] D.H. Crocker, E.S. Szurkowski, D.J. Farber. An Internetwork + + Memo Distribution Facility _ MMDF. Appearing in Proceedings, + + Sixth Data Communications Symposium, Asilomar, 1979, pp. 18-25. + + + +[DCroc82] D.H. Crocker. Standard for the Format of ARPA Internet Text + + Messages. Request for Comments 822. ARPA Internet Network + + Information Center (NIC), SRI International (August, 1982). + + + +[DKing84] D.P. Kingston, III. MMDFII: A Technical Review. Appearing in + + Proceedings Usenix Summer '84 Conference, Salt Lake City, Utah, + + 1984, pp. 32-41. + + + +[EAllm83] E. Allman. SENDMAIL _ An Internetwork Mail Router. + + Britton-Lee, Inc., Berkeley, California (July, 1983). + + + +[EOlse84] E.W. Olsen. NetOS Concepts and Facilities. Local Network Systems, + + Inc., Costa Mesa, California (August, 1984). + + + +[EStef84] E.A. Stefferud, J.N. Sweet, T.P. Domae. MZnet: Mail Service for + + Personal Micro-Computer Systems. Appearing in Proceedings, Second + + International Symposium on Computer Message Systems, Nottingham, + + U.K, 1984, pp. 293-302. + + + +[FIPS98] Specification for Message Format for Computer Based Message + + Systems. National Bureau of Standards (January, 1983). + + + +[HERMES] Bolt, Beranek, and Newman. Hermes User's Manual. for TOPS-20. + + Bolt, Beranek, and Newman, Boston, MA (January, 1979). + + + +[IP] Internet Protocol. Request for Comments 791 (milstd 1777). + + Appearing in Internet Protocol Transition Workbook, ARPA Internet + + Network Information Center (NIC), SRI International, 1981. + + + +[JReyn84] J.K. Reynolds. Post Office Protocol. Request for Comments 918. + + ARPA Internet Network Information Center (NIC), SRI International + + (October, 1984). + + + + Copyright fcl1985, North Holland Publishing Company 21 + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 22 + + +[MButl85] M. Butler, J.B. Postel, et. al. Post Office Protocol - Version 2. + + Request for Comments 937. ARPA Internet Network Information + + Center (NIC), SRI International (February, 1985). + + + +[MRose84a] M.T. Rose. The Rand MH Message Handling System: The UCI + + BBoards Facility. Department of Computer and Information Sciences, + + University of Delaware (October, 1984). + + + +[MRose84b] M.T. Rose. The Rand MH Message Handling System: Tutorial. + + Department of Computer and Information Sciences, University of + + Delaware (October, 1984). + + + +[MRose85a] M.T. Rose, J.L. Romine. The Rand MH Message Handling System: + + User's Manual. UCI Version. Department of Information and Computer + + Science, University of California, Irvine (January, 1985). + + + +[MRose85b] M.T. Rose, E.A. Stefferud. Proposed Standard for Message + + Encapsulation. Request for Comments 934. ARPA Internet Network + + Information Center (NIC), SRI International (January, 1985). + + + +[MRose85c] M.T. Rose, D.J. Farber, S.T. Walker. Design of the TTI Prototype + + Trusted Mail Agent. Appearing in Proceedings, Second International + + Symposium on Computer Message Systems, Washington, D.C., 1985 + + (to appear). + + + +[SMTP] Simple Mail Transfer Protocol. Request for Comments 821. ARPA + + Internet Network Information Center (NIC), SRI International + + (August, 1982). + + + +[TCP] Transmission Control Protocol. Request for Comments 793 (milstd + + 1778). Appearing in Internet Protocol Transition Workbook, ARPA + + Internet Network Information Center (NIC), SRI International, 1981. + + + +[WJoy83] W.N. Joy, E. Cooper, R.S. Fabry, S.J. Leffler, K. McKusick, + + D. Mosher. 4.2bsd System Manual. Technical Report Number 5. + + Computer Systems Research Group, University of California, Berkeley. + + + +[X.400] Message Handling Systems: System Model-Service Elements, + + Recommendation X.400, International Telegraph and Telephone + + Consultative Committee (CCITT). + + + Appendix A + + MH Commands + + + + MH is composed of several UNIX programs, which in theory are fairly simple + + and single-purposed. These commands are functionally grouped below: + + + Composing_Mail__________ + + comp: compose a message + + A program to originate a message. Usually, a special prompting editor front- + + end, prompter, is used to fill-in a composition template with the addressees + + of the message, subject, and so forth. + + + dist : redistribute a message to additional addresses + + A program that re-enters a message previously received by the user into the + + message transport system. Only new addresses are added; the body of the + + message is not changed in any way. + + + forw : forward messages + + A program that encapsulates one or more messages in a new message draft. + + In addition, the user may add initial and/or closing comments. + + + repl : reply to a message + + A program that constructs a reply to a message using a reply template. The + + template mechanism has sufficient generality to permit the user to "program" + + the form of the reply draft based on the contents of the message being + + replied-to. + + + send : send a message + + A program that posts a draft with the message transport system. The + + send program is usually invoked by one of the four preceding programs, and + + performs simple front-end pre-processing prior to invoking the post program. + + For example, if invoked in push'd mode, send will immediately relinquish + + control of the user's terminal and post the message in the background. If + + the posting fails, send will send back a failure notice to the user. If the user + + had push'd the sending of the draft, then by default the draft being sent is + + encapsulated in the failure notice. This permits easy burst'ing of the failure + + notice to retrieve the original draft. Otherwise, if the posting was successful, + + the draft is marked as having been sent. + + +whatnow : prompting front-end for send + + A program which is called by comp, et. al., after the initial draft has been + + + + Copyright fcl1985, North Holland Publishing Company 23 + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 24 + + + generated. The MH user can specify a different whatnow program, which + + yields considerable extensibility. + + + whom: report to whom a message would go + + A program which examines the addresses of the draft and expands all user- + + defined aliases contained therein. Optionally, whom may actually interact + + with the message transport system to determine the validity of the final + + addresses. This program is also usually invoked by comp, et. al. + + + Posting_Mail_______ + + ali : list mail aliases + + A simple front-end to the MH aliasing mechanism. + + + ap: parse addresses 822-style + + A useful debugging tool for PostMasters who wish to examine how MH + + interprets an Internet address. + + + conflict : search for alias/password conflicts + + Another program used by system administrators to check the consistency of + + MH alias files, and portions of the local message transport agent. + + +install-mh: initialize the MH environment + + A program which is automatically executed the first time a user issues an MH + + command. This program performs once-only initialization of the user's MH + + environment. + + + mhmail : send or read mail + + A simple program generally used by other programs to generate messages. + + The mhmail command is similar in purpose to the old BellMail program. + + + post : deliver a message + + A complex MH back-end that interacts with the local message transport + + agent to enter messages through the posting slot. (See the description of send + + above). + + + Reading_Mail________ + + inc: incorporate new mail + + A program that interacts with the local message transport agent to retrieve + + messages from the user's maildrop. + + + msgchk : check for waiting mail + + A program which reports the status of mail waiting in the user's maildrop. + + + show : show (list) messages + + A program which lists messages to its standard output (usually the user's + + terminal), possibly invoking another program to do the actual listing. Most + + users of MH have show automatically call the mhl program to format the + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 25 + + + message. The next and prev programs are simply ``show next'' and + + ``show prev'' , respectively. + + + mhl : produce formatted listings of MH messages + + A program which displays a message as directed by a template. This permits + + the user to filter out uninteresting headers and re-arrange other headers to a + + particular preference. In addition to being invoked by show, the mhl program + + is optionally also invoked by forw to format each message being forwarded; + + invoked by repl to format the body of a message being replied-to, if that + + message is being included in the reply draft; and, invoked by post to format + + a message being sent as a blind-carbon-copy. + + + rmm: remove messages + + A program that removes messages from an MH folder, optionally running a + + user-defined program instead of deleting them. If no program is given, the + + messages are "softly" removed, so they may possibly be recovered later. + + + scan: produce a one-line-per-message scan listing + + A program that generates a scan listing for messages. Each line of the listing + + contains date, source, subject, and possibly the initial body of the message. + + + Folder_Handling________ + + folder : set/list current folder/message + + A program used to list information concerning the current folder, or set the + + current folder and/or message. + + +folders : list all folders + + A program to list information on all folders (actually, just a special case of + + the folder command). Since the MH folder structure may be recursive, the + + user can indicate that folders should recursively examine all folders. + + + refile: file message(s) in (an)other folder(s) + + A program to move (or copy) messages from a source folder to one or more + + destination folders. + + + rmf : remove folder + + A program that deletes a folder and all messages therein. + + + Message_Selection_________ + + anno: annotate messages + + A program to arbitrarily annotate messages. If the user so desires, after + + distributing, forwarding, or replying-to a message, MH will automatically + + attach an annotation to the original message indicating the date and addresses. + + + mark : mark messages + + A program to manipulate user-defined sequences (lists of messages). Usually, + + mark is not employed directly by the MH user. + Reprinted from Computer Networks and ISDN Systems, 10(2), September, 1985 26 + + + pick : select messages by content + + A program to examine a list of messages and choose those which meet + + a particular selection criterion. The pick program is often used in UNIX + + back-quoted operations to pass message sequences to other MH commands. + + + sortm: sort messages + + A program to sort a list of messages according to the date given in a particular + + field. + + + Distribution_List_Handling____________ + + bbc: check on BBoards + + A front-end to run msh on a list of distribution lists which the user isn't + + current on. + + + bbl : manage a BBoard + + A (depreciated) program used to manually manage the local archives of + + a distribution list. These functions (archiving, expunging) are performed + + automatically by MH. + + + burst : explode digests into messages + + A program used to decapsulate messages from ARPA Internet digests. In + + addition, messages which have been encapsulated during forwarding (i.e., + + with forw ) can also be decapsulated using burst.10 + + + msh: MH shell (and BBoard reader) + + A monolithic program used to implement MH commands on messages + + arranged in a single file (maildrop format). Useful since distribution lists are + + kept in this format to minimize consumption of system resources. + + + pack : compress a folder into a single file + + A program which takes messages stored in MH format and places them in a + + single file (using the same format known by msh). + + + Interface_to_the_UNIX_File_System________________ + +mhpath: print full pathnames of MH messages and folders + + A program which maps MH-style names into the UNIX file naming convention. + + + + ________________________________________ + 10 Similarly, blind-carbon-copies may be decapsulated, though only socially mature users should do + + so. + + + + + Contents + + + + Page + +Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* + * 1 + +The MH Philosophy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 + + The MH Environs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 + + The MH Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 + + Folders and Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 + + The Context File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 + + Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * + * 7 + + Explaining All This to New Users . . . . . . . . . . . . . . . . . . . . . . . 7 + +A Few Advanced Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 + + Draft Folders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * + * 9 + + Message Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 + + Distribution Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 + + Encapsulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * + *14 + + Encapsulation and Blind-Carbon-Copies . . . . . . . . . . . . . . . . . . . 14 + +MH as a Record Handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 + + Mapping Between Record Modes (DBMS/MHS) . . . . . . . . . . . . . . 16 + +Distributed Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * + * 17 + + The ARPA Internet Environs . . . . . . . . . . . . . . . . . . . . . . . . . . 18 + + The MZnet Environs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 + +A Final Note . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * + * 20 + +Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 + +Distribution Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 + +References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * + *. 21 + +Appendix A: MH Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 + + + +________________________________________ +This document (version #1.54) was TEXset April 12, 1990 with DISS.STY v103. + + + + i diff --git a/docs/historical/mznet.pdf b/docs/historical/mznet.pdf new file mode 100644 index 0000000..e8fbfc3 Binary files /dev/null and b/docs/historical/mznet.pdf differ diff --git a/docs/historical/mznet.txt b/docs/historical/mznet.txt new file mode 100644 index 0000000..7a6b9a8 --- /dev/null +++ b/docs/historical/mznet.txt @@ -0,0 +1,1103 @@ + + + + + MZnet: Mail Service for Personal + + + Micro-Computer Systems + + + + Einar Stefferud + + President, + + Network Management Associates + + and + + Visiting Lecturer, + + in Information and Computer Science + + University of California at Irvine + + + + Jerry Sweet + +Department of Information and Computer Science + + University of California at Irvine + + + + Terrance Domae + + School of Engineering + + University of California at Los Angeles + + + + 0 + + + + + Abstract + + Traditional computer mail systems involve a co-resident User Agent +(UA) and Mail Transfer System (MTS) on a time-shared host com- +puter which may be connected to other hosts in a network, with new +mail posted or delivered directly through co-resident mail-slot pro- +grams. To introduce personal micro-computers (PCs) into this envi- +ronment requires modification of the traditional mail system architec- +ture. To this end, the MZnet project uses a split-slot model, placing +UA programs on the PCs while leaving MTA programs on a mail relay +host which can provide authentication and buffering. The split-slot +arrangement might be viewed as a new protocol level which operates +somewhere between the currently defined MTS-MTS and UA-UA lev- +els. + + + + +Introduction + + +Mail systems were born and have grown up on large central time sharing + +systems, often imbedded in large networks of inter-operating computers with + +a set of distributed processes automatically transferring mail between users. + +This is certainly the case with the U.S. Department of Defense (DoD) Ad- + +vanced Research Projects Agency Network (ARPANET) [1 ] where much of + +the original computer network mail systems research and development has + +taken place. Other mail networks such as the Computer Science Network + +[2 ] sponsored by the U.S. National Science Foundation, have also used rela- + +tively large shared computers lodged in an institutional setting, though they + +are often connected together with ordinary dial-up telephone links to form a + +large geographic network. Another U.S. example is USENET [3 ] which con- + +nects thousands of Unix1 systems together with informally-supported dial + +telephone links. Although there have been several attempts, there appear to + +be no successful mail networks based on small personal computers, such as + +those that use the CP/M2 or MS-DOS3 operating systems. + + The accepted architectural model (see Figure 1) for computer network + +mail (first articulated by the IFIP 6.5 Systems Environment Working Group) + +involves a User Agent (UA) which posts new mail items through a mail slot + +[4 , 5, 6, 7] to a Mail Transfer Agent (MTA) which delivers posted items to + +designated UA recipients through corresponding delivery slots. When mail + +is to be delivered to a UA on another host, it is transferred first to another + +MTA on the recipient user's host, which in turn puts the mail item through + +its local delivery slot. In this model, a Mail Transfer System (MTS) may + +be viewed as a collection of MTAs with network connections among them to + +provide Mail Transfer Services for a large number of users on different host + +computers. + + Replicating this UA/MTA/MTS model on a personal micro-computer + +(PC) is not an easy task. Aspects of PCs that make support of this model + +difficult include limited storage capacities, limited processing capabilities, + +and the fact that PCs are geared to support a single user rather than several + +users at once. A PC with limited secondary diskette storage and limited +________________________________________________ + 1 UNIX is a Trademark of Bell Laboratories, Inc. + 2 CP/M is a Trademark of Digital Research, Inc. + 3 MS-DOS is a Trademark of Microsoft Corporation. + + + + 1 + + + + +processing capacity (often single-thread) is not well suited to support the full + +range of automatic interactions between a UA and an MTA, or the necessary + +interactions between MTAs in an MTS. For example, we do not see any way + +to certify PC systems for authentication of posted mail. A PC can change + +its entire character and behavior with insertion of a new program diskette, + +suggesting that it is the operating system diskettes and their users that must + +be certified, rather than the computers. Review of certification issues shows + +that it is not the computer, but its operators and managers that must be + +certified, and this involves the notions of central management and control. + +All this is lost in the maze of PCs that we see proliferating on and off our + +campuses, in and out of our offices and homes. + + Thus, we see a need for a new arrangement with the UA separated from + +its MTA, and using communication protocols to interact with it in ways + +that resemble MTA-to-MTA interactions. The UA is placed on the PC end, + +while the more complex tasks performed by the MTA are relegated to the + +remote host end. The remote MTA must authenticate mail items offered by + +the PC-based UA, just as it would for a co-located UA, but the task is more + +difficult because the PC UA is potentially anyone among the public telephone + +connectable population. This can be handled with password systems, but + +recognition and identification are not the only services to be provided at the + +posting slot. Posting also requires some validation of recipient addresses, + +and validation of the syntax and semantics of certain header fields. Example + +standards are provided by the U.S. National Bureau of Standards (NBS) and + +the U.S. DoD ARPANET for the format of mail to be transferred [8 , 9 , 10 ]. + + The new arrangement described in this paper might be called a split mail + +slot in that the UA side of the slot is split away from the MTA side. Although + +the UA and MTA may be on opposite ends of a telephone connection, they + +must still act together as a single processing unit to move mail from one + +to the other, with all that this may entail. This gives rise to a number of + +new MTA/UA requirements such as error control for service requests, user + +intervention to select items for delivery, and user postponement or rejection + +of delivery without triggering failure notices to senders. These are not serious + +problems when both MTA and UA are programs running on a single host. + +For example, with both UA and MTA on the same host, unwanted junk mail + +is simply deleted at low cost, compared to the cost of deletion after a long + +delivery transmission time. Better that our PC users be able to discard items + +without delivery transmission. + + + + 2 + + + + +Overview of the MZnet Environment + + +The MZnet project is an undergraduate student effort sponsored within the + +Information and Computer Science (ICS) Department of the University of + +California at Irvine (UCI) in Southern California. For the past 2 years, the + +UCI mail network, known as ZOTnet, has been connected into the Computer + +Science Network (CSnet) and in 1984, has joined the DoD ARPA Internet + +with a Split-Gateway connection [11 ] to the University of Southern California + +Information Sciences Institute (USC-ISI). The MZnet split-slot arrangement + +may have some similarities to the Split-Slot Internet Gateway at least in + +name, but the problems and the implementations are quite different. + + The UCI ZOTnet environment [13 ] gives the MZnet project a full-fledged + +Internet-class mail system as its foundation. The MZnet project objective is + +to extend this class of mail service to personal computers located in student + +and faculty residences, offices and laboratories, without waiting for full-blown + +local area networking to first provide connections. This follows a pattern of + +making the most of existing facilities to provide a reasonable level of service. + + The UCI ZOTnet uses the CSnet-provided MMDF (Multi-channel Memo + +Distribution Facility) software [12 ] from the University of Delaware to inter- + +connect two VAX 750 Unix systems with two DEC TOPS-20 systems through + +a port selector, with dial telephone connection to a CSnet relay [14 ]. The + +ZOTnet has since evolved into an ethernet-connected local area network with + +the aforementioned gateway connection into the DoD Internet. The ZOTnet + +also connects to USENET with the UUCP protocols, and provides format + +transformations for mail flowing between protocol domains [15 , 16 ]. Adding + +to the reach of the ZOTnet with MZnet is a natural part of its evolution4 . + + To this point we have set the context of the MZnet project. The remainder + +of this paper is devoted to relatively technical discussions of implementation + +of the PC user agent programs and the split-slot UA/MTA interface. +________________________________________________ + 4 For those who are properly curious about such things, the name "ZOTnet" derives + +from the cry of the UCI mascot which is the Anteater from the B.C. comic strip, and +MZnet is simply a contraction for Micro-ZOTnet. + + + + 3 + + + + +The MZnet User Agent: CP/MH + + +CP/MH is a collection of programs designed to work in conjunction with + +the Micro ZOTnet (MZnet) as an extension of the UCI ZOTnet. CP/MH + +programs permit a user of a CP/M 2.2-based microcomputer to send and re- + +ceive ZOTnet mail messages, as well as to manipulate them locally on floppy + +disks. The CP/MH programs are written in the C programming language + +and should be portable to similar operating environments, such as MS-DOS, + +etc. + + CP/MH is based on the UCI version of the Rand MH message handling + +system [17 ] for the Unix operating system. The major philosophical dif- + +ferences between CP/MH and typical user agents such as MSG [4 ] and its + +descendants are those of modularity and of user interface. In CP/MH (as + +in MH) the user does not invoke a single monolithic program to deal with + +mail, but rather invokes individual, non-interactive programs with common + +knowledge of the way messages are stored. Each program has default behav- + +ior which can be modified by using Unix-style command line options at time + +of invocation or through a user profile. Help messages can also be evoked + +from CP/MH programs. + + + +Messages and Folders + + +The format of a CP/MH message adheres more or less to the syntax described + +in RFC 822 in which a message consists of headers containing information + +pertaining to the message source and destination, and the message body, + +separated from the headers by a blank line. An example of such a message + +might be: + + + + Date: 02 Nov 83 23:04:53 PST (Wed) + + To: Toto + + From: The Great And Powerful Oz + + Subject: What Be Your Excuse? + + + + What's the matter? I ask you for a simple thing like + + "distribute this to Witch@Oz-West," and you can't do it. + + You undergrads will do anything to get out of work! + + + + 4 + + + + + --ozzie + + + Following the MH convention, each message is kept in a separate file. + +Since a message is simply ASCII text, it can be operated upon by non- + +CP/MH programs (such as text editors, in particular). + + Collections of messages are called folders. Under CP/MH, folders are + +represented by several files: an info file, containing maintenance information + +about the folder, and a set of message files with the same name as the info + +file, but with unique numeric suffixes (extensions in CP/M parlance). An + +example of this naming scheme might be: + + +DRAFT the info file for the DRAFT folder + + +DRAFT.001 message 1 in the folder + + +DRAFT.002 message 2 in the folder + + +DRAFT.003 message 3 in the folder + + + The number of messages that may be stored in a folder is limited primarily + +by the storage capacity of a floppy disk, but also by the three-digit limit of + +a CP/M extension. + + The info file contains a field named CURRENT: specifying the current mes- + +sage number. The current message number signifies the default message + +operated upon by CP/MH commands using a particular folder. The current + +message number may be modified by some commands. An example of the + +contents of the info file DRAFT might be + + + CURRENT: 3 + + + This indicates that the file DRAFT.003 would be operated upon when + +default conditions apply (i.e. when no message number is explicitly given to + +a CP/MH command). + + Possible future uses for the info file include named message sequences (a + +set of messages to which commands may be applied as a whole) and user + +profile information for application to particular folders (there is presently a + +single user profile, described shortly). + + A floppy diskette may contain more than one folder, but folders do not + +extend over more than one floppy diskette; therefore two different diskettes + +may contain folders with the same name. + + + + 5 + + + + +CP/MH Commands + + +Commands operating on messages can be divided into several general cate- + +gories: + + + +Transporting: sending, receiving + + +Viewing: selecting for display, showing header summaries + + +Creating: composing, replying, forwarding + + +Archiving: categorizing, refiling, deleting, sorting + + + + The architecture of CP/MH permits the simulation of some of these cat- + +egories using standard CP/M commands when CP/MH, in its present prim- + +itive state, does not cover them. + + A minimal functionality is presently provided by the following four com- + +mands: + + + +COMP composes mail items: creates a file containing header information + + taken from a standard or user-specified template. This newly-created + + file may be edited to fill in the header fields and body. + + +REPL replies to mail items: creates a file containing header information + + appropriate for answering a given mail item. This newly-created file + + may be edited to change header fields and fill in the body. + + +SEND sends mail items: posts selected items through the split-slot from a + + draft folder. + + +INC receives mail items: takes delivery of selected items across the split- + + slot, incorporating them into a mailbox folder. + + + +These commands, with a few enhancements and modifications appropriate + +to the CP/M environment, are functionally almost identical to their Unix + +MH counterparts. + + CP/MH commands are invoked like any other CP/M commands such as + +ED, PIP, or DIR. Command line options are generally preceded by a dash + +(e.g. -editor A:ED), and may be abbreviated. Folder names are preceded + + + + 6 + + + + +by a plus (e.g. +B:DRAFT). Messages are identified by numbers or by the + +special names first, last, current, next, and previous. + + An example of use of a CP/MH command is: + + + + comp -edit a:ed -use last +b:draft -log + + + + This particular example will edit the last-composed message (the -use + +last option) in the folder DRAFT on disk drive B: (the +b:draft option), + +using the standard CP/M editor ED on disk drive A: (the -edit a:ed op- + +tion), and prompting the user when it is appropriate to change disks (the + +-log option). + + All CP/MH commands have a -help option which displays all available + +options for the particular command invoked. Another common option is + +-log which permits the user to change (relog) diskettes after invoking a + +command, for purposes of selecting diskettes with message folders or with + +editor programs. This is particularly useful on single-drive systems or on + +systems with diskettes of low storage capacity. + + + +The Profile + + +If there are options commonly used with a particular CP/MH command, + +they may be entered in the user profile contained in the file called (naturally + +enough) PROFILE, which must exist on the same diskette on which CP/MH + +commands reside and from which the commands are invoked. A profile entry + +consists of a program name followed by a colon and the options to be used + +with that program, for example: + + + + comp: -editor A:VEDIT +B:outbox -log + + repl: -editor A:VEDIT -log + + send: +B:outbox + + inc: +B:inbox -log + + + + Individual profile components are overridden by options given at the time + +of invocation (e.g. -noedit given on the command line will override the + +-editor profile component for a particular command). + + + + 7 + + + + +The MZnet Split-Slot Mail Transfer System + + +The MZnet split-slot software implements a peer-to-peer communication pro- + +tocol between a time-sharing host's MTA and a personal micro-computer + +(PC) UA. This MZnet protocol extends the UA/MTA/UA model of computer- + +based message systems (CBMS) to provide a split gateway function between + +individual PCs and the ZOTnet similar to the UCI ICS split Internet gateway + +described previously (see Figure 2). + + + +The Structure of the Split-Slot + + +The MZnet Split Gateway consists of three distributed processing compo- + +nents: + + + + - A PC running a UA (in MZnet, CP/MH) acting as the mail server. + + + - A mini/mainframe host running a full MTA (MMDF in MZnet) pro- + + viding mail relay services. + + + - A communication protocol (a modified version of MMDF PhoneNet) + + to connect the two ends of the split-slot. + + + +Although this combination may not be unique, the method by which the + +MZnet split-slot bonds these parts together uniquely deals with the prob- + +lems of remote user agents. In addition to overcoming limited storage and + +processing capacities, remote user agents must deal with noisy modem lines, + +mail software certification, and mail system security problems. The MZnet + +architecture appears to solve these problems with a clean mail interface for + +PCs. + + + +The MZnet Mail Server + + +The split-slot mail server consists of a set of command packet programs run + +from the PC. These programs simply present commands through the Phone- + +Net communication protocol to the mail relay slave program on the host. + +Some basic commands are: + + + +PostMail posts mail drafts to MTA + + + + 8 + + + + +GetMail accepts mail from MTA + + +RemoteScan displays information about waiting mail + + +Quit drops connection between PC and Host + + + + Each command has the form: + + + + Command Request + + Data Transmission + + Command Termination + + + + For example, the PostMail command is a small program that: + + + + - initiates a command with the Mail Slave by sending the command name + + (PostMail) encoded within a PhoneNet packet; + + + - sends a series of PhoneNet packets that contain pieces of the mail item + + to be posted; + + + - finally sends a command termination signal to end the transaction with- + + out terminating the connection between host and PC. + + + +The MZnet Channel To MMDF + + +The MZnet Channel runs on the MTA host under the University of Delaware's + +MMDF (Version 1) and is responsible for both delivery of received mail to + +MZnet users, and posting of MZnet user-originated mail. The MMDF MZnet + +channel maintains a unique message queue for each registered MZnet user. + +As new mail items arrive, they are posted to the appropriate queues, where + +MZnet holds the mail items for pickup by their registered recipients. + + To send or receive mail, the MZnet user must attach to the host, log into + +the public MZnet account, and identify (authenticate) himself. During the + +MZnet session with the host, the user has access only to that restricted set + +of functions provided by the MZnet split gateway protocol: he may request + +delivery of queued mail with GetMail, or post new mail with PostMail. Prior + +to taking delivery of queued mail, a survey of waiting mail also may be + + + + 9 + + + + +requested with RemoteScan to obtain message size information (among other + +data) to allow intelligent disposition of mail in the queue. + + Hidden within these activities are issues of security and certification. To + +certify and establish the identity of the user, a second password is requested + +after logging into the public MZnet account. This certification procedure + +allows MZnet to certify the source of originated mail. A relatively secure + +environment is provided by MZnet, as it is the only interface to the host + +permitted to MZnet users (once beyond the public login procedure), and it + +offers only the severely restricted set of PhoneNet-encoded commands. Aside + +from security issues, using a single account to handle all MZnet users reduces + +demands on system resources. + + + +The MZnet-PhoneNet Protocol + + +A unique facet of the MZnet system derives from the PhoneNet File Transfer + +Protocol (FTP). PhoneNet FTP is a simple error-checked packet protocol + +which transfers ASCII plaintext. PhoneNet encodes any non-plaintext char- + +acter (or any other character "forbidden" by the idiosyncrasies of the com- + +municating systems) by mapping it onto an "accepted" character set. The + +accepted character set mapping is determined by a "negotiating" session be- + +tween the two systems at the start of the PhoneNet session. + + MZnet transfers all information (both commands and data) in PhoneNet + +packets to obtain error control. The MZnet-PhoneNet command FTP toler- + +ates noise with a high degree of success, and in effect, connects both ends of + +the Split Slot together with a reliable set of virtual wires. + + + +MZnet Session Example + + +Here, a typical MZnet session is presented, with the UA commands issued + +from the PC side of the connection printed in a typewriter typeface, and + +the responses from the host side printed in an italic typeface. PhoneNet + +interactions are indented. The initial connection to the host is accomplished + +with the term program, which provides a simple terminal emulation function. + +The prompt of the PC for a UA command is "Ai". Note that passwords are + +never echoed by the host system. + + + + Ai term + + + + 10 + + + + + login: mznet + + password: + + MZ-Password: + + PhoneNet packet negotiation + + Connected. + + exit terminal mode + + Ai send cur + + PostMail command + + message text packet transmission + + command terminator + + Ai quit + + Quit command + + Disconnecting. + + + +Conclusions + + +The main conclusions of this paper are that small personal computer systems + +with dial-up phone connections constrain User Agent systems design in ways + +that require use of a split-slot interface between the UA and its supporting + +Mail Transfer Agent (MTA), and that this interface will best provide the re- + +quired services if it has error controlled command and data transfer facilities, + +with interactive behavior. + + It is also believed that a good design for the small PC UA is based on + +a very modular architecture, such as the Rand MH system, which has been + +used as a pattern for the MZnet UA. + + By bringing these concepts together, we expect MZnet to provide reliable + +UA/MTA service to a distributed set of small personal computers, to match + +the quality of service that is normally only available from larger mainframe + +host systems with co-resident UA/MTA pairs. + + + +References + + + [1] SRI-NIC, ARPANET Directory, Network Information Center, SRI In- + + ternational, Menlo Park, California (November 1980). + + + + 11 + + + + + [2] Comer, D., A Computer Science Research Network CSNET: A History + + and Status Report, Communications of the ACM, volume 26, number 10 + + (October 1983) 747-753. + + + [3] Emerson, S. L., USENET: A Bulletin Board for Unix Users. BYTE, + + volume 8, number 10 (October 1983) 219-236. + + + [4] Vittal, J., MSG: A Simple Message System, in: Uhlig (editor), Proceed- + + ings of the IFIP TC-6 International Symposium on Computer Message + + Systems (North-Holland, April 1981). + + + [5] Deutsch, D., Design of a Message Format Standard, in: Uhlig (editor), + + Proceedings of the IFIP TC-6 International Symposium on Computer + + Message Systems (North-Holland, April 1981). + + + [6] v.Bochmann, G. and Pickens, J. R., A Methodology for the Specifica- + + tion of a Message Transport System, in: Uhlig (editor), Proceedings of + + the IFIP TC-6 International Symposium on Computer Message Systems + + (North-Holland, April 1981). + + + [7] Kerr, I. H., Interconnection of Electronic Mail Systems, in: Uhlig (edi- + + tor), Proceedings of the IFIP TC-6 International Symposium on Com- + + puter Message Systems (North-Holland, April 1981). + + + [8] Crocker, D., Standard for the Format of ARPA Internet Text Messages + + (RFC 822) Network Information Center, SRI International, Menlo Park, + + California (August 1982). + + + [9] NBS, Message Format for Computer-Based Message Systems, U.S. Na- + + tional Bureau of Standards FIPS Publication 98 (March 1983). + + +[10] CCITT Study Group VII/5, Draft Recommendation X.MHS1: Mes- + + sage Handling Systems: System Model_Service Elements (version 2), + + Technical Report, International Telegraph and Telephone Consultative + + Committee (CCITT) (December 1982). + + +[11] Rose, M., Low Tech Connections into the ARPA Internet: The Raw- + + Packet Split-Gateway, University of California Irvine Techical Report + + number 216 (February 1984). + + + + 12 + + + + +[12] Crocker, D., Szurkowski, E., Farber, D. J., An Internet Memo Distribu- + + tion Facility_MMDF, Proceedings of the Sixth IEEE Data Communi- + + cations Symposium (November 1979). + + +[13] Rose, M., The ZOTnet_A Local Area Mailing Network, University of + + California Irvine Technical Report number 200 (January 1983). + + +[14] CSNET-CIC, Focus on the University of California, Irvine, CSNET + + News 2, Bolt, Beranek, and Newman, Cambridge, Massachusetts (Octo- + + ber 1983). + + +[15] Rose, M., Achieving Interoperability Between Two Domains_ + + Connecting the ZOTnet and UUCP Computer Mail Networks, University + + of California Irvine Technical Report number 201 (January 1983). + + +[16] Rose, M., Proposed Standard for Message Munging (RFC 886), Network + + Information Center, SRI International, Menlo Park, California (Decem- + + ber 1983). + + +[17] Borden, B. S., Gaines, R. S., and Shapiro, N.Z., The Rand MH Message + + Handling System: User's Manual (Rand Corporation, March 1983). + + + + 13 + + + + +________________________________________________________________________________________________________________________ + +Any Host Relay Host Any Other Host + + + + user user + + + + UA UA + + + + slot slot + + + + MTA MTA MTA MTA + + + +PhoneNet PhoneNet PhoneNet PhoneNet + + + + modem modem modem modem + + + +_______________________________________Figure_1:__The_MHS_Model_________________________________________________________ + + + + 14 + + + + +________________________________________________________________________________________________________________________ + +Any Host MZnet Host PC + + + + user user + + + + UA UA + + + + slot split slot + MZnet MZnet + + + + MTA MTA + + + +PhoneNet PhoneNet PhoneNet PhoneNet + + + + modem modem modem modem + + + +____________________________________Figure_2:__The_Split-Slot_Model_____________________________________________________ + + + + 15 diff --git a/docs/historical/realwork.pdf b/docs/historical/realwork.pdf new file mode 100644 index 0000000..4c56b91 Binary files /dev/null and b/docs/historical/realwork.pdf differ diff --git a/docs/historical/realwork.txt b/docs/historical/realwork.txt new file mode 100644 index 0000000..4e69868 --- /dev/null +++ b/docs/historical/realwork.txt @@ -0,0 +1,2445 @@ + + + + + MH.5: + + How to process 200 messages a day + + and still get some real work done./ + + + Marshall T. Rose + + Member, Research Technical Staff + + Northrop Research and Technology Centery + + + + John L. Romine + + Computing Support Group + + Department of Information and Computer Science + + University of California, Irvinez + + + + Abstract + + + The UCI version of the Rand Message Handling System (MH) is dis- + + cussed. MH is a powerful user agent which operates in the ARPA Internet + + and UUCP environments. In addition to the usual functions provided + + by similar programs, MH has several distinguishing characteristics which + + give the user additional message handling capability. In particular, MH + + provides mechanisms for maintaining an organized mail environment, + + tailoring its behavior, and extending its functions. + + + This document describes MH from several perspectives. Particular em- + + phasis is given to: the MH user environment, advanced features of MH + + which have proven to be particularly useful for sophisticated users of + + electronic mail, the user interface issues in MH, and the mh.5 distribu- + + tion. The paper concludes with a summary of the authors' experiences + + with MH, and a discussion of future areas of enhancement. + + + +_____________________________________ +./ Alternate title: MH: Your Key to Success. +y One Research Park, Palos Verdes Peninsula, CA 90274. Telephone: 213/377-4811. + +Computer mail: MRose% NRTC@USC-ECL, : : :!fucbvax!ucivax,trwrbg!nrtc!mrose. +z University of California at Irvine, Irvine, CA 92717. Telephone: 714/856-6852. + +Computer mail: J-Romine@USC-ECL, : : :!fucbvax,trwrbg!ucivax!jromine. + + + MH.5: + + How to process 200 messages a day + + and still get some real work done + + + +Introduction + + The UCI version of the Rand Message Handling System, MH, is a software + +system that performs two functions: first_, it interfaces a user to a message + +transport system, so the user may receive and send mail; second___, it permits the + +user to maintain an organized mail environment to facilitate the composition of + +new messages and the reading of old messages. In short, while not responsible for + +the delivery of messages, MH aids the user in handling mail. + + + MH was originally developed by the Rand Corporation, and initially was + +proprietary software. The Department of Information and Computer Science + +at University of California, Irvine, shortly after joining the Computer Science + +Network (CSnet), acquired a copy of MH, and began additional development of + +the software. Since that time, the Rand Corporation has declared MH to be in the + +public domain, and the UCI version of MH has passed through four major releases. + +The current version, mh.5, is available from U.C. Irvine for a nominal distribution + +fee, or may be retrieved from the University of Delaware via anonymous FTP. + + + Much credit must be given to the initial designers and implementors of MH: + +Bruce Borden, Stockton Gaines, and Norman Shapiro. Although MH has suffered + +significant development at UCI since Rand's initial release, the fundamental + +concepts of MH's environs have remained nearly unchanged. In addition, the + +authors of the current release gratefully acknowledge the comments of the many + +sites which have run various releases of MH in the past. In particular, the dozen + +or so beta test sites for mh.5 provided tremendous help in stabilizing the current + +release. + + + MH runs on different versions of the UNIX1 operating system (such as + +Berkeley 4.2bsd and various flavors of v7). In addition, MH supports four + +different message transport interfaces: SendMail[EAllm83], the standard mailer + +for 4.2bsd systems; MMDF[DCroc79] and MMDF-II[DKing84], the Multi-Channel + +Memo Distribution Facility developed by the University of Delaware which forms + +the software-backbone for CSnet[DCome83] mail relay service; SMTP, the ARPA + +Internet Simple Mail Transfer Protocol[SMTP]; and, a stand-alone delivery system. + + + +_____________________________________ +1 UNIX is a trademark of AT&T Bell Laboratories. + + + + 1 + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 2 + + + This paper is organized in a straight-forward fashion: Initially, the MH + +philosophy of mail handling is presented, along with a description of the + +environment which the MH user is given to process mail. Following this, certain + +advanced features of MH are discussed in more detail, such as facilities for selecting + +messages, and "advanced" concepts in draft handling. In addition, user interface + +issues in mail handling are addressed, and the merits of MH's approach is critically + +examined. Next, the mh.5 distribution package is described. Finally, we conclude + +by discussing the authors' experience with MH development and introducing areas + +where MH may be further developed. + + + Although familiarity with MH is not assumed on the part of the reader, + +some knowledge of the UNIX operating system is useful. Appendix A gives a short + +synopsis of the MH commands. + + + +The MH Philosophy + + Although MH has many traits which tend to distinguish it from other systems + +which handle mail, there is a single fundamental design decision which influences + +the interface between MH and the user: MH differs from most other systems in + +that it is composed of many small programs instead of one very large one. This + +architecture gives MH much of its strength, since intermediate and advanced users + +are able to take advantage of this flexibility. + + + The key to this flexibility is that the UNIX shell (usually the C shell or the + +Bourne shell), is the user's interface to MH. This means that when handling mail, + +the entire power of the shell is at the user's disposal, in addition to the facilities + +which MH provides. Hence, the user may intersperse mail handling commands + +with other commands in an arbitrary fashion, making use of command handling + +capabilities which the user's shell provides. + + + Furthermore, rather than storing messages in a complicated data structure + +within a monolithic file, each message in MH is a UNIX file, and each folder (an + +object which holds groups of messages) in MH is a UNIX directory. That is, + +the directory- and file-structure of UNIX is used directly. As a result, any UNIX + +file-handling command can be applied to any message. + + + To the novice, this may not make much sense or may not seem important. + +However, as users of MH become more experienced, they find this capability + +attractive. In addition, this approach is often quite pleasing to system implemen- + +tors, because it minimizes the amount of coding to be performed, and given a + +modular design, changes to the software system can be maintained easily. There + +are, however, performance penalties to be paid with this scheme. This issue is + +considered later in the paper. + + + Having described how MH fits into the UNIX environment, we now discuss + +the mail handling environment which is available to the MH user. + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 3 + + +The MH Environs + + In the $ HOME directory of each MH user, a file named .mh_profile contains + +static information about the user's MH environment, and default arguments for + +MH programs. For the latter case, each line of profile takes the form: + + + program-name: options + + +Each MH program consults the user's .mh_profile for its options. These options + +are consulted prior to evaluating any command-line arguments, and so provide the + +MH user the capability to customize the defaults for each command. Futher, by + +using the UNIX link facility, different names can be given to the same command. + +Since each MH command looks in the .mh_profile for a component with the name + +by which it was invoked, it's possible to have different defaults for the same + +program. For example, it is not uncommon to link prompter (a simple prompting + +editor front-end) under the name rapid in the user's bin/ directory, and add to the + +.mh_profile : + + + rapid: -prepend -rapid + + +As a result, when prompter is invoked as rapid, it automatically uses the `-prepend' + +and `-rapid' options. + + + The profile component ``Path:'' is the path to the user's MH-directory, + +usually Mail. In addition to containing the user's folders, the MH-directory also + +contains skeletons and templates used by the MH programs, and the user's context + +file. This latter file has the same format as the user's .mh_profile , and contains the + +dynamic, context-dependent information about the user's environment. Whenever + +MH looks for an MH-specific file, such as a template or skeleton, it first consults + +the user's MH-directory, and then a system-wide library area. + + + The MH user always has a current folder, which is the folder in which the user + +is currently (or was last) working. Since any MH program which deals with folders + +implicitly manipulates this information, the name of the current folder is stored in + +the context component ``Current-Folder:'' . Every folder has a current message + +known as `cur' . These values are the defaults for MH commands which accept + +folder and/or messages arguments. + + + MH programs make use of a set of envariables which further customize their + +behavior. The $ MH envariable, if present, specifies the name of an alternate profile + +for the user. This allows a user of MH to easily maintain multiple mail-handling + +environments. + + + In terms of command syntax, most MH commands accept an optional folder + +argument, such as `+outbox' . Unlike most UNIX commands, all MH commands + +have switches which are words, rather than single letters. Switches may be + +abbreviated to the least unambiguous prefix. All MH commands also support + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 4 + _______________________________________________________________________________________________________________ + + 1 % inc + 2 Incorporating new mail into inbox... + 3 + 4 1+ 03/16 Rand MH System MH transcript < +12 +13 Here's the body of a sample message. +14 % repl +15 To: Rand MH System +16 cc: jromine@uci-icsa +17 Subject: Re: MH transcript +18 In-reply-to: Your message of 16 Mar 85 18:28:59 PST (Sat). +19 -------- +20 Thanks for the test. +21 +22 /JLR +23 ^D +24 +25 What now? send +26 % comp +27 To: MRose@UCI +28 cc: +29 Subject: sample comp +30 -------- +31 Here's a sample compose for the MH transcript. +32 +33 /JLR +34 ^D +35 +36 What now? send -verbose +37 -- Posting for All Recipients -- +38 -- Local Recipients -- +39 MRose: address ok +40 -- Recipient Copies Posted -- +41 Message Processed + + + Figure 1 + + _____________________________________________An_MH_Session_____________________________________________________ + + + + a `-help' switch, which lists the syntax of the command along with available + + switches, and the version number of the command. Most MH commands also take + + a `msg' or `msgs' argument which takes the form of a message number (``1'' ), a + + message range (``1-2'' ), a standard sequence name (``cur'' ), or a user-defined + + sequence name (``select'' ). + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 5 + + +An MH Transcript + + Figure 1 contains a transcript of a simple MH session. First, inc is run to + +incorporate the new mail into the user's ``+inbox'' folder. + + + A scan listing of the mail is printed while it is being incorporated. (The + +user could run scan explicitly to generate additional scan listings later on.) The + +scan listing gives the message number, followed by the date, message sender, + +and subject. (If the message originated from the user generating the listing, the + +``to:'' addressee is displayed instead of the sender.) If the subject is short, the + +first part of the message body is displayed after the characters ``<<'' . The plus + +sign (`+') after the message number indicates the current message. + + + The user show s the message, and decides to repl y. A reply draft is created + +using the headers of the message being replied-to, using the default replcomps + +template. The default editor, prompter, is called to edit the draft. When an + +EOT is typed, prompter exits and the user is left at the What now? prompt. The + +option send is chosen. Since there were no problems in posting the draft with the + +message transport system, no additional output is produced. (MH is not verbose + +by default.) + + + The user then decides to compose a new message. The default skeleton, + +components , is copied to the draft, and prompter is once again called. After + +entering the addresses, subject, and body, the user then send s the draft from the + +What now? prompt, using ``send -verbose'' , which causes MH to list out the + +message addresses as it submits them to the message transport system. + + + +Some MH Features + + We now consider certain advanced features in MH. These features have been + +chosen to demonstrate some useful capabilities available to the MH user. + + +Message Sequences and Selection + + MH has several built-in message sequence names, which may be used + +anywhere a `msg' or `msgs' argument is expected. These are: `cur' , `next' , + +`prev' , `first' , `last' , and `all' . Message ranges may also be specified. For + +example, `all' is actually `first-last' , and `+mh last:5' references the last + +five messages in your `+mh' folder. A powerful capability of MH is the ability to use + +not only the pre-defined message sequence names, but also arbitrary user-defined + +message sequence names. + + + Although all MH programs recognize user-defined sequences when appropriate, + +the pick and mark commands can create and modify user-defined message + +sequences. The mark command allows low-level manipulation of sequences, and is + +not particularly interesting in our discussion. + + + The pick command selects certain messages out of a folder. The criteria used + +for selection may be a search string and/or a date range. + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 6 + + + Searching is performed on either a specific header in the message (e.g., + +``To:'' ), or anywhere within the message. By default, pick lists out the message + +numbers that matched the selection criteria. Thus, pick is useful in backquoted + +operations to the shell. For example, to scan all the messages in the current folder + +from "frated", the MH user issues the command: + + + scan `pick -from frated` + + +To perform more complicated message selection, user-defined sequences are + +employed. Supplying a `-sequence name' argument to pick, will cause it to define + +the sequence `name' as those messages matched. + + + Giving pick a list of messages causes it to limit its search to just those + +messages. For example, to find all the messages in the current folder from "frated" + +also dated before friday: + + + pick -from frated -sequence select + + pick select -before friday -sequence select + + +With the first pick command, the sequence ``select'' is defined to be all those + +messages from "frated". In the second command, only those messages already in + +the ``select'' sequence are searched, and the ``select'' sequence is redefined + +to be only those messages which are also dated before friday. Those messages could + +then be show n with: + + + show select + + +When a `-sequence name' argument is given to pick, the default behavior _ + +listing the message numbers matched _ is inhibited. To re-enable this behavior, + +the `-list' option may be given. As a result, advanced users of MH often put the + +following line in their .mh_profile : + + + pick: -sequence select -list + + +which allows them to easily make use of the `select' sequence as the messages + +last selected with pick. + + + Often it is desirable to act upon those messages which are not members of + +a given sequence. For this purpose, the ``Sequence-Negation:'' profile entry + +is useful. If the name of a user-defined sequence is prefixed with the value of the + +sequence-negation profile entry, MH commands will operate upon those messages + +which are not members of that sequence. For example, given a profile entry of: + + + Sequence-Negation: not + + +those messages which are not in the `select' sequence could be scan'd with: + + + scan notselect + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 7 + + + Obviously, some confusion could result if an attempt was made to define a se- + +quence name which began with the sequence-negation string (e.g., ``notselect'' ). + +For this reason, MH users will often use a single character, which their shell doesn't + +interpret, as their sequence-negation string (e.g., up-caret (`^') for C Shell users, + +and exclamation-mark (`!') for Bourne shell users). + + + MH also provides a way of automatically remembering the last message list + +given to an MH command. This facility is implemented by using a profile entry + +called ``Previous-Sequence:'' . + + +Draft Handling + + After the initial edit of a message draft, the comp, dist, forw, and repl + +programs give the user a What now? prompt. The valid responses include: edit to + +re-edit the draft, quit to exit without sending the draft, send to send the draft, and + +push to send the draft in the background. + + + When the send option is given, the draft is posted with the message transport + +system. If there problems posting the draft, the What now? prompt is re-issued, so + +errors in the draft may be corrected. + + + Since posting the draft can be slow, the push option allows the MH user to + +send the draft in the background, and return immediately to the shell. If there are + +problems posting the message, the user will not see the diagnostics produced by + +the message transport system. For this reason, if push is used instead of send, and + +the message is not successfully posted, MH mails a message to the user containing + +any diagnostics which the message transport system produced along with a copy + +of the message. Later, the draft may be re-edited by entering ``comp -use'' . + + + A relatively new feature of MH is the ability to use a folder to store multiple + +drafts. These drafts are kept in an ordinary MH folder, and may be operated upon + +by MH commands. To enable this feature, the MH user selects a folder-name for + +the draft-folder, and creates an entry in the .mh_profile : + + + Draft-Folder: +foldername + + +From this point on, when a message is composed, the draft will be created as a + +message in that folder, instead of using the draft file in the user's MH directory. + +Unfortunately, if posting problems occur on a message which has been push'd, it + +may be difficult to re-edit the draft with ``comp -use'' . This might be the case + +if the user had started composing another message, while that first draft was being + +posted. In that event, the current-message in the draft-folder would no longer + +point to the failed draft. + + + There is a solution for this problem, however. By default, push assumes the + +`-forward' option, which says that if the message draft fails to be posted, it + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 8 + + +should be forwarded back to the user in the error report which push generates. + +The failed draft may then be extracted with the burst program (discussed later). + + +BBoards + + MH has a convenient interface to the UCI BBoards facility[MRose84a].2 This + +facility permits the efficient distribution of interest group messages on a single + +host, to a group of hosts under a single administration, and to the ARPA Internet + +community. + + + Although most readers are probably familiar with the concept of an interest + +group in the Internet context, a brief description is now given. Observant readers + +will notice that the distributed nature of the "network news" (a.k.a. USENET) + +tends to avoid many of the problems described below. + + + Described simply, an interest group is composed of a number of subscribers + +with a common interest. These subscribers post mail to a single address, known + +as the distribution address (e.g., MH-Workers@UCI. From this distribution address, + +a copy of the message is sent to each subscriber. Each group has a moderator, + +who is the person that runs the group. This moderator can usually be reached at + +a special address, known as the request address (e.g., MH-Workers-Request@UCI). + +Usually, the responsibilities of the moderator are quite simple, since the mail + +system handles distribution to subscribers automatically. In some interest groups, + +instead of each separate message being distributed directly to subscribers, a batch + +of (hopefully related) messages are put into a digest format by the moderator and + +then sent to the subscribers. (This is similar to a newsletter format.) Although + +this requires more work on the part of the moderator and introduces delays, such + +groups tend to be better organized. + + + Unfortunately, some problems arise with the scheme outlined above. First, + +if two users on the same host subscribe to the same interest group, two copies of + +the message are delivered. This is wasteful of both processor and disk resources at + +that host. + + + Second, some groups carry a lot of traffic. Although subscription to a group + +does indicate interest on the part of a subscriber, it is usually not interesting to get + +50 or so messages delivered each day to the user's private maildrop, interspersed + +with personal mail, which is likely to be of a much more important and timely + +nature. + + + Third, if a subscriber's address in a distribution list becomes "bad" somehow + +and causes failed mail to be returned, the originator of the message is normally + +notified. It is not uncommon for a large list to have several bogus addresses. This + +results in the originator being flooded with "error messages" from mailers across + + +_____________________________________ +2 The UCI BBoards facility can run under either the MMDF or SendMail, or in a more restricted + +form under stand-alone MH. + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 9 + + +the Internet stating that a given address on the list was bad. Needless to say, the + +originator usually does not care if the bogus addresses got a copy of the message + +or not. The originator is merely interested in posting a message to the group at + +large. On the other hand, the moderator of the group does care if there are bogus + +addresses on the list, but ironically does not receive notification. + + + To solve these problems, the UCI BBoards facility introduces a new entity + +into the picture: a distribution channel. All interest group mail is handled by the + +special mail system component. The distribution address for an interest-group + +maps mail for that interest-group to the distribution channel, which then performs + +several actions. First, if local delivery is to be performed, a copy of the message is + +placed in a global maildrop for the interest group with a timestamp and a unique + +number. Local users can read messages posted for the interest group by reading + +this "public" maildrop. Second, if further distribution is to take place, a copy of + +the message is sent to the distribution address in such a way that if any of the + +addresses are bogus, failure notices will be returned to the local maintainer of the + +group address list, rather than the originator of the message. + + + This scheme has several advantages: First, messages delivered to the local + +host are processed and saved once in a globally accessible area. The UCI BBoards + +facility supports software which allows a user to query an interest group for new + +messages and to read and process those messages in the MH-style. Second, once + +a host administrator subscribes to an interest group, each user may join or quit + +the list's readership without contacting anyone. Third, a hierarchical distribution + +scheme can be constructed to reduce the amount of delivery effort. Finally, errors + +are prevented from propagating. When an address on the distribution list goes + +bad, the list moderator who is responsible for the address is notified. If a local + +moderator does not exist, then the local PostMaster is notified (not the global + +group moderator). + + + In addition to solving the problems outlined above, the UCI BBoards facility + +supports several other capabilities. BBoards may be automatically archived in + +order to conserve disk space and reduce processing time when reading current + +items. Also, the archives can be separately maintained on tape for access by + +interested researchers. + + + Special alias files may be generated which allow the MH user to shorten + +address entry. For example, instead of sending to SF-Lovers@Rutgers, a user of + +MH usually sends to ``SF-Lovers'' and the MH aliasing facility automatically + +makes the appropriate expansion in the headers of the outgoing message. Hence, + +the user need only know the name of an interest group and not its global network + +address. + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 10 + + + Finally, the UCI BBoards facility supports private interest groups using the + +UNIX group access mechanism. This allows a group of people on the same or + +different machines to conduct a private discussion. + + + The practical upshot of all this is that the UCI BBoards facility automates the + +vast majority of BBoards handling from the point of view of both the PostMaster + +and the user. + + + MH provides three programs to deal with interest groups. The bbc program + +is used to check on the status of one or more groups, and to optionally start an + +MH shell on those groups which the user is interested in. The bbl program can be + +used to manually perform maintenance on a discussion group beyond the normal + +automatic capabilities of the UCI BBoards facility. Finally, the msh program + +implements an MH shell for reading BBoards, in which nearly all of the MH + +commands are implemented in a single program. + + + Observant readers may note that the use of msh is contrary to the MH + +philosophy of using relatively small, single-purpose programs. Sadly, the authors + +admit that this is true. In an effort to minimize use of system resources however, + +BBoards are kept in maildrop format instead of folders.3 Some research has gone + +into overcoming this problem to restore MH's purity of purpose, but all solutions + +proposed to date are either unworkable or require significant recoding of MH's + +internals. + + +Bursting + + Internet interest group mail is often sent out in digest form. The experienced + +MH user may wish to deal with the digest messages on an individual basis, however. + +The burst program allows the MH user to extract these digest messages, and store + +each as an individual MH message. + + + Burst will also extract forwarded messages generated by forw (or the forwarded + +message in the error report generated by push, as described above). Although + +burst cannot always decapsulate messages encapsulated by sites not running MH, + +it adheres to the proposed standard described in [MRose85b]. + + + +_____________________________________ +3 When the message transport system delivers a message to a user it stores it in a single file, called + +a maildrop. Since many messages may be present in a single maildrop, (in theory) there is a unique +string acting as a separator between messages in the maildrop. Although this is convenient for +storage of messages, it makes retrieval more difficult unless a separate index into the maildrop is +kept. This latter approach is taken by the msg program available with MMDF-II and by msh as well. + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 11 + + +Distributed Mail + + The ARPA Internet community consists of many types of heterogeneous + +nodes. Some hosts are large mainframe computers, others are personal work- + +stations. All communicate using the milstd TCP/IP protocol suite[IP, TCP]. + +Messages which conform to the Standard for the Format of ARPA Internet Text + +Messages[DCroc82] are exchanged using the Simple Mail Transfer Protocol[SMTP]. + + + On smaller nodes in the ARPA Internet, it is often impractical to maintain + +a message transport system (e.g., SendMail). For example, a workstation may not + +have sufficient resources (cycles, disk space) in order to permit an SMTP server + +and associated local mail delivery system to be kept resident and continuously + +running. Furthermore, the workstation could be off-net for extended periods of + +time. Similarly, it may be expensive (or impossible) to keep a personal computer + +interconnected to an IP-style network for long periods of time. In other words, the + +node is lacking the resource known as "connectivity". + + + Despite this, it is often desirable to be able to manage mail with MH on + +these smaller nodes, and they often support a user agent to aid the tasks of mail + +handling. To solve this problem, a network node which can support a message + +transport entity (known as service host) offers a maildrop service to these less + +endowed nodes (known as client hosts). The Post Office Protocol[JReyn84] (POP) + +is intended to permit a workstation to dynamically access a maildrop on a service + +host to pick-up mail.4 The level of access includes the ability to determine the + +number of messages in the maildrop and the size of each message, as well as to + +retrieve and delete individual messages. More sophisticated implementations of the + +POP server are able to distinguish between the header and body portion of each + +message, and send n lines of a message to the POP client. This capability is useful + +in thinly connected environments where conservation of bandwidth is important. + +By utilizing a more intelligent POP client, a user may generate "scan listings" and + +decide dynamically which messages are worth taking delivery on. The philosophy + +of the POP is to put intelligence in the POP clients and not the POP servers. + + + The current release of MH supports the above model fully. A POP client + +program is available to retrieve a maildrop from a POP service host. In addition, + +using the SMTP configuration for delivery in MH (either in conjunction with + +SendMail or the MMDF), a user is able to specify a search-list of service hosts + +(and/or networks) to try to post mail. Using this search-list, when an MH user + +posts a draft, the post program will attempt to establish an SMTP connection + +with each host in the search-list to post the message until it succeeds. Initial + + +_____________________________________ +4 Actually, there are three different descriptions of the POP. The first, cited in [JReyn84], was the + +original description of the protocol, which suffered from certain problems. Since then, two alternate +descriptions have been developed. The official revision of the POP[MButl85], and the revision of the +POP which MH uses (which is documented in an internal memorandum in the MH release). This +paper considers the POP in the context of the MH release. + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 12 + + +experimentation using the POP and MH in a local network environment has + +proved quite successful. + + + +User Interface Issues in MH + + At this point, it is perhaps useful to take a step backwards and examine the + +success and problems of MH's approach to user interfaces. + + +Creeping Featurism + + A complaint often heard about systems which undergo substantial develop- + +ment by many people over a number of years, is that more and more options are + +introduced which add little to the functionality but greatly increase the amount of + +information a user needs to know in order to get useful work done. This is usually + +referred to as creeping featurism. + + + Unfortunately MH, having undergone six years of off-and-on development by + +ten or so well-meaning programmers (the present authors included), suffers mightily + +from this. For example, the send command has twenty-five visible switches, and at + +least nine hidden switches, for a total of thirty-four. The poor user who types + + + send -help + + +watches the options scroll off the screen (since the `-help' switch also lists out + +four other lines of information).5 The sad part is that all of these switches are + +useful in one form or another. + + + There are a lot of good things to be said for the "one program, one function" + +philosophy of system design. In the MH case, however, each program really does + +only one mail handling activity (with a few minor exceptions). The options + +associated with each command are present to modify the program's behavior to + +perform similar, but slightly different tasks. In further defense of MH, note that + +there are 32 MH commands at present, all performing different tasks. + + + The problem with creeping featurism though, is that while the functionality + +of the system increases sub-linearly, the complexity of the system increases linearly. + +That is, although the number of switches that a program takes might double, it is + +unlikely that the program's functionality or capabilities will double. + + + +_____________________________________ +5 Recently, this was fixed by compressing the way in which switches are presented. The solution is + +only temporary however, as send will no doubt acquire an endless number of switches in the years +to come. + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 13 +_______________________________________________________________________________________________________________ + +To: +cc: +Bcc: +Fcc: outbox +Fcc: +Subject: +Reply-To: +-------- + + + Figure 2 + +______________________________________________Draft_Skeleton___________________________________________________ + +_______________________________________________________________________________________________________________ + +To: +cc: , +Fcc: +outbox +Fcc: +Subject: Re: +In-reply-to: Your message of . + +In-reply-to: Your message of . +-------- + + + Figure 3 + +_____________________________________________Reply_Template____________________________________________________ + + + +Templates versus Switches + + One way to trim the explosion of available options, while still increasing + +functionality, is to introduce options with a richer domain. Hence, instead of using + +options which take on or off forms or simple numeric or string values, the possible + +values which an option might take on is given a large space. There are several ways + +that this might be accomplished. + + + The comp, dist, and forw programs use draft skeletons (simple form fill-in + +files) to construct the general format of the draft being composed. An example of + +a draft skeleton used for composing new messages (by comp) is shown in Figure 2. + +The approach is to let the user specify (and later edit) both arbitrary headers of + +draft and the body of the draft. Note while most of the fields are empty, the first + +``Fcc:'' field already contains a value. By using the simple prompting editor, + +prompter, the user can speedily enter the headers of the message. The prompter + +program given the skeleton in Figure 2 would prompt the user for the contents + +of each field, except for the second ``fcc:'' , which it would include verbatim. + +It would then read the body of the message up to an end-of-file. Naturally, the + +MH user is free to use any editor to edit any part of the draft (headers or body). + +This example demonstrates the flexibility achieved by not limiting what headers a + +draft may contain (which most mail sending programs do), while still retaining the + +simplicity of being able to treat the entire message draft as a UNIX file. + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 14 +_______________________________________________________________________________________________________________ + +From: Message Agent "<> +To: +Fcc: +rcvtrip +Fcc: +Subject: BEEP! Re: +Subject: BEEP! +In-reply-to: Your message of . + +In-reply-to: Your message of . +-------- + + + This is an automatic reply. Feel free to send additional mail, as only + this one notice will be generated. + + + I am attending the USENIX Summer '85 conference in Portland, Oregon. + I expect to be reading mail again on the 16th of June. + + +/mtr + + + Figure 4 + +__________________________________The_tripcomps______Reply_Template____________________________________________ + + + + Another more interesting approach is used by the repl command, which + +constructs a draft in reply-to a previously received message. Instead of adding + +switches to indicate which fields of the draft should be derived from the message + +being replied-to, and how they should be derived, a single option, the ability to + +specify a template, was made available. An example of a reply template is shown + +in Figure 3. Put simply, based on the presence of certain fields in the message + +being replied-to, and a few switches given by the user, using the reply template, + +repl generates the reply draft automatically. + + + This facility, for example, can be used to generate automatic replies.6 One + +function might be to write a rcvtrip shell script which automatically answered + +messages when mail wasn't being read for a period of time (e.g., while attending a + +conference). An example of a reply template at the heart of such a script is shown + +in Figure 4. + + + Finally, another application might be to utilize the highly useful letter bomb + +protocol.7 The important thing to note about this template is that it generates + +not only the headers of the reply draft (with a creative ``Reply-to:'' address), + +but the body as well. Hence, the commands + + + repl -form bombcomps -noedit ; rmm + + +_____________________________________ +6 MH supports the notion of a user-defined mail hook which is invoked each time a user receives + +mail. +7 The authors wish to credit Ron Natalie of the Ballistics Research Laboratory in Aberdeen, + +Maryland for formalizing the use of this protocol in the ARPA Internet community. + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 15 +_______________________________________________________________________________________________________________ + +To: +cc: , +Fcc: +outbox +Fcc: +Subject: Re: +In-reply-to: Your message of . + +In-reply-to: Your message of . +Reply-To: /dev/null +-------- + + + " + *-XXX + / XX + X + X + X + X + X + IIIIIIIII + IIIIIIIII + IIIIIIIII + IIIIIIIII + XXXXXXXXX + XXXXXXXXXXXXXXXXXXXXXXX + XXXXXXXXXXXXXXXXXXXXXXXXXXXXX + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + XXXXXXXXXXXXXXXXXXXXXXXXXXXXX + XXXXXXXXXXXXXXXXXXXXXXX + XXXXXXXXX + + + Figure 5 + +_________________________________The_bombcomps________Reply_Template___________________________________________ + + + + What now? push + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 16 +_______________________________________________________________________________________________________________ + +width=80,length=0,overflowtext=,overflowoffset=10 +Date:leftadjust,compress,compwidth=9 +Subject:leftadjust,compress,compwidth=9 +From:leftadjust,compress,compwidth=9 +To:leftadjust,compress,compwidth=9 +cc:leftadjust,compress,compwidth=9 +Resent-Note:leftadjust,compwidth=9 +: +body:nocomponent,overflowoffset=0 + + + Figure 6 + +____________________________________________Display_Template___________________________________________________ + + + +are very handy for dealing with disturbing mail in a straight-forward manner. Of + +course, repl could be linked to bomb in the user's bin/ directory and an appropriate + +line could be added to the user's MH profile, in order to further shorten type-in. + + + A variation on the reply template is the display template. A display template, + +as used by the mhl program, contains instructions on how to format a message. In + +addition to being used by show, et. al., the forw program can also use a display + +template to format each message being forwarded. Similarly, although repl uses a + +reply template to construct the draft being composed, it also may use a display + +template to format the body of the message being replied-to for enclosure in the + +reply. Furthermore, the post program may use a display template to format the + +body of a blind-carbon-copy. An example of a display template used for formatting + +forwarded messages is shown in Figure 6. + + + As with reply templates, display templates can offer a lot of functionality. + +For example, the one line display template: + + + body:nocomponent,overflowtext=,overflowoffset=0,width=10000 + + +can be used to extract the body of a message, while ignoring the headers. Hence, + +if a shar archive arrived in the mail, a convenient way to unpack it, assuming the + +above display template was called mhl.body , would be: + + + show -form mhl.body _ sh + + + + The biggest win with display templates, of course, is that all those annoying + +header lines which mailers everywhere generate can be simply and easily filtered + +out. + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 17 + + +Modularity versus Monolithicity + + Since MH is a set of programs which perform separate tasks, as opposed to + +being a single, monolithic program, the power of the shell is used directly to aid in + +mail-handling. One powerful capability which this design achieves is the ability to + +extend the MH command set, by developing shell scripts which use the standard + +MH programs to accomplish complicated or specialized tasks. + + + For example, in the MH distribution there is a shell script called mpick + +(shown in Figure 7) which tries to locate all the messages which pertain to a given + +discussion, by looking at the ``Message-ID:'' and ``In-reply-to:'' headers, + +to find matching message-ids.8 + + + Unfortunately, some parts of MH are somewhat monolithic. An example of + +this is the What now? prompt. There are only a few options at this prompt, and + +one cannot give a normal shell command. Some MH users seem to feel that more + +options should be added to the What now? prompt, such as an insert-file option. It + +was argued that just about any editor would allow you to insert a file, and another + +What now? option was not needed. These users persisted, however, so the problem + +was solved, by writing a trivial shell script "editor" (see Figure 8) which could be + +invoked by the edit option: + + + What now? edit append filename + + + + A better interface at this point is really needed, however. One possibility is to + +simply pass any unrecognized commands on to a shell for interpretation, supplying + +the path name of the draft file as an argument. A solution which shows more + +promise is to give you a sub-shell instead of the What now? prompt, and setup + +certain envariables so that the MH commands would act upon the draft by default. + +For example, show with no `msgs' arguments would show the draft instead of the + +current message. This alternative has recently been implemented and is under + +testing. + + + +The MH Distribution + + The mh.5 distribution is now briefly described, both in terms of static + +configuration methods and dynamic tailoring. Appendix B describes the mechanics + +of receiving an mh.5 distribution. + + + +_____________________________________ +8 Note that the shell scripts included in the MH distribution are written for the Bourne shell, and + +have a `:' as the first character of the first line, so they will be portable to all versions of UNIX, not +just those which support the Berkeley `# !' enhancement. + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 18 +_______________________________________________________________________________________________________________ + +: 'mpick - relate messages /mtr' +PATH=:/bin:/usr/bin:/usr/ucb:/usr/local:/usr/local/lib/mh; export PATH +F="" M="" S="" + + +for A in $* +do + case $A in + -*) S="$S $A" ;; + + + +*_@*) case $F in + "") F=$A ;; + *) echo "mpick: only one folder at a time" 1>&2 + exit 1 ;; + esac ;; + + + *) M="$M $A" ;; + esac +done + + +S="$S -sequence hits -list -nozero" + + +if mark $F all -add -sequence hits; + then mark $F all -delete -sequence hits; + else exit 1; +fi + + +for A in $-M-cur" +do + for C in `mhpath $F $A` + do + if [ -r $C ]; + then + I=`mhl -form mhl.msgid $C`; + case $I in + "") echo "no message-id in message `basename $C`" 1>&2 ;; + *) pick --in-reply-to "$I" $S ;; + esac + else + echo "message $A doesn't exist" 1>&2; exit 1; + fi + done +done + + +exit 0 + + + Figure 7 + +____________________________________________The_mpick_Script___________________________________________________ + + + +Configurable MH + + The MH distribution currently runs on a large number of different UNIX + +versions, ranging from MicroSoft XENIX to Berkeley 4.2bsd. All the code which + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 19 +_______________________________________________________________________________________________________________ + +: 'append - stupid append editor for MH - /jlr' +case $# in + 1_2) case $# in + 1) F=$1; echo -n "Append file: " 1>&2; read A ;; + 2) F=$2; A=$1 ;; + esac + cat $A < /dev/null >> $F ;; + *) echo "append: arg count" 1>&2 ; exit 1 ;; +esac +exit + + + Figure 8 + +___________________________________________The_append_Editor___________________________________________________ + +_______________________________________________________________________________________________________________ + +bin /usr/local +bboards on +editor /usr/local/prompter +etc /usr/local/lib/mh +mail /usr/spool/mail +manuals local +mts sendmail/smtp +news off +options BSD42 +options MHE NETWORK +options UCI + + + Figure 9 + +___________________________________Sample_MH_Configuration_File________________________________________________ + + + +is specific to a particular target environment is enabled via the C-preprocessor + +``# ifdef'' mechanism, so compilation under different versions of UNIX is trivial. + +There are, however, a large number of compile-time options which may vary from + +site to site, so an automated configuration method was needed. + + + The MH-installer must create a configuration file, which contains a list of + +the compile-time options and the values which are desired for them. Compile-time + +options include the installation location for MH, what kind of message transport + +system is to be used, and the default editor for the installation. An example of + +such a configuration file is shown in Figure 9. + + + After creating this file (several examples are included in the distribution), the + +installer runs the mhconfig program, which customizes the Makefile s and some of + +the programs, for that site's particular installation. No hand-editing of any source + +code should be necessary, under normal circumstances. + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 20 +_______________________________________________________________________________________________________________ + +mmdfldir: /usr/spool/mail +mmdflfil: +mmdelim1: "001"001"001"001"n +mmdelim2: "001"001"001"001"n +mmailid: 0 +lockstyle: 0 +lockldir: + + +hostable: /usr/local/lib/mh/hosts +servers: localhost "01localnet + + + Figure 10 + +_______________________________________Sample_MTS_Tailor_File__________________________________________________ + + + +Interface to the Message Transport System + + MH will run with a number of message transport systems, including SendMail, + +MMDF-II, and a small stand-alone system. One flexible method of posting mail + +is through an SMTP connection. There are a couple of major wins in using this + +configuration: First, none of the MH programs need to know where the interface + +programs to the message transport system are located, which makes them easier + +to move between systems. Second, mail can be posted on relay hosts, and the local + +host of an MH user may not need a message transport system at all (as alluded to + +in the preceeding discussion on the POP). + + + Those parts of MH which interact with the local message transport agent + +read additional tailoring information when they start.9 This information includes + +the location of standard and alternate maildrops, maildrop delimiter strings, the + +locking directory and locking style, and other tailoring information specific for + +the particular message transport system in use (e.g., the default server search-list + +when mail is posted with the SMTP). In most cases, by using a tailor file, each site + +running a similar MH configuration is able to simply transfer MH binaries between + +hosts. An example of such a tailor file is shown in Figure 10. + + + A continuing question which is often raised is how intelligent should user + +agents (like MH and UCB Mail ) be with respect to the environment in which they + +operate. At present, MH likes to determine the official hostnames for addresses + +when posting mail. Many argue that this is improper or unnecessary behavior + +for a user agent, and that the local message transport agent should handle + +these functions. Unfortunately, this implies that the message transport agent + +should munge headers when mail is posted to remove local host aliases and only + +permit address fields with fully-qualified addresses. Sadly, neither SendMail nor + +MMDF-II really gets this right (flames to /dev/null please). The current MH + +maintainers believe that the resolution of host aliases to official names should be + +a well-supported interface with the local message transport agent. However, to + +_____________________________________ +9 This simple facility is based on a more extensive tailoring capability found in MMDF-II. + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 21 + + +provide equal time to those who hold opposite views, MH supports a configuration + +option called ``DUMB'' which disables MH's attempts to resolve addresses into + +fully-qualified strings. + + + +Concluding Remarks + + While MH has undergone significant development since the original Rand + +release, the authors have tried to keep the fundamental concepts of MH unchanged. + +The authors have continually had to battle against well-meaning MH users who + +wanted to make MH more like other (less powerful) user agents. More and more + +"features" were often suggested for MH, usually at the expense of making MH + +less general, and more specific. In nearly all cases, the "features" which these + +users wanted were already present in MH in a slightly different form, or could be + +realized by simply writing a short shell script. A classic example is the repeated + +requests by one user to have dist take a list of messages rather than a single + +message and distribute each one of them in turn. A simple shell script which called + +dist repeatedly, perhaps with "canned" arguments so the user typed in addressing + +information only once, would easily meet this request. + + + A number of MH comands have a large number of options. When adding + +options, the authors have tried to make the options general, while still accomodating + +the requests of specific users. An example of a specific request which was + +implemented as a general feature is the ``Previous-Sequence'' profile entry + +(mentioned above). If you use this profile entry, every MH command is forced to + +write out context changes, making every command somewhat slower. Since only a + +few users wanted this capability, it was implemented in such a way that users who + +didn't want it, didn't have to pay the cost of slowing down every MH command. + + + MH has a powerful tailoring capability provided by the .mh_profile . Using + +profile entries, users may customize their own environment without affecting others. + +Novice users often take advantage of the MH-tailoring capabilities to try to make + +MH work similarly to other user agents they've used. This has the advantage of + +allowing them to quickly begin using MH to handle their mail. However, since these + +novice users don't take advantange of all the capabilities of MH, they frequently + +will complain about things they think can't be done with MH, or could be done + +"better" some other way. Fortunately, as these users become more experienced + +with both MH and UNIX, they can modify their environment to take better + +advantage of all of MH's capabilities. Novice MH users who see features lacking + +are encouraged to take a better look at what MH can do, instead of trying to make + +MH into something it isn't. This may sound rather inflammatory, but it would + +really be a much nicer world for us all if users of software systems would read the + +manual prior to asking questions. + + + For a moment, let's consider the evolution of one MH feature which has + +proved itself to be very useful. As users began employing MH to handle their + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 22 + + +mail, the number of messages that could be processed in a given amount of time + +increased greatly. As the volume of messages increased however, it became clear + +that some MH operations were too slow, in particular the interaction with the + +(slow) message transport system. To overcome this problem, the push option was + +added at the What now? prompt. Originally, this option was hidden from novice + +users and did little more than send the message in the background: any output + +generated by the background send process would be printed asyncronously on the + +terminal. If a message failed posting with the message transport system, it would + +simply be left in the draft file. + + + Gradually, other features were added to push. Since users wanted to be able + +to send more than one draft at a time, push was changed to optionally rename + +the draft file before posting it. (This is what the hidden `-unique' option does.) + +Having message transport system diagnostics written asyncronously on the user's + +terminal was annoying, so push was made to intercept these diagnostics, and mail + +the user a report containing them. Although the diagnostic report mailed back by + +push contains the name of the draft which failed, a useful added feature was the + +ability to have push include the failed draft as well. Eventually, the draft-folder + +mechanism was implemented to make handling multiple message drafts much + +easier. + + +TODO + + There are, no doubt, a number of improvements which could be made to MH. + +At the present time, what further development should MH suffer? Although not + +by any means inclusive, here's a list: + + + 1. Performance Enhancements + + Hardware gets faster all the time, but people always complain that + + software is too slow. Owing to its user interface style, MH is somewhat + + slower than monolithic programs like UCB Mail. It would be nice if MH + + could be tuned or accelerated somehow. + + + 2. Port to System 5 + + MH runs on 4.2bsd UNIX and Version 7 variants. It should not be + + difficult to port MH to a SYS5 environment. This should significantly + + increase the number of hosts on which MH can run. The authors, lacking + + a SYS5 machine (and experience with SYS5) to perform the port, are + + actively seeking a System 5 guru to attempt this feat. + + + 3. Interface to the Network News + + Not all sites that run MH are in the ARPA Internet, and as such the + + UCI BBoards facility may not be of much use to them. A good MH + + interface to the network news would allow users on hosts with a news + + feed to employ the same interface for reading and sending both mail + + and news. + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 23 + + + 4. Programmed Instruction for Beginners + + The complexity of MH is often intimidating to new users. It would be + + nice to develop a set of learn lessons for those users who don't like man + + pages and non-interactive tutorials. + + + 5. Message List Expansion + + At present, when a list of messages is given to an MH command, it + + expands the list and processes each message in numerical order rather + + than the order in which the messages were given (e.g., ``show 2 1'' + + show s message 1 and then message 2). It would be nice if MH processed + + messages in the order they were given. + + + 6. Context Changes + + In nearly all cases, an MH command does not write out context changes + + until it is about to exit successfully. There is some controversy as to + + whether this is the correct behavior in all cases. Some argue that once + + an MH command has fully parsed its argument list, the context should + + be updated. + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 24 + + + References + + + +[DCome83] D. Comer. The Computer Science Research Network CSnet: A + + History and Status Report. Communications of the ACM 26, 10 + + (October, 1983), 747-753. + + + +[DCroc79] D.H. Crocker, E.S. Szurkowski, D.J. Farber. An Internetwork + + Memo Distribution Facility _ MMDF. Appearing in Proceedings, + + Sixth Data Communications Symposium, Asilomar, 1979, pp. 18-25. + + + +[DCroc82] D.H. Crocker. Standard for the Format of ARPA Internet Text + + Messages. Request for Comments 822. ARPA Internet Network + + Information Center (NIC), SRI International (August, 1982). + + + +[DKing84] D.P. Kingston, III. MMDFII: A Technical Review. Appearing in + + Proceedings Usenix Summer '84 Conference, Salt Lake City, Utah, + + 1984, pp. 32-41. + + + +[EAllm83] E. Allman. SENDMAIL _ An Internetwork Mail Router. + + Britton-Lee, Inc., Berkeley, California (July, 1983). + + + +[IP] Internet Protocol. Request for Comments 791 (milstd 1777). + + Appearing in Internet Protocol Transition Workbook, ARPA Internet + + Network Information Center (NIC), SRI International, 1981. + + + +[JReyn84] J.K. Reynolds. Post Office Protocol. Request for Comments 918. + + ARPA Internet Network Information Center (NIC), SRI International + + (October, 1984). + + + +[MButl85] M. Butler, J.B. Postel, et. al. Post Office Protocol - Version 2. + + Request for Comments 937. ARPA Internet Network Information + + Center (NIC), SRI International (February, 1985). + + + +[MRose84a] M.T. Rose. The Rand MH Message Handling System: The UCI + + BBoards Facility. Department of Computer and Information Sciences, + + University of Delaware (October, 1984). + + + +[MRose85b] M.T. Rose, E.A. Stefferud. Proposed Standard for Message + + Encapsulation. Request for Comments 934. ARPA Internet Network + + Information Center (NIC), SRI International (January, 1985). + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 25 + + +[SMTP] Simple Mail Transfer Protocol. Request for Comments 821. ARPA + + Internet Network Information Center (NIC), SRI International + + (August, 1982). + + + +[TCP] Transmission Control Protocol. Request for Comments 793 (milstd + + 1778). Appearing in Internet Protocol Transition Workbook, ARPA + + Internet Network Information Center (NIC), SRI International, 1981. + + + Appendix A + + MH Commands + + + + MH is composed of several UNIX programs, which in theory are fairly simple + + and single-purposed. These commands are functionally grouped below: + + + Composing_Mail_________ + + comp: compose a message + + A program to originate a message. Usually, a special prompting editor front- + + end, prompter, is used to fill-in a composition template with the addressees + + of the message, subject, and so forth. + + + dist : redistribute a message to additional addresses + + A program that re-enters a message previously received by the user into the + + message transport system. Only new addresses are added; the body of the + + message is not changed in any way. + + + forw : forward messages + + A program that encapsulates one or more messages in a new message draft. + + In addition, the user may add initial and/or closing comments. + + + repl : reply to a message + + A program that constructs a reply to a message using a reply template. The + + template mechanism has sufficient generality to permit the user to "program" + + the form of the reply draft based on the contents of the message being + + replied-to. + + + send : send a message + + A program that posts a draft with the message transport system. The + + send program is usually invoked by one of the four preceding programs, and + + performs simple front-end pre-processing prior to invoking the post program. + + For example, if invoked in push'd mode, send will immediately relinquish + + control of the user's terminal and post the message in the background. If + + the posting fails, send will send back a failure notice to the user. If the user + + had push'd the sending of the draft, then by default the draft being sent is + + encapsulated in the failure notice. This permits easy burst'ing of the failure + + notice to retrieve the original draft. Otherwise, if the posting was successful, + + the draft is marked as having been sent. + + +whatnow : prompting front-end for send + + A program which is called by comp, et. al., after the initial draft has been + + + + 26 + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 27 + + + generated. The MH user can specify a different whatnow program, which + + yields considerable extensibility. + + + whom: report to whom a message would go + + A program which examines the addresses of the draft and expands all user- + + defined aliases contained therein. Optionally, whom may actually interact + + with the message transport system to determine the validity of the final + + addresses. This program is also usually invoked by comp, et. al. + + + Posting_Mail______ + + ali : list mail aliases + + A simple front-end to the MH aliasing mechanism. + + + ap: parse addresses 822-style + + A useful debugging tool for PostMasters who wish to examine how MH + + interprets an Internet address. + + + conflict : search for alias/password conflicts + + Another program used by system administrators to check the consistency of + + MH alias files, and portions of the local message transport agent. + + +install-mh: initialize the MH environment + + A program which is automatically executed the first time a user issues an MH + + command. This program performs once-only initialization of the user's MH + + environment. + + + mhmail : send or read mail + + A simple program generally used by other programs to generate messages. + + The mhmail command is similar in purpose to the old BellMail program. + + + post : deliver a message + + A complex MH back-end that interacts with the local message transport + + agent to enter messages through the posting slot. (See the description of send + + above). + + + Reading_Mail_______ + + inc: incorporate new mail + + A program that interacts with the local message transport agent to retrieve + + messages from the user's maildrop. + + + msgchk : check for waiting mail + + A program which reports the status of mail waiting in the user's maildrop. + + + show : show (list) messages + + A program which lists messages to its standard output (usually the user's + + terminal), possibly invoking another program to do the actual listing. Most + + users of MH have show automatically call the mhl program to format the + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 28 + + + message. The next and prev programs are simply ``show next'' and + + ``show prev'' , respectively. + + + mhl : produce formatted listings of MH messages + + A program which displays a message as directed by a template. This permits + + the user to filter out uninteresting headers and re-arrange other headers to a + + particular preference. In addition to being invoked by show, the mhl program + + is optionally also invoked by forw to format each message being forwarded; + + invoked by repl to format the body of a message being replied-to, if that + + message is being included in the reply draft; and, invoked by post to format + + a message being sent as a blind-carbon-copy. + + + rmm: remove messages + + A program that removes messages from an MH folder, optionally running a + + user-defined program instead of deleting them. If no program is given, the + + messages are "softly" removed, so they may possibly be recovered later. + + + scan: produce a one-line-per-message scan listing + + A program that generates a scan listing for messages. Each line of the listing + + contains date, source, subject, and possibly the initial body of the message. + + + Folder_Handling_______ + + folder : set/list current folder/message + + A program used to list information concerning the current folder, or set the + + current folder and/or message. + + +folders : list all folders + + A program to list information on all folders (actually, just a special case of + + the folder command). Since the MH folder structure may be recursive, the + + user can indicate that folders should recursively examine all folders. + + + refile: file message(s) in (an)other folder(s) + + A program to move (or copy) messages from a source folder to one or more + + destination folders. + + + rmf : remove folder + + A program that deletes a folder and all messages therein. + + + Message_Selection_______ + + anno: annotate messages + + A program to arbitrarily annotate messages. If the user so desires, after + + distributing, forwarding, or replying-to a message, MH will automatically + + attach an annotation to the original message indicating the date and addresses. + + + mark : mark messages + + A program to manipulate user-defined sequences (lists of messages). Usually, + + mark is not employed directly by the MH user. + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 29 + + + pick : select messages by content + + A program to examine a list of messages and choose those which meet + + a particular selection criterion. The pick program is often used in UNIX + + back-quoted operations to pass message sequences to other MH commands. + + + sortm: sort messages + + A program to sort a list of messages according to the date given in a particular + + field. + + + Distribution_List_Handling__________ + + bbc: check on BBoards + + A front-end to run msh on a list of distribution lists which the user isn't + + current on. + + + bbl : manage a BBoard + + A (depreciated) program used to manually manage the local archives of + + a distribution list. These functions (archiving, expunging) are performed + + automatically by MH. + + + burst : explode digests into messages + + A program used to decapsulate messages from ARPA Internet digests. In + + addition, messages which have been encapsulated during forwarding (i.e., + + with forw ) can also be decapsulated using burst.10 + + + msh: MH shell (and BBoard reader) + + A monolithic program used to implement MH commands on messages + + arranged in a single file (maildrop format). Useful since distribution lists are + + kept in this format to minimize consumption of system resources. + + + pack : compress a folder into a single file + + A program which takes messages stored in MH format and places them in a + + single file (using the same format known by msh). + + + Interface_to_the_UNIX_File_System_____________ + +mhpath: print full pathnames of MH messages and folders + + A program which maps MH-style names into the UNIX file naming convention. + + + + _____________________________________ + 10 Similarly, blind-carbon-copies may be decapsulated, though only socially mature users should do + + so. + + + Appendix B + + Distribution Mechanics + + + + The mh.5 distribution is available in two forms: + + + 1. Anonymous FTP + + If you can FTP to the ARPA Internet, use anonymous FTP to the + + ARPAnet host UDel-Huey [10.2.0.96] and retrieve the file portal/mh.5- + + tar. This is a tar image of size 2.1 MB (approximately). + + + 2. 9-track tape, 1600 bpi, tar format + + Otherwise, you can send $ 50.00 to the address below. This covers the + + cost of a magtape, handling, and shipping. In addition, you'll get a + + laser-printed hard-copy of the MH documentation. The documentation + + includes installation guide, MH Tutorial, MH User's Manual, changes + + document (from mh.4 to mh.5), and BBoards Manual. + + + If you go with this option, be sure to include your USPS address with + + your check. Checks should be made payable to + + + Regents of the University of California + + + It's also a good idea (though not mandatory) to send a computer mail + + message to Bug-MH@UCI when you send your check via USPS to ensure + + minimal turn-around time. The distribution address is: + + + Support Group + + Attn: MH Distribution + + Department of Information and Computer Science + + University of California, Irvine + + Irvine, CA 92717 + + + + 714/856-6852 + + + + Sadly, if you just want the hard-copies of the documentation, you still + + have to pay the $ 50.00. The tar image has the documentation source + + (the man is in ROFF format, but the rest are in TEX format). + + +In addition, there is some hope that mh.5, or a successor, might be found in a + +future 4.x Berkeley distribution. + + + + 30 + Reprinted from Proceedings, Summer Usenix Conference and Exhibition, Portland, Oregon, June, 1985 31 + + + Although MH is not "supported" per se, it does have a bug reporting address. + +Normally, the address Bug-MH@UCI is used to report bugs and bug fixes. There are + +however, two discussion groups which concern themselves with MH: + + + 1. MH-Users@UCI + + A discussion group for the MH user community at large. Appropriate + + topics include: questions about how to use MH, tips on MH usage, and + + exchange of MH shell scripts. All requests to be added to or deleted + + from this list, along with problems, questions and suggestions, should + + be sent to MH-Users-Request@UCI. + + + 2. MH-Workers@UCI + + A discussion group for MH maintainers and experts. Appropriate topics + + include: questions on how to configure MH, tips on MH configuration, + + exchange of MH bug reports (and fixes). All requests to be added to or + + deleted from this list, along with problems, questions and suggestions, + + should be sent to MH-Workers-Request@UCI. + + +The ``UCI'' host is also known as ``ucivax'' , so a possible UUCP path might + +be : : :!ucbvax!ucivax!bug-mh. + + + Updates to MH are published on the MH-Workers list in the form of context + +diffs, and the appropriate distribution images are updated as well. + + + + + Contents + + + + Page + +Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 + +The MH Philosophy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 + + The MH Environs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 + + An MH Transcript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 + +Some MH Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 + + Message Sequences and Selection . . . . . . . . . . . . . . . . . . . . . . . 5 + + Draft Handling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 + + BBoards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 + + Bursting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 + + Distributed Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 + +User Interface Issues in MH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 + + Creeping Featurism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 + + Templates versus Switches. . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 + + Modularity versus Monolithicity . . . . . . . . . . . . . . . . . . . . . . . . 17 + +The MH Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 + + Configurable MH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 + + Interface to the Message Transport System . . . . . . . . . . . . . . . . . 20 + +Concluding Remarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 + + TODO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 + +References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 + +Appendix A: MH Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 + +Appendix B: Distribution Mechanics. . . . . . . . . . . . . . . . . . . . . . . . . 30 + + + +_____________________________________ +This document (version #1.43) was TEXset April 12, 1990 with DISS.STY v103. + + + + i diff --git a/docs/historical/trusted.pdf b/docs/historical/trusted.pdf new file mode 100644 index 0000000..3398763 Binary files /dev/null and b/docs/historical/trusted.pdf differ diff --git a/docs/historical/trusted.txt b/docs/historical/trusted.txt new file mode 100644 index 0000000..aea5b71 --- /dev/null +++ b/docs/historical/trusted.txt @@ -0,0 +1,2283 @@ + + + + + Design of the TTI Prototype + + Trusted Mail Agent + + + Marshall T. Rosey + + David J. Farber + + Stephen T. Walker + + + + Abstract + + + The design of the TTI prototype Trusted Mail Agent (TMA) + + is discussed. This agent interfaces between two entities: a key + + distribution center (KDC) and a user agent (UA). The KDC + + manages keys for the encryption of text messages, which two + + subscribers to a key distribution service (KDS) may exchange. + + The TMA is independent of any underlying message transport + + system. + + + Subscribers to the KDC are known by unique identifiers, + + known as IDs. In addition to distributing keys, the KDC also + + offers a simple directory lookup service, in which the "real- + + world" name of a subscriber may be mapped to an ID, or the + + inverse mapping may be performed. + + + This document details three software components: first_, a + + prototype key distribution service, which has been running + + in a TCP/IP environment since December, 1984; second____, a + + prototype trusted mail agent; and, third___, modifications to an + + existing UA, the Rand MH Message Handling system, which + + permit interaction with the prototype TMA. + + + +________________________________________ +y All three authors are with Trusted Technologies, Incorporated, POB 45, Glenwood, MD 21738, + +USA. Telephone: 301/854-6889. In addition, Professor Farber is with the University of Delaware. + + + Design of the TTI Prototype + + Trusted Mail Agent + + + +Introduction + + Initially, a brief model of a user community employing a trusted mail service + +is introduced. Following this introduction, a prototype system is described which + +attempts to meet the needs of a user community. Finally, open issues are discussed, + +which are currently not satisfied by the prototype system or its model of operation. + + + Two or more entities, called users, wish to communicate in a secure + +environment. Depending on their available resources, different levels of security + +are possible. At the extreme, two parties with substantial resources may wish to + +communicate in a fashion which prevents any third parties, known as adversaries, + +from observing their communication. At this level, not only is an adversary + +unable to capture the communication for analysis, but in fact, the adversary is + +unaware that any communication is occurring at all. In most applications, this + +level of security is prohibitively expensive. A more economic method is to translate + +messages into a form which is useless to an adversary and then to communicate + +those messages on an insecure medium. + + + This latter method requires the two users to have some sort of key with which + +to "lock" the plaintext into ciphertext when transmitting, and then to "unlock" + +the ciphertext back into useful form when receiving. Hence, there are two central + +issues to deal with: first_, keys must be generated, distributed, and maintained in + +a secure fashion; and, second____, the keys must be "intricate" enough so that sense + +can't be made out of the ciphertext without knowledge of the key. The first part + +is handled by a key distribution center (KDC), which maintains a list of users + +and a set of keys for each pair of users. The second part relies on sophisticated + +encryption and decryption algorithms. It is beyond the scope of this paper to + +describe cryptographic techniques in detail. For a detailed survey of this area, the + +reader should consult [VVoyd83]. + + + In the context of our discussion (using the terminology of [X.400]), the + +medium used to transport is supplied by a message transport system (MTS), which + +is composed of one or more message transport agents (MTAs). Usually, the entire + +MTS is distributed in nature, and not under a single administrative entity; in + +contrast, an MTA is usually controlled by a single administration and resides in a + +particular domain. At every end-point in the medium, a user agent (UA) acts on + +behalf of a user and interfaces to a local MTA. This model is briefly summarized in + +Figure 1. + + + + Copyright fcl1985, IFIP TC-6 1 + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 2 +______________________________________________________________________________________________________________________ + + + + UA UA + + + + POSTING RECEIPT + + + + MTS + + + + MTA MTA : : : : : : MTA + + RELAYING + + + + Figure 1 + +_______________________________________________The_MTS_Model__________________________________________________________ + + + + A message, in our context, consists of two parts: the headers and the body. + +The headers are rigorously structured; they contain addressing information and + +other forms useful to a UA. The body is freely formatted and is usually not + +meaningful to a UA. + + + When a message is sent from one user to another, the following activities + +occur: The originating user indicates to the UA the address of the recipient; the + +UA then posts the message through a posting slot to an MTA, which involves + +a posting protocol in which the validity of the address and the syntax of the + +message are considered. Upon successful completion of the protocol, the MTA + +accepts responsibility for delivering the message, or if delivery fails, to inform the + +originating user of the failure. The MTA then decides if it can deliver the message + +directly to the recipient; if so, it delivers the message through a delivery slot to + +the recipient's UA, using a delivery protocol. If not, it contacts an adjacent MTA, + +closer to the recipient, and negotiates its transfer (using a protocol similar to the + +posting protocol). This process repeats until an MTA is able to deliver the message, + +or an MTA determines that the message can't be delivered. In this latter case, a + +failure notice is sent to the originating user. + + + It is important to note that there are two mappings which occur here. The + +first, which is performed implicitly by the originating user, maps the name of the + +recipient into the recipient's address; the second, which is performed explicitly by + +the MTS, maps the address of the recipient into a route to get from the originator's + +MTA to the recipient's MTA. These mappings are depicted in Figure 2. + + + Obviously, there is no guarantee that the MTS can be made secure, in any + +sense of the word. This is particularly true if it is under several administrations. + +Regardless of the number of administrations in the MTS, this problem quickly + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 3 +______________________________________________________________________________________________________________________ + + + + user user + + + + name ! address + + + + UA UA + + + + MTS + address ! route + + + + MTA MTA : : : : : : MTA + + + + Figure 2 + +______________________________________Mappings_in_the_MTS_model_______________________________________________________ + + + +degenerates to a problem of Byzantine generals[LLamp82]. Further, trying to secure + +each MTA in the path that a message travels is equally questionable. + + + To support secure communications in this environment, a new entity, the + +trusted mail agent (TMA) is introduced into our model. A solution is to have the + +UA interact with this entity both when posting a message and when taking delivery + +of a message. The UA first contacts a TMA to encrypt the body of the message for + +the recipient, prior to pushing it through the posting slot. Upon receipt from the + +destination MTA, the UA examines the message and contacts the TMA to decipher + +the body of the message from the source. An overview of the relationship between + +the standard MTS model and the augmentations made for the Trusted Mail1 system + +is shown in Figure 3. + + + To achieve these tasks, the TMA interacts with a key distribution service + +(KDS), which manages keys between pairwise users. At this point, a third mapping + +takes place: the UA must be able to map addresses into the identifier(s) by which + +the originator and recipient are known by the TMA and KDS. These identifiers + +are known as KDS IDs, or simply IDs. Usually, a fourth mapping also occurs, + +________________________________________ +1 Trusted Mail is a trademark of Trusted Technologies, Incorporated. + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 4 +______________________________________________________________________________________________________________________ + + + + UA TMA KDS TMA UA + + + + MTS + + + + MTA MTA : : : : : : MTA + + + + Figure 3 + +____________________________________Modifications_to_the_MTS_model____________________________________________________ + + + +which maps the ID of a user into the name of a user. In our context, there is an + +exact one-to-one mapping between the name of a user and the ID of that user. In + +contrast, there may be a one-to-many mapping between the name of a user and + +that user's address in the MTS. Further, there are usually many different routes + +which a message may traverse when going from an originating user to a recipient + +user. + + + The TMA is said to be trusted because it can be relied on to perform only + +those actions specifically requested by the user. In the context of this paper, + +this means, given proper construction and maintenance of the TMA, that the + +software will communicate with the KDC in some secure fashion to negotiate key + +relationships and that it will not disclose those key relationships to other parties. + +Furthermore, the body of mail messages exchanged between users which employ a + +trusted mail agent will be unintelligible to other parties. Finally, a recipient of a + +message receives authenticated information from the trusted mail agent as to the + +identify of the sender. + + + Hence, when each user employs a TMA, end-to-end encryption occurs at the + +UA level (to avoid any problems with malicious MTAs).2 Any adversary listening + +in on the MTS, may observe messages, but make no sense out of them (other than + +rudimentary traffic analysis). Note, however, that since the medium itself is not + +secure, an adversary may still introduce new messages, corrupt messages, or remove + + +________________________________________ +2 Note that in the scope of this system, the end-points are the user agents, not the hosts they reside + +on. In fact, it may very well be the case that the user agent and the local message transport agent +do not reside on the same host. + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 5 + + +messages, as they traverse the MTS. In the first two cases, however, the recipient + +would be suspicious because the adversary lacks the encrypting key employed by + +the source user. In the third case, the source user can retransmit the message after + +a suitable time. Of course, there is no built-in retransmission policy _ this aspect + +depends on the user's sending mail and is beyond the scope of the system. + + + It is important to understand the target community for the Trusted Mail + +system described herein. In particular, the TMA is intended for a commercial + +and not a military environment. This distinction is important, since it is the + +fundamental assumption of this paper that the latter community has much stricter + +requirements than the former. Because of this, the prototype system is able to + +make certain simplifying assumptions which permit it to operate in a mode which + +is less secure than military applications would permit. Although these issues are + +explored in greater detail at the end of the paper, for the moment recall that, like + +most qualities, trustedness is not absolute: there are varying degrees of trustedness, + +and as a system becomes more trusted, it becomes more expensive, in some sense, + +to operate and maintain. + + + It is perhaps instructive at this point to consider why the introduction of a key + +distribution center is appropriate in this environment, and why the fundamental + +assumption that trusted mail agents do not directly communicate with each other + +is necessary. Although a user agent is able to converse with the local message + +transport agent in real-time, it is frequently not able to communicate with other + +user agents in real-time. Furthermore, considering the vast problems and overhead + +of trying to establish secure communications from "scratch" (a problem far beyond + +the scope of this paper), it is would not be a good idea to try and communicate + +key relationships with other user agents, even if it were always possible to do so. + +In addition, by separating the trusted aspects of the message transport system + +from the system itself, many other advantages can be seen. These are presented in + +greater detail at the end of the paper. + + + The discussion thus far has considered only a single recipient. In practice, a + +user might wish to send to several others, using a different key for each. Hence each + +copy of the message is encrypted differently, depending on the particular recipient + +in question. Note that this has the effect of un-bundling message transfer in the + +MTS, as advanced MTAs tend to keep only a single copy of the message for any + +number of recipients in order to save both cpu, disk, and I/O resources. + + + For example, in some existing mail systems, if a message was sent to n users + +on a remote system, then the n addresses would be sent from the source MTA to + +the remote MTA along with one copy of the message. Upon delivery, the remote + +MTA would deliver a copy to each of the n recipients, but the virtual wire between + +the source MTA and the recipient MTA was burdened with only one copy of the + +message. But in a secure environment, since a different key is used by the source + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 6 + + +user when communicating with each of the n recipients, n different messages will + +be posted with the local MTA, and the advantages of recipient bundling are lost. + + + Along these lines however, private discussion groups may wish to avoid + +this problem by establishing access to a single ID for their use. In this case, a + +subscriber to the KDS may actually have more than one ID, one for "personal" + +use and one for each discussion group. The appropriate ID is used when posting + +messages to the discussion group. Naturally the administrative policy for deciding + +who is allowed to use the KDS ID of a discussion group is left to the moderator + +of the group. Observant readers will note that this vastly decreases the aspect + +of secure communications for the discussion group. This method is suggested + +as a compromise which permits the bundling of messages for multiple recipients + +to reduce MTS traffic. The price is high however, as a compromise on behalf + +of any member of the discussion group compromises the entire group. For large + +discussion groups and a bandwidth limited MTS, this price may be worth paying. + +The prototype implementation of the TMA supports multiple recipients but not + +multiple KDS IDs. + + + Having described this environment for communication, the designs of a KDS + +and TMA which form the heart of the TTI Trusted Mail system are discussed. + +The prototype system was developed on a VAX3 -11/780 running 4.2bsd UNIX4 . + +The system is based on the ansi draft[FIKM] for financial key management, but + +diverges somewhat in operation owing to the differences between the electronic mail + +(CBMS) and electronic funds (EFT) environments. Note however that the ansi + +data encryption algorithm[DEA, FIPS46] is used in the current implementation. A + +public-key cipher system was not considered as the basis for the prototype since, + +to the authors' knowledge, an open standard for a public-key system has yet to be + +adopted by the commercial community. In contrast, the ansi draft for financial key + +management appears to be receiving wide support from the commercial community. + + + In the description that follows, a large number of acronyms are employed to + +denote commonly used terms. In order to aid the reader, these are summarized in + +Table 1. + + + +The Key Distribution Service + + The prototype version of the KDS was designed to provide key distribution + +services for user agents under both the same or different administrations. As a + +result, the means by which a trusted mail agent connects to a key distribution + +server is quite flexible. For example, the prototype system supports connections + +via standard terminal lines, dial-ups (e.g., over a toll-free 800 number), UNIX pipes, + +and over TCP sockets[IP, TCP]. In the interests of simplicity, for the remainder + +of this paper, a TCP/IP model of communication is used. Initially, a server on a + +________________________________________ +3 VAX is a trademark of Digital Equipment Corporation. +4 UNIX is a trademark of AT&T Bell Laboratories. + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 7 +______________________________________________________________________________________________________________________ + ______________________________________________________________________________________________ + + __Abbrev.________________________________Term_____________________________Context_______________ + + _ CBC _ Cipher Block Chaining _ DES _ + _ CBMS _ Computer Based Message System _ _ + _ CKD _ Key Distribution Center _ EFT _ + _ CKS _ Checksumming _ DES _ + _ CSM _ Cryptographic Service Message _ _ + _ DEA _ Data Encryption Algorithm _ _ + _ DES _ Data Encryption Standard _ _ + _ DSM _ Disconnect Service Message _ MCL _ + _ ECB _ Electronic Code Book _ DES _ + _ EFT _ Electronic Funds Transfer _ _ + _ IDK _ Key Identifier _ CSM _ + _ ID _ Identifier _ KDS _ + _ IP _ Internet Protocol _ _ + _ IV _ Initialization Vector _ CSM _ + _ KA _ Authentication Key _ CSM _ + _ KDC _ Key Distribution Center _ CBMS _ + _ KDS _ Key Distribution Server _ CBMS _ + _ KD _ Data-encrypting Key _ CSM _ + _ KK _ Key-encrypting Key _ CSM _ + _ MAC _ Message Authentication Code _ CSM _ + _ MCL _ Message Class _ CSM _ + _ MH _ The Rand Message Handling System _ _ + _ MIC _ Message Integrity Code _ CSM _ + _ MK _ Master Key _ CSM _ + _ MTA _ Message Transport Agent _ CBMS _ + _ MTS _ Message Transport System _ CBMS _ + _ ORG _ Message Originator _ CSM _ + _ RCV _ Message Receiver _ CSM _ + _ RIU _ Request Identified User _ MCL _ + _ RSI _ Request Service Initialization _ MCL _ + _ RUI _ Request User Identification _ MCL _ + _ TCP _ Transmission Control Protocol _ _ + _ TMA _ Trusted Mail Agent _ CBMS _ + _ TTI _ Trusted Technologies, Inc. _ _ + ______UA___________User_Agent_______________________________________________CBMS____________ + + + Table 1 + +____________________________________Abbreviations_used_in_this_paper__________________________________________________ + + + +well-known service host in the ARPA Internet community listens for connections + +on a well-known port.5 As each connection is established, it services one or more + +transactions over the lifetime of the session. When all transactions for a session + +have been made, the connection is closed. If the necessary locking operations are + +performed by the server to avoid the usual database problems, then more than one + +connection may be in progress simultaneously. Of course, a time-out facility should + +________________________________________ +5 The term well known in this context means that the location of the service is known a priori to + +the clients. + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 8 + + +also be employed to prevent a rogue agent from monopolizing the key distribution + +server. + + + Once a session has been started, the client (a.k.a. TMA) initiates transactions + +with the server (a.k.a. KDS). Each transaction consists of the exchange of two + +or three cryptographic service messages (CSMs): the client sends a request, + +the server attempts to honor the request and sends a response, and, if the + +server responded positively, the client then acknowledges the transaction. By + +exchanging these cryptographic service messages, the KDS and the TMA are able + +to communicate key relationships. Obviously, the relationships themselves must + +be transmitted in encrypted form.6 Hence, not only are key relationships between + +two TMAs communicated, but key relationships between the KDS and the TMA + +are communicated as well. + + + This leads us to consider the key relationships that exist between a TMA and + +the KDS. A client usually has three keys dedicated for use with the server. The + +first is the master key (denoted MK), which has an infinite cryptoperiod, and is + +rarely used. This key is distributed manually. The second is the key-encrypting key + +(denoted KK), which has a shorter cryptoperiod. Whenever a KK is transmitted + +to the TMA, it is encrypted with the master key. The third is the authentication + +key (denoted KA), which is used to authenticate transactions that do not contain + +data keys (a count field is also used to avoid play-back attacks). Whenever a + +KA is transmitted to the TMA, it is encrypted with the key-encrypting key. + +When transactions contain keys, an associated count field is included to indicate + +the number of keys encrypted with the key-encrypting key used. Although not + +used by the prototype implementation, a production system would employ audit + +mechanisms to monitor usage histories. + + + Currently four types of requests are honored by the KDS: two key relationship + +primitives, and two name service primitives. The type is indicated by the message + +class (MCL) of the first cryptographic service message sent in the transaction. + +As each message class is discussed, the appropriate datastructures used by the + +KDS are introduced. Space considerations prevent a detailed description of the + +information exchanged in each transaction. Appendix B of this paper presents a + +short example of an interaction between the KDS and a TMA. + + + The first two requests are used to create (or retrieve) key relationships, and + +to destroy key relationships: + + + The request service initialization (RSI) message class is used to establish + +a key-encrypting key (KK) relationship between the TMA and another TMA, or + +between the TMA and the KDS. As implied by the name, a key-encrypting key is + + + +________________________________________ +6 Otherwise an adversary could simply impersonate a TMA and ask for the desired key relationships. + +Similarly, this also prevents an adversary from successfully impersonating a key distribution server. + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 9 + + +used to cipher keys which are used to cipher data exchanged between peers. These + +other keys are called data keys (KDs). + + + The disconnect service message (DSM) message class is used to discontinue + +a KK-relationship between the TMA and another TMA, or between the TMA and + +the KDS. This prevents keys which are felt to have been compromised, or are + +vulnerable to compromise, from receiving further use in the system. It should + +be noted that, owing to mail messages (not CSMs) in transit, a discontinued key + +relationship may be needed to decipher the key used to encipher a mail message. + +The prototype KDS supports this capability. + + + In addition to maintaining an MK/KK/KA triple for each TMA, the KDS + +also remembers KK-relationships between TMAs. The reason for this stems from a + +fundamental difference between the electronic funds transfer and computer-based + +message system worlds. The KDS assumes that no two arbitrarily chosen TMAs can + +communicate in real-time, and as a result, TMAs do not exchange cryptographic + +service messages. (See Appendix C for a more detailed discussion.) This means + +that when a TMA establishes a KK-relationship with another TMA, the former + +TMA may start using the KK before the latter TMA knows of the new KK- + +relationship. In fact, it is quite possible for a KK-relationship to be established, + +used, and then discontinued, all unilaterally on the part of one TMA. It is up to + +the KDS to retain old cryptographic material (possibly for an indefinite period + +of time), and aid the latter TMA in reconstructing KK-relationships as the need + +arises. Naturally, discontinued KKs are not used to encode any new information, + +but rather to decode old information. (Again, refer to Appendix C for additional + +details.) + + + The other two requests are used to query the directory service aspects of the + +key distribution server: + + + The request user identification (RUI) message class is used to identify a + +subscriber to the KDS. Both the KDS and TMA are independent of any underlying + +mail transport system (MTS). As a result, a subscriber to the KDS is known + +by two unique attributes: a "real-world" name, and a KDS identifier (ID). The + +user of a mail system, or the UA, is responsible for mapping an MTS-specific + +address (e.g., MRose@UDEL.ARPA) to the person associated with that maildrop (e.g., + +``Marshall T. Rose'' ). When conversing with the KDS, the TMA uses the KDS + +ID of another user to reference that person's TMA. Since it is inconvenient to + +remember the IDs (as opposed to people's names), the KDS provides the RUI + +message class to permit a TMA to query the mapping between names and IDs. + +If the KDS cannot return an exact match, it may respond with a list of possible + +matches (if the identifying information given was ambiguous), or it may respond + +with a response that there is no matching user. + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 10 + + + Finally, the request identified user (RIU) message class performs the inverse + +operation: given a KDS ID, a "real-world" name is returned. This request is useful + +for disambiguating unsuccessful RUI requests and in boot-strapping a TMA. + + + The KDS maintains two directories: a private directory and a public directory. + +The private directory contains all information on all clients to the KDS. The public + +directory is a subset of this, and is used by the KDS when processing RUI and + +RIU requests.7 As a result, certain clients of the KDS may have unlisted IDs and + +names. + + + +The Trusted Mail Agent + + The prototype version of the TMA was designed to interface directly to the + +user agent in order to maximize transparency to the user. In present form, the + +TMA is available as a load-time library under 4.2bsd UNIX, although efforts are + +currently underway to transport the TMA to a PC-based environment. + + + The software modules which compose the TMA contain a rich set of interfaces + +to the KDS. In addition, the TMA manages a local database, so responses from the + +KDS may be cached and used at a later time. In all cases, the KDS is consulted + +only if the information is not present in the TMA database, or if the information + +in question has expired (e.g., KK-relationships). This caching activity minimizes + +connections to the KDS. Although connections are relatively cheap in the ARPA + +Internet, substantial savings are achieved for PCs which contact the KDS over a + +public phone network (dial-up) connection. + + + The TMA performs mappings between pairs of the following objects: user + +names, KDS IDs, and MTS addresses. The TMA considers all trusted mail agents, + +including itself, as a user name, KDS ID, and one or more MTS addresses. Although + +the TMA does not interpret addresses itself, in order to simplify mail handling, + +the TMA remembers the relationship between these objects so the user enters this + +information only once. + + + Initially, when a TMA is booted, the user supplies it with the master key and + +the user's KDS ID. Both of these quantities are assigned by the personnel at the + +key distribution center, and subsequently transmitted to the user via an alternate, + +bonded service.8 The TMA connects with the KDS and verifies its identity. From + +this point on, the TMA manages its KK-relationships between the KDS and other + +TMAs without user intervention. + + + The current implementation of the TMA assumes a "general memo framework" + +in the context of the Standards for ARPA Internet Text Messages[DCroc82]: + + + +________________________________________ +7 In the prototype implementation, the two directories are, for the moment, identical. +8 In this fashion, the problems of boot-strapping over an unsecure medium are avoided. + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 11 + + + 1. A message consists of two parts: the headers and the body. A blank line + + separates the headers from the body. + + + 2. Each (virtual) line in the headers consists of a keyword/value pair, + + in which the keyword is separated from the value by a colon (:). + + The headers are rigorously structured in the sense that they contain + + addressing and other information useful to a user agent. + + + 3. The body is freely formatted and must not be meaningful to a user + + agent. However, as will be seen momentarily, the body of encrypted + + messages must have an initial fixed format which the TMA enforces. + + +This format is widely called "822" after the number assigned to the defining + +report[DCroc82].9 + + + To support the cipher activities described below, the TMA contains internal + +routines to perform the following DES functions: electronic code book (ECB) + +for key encryption, cipher block chaining (CBC) for mail message encryption, + +checksumming (CKS) for mail message and CSM authentication. Readers interested + +in these different modes of operation for the DES should consult [FIPS81]. + + +Encrypting Mail + + To encipher a message, the method used is a straightforward adaptation + +of the standard encrypting/authentication techniques (though the terminology is + +tedious). Consider the following notation: + + + ax (s): the checksum of the string s using the key x (DEA checksumming + + authentication) + + + ax+y (s): the checksum of the string s using the exclusive-or of the two keys x + + and y + + + ex (y): the encryption of the key y using the key x (DEA electronic code book + + encryption) + + + ex;y (s): the encryption of the string s using the key x and initialization vector + + y (DEA cipher block chaining encryption) + + + h: the headers of the message + + + and, + + + b: the body of the message + + + +________________________________________ +9 Although an 822-style framework is employed by the TMA prototype, the 822 ``Encrypted:'' + +header is not currently present in encrypted messages. This is due to a design decision which +assumes that nothing in the headers of a message is sacred to the transport system, and that +"helpful" munging might occur at any time. In the real world, such helpfulness is often a problem. + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 12 + + +For each message to be encrypted, a data key, initialization vector, authentication + +key (KD/IV/KA) triple is generated by a random process. (It goes without saying + +that the integrity of the system depends on the process being random). Then, for + +each user to receive a copy of the encrypted message, the following actions are + +taken: + + + First, the headers of the message are output in the clear. Then, a banner + +string, i, is constructed and placed at the beginning of the body of the message: + + + ENCRYPTED MESSAGE: TTI TMA + + +which identifies the message as being encrypted by the TTI TMA. Following + +the banner string is a structure, m, which takes on the syntax and most of the + +semantics of a cryptographic service message: + + + MCL/ MAIL + + RCV/ rcvid + + ORG/ orgid + + IDK/ kkid + + KD/ ekk (ka) + + KD/ ekk (kd) + + IV/ ekd (iv) + + MIC/ aka (b) + + MAC/ akd+ka (m) + + +After this, the encrypted body is output, ekd;iv (b). In short, the entire output + +consists of + + h + i + m + ekd;iv (b): + + + + The purpose of the structure m is many-fold. The MCL field indicates the + +structure m's type; currently only the type MAIL is generated and understood. + +The RCV and ORG fields identify the intended recipient of the message and the + +originator. The IDK field identifies the key-encrypting key, KK, used to encrypt + +the next two fields. The first KD field has the encrypted authentication key, KA, + +used to calculate the MIC of the plaintext of the body of the message. After + +the body of the message is deciphered, aka (b) is calculated and compared to the + +value of the MIC field. Hence, the MIC field authenticates the message body. The + +second KD field has the encrypted data encrypting key, KD, which along with the + +encrypted initialization vector in the IV field was used to generate the ciphertext + +of the body. Finally, the MAC field authenticates the m structure itself. The use + +of a data key, initialization vector, authentication key (KD/IV/KA) triple permits + +us to perform key distribution in a hierarchical fashion and allows the system to + +use a KK-relationship over a longer cryptoperiod without fear of compromise. + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 13 + + + The TMA provides three primary interfaces to a UA to send encrypted mail: + + the first takes a file-descriptor to a message and returns a structure g (called a + + group) describing the ciphertext version of the body (this structure contains a KD, + + IV, and KA generated at random, along with a file-descriptor to the plaintext + + headers, a file-descriptor to the ciphertext body, and the checksum of the plaintext + + body); the second takes a user entry (or MTS address) and g, and returns a + + file-descriptor to the encrypted message for that user (or MTS address); the third + + takes g and performs clean-up operations. The chief advantage to this scheme of + + encryption is that if the message is to be sent to more than one recipient, then the + + MIC and the encrypted body need only be calculated once, since the KD, IV, and + + KA remain constant (only the KK's change with each recipient, hence for each + + copy of the encrypted message, only the structure m need be re-calculated). + + + There are, however, a few subtleties involved: first_, the MTS usually accepts + + only 7-bit characters, so the encrypted text is exploded to consist of only printable + + characters;10 second____, since the MTS may impose limits on the length of a line, + + each line of output is limited to 64 characters; and, third___, since the body may + + require trailing padding, during encryption one last unit of 8 bytes is written + + (and encrypted), naming the number of characters (presently, nulls) padded in the + + previous 8 bytes (0 : : :7). + + + Decrypting Mail + + To decipher a message, the method is also straightforward: The headers are + + output in the clear. The banner string is essentially ignored, and the structure m + + is consulted to identify the correct key-encrypting key. The TMA checks to see if + + it knows of that KK. If not, it asks the KDS to supply it. From that point, the + + KA, KD, and IV are deciphered. The m structure is then authenticated. With the + + correct key, the remainder of the body is deciphered, and all except for the last + + 16 bytes are output. The last 8 bytes indicate how many of the previous 8 bytes + + should be output. So, the appropriate number of bytes is output, and the plaintext + + body is authenticated and compared to the MIC. Needless to say, as the body is + + deciphered, it is imploded back to 8-bit characters and lines are restored to their + + previous lengths. To indicate that the message was correctly deciphered, a new + + header of the form + + + X-KDS-ID: orgid (originator's name) + + + is appended to the headers of the message. Note that this provides an authentication + + mechanism. Note, further, that the UA did not have to know the identity of the + + sender of the message. + + + + ________________________________________ +10 As a rule, in all CSMs, when encrypted information is transmitted, it is exploded after encryption + + by the sender, and imploded prior to decryption by the receiver. + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 14 + + + Modifications to MH + + MH is a public domain UA for UNIX, which is widely used in dealing with + + both a large number of electronic mail application and a large number of messages. + + Although this document does not intend to describe MH, parts of the system are + + described as they relate to the TMA. Readers interested in MH should consult + + either the user's manual[MRose85a] for a detailed description, or [MRose85d] for a + + higher-level description. + + + To modify MH in order to make use of a TMA, three programs were changed + + (with a high degree of transparency to the user), and two new programs were + + introduced. + + + In MH, when a user wishes to send a composed draft (which may be an + + entirely new message, a re-distribution of a message, a forwarding of messages, or + + a reply to a message), the user invokes the send program. This program performs + + some minor front-end work for a program called post which actually interacts with + + the MTS. A new option to the send and post programs, the `-encrypt' switch, is + + introduced. If the user indicates + + + send -encrypt + + + then post encrypts the messages it sends. + + + When sending an encrypted message, post first checks that each addressee + + has a mapping to a KDS ID during address verification. Then, instead of batching + + all addresses for a message in a single posting transaction, for each addressee, post + + consults the TMA for the appropriately encrypted text and posts that instead. + + (Appendix A discusses the reasons for this more fully.) Hence, assuming the user + + has established mappings between MTS addresses and KDS IDs, the TMA does + + all the work necessary to encrypt the message, including contacting the KDS as + + necessary.11 + + + In MH, when a user is notified that new mail has arrived, the inc program is + + run. As each message is incorporated into the user's message handling area, a scan + + (one-line) listing of the message is generated. + + + By default, the inc program upon detecting one or more encrypted messages, + + after the scanning process, asks the TMA to decipher the message, and if successful, + + scans the deciphered messages. This action can be inhibited with the `-nodecrypt' + + switch. Hence, if the user wishes to retain messages in encrypted form, inc can + + be told to note the presence of encrypted messages, but otherwise not to process + + them. By using the MH user profile mechanism, inc can be easily customized to + + ________________________________________ +11 Once the TMA establishes a connection to the KDS, it retains that connection until the UA + + terminates. This is done to minimize connections to the KDS. In the context of MH, since the + trusted mail agent is active over the lifetime of an invocation of a program such as post, this means + that the connection is terminated just before the program terminates. + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 15 + + +reflect the user's tastes. Again, the actions of the TMA are transparent to the user. + +In fact, if encrypted mail is received from users unknown to the TMA, it queries + +the KDS as to their identity prior to retrieving the KK-relationship. + + + If inc fails to decrypt a message for some reason, or if inc was told not to + +decrypt a message, the decipher program can be used. This simple program merely + +deciphers each message given in its argument list. The decipher program can be + +given the `-insitu' switch, which directs it to replace the ciphertext version of + +the message with the plaintext version; or, the `-noinsitu' switch can be used + +indicating that the ciphertext version of the message should be left untouched and + +the plaintext version should be listed on the standard output. + + + Finally, the tma program is used to manipulate the TMA database, containing + +commands to boot the database, add new users to the database, and to establish + +mappings between addresses and users in the TMA database. This program can + +also be used to disconnect KKs between other TMAs, and the KK/KA between + +itself and the KDS. + + + Appendix A of this paper contains a transcript of an MH session. + + + +Remarks + + We now consider the merit of the system described. After presenting some + +of the basic strengths of the system and a few unresolved questions, the discussion + +centers on the simplifying assumptions made by the system, and how these can be + +defended in a non-military environment. + + +Strengths + + It can be argued that the prototype system (and the augmented model in + +which it finds its basis) present many strengths. + + + Perhaps the most important is the high-level of independence from the MTS + +enjoyed by the system. As a result, since the TMA does not interact directly + +with the MTS, it can be made to be completely free from any MTS-specific + +attributes, such as naming, addressing, and routing conventions. Furthermore, + +when interfacing a Trusted Mail system, no modifications need be made to the MTS + +or local MTA. + + + In addition to the systems-level advantage to this scheme, users of the system + +profit as well, since many disjoint MTSs can be employed by a user with a single + +TMA. This reduces the number of weaknesses in the system and allows a user to + +keep a single database of "trusted" correspondents. It should also make analysis + +and verification of the TMA easier. + + + Of course from the user-viewpoint, once the TMA has been initially booted, + +all key management is automatic. Not only does this reduce the risk of compromise + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 16 + + + of cryptographic material (given proper construction and maintenance of the + + TMA), but it relieves the user of a tedious and error-prone task. + + + Finally, although the KDS described herein is used to support Trusted Mail, + + other applications which require key management, could employ the services offered + + by the key distribution center. + + + Open Questions + + At present, there are many restrictions on the prototype implementation + + described. Some of these result from that fact that the implementation is a + + prototype and not a production system. Others deal with more fundamental + + issues. + + + In terms of the TMA, the expiration delay for keys is hard-wired in; it should + + be user-settable. In the prototype version, the KK and KA with the KDS are good + + for 2 days or 10 uses (whichever comes first), while a KK for use with another + + TMA is good for 1 day or 5 uses. In actual practice, keys with long cryptoperiods + + might be good for 6 months or 100 uses, while keys with short cryptoperiods might + + be good for 1 month or 25 uses. The choice of actual values is an open question + + beyond the scope of prototype system.12 In many respects, this issue is a classic + + trade-off: with relatively small cryptoperiods, an adversary has less chance of + + breaking a key, but with longer cryptoperiods less connections have to be made to + + the key distribution server. + + + A fundamental issue, owing to differences between the EFT and CBMS + + environments, is that the KDS implements only a subset of the ansi draft and the + + semantics of certain operations have changed somewhat. It would be nice to unify + + the CBMS and EFT views of a key distribution center (in the former environment, + + the center is called a KDC, while in the latter environment, the center is known + + as a CKD). Appendix C of this paper discusses the differences between the two + + perspectives in greater detail. + + + At present, the relationship between errors in the TMA and the posting + + process is an open question. For example, if an address doesn't have a mapping in + + the TMA database, post treats this as an address verification error. This prevents + + the draft from being posted. The philosophy of the UA is unclear at this point, + + with respect to how recovery should occur. A second area, also in question, deals + + with the way in which plaintext and ciphertext versions of a message are present + + in a system. Clearly, it is a bad idea to make both versions available, but since + + the TMA doesn't try to concern itself with first party observation, there seems to + + be little possibility of preventing this behavior. The best that can be done, at this + + stage, is simply to choose a consistent policy that user's should attempt to adhere + + + + ________________________________________ +12 The current values were chosen by guess work. Although not necessarily technically sound, the + + small numbers were very good for debugging purposes. + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 17 + + +to. The software can help somewhat in implementing this policy, but it certainly + +can't circumvent the user. + + + The prototype is built on the assumption that a single key distribution server + +is present. Since the ansi draft[FIKM] makes provisions for key translation centers, + +the Trusted Mail prototype should perhaps be made to operate in a more diverse + +environment. Until the issues become clearer, this remains open. + + + Finally, for distribution lists, a large number of people would need to share + +the same KDS ID. The current implementation doesn't support this. Each TMA + +database is for a particular ID. A user with multiple IDs would need multiple + +databases, or the database should be re-organized. + + +Weaknesses + + As pointed out earlier, this prototype system situates itself in a commercial, + +not military, environment. With respect to this decision, several aspects of + +the system are now discussed, which we feel are acceptable in a commercial + +environment, but which would be considered weaknesses in a military environment: + + + 1. Traffic Flow + + The prototype TMA makes no attempt whatsoever to prevent or confuse + + traffic analysis by augmenting traffic flow. + + + 2. The Database of KDS Subscribers + + Since information returned by the request user identification (RUI) and + + request identified user (RIU) MCLs are returned in the clear, this allows + + an adversary to ascertain subscribers to the KDS, and perhaps deduce + + some information about the system. Without knowledge of the master key + + however, an adversary could not impersonate a subscriber though. Still, in + + the military sense, this is a weakness. However, all this assumes that the + + database maintained by the KDS accurately reflects the real-world. + + + 3. Multiple Recipients + + It is possible, though not proven to the authors' knowledge, that the scheme + + used to avoid encrypting the body of a message more than once for multiple + + recipients might permit one of the recipients who is also an adversary to + + compromise the key relationship between the sender and another recipient. + + + The scenario goes like this: When a message is being prepared for encryption, + + a single KD/IV/KA triple is generated to encrypt the body. Since the sender + + has a different key relationship with each recipient, each message sent is + + different, since the structure m depends not only on the KD/IV/KA triple + + but also on the key relation between the sender and a particular recipient. + + Now suppose that one of the recipients, r1 , in addition to receiving the copy + + of the message meant for him/her also intercepts a copy of the message + + destined for another recipient, r2 . At this point, the recipient r1 has both + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 18 + + + the plaintext and ciphertext version of the body, the plaintext version of the + + KD/IV/KA triple, and the ciphertext version of the KD/IV/KA triple that + + was generated using the key relationship between the sender and the recipient + + r2 . The question is: can r1 now deduce the key relationship between the + + sender and r2 ? + + + If so, then the way that the TMA attempts to minimize the use of encryption + + resources is a weakness. But, even if this is possible, given relatively short + + cryptoperiods for key relationships between TMA peers, this becomes a + + non-problem. + + + 4. Discussion Groups + + As discussed earlier, the proposed method of associating a single KDS ID with + + the membership of a discussion group does introduce a significant weakness + + for the security of messages sent to the discussion group. Since the TMA + + does not assume a general broadcast facility, it appears that there are no + + good solutions to the problem of discussion group traffic. Of course, it is easy + + enough to simply send to each member of the group. + + + For the sake of argument, let's assume that the discussion group has n + + members. Now, since a different key relationship would exist between the + + sender and each of the n recipients, the structure m would be different for + + each recipient and so a different message would have to be sent to each + + recipient. To make matters worse, if one rejects the way the TMA handles + + multiple recipients, not only does the MTS get burdened with n different + + messages, but the sender's TMA gets burdened by having to encrypt the body + + of the message n times. For meaningful values of n (say on the order of 500, + + or even 25), the amount of resources required for any trusted discussion group + + are simply too costly. + + +Compromises, Compromises + + Each of the possible weaknesses discussed above represent a compromise + +between the expense of the system and the level of security it can provide. + + + The first two areas, if addressed by the TMA, could result in much less + +background information being available to an adversary. In an application where it + +is important that an adversary not know who is talking to whom, or who can talk + +at all, this is very important. It is the authors' position that in the commercial + +environment, this issue is not paramount. By ignoring the issue of traffic flow, the + +TMA has a lot less work to do and the MTS is kept clear of "useless" messages. + +By keeping the information returned by the RUI and RIU MCLs in the clear, the + +complexity of the TMA is significantly reduced. + + + The second two areas, if addressed by the TMA, could result in a lesser + +probability of traffic being deciphered by an adversary. Regardless of the + +application, this is always extremely important. However, the authors' feel + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 19 + + +that the compromise made by the TMA in these two issues is not substantial, + +and does not result in an explicit weakness when a message is sent to multiple + +recipients (note that when there is only a single recipient of a message, these two + +policies can not introduce weaknesses). In return, efficient use can be made of + +both the MTS and the TMA when messages are being sent to multiple recipients. + +Given scarce resources or large numbers of recipients, this approach may prove to + +be quite winning. + + + Of course, much work remains to be done to prove the success of the TMA in + +all four of these areas. + + + +Acknowledgements + + The prototype implementation described herein utilizes a public domain + +implementation of the DES algorithm[DEA] which was originally implemented by + +James J. Gillogly in May, 1977 (who at that time was with the Rand Corporation, + +and is now affiliated with Gillogly Software). Interfaces to Dr. Gillogly's + +implementation were subsequently coded by Richard W. Outerbridge in September, + +1984 (who at that time was with the Computer Systems Research Institute at the + +University of Toronto, and is now affiliated with Perle Systems, Incorporated). + + + The authors would like to acknowledge Dennis Branstad, Elaine Barker, + +and David Balensen of the National Bureau of Standards for their comments + +on the prototype system and insights on the ANSI draft[FIKM]. In particular, + +Dr. Branstad originally suggested the method used for encrypting a single message + +for multiple recipients under different keys. + + + The authors (and all those who have read this paper) would like to thank Willis + +H. Ware of the Rand Corporation, and Jonathon B. Postel of the USC/Information + +Sciences Institute. Their extensive comments resulted in a much more readable + +paper. In addition, the authors would like to thank Dr. Stephen P. Smith and + +Major Douglas A. Brothers for their insightful comments. + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 20 + + + References + + + +[DCroc82] D.H. Crocker. Standard for the Format of ARPA Internet Text + + Messages. Request for Comments 822. ARPA Internet Network + + Information Center (NIC), SRI International (August, 1982). + + + +[DEA] Data Encryption Algorithm, X3.92-1981, American National + + Standards Institute, 1981. + + + +[FIKM] Financial Institution Key Management, X9.17-198_ (draft), American + + National Standards Institute, 198_. + + + +[FIPS46] Data Encryption Standard, Federal Information Processing Standards, + + Publication 46, 1977. + + + +[FIPS81] DES Modes of Operation, Federal Information Processing Standards, + + Publication 81, 1980. + + + +[IP] Internet Protocol. Request for Comments 791 (milstd 1777). + + Appearing in Internet Protocol Transition Workbook, ARPA Internet + + Network Information Center (NIC), SRI International, 1981. + + + +[LLamp82] L. Lamport, R. Shostak, M. Pease. The Byzantine Generals Problem. + + ACM Transactions on Programming Languages and Systems 4 (July, + + 1982), 382-401. + + + +[MRose85a] M.T. Rose, J.L. Romine. The Rand MH Message Handling System: + + User's Manual. UCI Version. Department of Information and Computer + + Science, University of California, Irvine (January, 1985). + + + +[MRose85d] M.T. Rose, E.A. Stefferud, J.N. Sweet. MH: A Multifarious User + + Agent. Computer Networks (to appear). + + + +[TCP] Transmission Control Protocol. Request for Comments 793 (milstd + + 1778). Appearing in Internet Protocol Transition Workbook, ARPA + + Internet Network Information Center (NIC), SRI International, 1981. + + + +[VVoyd83] V.L. Voydock, S.T. Kent. Security Mechanisms in High-Level + + Network Protocols. Computing Surveys 15, 2 (June, 1983), 135-171. + + + +[X.400] Message Handling Systems: System Model-Service Elements, + + Recommendation X.400, International Telegraph and Telephone + + Consultative Committee (CCITT). + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 21 + ______________________________________________________________________________________________________________________ + + 1 % tma -add -user "UCI Portal" uci@udel-dewey + 2 3: "UCI Portal" + 3 uci@udel-dewey + 4 + 5 % comp + 6 To: uci + 7 Fcc: +outbox + 8 Subject: test message + 9 -------- +10 mumble, mumble. +11 ^D +12 +13 What now? send -encrypt +14 -- Address Verification -- +15 -- Local Recipients -- +16 uci: address ok +17 -- Address Verification Successful -- +18 -- Posting for All Recipients -- +19 -- Local Recipients -- +20 uci: address ok +21 -- Recipient Copies Posted -- +22 -- Filing Folder Copies -- +23 Fcc outbox: folder ok +24 -- Folder Copies Filed -- +25 Message Processed + + + Figure 4 + + __________________________________________Sending_Encrypted_Mail______________________________________________________ + + + + Appendix A: An MH Session + + In the following, the user ``Marshall T. Rose'' logged onto host + + ``udel-dewey'' , wishes to send a message to a user known as the ``UCI Portal'' + + (a system maintenance account). As shown in Figure 4, line 1, the user first estab- + + lishes a mapping between the name ``UCI Portal'' and the address uci@udel- + + dewey. Once this mapping is performed, it remains in effect until the user indicates + + otherwise to the TMA. When the tma program is invoked, it consults the TMA + + database to see if that user is known. If not, it contacts the KDS to ask for the + + KDS ID associated with the user. If the response is successful (in this case, the + + KDS ID is ``3'' ), then the TMA updates its database. The tma program indicates + + in its output the KDS ID associated with the user, along with all known addresses + + (in this case, only one). So, once the name to address mapping has been described + + the user, the user agent, MH, deals only with the address, while the trusted mail + + agent deals with the name and KDS ID aspects of the user. + + + Next, the comp program is invoked to compose a new draft on line 5. The + + user addresses the local user ``uci'' in the To: field, and indicates that a plaintext + + copy should be kept in the folder ``+outbox'' . After entering the subject and + + text of the draft, the user enters What now? level on line 13. At this point, the + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 22 +______________________________________________________________________________________________________________________ + + 1 % inc + 2 Incorporating new mail into inbox... + 3 + 4 1+E02/28 0227-EST mrose test message <> + + + Figure 5 + +________________________________________Receiving_Encrypted_Mail______________________________________________________ + + + +user directs MH to send the draft in encrypted form. The resulting output is + +verbose (a default for send for this user) but instructive. Initially, all addresses in + +the draft are verified on lines 14 to 17. Two forms of verification occur: first, the + +MTS is asked to verify the address as much as possible. For local addresses, the + +MTS decides if the name has a maildrop associated with it. For remote addresses, + +the MTS decides if the host is known to it. The second type of verification occurs + +with the TMA. For all addresses, the TMA is asked if it can find a mapping from + +the address to a KDS ID. + + + The reason MH goes to all this trouble is a philosophical issue. Since the + +copy of the encrypted draft is different for each recipient, post tries to verify that + +all recipients can be successfully posted prior to actually posting the different + +ciphertext versions of the draft. This behavior is not optimal in terms of cycles, + +but is perhaps "correct" from a UA perspective. + + + Finally, the draft is actually posted, and the folder carbon-copy is filed. + + + Some time later, the UCI portal is informed that new mail has arrived. As + +shown in Figure 5, the inc program is run. The ``E'' prior to the date of the + +message indicates that inc has detected the message to be encrypted. Since the + +user did not inhibit inc from deciphering the message, it proceeds to do so. + + + Finally, it may be instructive to see what the encrypted message looked + +like when it was delivered to the portal's maildrop, and the final message after + +deciphering. Figures 6 and 7 show these respectively. In particular, note that the + +``X-KDS-ID:'' field has been introduced in Figure 7 after successfully deciphering + +the message. The presence of this field authenticates the sender of the message. + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 23 +______________________________________________________________________________________________________________________ + +Received: From localhost.DELAWARE by udel-dewey.DELAWARE id a022713 + ;28 Feb 85 2:27 EST +To: uci@udel-dewey +Subject: test message +Date: 28 Feb 85 02:27:16 EST (Thu) +Message-ID: <4057.478423636@udel-dewey> +From: mrose@udel-dewey + + +ENCRYPTED MESSAGE: TTI TMA +( +MCL/MAIL +RCV/3 +ORG/17 +IDK/850228072730 +KD/e36813a3882eebd1 +KD/fa8b8ac657476669 +IV/Ef9d283565431b103 +MIC/fdb927fb +MAC/50e9de30 +) +a13774f652d844762c4fc03c2f4e201b9d2f57eadb00546c + + + Figure 6 + +______________________________________Message_Prior_to_Decryption_____________________________________________________ + +______________________________________________________________________________________________________________________ +Received: From localhost.DELAWARE by udel-dewey.DELAWARE id a022713 + ;28 Feb 85 2:27 EST +To: uci@udel-dewey +Subject: test message +Date: 28 Feb 85 02:27:16 EST (Thu) +Message-ID: <4057.478423636@udel-dewey> +From: mrose@udel-dewey +X-KDS-ID: 17 (Marshall T. Rose) + + +mumble, mumble. + + + Figure 7 + +________________________________________Message_After_Decryption______________________________________________________ + + + +Appendix B: A Short Exchange + + The simple nature of the interchange between the user and MH in Appendix A + +completely hides any interactions between the TMA and the KDS. Let us briefly + +examine an exchange that might occur after the destination TMA receives the + +message shown in Figure 6. + + + To begin, the TMA must ascertain what it knows about the sender of the + +message, which claims to have a KDS ID of 17. That is, the TMA must first + +consider what key relationships it has with the sender. For the sake of argument, + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 24 + ______________________________________________________________________________________________________________________ + + 1 <--- ( + 2 <--- MCL/RIU + 3 <--- RCV/17 + 4 <--- ORG/3 + 5 <--- KDC/TTI + 6 <--- EDC/1a1fbbba + 7 <--- ) + 8 ---> ( + 9 ---> MCL/RTR +10 ---> RCV/17 +11 ---> ORG/3 +12 ---> CTA/1 +13 ---> USR/"Marshall T. Rose" +14 ---> KDC/TTI +15 ---> MAC/2ebde134 +16 ---> EDC/96b183de +17 ---> ) +18 <--- ( +19 <--- MCL/ACK +20 <--- RCV/17 +21 <--- ORG/3 +22 <--- KDC/TTI +23 <--- EDC/59a8ddcc +24 <--- ) + + + Figure 8 + + __________________________________________Ascertaining_the_Sender_____________________________________________________ + + + + suppose that this purported subscriber is unknown to the TMA. In this case, the + + first step it must undertake is to ascertain the validity of this subscriber. + + + As shown in Figure 8 on lines 1-7, the TMA does this by establishing a + + connection to the KDS and issuing an request identified user (RUI) MCL.13 If + + the response by the KDS is positive, the TMA will use the information returned + + when generating the ``X-KDS-ID:'' field for authentication. The response CSM + + returned by the KDS includes an authentication checksum (the MAC field on + + line 15) and a transaction count (the CTA field on line 12) to prevent spoofing by a + + process pretending to be the KDS. The TMA then acknowledges that the response + + from the server was acceptable on lines 18-24. + + + The next step is to ascertain the actual key relationship used to encrypt the + + structure m, which appears after the identifying string. The TMA consults the + + + ________________________________________ +13 In point of fact, the very first thing that the TMA does after connecting to the KDS is verify + + that the key relationships between the KDS and the TMA are valid (have not expired). If the + key relationship between the two has expired, the TMA issues a request service initialization RSI + MCL to establish a new key relationship. This relationship contains a key-encrypting key (KK) and + an authentication key (KA). Once a valid key relationship exists between the KDS and the TMA, + transactions concerning other key relationships may take place. + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 25 + ______________________________________________________________________________________________________________________ + + 1 <--- ( + 2 <--- MCL/RSI + 3 <--- RCV/17 + 4 <--- ORG/3 + 5 <--- IDK/850228072730 + 6 <--- KDC/TTI + 7 <--- SVR/KD.IV.KK + 8 <--- EDC/83679e14 + 9 <--- ) +10 ---> ( +11 ---> MCL/RTR +12 ---> RCV/17 +13 ---> ORG/3 +14 ---> KK/095f9d6b87f57871 +15 ---> CTA/2 +16 ---> KD/527fbb5593efd318 +17 ---> KD/1dcab338be1e7a09 +18 ---> IV/E02db5e598b2823ae +19 ---> EDK/850618075332 +20 ---> KDC/TTI +21 ---> MAC/12cbbdf5 +22 ---> EDC/8cd0c4a8 +23 ---> ) +24 <--- ( +25 <--- MCL/ACK +26 <--- RCV/17 +27 <--- ORG/3 +28 <--- KDC/TTI +29 <--- EDC/59a8ddcc +30 <--- ) + + + Figure 9 + + __________________________________Ascertaining_the_Key_Relationship___________________________________________________ + + + + IDK field in m, and if this relationship is unknown to it, then the KDS is asked to + + disclose the key relationship. + + + As shown in Figure 9 on lines 1-9, This is done by issuing a request service + + initialization (RSI) MCL and specifying the particular key relationship of interest. + + The KDS consults its database, and if the exact key relationship between the + + two indicated TMAs can be ascertained, it returns this information. The key + + relationship is encrypted using the key relationship between the KDS and the + + TMA, and the usual count and authentication fields are included. + + + Once the TMA knows the key relationship used to encrypt the structure m, + + it can decider the structure and ascertain the KD/IV/KA triple used to encrypt + + the body of the message. + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 26 + + + Appendix C: Differences between the ANSI and TTI drafts + + The differences between the ansi draft standard for financial institution key + + management, and the TTI draft's specification for trusted mail handling, are + + considered. + + + The concept of a key distribution center (CKD in the ansi draft, KDC in the + + TTI draft) environment differs. In the ansi draft, only one party talks to the key + + distribution server (KDS); in the TTI draft, both parties talk to the KDS. This + + leads to a number of differences in the two protocols. The reason for this shift + + in the TTI draft is somewhat subtle: although both parties can talk to the KDS, + + the mail transfer system (MTS) environment is such that both user agents (UAs) + + are unable to contact each other in real-time. Hence, a detailed two-way protocol + + between them is prohibitively expensive.14 + + + Before discussing the differences between the two drafts, let us consider the + + differences in the two environments: in the electronic mail environment, the two + + end-to-end peers need not be simultaneously online. Electronic mail relies on a + + communication service with potentially large delays in transit between message + + transfer agents (MTAs). A basic concept of "mail" is that an originator must release + + the enveloped message to a "transfer agent" before delivery can be attempted to a + + recipient. In contrast, in the electronic funds environment, the two peers make use + + of a virtual-circuit service. This means that they can synchronize much easier and + + inter-operate in a more direct fashion. + + + Service protocols are based on the notion of requests and responses. A client + + issues a request to a server, the server processes the request and returns a response. + + Depending on the complexity of the protocol, the client may now respond to the + + server's message, or might issue a new request, or might terminate the connection. + + + As delays in the network increase, along with the possibility of loss or + + corruption or re-ordering of messages, it becomes more difficult to implement a + + service protocol. In the case of a high-level protocol making use of a virtual- + + circuit service, most problems can be ignored, as the virtual-circuit service masks + + out problems in the network by using sequences, positive (and/or negative) + + acknowledgments, windows, and so on. + + + Sadly, electronic mail cannot utilize a virtual-circuit throughout the MTS + + (although individual MTA-wise connections are (in theory) virtual-circuit based). + + This means that implementing a real-time or interactive service protocol between + + two endpoints (a.k.a. UAs) in the MTS is very difficult. As a result, the complexity + + of an end-to-end protocol in the MTS (in terms of requests and responses) is + + severely constrained. For all practical purposes, an MTA can assume datagram + + service and nothing else: messages might be re-ordered; messages might not reach + + ________________________________________ +14 In the words of Einar A. Stefferud: "Every interesting connection has at least two end-points _ + + connections with only one end-point are always uninteresting." + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 27 + + +their destination; messages might be corrupted (though this is unlikely); in cases + +of failure, a notice might be generated, or might not. + + + In terms of the environment in which cryptographic service messages (CSMs) + +must flow, the high degree of delay and uncertainty make the implementation of a + +complex end-to-end protocol between UAs prohibitively expensive. Hence, a KDC + +is needed, to which each UA can connect using a virtual-circuit service, at posting + +and delivery time. The TTI draft terms such a user agent a trusted mail agent + +(TMA). Since both TMAs can connect to the KDS at different times using different + +media, the KDS maintains state information about the key relationships between + +different TMAs and manages those relationships appropriately. Since connections + +to the KDS can be expensive in terms of resources, each TMA caches information + +received from the KDS appropriately. + + + That's the gist of the argument as to why the TTI draft differs from the ansi + +draft. It might be possible to include CSMs in the messages which UAs exchange, + +but management of these CSMs can not be done reliably or in a straightforward + +fashion owing to the datagram nature of the service offered by the MTS. Finally, it + +should be noted that in the TTI draft, the KDS never initiates a connection with + +a TMA, rather it is the TMAs which connect to the KDS. + + + In the following, the differences between the two drafts are highlighted. Minor + +differences between the two are not discussed. + + + In the ansi draft, x 4:2 (p. 22) discusses the requirements for the automated + +key management architecture. The TTI draft has somewhat more "depth", since + +the ansi draft does not make use of a master key (MK) to fully automate the + +distribution of key-encrypting keys (KK). + + + The ansi draft states that once a KK-relationship is discontinued by either + +of that pair, the relation is not to be re-used for any subsequent activity. This + +can't be guaranteed in the prototype implementation. If one of the TMAs wishes + +to discontinue a key, not only does it have to inform the KDS, but the other TMA + +as well. Since the TTI draft does not permit CSMs between TMA-peers, the latter + +action doesn't seem possible. However, there is a solution. Whenever a message is + +deciphered, the TMA checks the effective date of the key used to encrypt a message + +it has received, and if the key is newer than the one it currently uses, it considers + +the older key to be discontinued. + + + Furthermore, although the environment in the TTI draft is that of a key + +distribution center, the notion of an ultimate recipient is not present, since all clients + +connect to the KDS at one time or another. In addition, the differences between + +the environs envisioned by the two drafts become even more pronounced when + +one considers that the KDS distributes key-encrypting keys to TMAs, although the + +ansi draft specifically prohibits this. + Reprinted from Proceedings, Second International Symposium on Computer Message Systems, 1985 28 + + + Finally, there is another important technical difference between the two + +drafts: every request to the KDS by the TMA results in a specifically defined + +response from the KDS to the TMA. Furthermore, if the KDS responds in a positive + +manner, then the TMA acknowledges this. This three-way interaction is used to + +ensure consistency between the states of the KDS and the TMA. The ansi draft + +does not require such behavior, and might profit from some finite-state analysis to + +ascertain unsafe (in terms of correctness) states which are reachable. + + + + + Contents + + + + Page + + Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * + *. 1 + + The Key Distribution Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 + + The Trusted Mail Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 + + Encrypting Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 + + Decrypting Mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 + + Modifications to MH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 + + Remarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * + * . 15 + + Strengths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .* + * 15 + + Open Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 + + Weaknesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * + * 17 + + Compromises, Compromises. . . . . . . . . . . . . . . . . . . . . . . . . . . 18 + + Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 + + References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * + * . 20 + + Appendix A: An MH Session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 + + Appendix B: A Short Exchange . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 + + Appendix C: Differences between the ANSI and TTI drafts . . . . . . . . . . 26 + + + + ________________________________________ +This document (version #2.60) was TEXset April 12, 1990 with DISS.STY v103. + + + + i diff --git a/docs/historical/tutorial.pdf b/docs/historical/tutorial.pdf new file mode 100644 index 0000000..97b088c Binary files /dev/null and b/docs/historical/tutorial.pdf differ diff --git a/docs/historical/tutorial.txt b/docs/historical/tutorial.txt new file mode 100644 index 0000000..f7c3f45 --- /dev/null +++ b/docs/historical/tutorial.txt @@ -0,0 +1,1389 @@ + + + + + The Rand MH Message Handling System: + + + + Tutorial + + + Marshall T. Rosey + + Jerry N. Sweetz + + Wed May 21 21:04:08 PDT 1986 + + + + Abstract + + + This document introduces the UCI version of the Rand MH + + system to novice users. In particular, this tutorial discusses + + how to read, send, reply to, and review mail; aspects of the + + MH user profile affecting these activities; and other reference + + works on MH. + + + Although this document is based on the standard MH + + user manual[MRose85a], this document is meant to supple- + + ment, not supersede, that lengthier work. + + + Comments concerning this documentation should be ad- + + dressed to the Internet mailbox Bug-MH@ICS.UCI.EDU. + + + +_____________________________________ +Computer Mail: y MRose@NRTC.NORTHROP.COM, z JSweet@ICS.UCI.EDU. + + + The Rand MH Message Handling System: + + + + Tutorial + + + +Acknowledgements + + The MH system described herein is based on the original Rand MH system. + +It has been extensively developed (perhaps too much so) by Marshall Rose and + +John Romine at the University of California, Irvine. Einar Stefferud, Jerry Sweet, + +and Terry Domae provided numerous suggestions to improve the UCI version of + +MH. + + + Parts of this document are taken from a Rand tutorial [SPayn85] by Sue + +Payne. + + + +Disclaimer + + The Regents of the University of California issue the following disclaimer + +concerning the UCI version of MH: + + + + "Although each program has been tested by its contributor, no warranty, express or + implied, is made by the contributor or the University of California, as to the accuracy + and functioning of the program and related program material, nor shall the fact of + distribution constitute any such warranty, and no responsibility is assumed by the + contributor or the University of California in connection herewith." + + + +Scope + + This document assumes that you have no knowledge of MH. However, to use + +MH you should have some familiarity with the UNIX1 operating system, particularly + +with the way commands are given, how files are named, the jargon (e.g. shell, + +argument, home directory, pathname), and how to use a text editor (such as ex, vi, + +or emacs ). + + + This tutorial covers only basic material. For additional information about + +MH, consult the User's Manual [MRose85a]. Other documents of possible interest + +to you include The UCI BBoards Facility [MRose84] and the MH Administrator's + +Guide [MRose85b]. + + + +_____________________________________ +1 UNIX is a trademark of AT&T Bell Laboratories. + + + + 1 + 2 + + +How To Use This Tutorial + + Different typefaces and symbols are used in this document to denote the + +kinds of things you (the user) must type on your keyboard. + + + 1. The names of programs are given in text italics: + + + comp + + + 2. Arguments to programs are given in typewriter style, delimited by + + single-quotes: + + + `msgs' + + + 3. UNIX pathnames are given in slanted roman: + + + /usr/uci/ + + + 4. Text giving a full example is presented in typewriter style: + + + comp -editor vi + + + The " " glyph is used to indicate an explicit space (the kind you make + + with the space bar on your keyboard). + + + +Introduction + + With MH you can send messages to other people on your system and read + +messages that other people send to you. Depending on how things have been + +set up on your system, it may be possible for you to send messages to people on + +remote systems. You can also reply to messages that you have received, review + +them, organize them in folders, and delete them. + + + MH differs from other mail programs in that it is composed of many small + +programs instead of just one very large program. Among new users this sometimes + +causes some confusion along the lines of "what program do I run?" With MH, you + +use the shell to invoke one program at a time. This means that when you handle + +mail, the entire power of the shell is at your disposal in addition to the facilities + +that MH provides. In the beginning, this may not make much sense or may not + +seem important. However, we have found that as new users of MH gain experience, + +they find this style of interface to be very useful. + 3 + + +Summary + + The most minimal list of MH commands that you can get by with is: + + + inc - incorporate mail (get new mail) + + + show - show the first message + + + next - show the next message + + + prev - show the previous message + + + comp - compose a new message to send + + + repl - reply to a received message + + + Comp and repl give enough prompting possibly to get you along. However, + +it is suggested that you take the time to peruse this tutorial before leaping into + +things. + + + +Messages and Folders + + A message takes the form of a memorandum, and is composed of two + +major parts: a header, which contains such information as ``To'' and ``From'' + +addresses, ``Subject'' , ``Date'' , etc.; and the body, which is the actual text of + +the message. Each component in the header starts with a keyword followed by a + +colon and additional information. For example, in the message: + + + Date: 10 Oct 84 17:41:14 EDT (Wed) + + To: News@udel-dewey + + Subject: UCI Software Talk + + From: UCI Portal (agent: Marshall Rose) + + + + This is the text. + + +there are four header items, and one line of text in the body. Note that a blank + +line separates the body from the headers. + + + MH stores a message as an ordinary file in a UNIX directory. This directory is + +called a folder. If you choose to keep and organize your messages, you may create + +as many folders as you wish. There is no limit as to the number of messages in a + +folder. Typically messages are numbered from 1 up. All of your personal folders, + +along with some other information that MH needs to know, are kept in a special + +directory called Mail under your home directory. Normally, MH manages these + +files and directories automatically, so you needn't muck around with them directly + +unless you really want to. + 4 + + + You won't have any folders until somebody sends mail to you, as a rule. If + +you are anxious to try out MH, but no one has sent you mail yet, try sending mail + +to yourself to start out with. + + + +Reading New Mail + + When you are notified that you have mail (usually when you log in), perhaps + +with the message + + + You have mail. + + +then you know that messages are waiting in your maildrop. To read these messages, + +you first have to incorporate the mail into your "in-box" by typing the command: + + + inc + + +This incorporates the new mail from your mail drop to your in-box, which is a + +folder named (naturally enough) `+inbox' . As inc incorporates your new mail, it + +generates a scan listing of the mail: + +Incorporating new mail into inbox... + +2 + 10/10 WESTINE% USC-ISIF RFC 916 Now Available <