NMH(7mh)
π NMH β like, the whole vibe of the Modern MH message system
okay bestie, so this is the NMH(7mh) page β the big-picture intro one. it's not a command, it's the β¨orientationβ¨. think of it as the group chat where everyone explains what the actual system is. sit down, grab a snack π
πΈ NAME πΈ
mmh β Introduction to the Modern MH message system. that's it, that's the whole name. short, iconic, no notes π
β¨ DESCRIPTION β¨
mmh is a powerful message handling system, based on nmh, which in turn bases on MH, the Rand Corporation's Message Handler. so it's a whole lineage, a dynasty, if you will π
Rather than being one giant comprehensive program, mmh consists of a collection of fairly simple single-purpose programs to send, retrieve, organize, and manipulate messages. tiny little specialists. a whole crew. we love a modular moment π«Ά
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. nope! 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. multitasking queen behaviour, honestly π
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. (yes bestie, there's more. there's always more.)
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. so polite. so considerate. consent-based config setup π
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. it's giving "mailbox doorman" πͺ
scan prints a list of the messages in your current folder. the lil table of contents, the tl;dr, the vibe check β¨
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. bye bye π
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. brand new message, main character energy π
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. your built-in cheat sheet, no cap π
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). lowkey the handiest thing ever.
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,norl.f:Np:Nn:Nl: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. (the lore goes deeper, bestie. we're just doing the surface level today π)
Following is a list of all the mmh commands:
ali(1)β list mail aliasesanno(1)β annotate messagesburst(1)β explode digests into messagescomp(1)β compose a messagedist(1)β redistribute a message to additional addressesflist(1),flists(1)β list folders with messages in given sequence(s)folder(1),folders(1)β set/list current folder/messageforw(1)β forward messagesinc(1)β incorporate new mailmark(1)β manipulate message sequencesmhbuild(1)β translate MIME composition draftmhl(1)β produce formatted listings of mh messagesmhlist(1)β list information about MIME messagesmhmail(1)β send mail (mailx replacement)mhparam(1)β print mmh profile and context componentsmhpath(1)β print full pathnames of mh messages and foldersmhpgp(1)β verify and decrypt a message with gnupgmhsign(1)β sign or encrypt a message with gnupgmhstore(1)β store contents of MIME messages into filesmmh(1)β initialize the mmh environmentmmhwrap(1)β invoke mmh commands if they are not in$PATHnew(1)β report on folders with new messagespackf(1)β pack messages in mh folder into a single mbox filepick(1)β select messages by contentprompter(1)β prompting editor front-end for mmhrcvdist(1)β asynchronously redistribute new mailrcvpack(1)β asynchronously append message to mbox filercvstore(1)β asynchronously incorporate mail into a folderrefile(1)β file messages in other foldersrepl(1)β reply to a messagermf(1)β remove an mh folderrmm(1)β remove messagessend(1)β send a messagesendfiles(1)β send multiple files in a MIME messageshow(1)β display (MIME) messagesslocal(1)β asynchronously filter and deliver new mailsortm(1)β sort messageswhatnow(1)β prompting front-end for sending messageswhatnow2(1)β front-end for handling draftswhom(1)β report to whom a message would go
and the system-level ones:
ap(8)β parse addresses 822-styledp(8)β parse dates 822-stylefmtdump(8)β decode mh format filesspost(8)β feed a message to sendmail
The following man pages describe file formats and concepts:
mh-alias(5)β alias file for mh message systemmh-format(5)β format file for mh message systemmh-mail(5)β message format for mh message systemmh-profile(5)β user customization for the mmh message handler
and:
mh-chart(7)β Chart of mmh Commandsmh-draft(7)β draft folder facility for mmhmh-sequence(7)β sequence specification for mh message systemmmh(7)β Introduction to the Modern MH message system
π FILES π
where everything lives, bestie:
/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 π
just the one, and it matters:
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''. a little self-titled era, we respect it π
β οΈ 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. (fr fr, include it β a bug report without the version is giving nothing π)
Send bug reports, comments, and suggestions to <mmh@marmaro.de> or to markus schnalke <meillo@marmaro.de>. he's literally right there, bestie, tell him π«Ά
π SEE ALSO π
mmh(1) mh-chart(1)
and that's the whole page, bestie!! this one shipped as part of mmh 0.4, and the page itself is stamped 2019-01-06 β with the footer tagging it MH.6.8. so go forth, put /usr/bin/mh on your $PATH, and slay πβ¨π
π¦ where this page comes from
- debian bookworm: mmh 0.4-4 Β· BSD-3-Clause
- ubuntu jammy: mmh 0.4-4 Β· BSD-3-Clause
- ubuntu noble: mmh 0.4-6 Β· BSD-3-Clause
- ubuntu questing: mmh 0.4-6
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms