Terminal email clients for every system
Read and send email from a terminal on Linux, macOS, Windows, BSD and Android. 19 maintained clients and 7 mail tools, each with install commands for every system and a config that works with Forward Email or any other provider.
The screenshots show Forward Email's terminal app, made by the team behind this site. It is the only client here with its own calendar, contact list and task list, alongside mail.














forwardemail
FeaturedThe forwardemail command runs the same application as Forward Email's webmail inside a terminal, drawn as text. Mail, calendar, contacts, tasks and settings all work, with keyboard shortcuts, mouse clicks and scrolling, and plain-text reading and writing by default. It installs as one standalone executable on Linux, macOS and Windows, or from npm anywhere Node.js 22 runs. It signs in to Forward Email accounts, including self-hosted servers.
- Calendar, contacts and tasks in the same terminal app as mail
- Mouse clicks, scrolling and text selection work, and the bottom row always shows the keys for the current screen
- One self-updating executable with no setup files to write
- Works with self-hosted Forward Email through
--api
A Forward Email account with a mailbox (paid plans start at $3 a month). forwardemail --demo opens a demo account with no sign-in.
Install
Linux
curl -fsSL https://github.com/forwardemail/mail.forwardemail.net/releases/latest/download/install.sh | shnpm install -g forwardemailStandalone builds for x64 and arm64 need glibc. On musl systems such as Alpine Linux, install with npm.
macOS
curl -fsSL https://github.com/forwardemail/mail.forwardemail.net/releases/latest/download/install.sh | shnpm install -g forwardemailStandalone builds for Apple Silicon and Intel.
Windows
irm https://github.com/forwardemail/mail.forwardemail.net/releases/latest/download/install.ps1 | iexnpm install -g forwardemailSigned standalone builds for x64 and arm64. Windows Terminal is recommended over the legacy console.
BSD
npm install -g forwardemailThrough npm, which runs anywhere Node.js 22 or later does.
Android
pkg install nodejs && npm install -g forwardemailThrough npm in Termux, which packages Node.js 24 and later. Not tested by the project.
All features and screenshotsUse another client with Forward Email
Clients
Programs you read and write mail in. Pick a system to see what runs there, or filter by name, language or protocol.
| Systems | Name | Language and license |
|---|---|---|
| Runs on Linux, macOS, Windows and BSD, on Android through Termux. | Forward EmailFeaturedTUISource-availableForward Email's webmail in the terminal: mail, calendar, contacts and settings, with mouse support and a key hint bar. | TypeScript Business Source License 1.1 |
| Runs on Linux, macOS and BSD, on Windows through WSL, on Android through Termux. | aercTUITerminal email client written in Go with IMAP, JMAP, Maildir and notmuch backends and an embedded terminal for editing. | Go MIT |
| Runs on Linux, macOS and BSD, on Windows through WSL. Not available for Android. | alotTUITerminal mail reader written in Python that works on a local notmuch database, with tag-based search and threads. | Python GPL 3.0 or later |
| Runs on Linux, macOS, Windows and BSD, on Android through Termux. | AlpineTUIMenu-driven terminal email client descended from Pine, with built-in help, setup screens and native Windows builds. | C Apache 2.0 |
| Runs on BSD, on Windows through WSL, builds from source on Linux. Not available for macOS or Android. | ConeTUIFull-screen console mail client and newsreader from the Courier mail server project. | C++ GPL 3.0 |
| Runs on Linux, macOS, Windows and BSD, on Android through Termux. | GnusEmacsMail and news reader built into GNU Emacs, with back ends for IMAP, POP3, local mail folders and NNTP. | Emacs Lisp GPL 3.0 or later |
| Runs on Linux, macOS and Windows, builds from source on BSD. Not available for Android. | HimalayaCLICommand-line email client written in Rust that lists, reads, sends and moves mail through shell commands with JSON output. | Rust MIT or Apache 2.0 |
| Runs on Linux, macOS and Windows, builds from source on BSD. Not available for Android. | MatchaTUITerminal email client written in Go with the Bubble Tea TUI library, with IMAP, JMAP and POP3 support. | Go MIT |
| Runs on Linux, macOS and BSD, on Windows through WSL. Not available for Android. | mblazeCLISet of small Unix utilities for reading, searching, threading and composing mail stored in Maildir folders. | C CC0 1.0 and MIT |
| Runs on Linux, macOS and BSD. Not available for Windows or Android. | meliTUITerminal email client written in Rust with IMAP, JMAP, notmuch, Maildir, mbox and NNTP backends and TOML configuration. | Rust EUPL 1.2 or GPL 3.0 or later |
| Runs on Linux, macOS and BSD, on Windows through WSL, on Android through Termux. | mu4eEmacsEmail client that runs inside GNU Emacs, built on the mu Maildir indexer and search tool. | Emacs Lisp (mu4e), C++ (mu) GPL 3.0 or later |
| Runs on Linux, macOS and BSD, on Windows through WSL, on Android through Termux. | MuttTUILong-running text-mode email client with IMAP, POP3 and SMTP support, configured through a muttrc file. | C GPL 2.0 or later |
| Runs on Linux, macOS and BSD, on Windows through WSL, on Android through Termux. | NeoMuttTUIFull-screen terminal mail reader forked from Mutt, with notmuch, NNTP, Lua scripting and a sidebar built in. | C GPL 2.0 or later |
| Runs on Linux and macOS. Not available for Windows, BSD or Android. | nmailTUITerminal email client for Linux and macOS with an Alpine-like interface and built-in IMAP and SMTP. | C++ MIT |
| Runs on Linux, macOS and BSD, on Windows through WSL, on Android through Termux. | nmhCLIThe MH message handling system: separate shell commands to read, file, search and send mail stored one file per message. | C BSD 3-Clause |
| Runs on Linux, macOS and BSD, on Windows through WSL, on Android through Termux. | Notmuch Emacs interfaceEmacsEmacs front end for notmuch that reads, searches, tags and composes mail from a local Maildir. | Emacs Lisp GPL 3.0 or later |
| Runs on Linux, macOS and BSD, on Windows through WSL. Not available for Android. | S-nailCLICommand-line mail program that implements POSIX mailx, with MIME, IMAP, POP3, SMTP, Maildir and S/MIME support. | C ISC and BSD 2-Clause and BSD 3-Clause and BSD 4-Clause |
| Runs on Linux and macOS, on Windows through WSL, builds from source on BSD. Not available for Android. | SupTUICurses email client in Ruby built around threads, labels and fast full-text search over local mail. | Ruby GPL 2.0 or later |
| Runs on Linux, macOS and BSD, on Windows through WSL, on Android through Termux. | WanderlustEmacsMail and news reader for Emacs, written in Emacs Lisp, with built-in IMAP, POP3, NNTP and SMTP support. | Emacs Lisp GPL 2.0 or later |
| No client matches. Clear the filter or pick another system. | ||
Mail tools
Programs that sync, send, fetch or index mail for the clients above. A Maildir client such as alot or mu4e needs a sync tool like isync, and many clients send through msmtp.
| Systems | Name | Language and license |
|---|---|---|
| Runs on Linux, macOS and BSD, on Windows through WSL. Not available for Android. | getmail6CLIMail retriever that downloads messages over POP3 or IMAP into Maildir, mbox or an external delivery program. | Python GPL 2.0 |
| Runs on Linux, macOS and BSD, on Windows through WSL, on Android through Termux. | isyncCLICommand line program (mbsync) that syncs IMAP mailboxes with local Maildir folders in both directions. | C GPL 2.0 or later |
| Runs on Linux, macOS, Windows and BSD, on Android through Termux. | msmtpCLISMTP client with a sendmail-compatible interface that terminal mail clients use to send mail. | C GPL 3.0 or later |
| Runs on Linux and BSD, on Windows through WSL, builds from source on macOS. Not available for Android. | mutt-wizardCLIShell script that sets up NeoMutt, isync and msmtp for an email account, with passwords stored in pass. | Shell GPL 3.0 |
| Runs on Linux, macOS and BSD, on Windows through WSL, on Android through Termux. | notmuchCLICommand-line mail indexer that adds fast full-text search, threading and tags to a local Maildir. | C, C++ GPL 3.0 or later |
| Runs on Linux, macOS and BSD, on Windows through WSL. Not available for Android. | OfflineIMAPCLIPython program that syncs IMAP mailboxes with local Maildir folders in both directions. | Python GPL 2.0 or later |
| Runs on Linux, macOS, Windows and BSD. Not available for Android. | PopTUISend-only email tool from Charm with a terminal form for composing and a command-line mode for scripts. | Go MIT |
| Nothing matches. | ||
By system
By feature
- Terminal email clients with OpenPGP (15)
- Terminal email clients with built-in IMAP (12)
- Terminal email clients with POP3 (9)
- Terminal email clients with JMAP (4)
- Terminal email clients that read Maildir (16)
- Email clients for notmuch (5)
- Terminal email clients with OAuth2 sign-in (13)
- Terminal email clients you can use with a mouse (10)
- Terminal email clients with Vim-style keys (7)
- Terminal email clients with calendar support (8)
- Email clients for Emacs (4)
- Open-source terminal email clients (18)
Questions
What is a terminal email client?
A program that reads and sends email inside a terminal window, with text instead of graphics. Full-screen ones (TUIs) such as NeoMutt, aerc and Forward Email work like an app inside the terminal. Command-line ones such as Himalaya and s-nail are commands you run and script.
Which terminal email clients run natively on Windows?
Forward Email, Alpine, Gnus, Himalaya and Matcha run directly on Windows. 12 other clients run in Windows Subsystem for Linux (WSL). meli and nmail are not available for Windows. See terminal email on Windows.
Can I use Gmail or Outlook?
Yes, over IMAP and SMTP. Google and Microsoft require OAuth2 sign-in for most accounts: aerc, Alpine, Matcha and nmail handle it themselves, and Gnus, Himalaya, meli, mu4e, Mutt, NeoMutt, Notmuch Emacs interface, S-nail and Wanderlust need extra setup, such as a token helper script or an Emacs package.
Can terminal clients show HTML email?
Most show the plain-text part of a message and pass HTML to a text browser such as w3m or lynx, which turns it into readable text with numbered links. Images are not shown in the terminal; most clients can open a message in a graphical browser when needed.
Which clients support JMAP?
Which clients work with a mouse?
Forward Email, aerc, alot, Alpine, Gnus, Matcha, meli, mu4e, Notmuch Emacs interface and Wanderlust respond to clicks and scrolling. The others are keyboard-only.
Are they open source?
All of them except Forward Email, whose code is public under the Business Source License 1.1, a source-available license. Each page links to the project's repository and license.
How do I use a terminal client with Forward Email?
Point the client at imap.forwardemail.net (port 993) and smtp.forwardemail.net (port 465), with your alias address as the username and a generated password. Every client page has a ready-made config, and the setup page collects them all. Forward Email's own terminal app needs no config: run forwardemail and sign in.