---
name: "mmh-intro"
section: "7mh"
platform: "linux"
package: "mmh"
version: "0.4-4"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/mmh-intro"
---

# mmh-intro(7mh)

Introduction to the Modern MH message system

## NAME

mmh - Introduction to the Modern MH message system

## DESCRIPTION

**mmh** is a powerful message handling system, based on **nmh**, which in turn bases on MH, the Rand Corporation's Message Handler.

Rather than being a single comprehensive program, **mmh** consists of a collection of fairly simple single-purpose programs to send, retrieve, organize, and manipulate messages.

Unlike most other mail clients, **mmh** is not a closed system which must be explicitly run, then exited when you wish to return to the shell. Instead, you may freely intersperse **mmh** commands with other shell commands, allowing you to read and answer your mail while you search for a file or run programs as needed to find the answer to someone's question before answering their mail.

The rest of this manual entry is a quick tutorial which will teach you the basics of **mmh**. You should read the manual entries for the individual programs for complete documentation.

To get started using **mmh**, put the directory */usr/bin/mh* on your **$PATH**. This is best done in one of the files: *.profile*, *.login*, *.bashrc*, or *.cshrc* in your home directory.  (Check the manual entry for the shell you use, in case you don't know how to do this.) Then run the **mmh** command.  If you've never used **mmh** before, it will create the necessary default files and directories after asking you if you wish it to do so.

**inc** moves mail from your system maildrop into your **mmh** \`+inbox' folder, converting it to the MH format (one file per message).  It prints one line for each message it processes, containing the date, from and subject fields. It leaves the first message it processes as your current message. You'll need to run **inc** each time you wish to incorporate new mail into your **mmh** mail storage.

**scan** 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. **show** displays the current message, or a specific message, which may be specified by its number, which you pass as an argument to **show**. **next** and **prev** display, respectively, the message numerically after or before the current message.  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.

**rmm** (remove message) deletes the current message.  It may be called with message numbers passed as arguments, to delete specific messages.

**repl** is used to respond to the current message (by default). It places you in the editor with a prototype response form. After completing your response, type **li** to **list** (review) it, or **s** to **send** it.

**comp** allows you to compose a fresh message by putting you in the editor on a prototype message form, and then lets you send it.

All the **mmh** commands may be run with the single argument: **-help**, which causes them to print a list of the arguments they may be invoked with and then exit.

Commands which take a message number as an argument (**scan**, **show**, **repl**, ...)  also take one of the letters: \`f', \`p', \`c', \`n', or \`l' to indicate (respectively) the first, previous, current, next, or last message in the current folder (assuming they are defined).

Commands which take a range of message numbers (**rmm**, **scan**, **show**, ...)  also take any of the abbreviations:

- *\<num1\>*-*\<num2\>*

  Indicates all messages in the range \<num1\> to \<num2\>, inclusive. The range must be nonempty.

- *\<num\>*:+*N*

  - *\<num\>*:-*N*

  Up to *N* messages beginning with (or ending with) message *num*. *Num* may be any of the pre-defined symbols: *f*, *p*, *c*, *n* or *l*.

- f:*N*

  - p:*N*

  - n:*N*

  - l:*N*

  The first, previous, next or last messages, if they exist.

There are many other possibilities such as creating multiple folders for different topics, and automatically refiling messages according to subject, source, destination, or content.  These are beyond the scope of this manual entry.

Following is a list of all the **mmh** commands:

```
^ali(1)~^- list mail aliases
^anno(1)~^- annotate messages
^burst(1)~^- explode digests into messages
^comp(1)~^- compose a message
^dist(1)~^- redistribute a message to additional addresses
^flist(1),
^    flists(1)~^- list folders with messages in given sequence(s)
^folder(1),
^    folders(1)~^- set/list current folder/message
^forw(1)~^- forward messages
^inc(1)~^- incorporate new mail
^mark(1)~^- manipulate message sequences
^mhbuild(1)~^- translate MIME composition draft
^mhl(1)~^- produce formatted listings of mh messages
^mhlist(1)~^- list information about MIME messages
^mhmail(1)~^- send mail (mailx replacement)
^mhparam(1)~^- print mmh profile and context components
^mhpath(1)~^- print full pathnames of mh messages and folders
^mhpgp(1)~^- verify and decrypt a message with gnupg
^mhsign(1)~^- sign or encrypt a message with gnupg
^mhstore(1)~^- store contents of MIME messages into files
^mmh(1)~^- initialize the mmh environment
^mmhwrap(1)~^- invoke mmh commands if they are not in $PATH
^new(1)~^- report on folders with new messages
^packf(1)~^- pack messages in mh folder into a single mbox file
^pick(1)~^- select messages by content
^prompter(1)~^- prompting editor front-end for mmh
^rcvdist(1)~^- asynchronously redistribute new mail
^rcvpack(1)~^- asynchronously append message to mbox file
^rcvstore(1)~^- asynchronously incorporate mail into a folder
^refile(1)~^- file messages in other folders
^repl(1)~^- reply to a message
^rmf(1)~^- remove an mh folder
^rmm(1)~^- remove messages
^send(1)~^- send a message
^sendfiles(1)~^- send multiple files in a MIME message
^show(1)~^- display (MIME) messages
^slocal(1)~^- asynchronously filter and deliver new mail
^sortm(1)~^- sort messages
^whatnow(1)~^- prompting front-end for sending messages
^whatnow2(1)~^- front-end for handling drafts
^whom(1)~^- report to whom a message would go

^ap(8)~^- parse addresses 822-style
^dp(8)~^- parse dates 822-style
^fmtdump(8)~^- decode mh format files
^spost(8)~^- feed a message to sendmail
```

The following man pages describe file formats and concepts:

```
^mh-alias(5)~^- alias file for mh message system
^mh-format(5)~^- format file for mh message system
^mh-mail(5)~^- message format for mh message system
^mh-profile(5)~^- user customization for the mmh message handler

^mh-chart(7)~^- Chart of mmh Commands
^mh-draft(7)~^- draft folder facility for mmh
^mh-sequence(7)~^- sequence specification for mh message system
^mmh(7)~^- Introduction to the Modern MH message system
```

## FILES

```
^/usr/bin/mh~^contains mmh commands
^/etc/mmh~^contains mmh format files
^/usr/lib/mmh~^contains mmh library commands
^$HOME/.mmh~^The user's mmh directory
^$HOME/.mmh/profile~^The user's profile
^$HOME/.mmh/context~^The user's context
^$HOME/Mail~^Default location of the user's mail storage
```

## PROFILE COMPONENTS

```
^Path:~^Location of the user's mail storage
```

## HISTORY

**mmh** is an experimental version of **nmh**, the New Mail Handler. Its name \`\`mmh'' stands for \`\`meillo's mail handler''.

## BUGS

If you encounter problems with an **mmh** program, please report them. When doing this, include the version information, which you can obtain by invoking the program with the **-Version** switch.

Send bug reports, comments, and suggestions to *\<mmh@marmaro.de\>* or to *markus schnalke \<meillo@marmaro.de\>*.

## SEE ALSO

mmh(1) [mh-chart(1)](/mh-chart/1.md)
