Himalaya vs nmh
Himalaya: Command-line email client written in Rust that lists, reads, sends and moves mail through shell commands with JSON output.
nmh: The MH message handling system: separate shell commands to read, file, search and send mail stored one file per message.
Differences
- Only Himalaya has built-in IMAP and JMAP.
- Only nmh has built-in POP3 and mbox.
- On Windows, Himalaya runs natively and nmh runs through WSL.
- On BSD, Himalaya builds from source and nmh runs natively.
- On Android, Himalaya is not available and nmh runs through Termux.
- nmh has calendar support; Himalaya does not.
- Himalaya has OAuth2 sign-in; nmh does not.
- Himalaya has threaded views; nmh does not.
- Himalaya is written in Rust; nmh in C.
- Configuration: Himalaya uses TOML file; interactive setup wizard, and nmh uses ~/.mh_profile and mts.conf text files.
Side by side
| Himalaya | nmh | |
|---|---|---|
| Interface | Command-line tools and prompts | Command-line tools and prompts |
| Language | Rust | C |
| License | MIT or Apache 2.0 | BSD 3-Clause |
| Latest version | 2.1.0 | 1.8 |
| Linux | Native | Native |
| macOS | Native | Native |
| Windows | Native | Through WSL |
| BSD | Build from source | Native |
| Android | No | Through Termux |
| IMAP | Yes | Through a separate tool |
| POP3 | No | Yes |
| SMTP | Yes | Yes |
| JMAP | Yes | No |
| Maildir | Yes | Yes |
| mbox | No | Yes |
| notmuch | No | No |
| OpenPGP | No | No |
| S/MIME | No | No |
| OAuth2 sign-in | via script | No |
| Threads | through the IMAP, JMAP and Gmail subcommands | No |
| Search | built-in query syntax across backends; server-side for IMAP and JMAP | pick command matches header fields and message text |
| HTML mail | No | via mhshow with an external converter such as w3m |
| Mouse | No | No |
| Multiple accounts | Yes | via per-command switches or separate profiles |
| Offline use | with the Maildir backend and a sync tool such as mbsync | full; messages are stored as local files |
| Calendar | No | replies to invitations with mhical |
| Contacts | No | aliases via MailAliases and the ali command |
| Vim-style keys | No | No |
| Configuration | TOML file; interactive setup wizard | ~/.mh_profile and mts.conf text files |
Which to choose
Choose Himalaya for
- Every action is a shell command with optional JSON output, suited to scripts
- Native Windows binary through Scoop and GitHub releases
- Also supports JMAP, the Gmail API and Microsoft Graph
Watch out for
- No interactive interface; himalaya-tui is still pre-release
- Composing rich MIME or PGP messages needs the separate mml tool
- Version 2 dropped the notmuch and sendmail backends
Choose nmh for
- Every action is a shell command, so mail handling is easy to script.
- One file per message lets grep, find and other Unix tools work on mail.
- Built-in POP3 and SMTP with TLS and SASL; reads mbox and Maildir drops.
Watch out for
- No IMAP; IMAP mail must be synced to a Maildir first and then incorporated.
- No built-in OpenPGP or S/MIME, and no thread view.
- SMTP authentication needs nmh built with Cyrus SASL and its PLAIN or LOGIN plugin.
Questions
What is the difference between Himalaya and nmh?
Only Himalaya has built-in IMAP and JMAP. Only nmh has built-in POP3 and mbox. On Windows, Himalaya runs natively and nmh runs through WSL.
Which runs on Windows, Himalaya or nmh?
On Windows, Himalaya runs natively. On Windows, nmh runs through WSL.
See also: Himalaya alternatives, nmh alternatives.