mh, MH - Introduction to the MH system for handling mail
MH is the name of a powerful message handling system. Rather than being a single comprehensive program, MH consists of a collection of fairly simple single-purpose programs to send, receive, save, and retrieve messages.
Unlike mail, MH is not a closed system that must be explicitly run, and then exited when you wish to return to the shell. Instead, you may freely intersperse MH commands with other shell commands. This allows you to read and answer your mail while you have (for example) a compilation running, or are searching for a file or running programs to find an answer to someone's question before replying to them.
To get started using MH, add the directory /usr/bin/mh to your $PATH. This is best done in one of the files .profile, .login, or .cshrc in your home directory. Check the reference page for the shell you use if you do not know how to do this. Run the inc command. If you have never used MH before, the inc command creates the necessary default files and directories after asking you if you want it to do so. The inc command moves mail from your system maildrop into your MH +inbox folder. Each message is converted to MH format, and stored as separate files in your +inbox folder until you have read it. When you have read a message, you can refile it in another folder that you have created.
Folders are directories in which messages are stored: the folders themselves are stored in your Mail directory. See refile(1) and folder(1) for more details.
For each message it processes, inc prints a one-line display. The one-line display contains the From: field, the Subject: field, and as much of the first line of the message as it can accommodate. The first message that inc processes becomes your current message. All MH commands operate on the current message unless you have specified the msg argument.
You need to run inc each time you wish to incorporate new mail into your +inbox folder.
The scan command prints a list of the messages in your current folder.
The commands show, next, and prev are used to read specific messages from the current folder. Of these, show displays the current message. You can also display a specific message by specifying its number. In the following example, the mail system displays the contents of message number 10 in the current folder:
% show 10
The commands next and prev display the message numerically following and numerically preceding the current message, respectively. In all cases, the message displayed becomes the current message. If there is no current message, show may be called with an argument, or next may be used to advance to the first message. The command rmm (remove message) deletes the current message.
You can delete messages other than the current message by specifying the message number or numbers. When you specify more than one message, you separate each message number by a space. In the following example, messages 2, 4 and 6 in the current folder are deleted:
% rmm 2 4 6
The command repl is used to reply to a message. This command places you in the editor with a prototype response form. While you are in the editor, you may view the item you are responding to by reading the file @.
The comp command allows you to compose a message by putting you in the editor on a blank message header form, and then lets you send it.
All the MH commands can be run with only the -help option, which causes them to print a list of the parameters and options with which they can be used.
Commands that take a message number as an argument (scan, show, and repl, for example) also take one of the following keywords: Specifies the first message in the current folder. Specifies the last message in the current folder. Specifies the current message in the current folder. Specifies the previous message in the current folder. Specifies the next message in the current folder.
Commands that take a range of message numbers, such as rmm, scan, or show, also take any of the following abbreviations: Indicates all messages in the range num1 to num2, inclusive. The specified range must contain at least one message. Indicate up to n messages beginning with (or ending with) message num. The value of num may be any of the MH message keywords: first, prev, cur, next, or last. Specify the first, previous, next, or last n messages, if they exist.
MH software offers many other options, such as creating multiple folders
for different topics, and automatically refiling messages according to subject,
source, destination, or content. The following MH reference pages provide
information on the specified topics:
Extracting addresses from message headers
Listing mail aliases
Exploding digests into messages
Composing a message
Redistributing a message to additional addresses
Setting/listing the current folder/message
Listing all folders
Incorporating new mail
Producing formatted listings of MH messages
Sending or reading mail
Printing full pathnames of MH messages and folders
Checking for messages
Running the MH shell
Showing the next message
Compressing a folder into a single file
Selecting messages by content
Showing the previous message
Prompting editor front end
Incorporating new mail asynchronously
Filing messages in other folders
Replying to a message
Removing a folder
Producing a one line per message scan listing
Sending a message
Receiving mail hooks
Showing (listing) messages
Using the prompting front-end for send
Reporting who will receive a message when it is sent
Using the alias file for the MH message system
Using the format file for the MH message system
Using the message format file for the MH message system
Using the user customization for the MH message system
Using the systemwide customization for the MH message system
Running the program that parses addresses in RFC 822-style
Searching for alias/password conflicts
Running the program that parses dates in RFC 822-style
Initializing the MH environment for a system
Running the backend processor for the
The default mail interchange code in the United States is based on using only 7 bits of each byte to represent each character. To provide full support for European languages other than English, MH software must reserve the full 8 bits of each byte for character representation. Support for 8-bit code in mail is enabled by the system manager as part of the configuration process for worldwide support software.
In Asian countries, there are a variety of coded character sets (codesets) that are used for interchange of mail between systems and for processing by local applications. Most of these codesets require more than one byte to represent each character. For Asian languages, the MH software therefore supports codeset conversion of mail messages between the mail interchange codeset and the user's application codeset. For example, if the mail interchange codeset at sites in Japan is ISO-2022-JP and the user's application codeset is eucJP, the next command needs to convert the next message to eucJP before displaying the message. Otherwise, Japanese characters do not display correctly.
Codeset conversion is controlled through entries in various files, command options, and variable settings that are associated with MH software. The conversion is actually done by converters that reside in the /usr/lib/nls/loc/iconv directory. Each converter supports a single from_code and to_code conversion that is identified in the converter name. For example, the converter that supports conversion from the ISO-2022-JP mail interchange codeset to the eucJP user application codeset is named ISO-2022-JP_eucJP. Codeset conversion works only if converters are available for the mail interchange and user application codesets that apply to the message and if those converters are installed. (Converters are installed from optional language-specific subsets). Refer to the iconv_intro(5) reference page for more information about codeset conversion.
By default, to eliminate risk of data loss, the inc command stores incoming mail messages in mail folders without codeset conversion. In this case, the codeset conversion is performed later when you display or extract messages from mail folders. If you want codeset conversion to be performed at the time messages are stored in folders, you can specify the -conv option on the inc command line. To ensure correct codeset conversion in some Asian countries, you may need to use the inc -conv inshdr command when incoming messages do not include a Content-Type entry in the header. Refer to the inc(1) reference page for more information on the -conv option.
To include mail interchange codeset information in outgoing mail messages, the MH software adds new header lines. For example, if ISO-2022-JP is the mail interchange code, the following header lines are added to outgoing messages:
Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=ISO-2022-JP
For non-ISO codesets, the software adds the prefix ``X-'' to the codeset name for identification purposes. For example, if the codeset is eucJP, the following header lines are added to the message:
Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=X-eucJP
For incoming mail, MH software uses the following settings (in the order listed) to determine the mail interchange codeset: The value specified for charset in the Content-Type: header line, if present in the incoming message The default systemwide mail interchange codeset as specified in the /usr/lib/mail-codesets file
The MH software does not perform codeset conversion on incoming mail if neither of these settings specifies a codeset.
For outgoing mail, MH software uses the following settings (in the order listed) to determine the mail interchange codeset: The EXCODE environment variable The profile component excode defined in $HOME/.mh_profile The content of /usr/lib/mail-codesets
MH software determines the user application codeset from the codeset
part of locale name settings for the following variables and file entries
(listed in order of high to low precedence):
The profile component
You cannot create folder names that are made up of only digits.
Directory containing commands MH library