From ArchWiki

nmh (new message handler), is a powerful electronic mail handling system. Following the Unix Philosophy, nmh is made up by a collection of simple programs each of which has a single purpose. This architecture allows the user to intersperse nmh with other commands at the shell prompt and to write scripts tailored to their needs.


Install nmhAUR or nmh-gitAUR.

Optionally install a utility to handle IMAP or POP, for example fdm, offlineimap or getmailAUR.

Also optionally install msmtp or another utility for sending mail.


nmh is extensively configurable in a variety of ways. The primary of these is the ~/.mh_profile file.

The syntax for ~/.mh_profile is unusual. For example, nmh will refuse to run if there are blank lines in the file. Read the mh_profile(5) page for more.

By default, nmh uses ~/Mail as your mail folder. To change this, set Path:

 Path: path/to/mail/folder
  • Path can be either full (if prefixed with /) or relative to $HOME.
  • Nmh uses the mh mail format, which is different from the maildir and mbox. Setting your Path to a preexisting maildir folder, for example, will not work.

Set inbox (relative to Path):

 Inbox: inbox

Also by default, nmh populates the mail folder with the inc command, which incorporates mail from the user's mail drop (/var/mail/user).

If you have a non-standard mail drop path, you can set an environment variable $MAILDROP, or set MailDrop in mh_profile:

 MailDrop: /path/to/mail-drop

or set inc:

 inc: -file /path/to/mail-drop
Note: For each nmh command (see list below) the user can set default flags with a line of the form command: -flag format in mh_profile. These work much like bash aliases.

Nmh is also capable of retrieving mail via POP. A basic POP setup (see inc(1) for more):

 inc: -host example.com -user username -sasl


To become familiar with basic nmh usage, learn and practice the following commands:

Command Description
inc Incorporate new mail.
scan Scan the contents of the current folder.
folder/folders Change the current folder or list folders and their contents.
show Display messages.
comp Compose a new message.
repl Reply to a message.
refile Move a message to another folder.


While nmh is fully usable from the command-line, several console-based and graphical user interfaces exist. Also, some common mail tools interact smoothly with the mh format.

MH-specific Frontends

  • MH-V, a console interface to mh/nmh with vi- keybindings.
  • MH-E, a console interface to mh/nmh with Emacs keybindings.
  • exmh, a TK-based mh GUI.

MH-compatible Frontends

  • Popular MUA mutt understands mh format. (Use set mbox_type = mh in your muttrc.)
  • Full-text mail indexer and search utility mairix can read and write in mh format. (Use mh=path/to/mh/folder and mformat=mh in .mairixrc)

See also