Neomutt Commander
Use when the user wants to read, search, or organise their email inbox, read message content, manage folders, archive messages, or draft a reply or new message — all from the terminal via IMAP. Works with Gmail, Fastmail, Outlook, and any IMAP provider.
If sending is not explicitly enabled or approved by the user, always save outgoing messages as a draft instead of sending.
Prerequisites
Install neomutt and w3m (HTML email renderer):
# macOS
brew install neomutt w3m
# Ubuntu / Debian
sudo apt install neomutt w3m
Configuration
Create ~/.config/neomutt/neomuttrc (or ~/.neomuttrc):
set imap_user = "user@gmail.com"
set imap_pass = "*****"
set folder = "imaps://imap.gmail.com:993"
set spoolfile = "+INBOX"
set ssl_force_tls = yes
set imap_keepalive = 300
set mail_check = 60
set postponed = "+[Gmail]/Drafts"
set sort = reverse-date
# HTML handling
auto_view text/html
alternative_order text/plain text/html
For other providers change imap.gmail.com:993 and [Gmail]/Drafts to match your server. For Gmail, imap_pass should be an App Password (Google Account → Security → 2-Step Verification → App Passwords).
Create ~/.config/neomutt/mailcap so w3m renders HTML parts:
text/html; w3m -I %{charset} -T text/html; copiousoutput;
Open neomutt
neomutt
Opens the inbox. To open a specific folder directly:
neomutt -f imaps://imap.gmail.com/INBOX
neomutt -f imaps://imap.gmail.com/[Gmail]/All%20Mail # Gmail — All Mail
neomutt -f imaps://imap.fastmail.com/INBOX # Fastmail example
Navigate the inbox
| Key | Action |
|---|---|
j / k | Move down / up |
Enter | Open message |
q | Back / quit |
? | Full keybinding help |
Search messages
| Key | Pattern | Example |
|---|---|---|
/ | Search visible list by subject/sender | /invoice |
l | Limit view to a pattern | l ~f boss@example.com |
l . | Clear limit (show all) |
Search pattern syntax: ~f <from> · ~s <subject> · ~b <body> · ~d <date>
Read a message
Press Enter on a message. HTML parts render automatically via w3m.
| Key | Action |
|---|---|
Space / - | Page down / up |
h | Toggle headers |
v | View MIME attachments |
q | Return to index |
Mark as read / unread
| Key | Action |
|---|---|
| Automatic | Message is marked read when opened |
N | Toggle unread on selected message |
t | Tag message; then ;N to mark tagged set |
Archive a message
Move the message out of INBOX into your archive folder:
s → type folder name → Enter
On Gmail the archive folder is [Gmail]/All Mail. Add a macro for one-key archiving:
macro index A "<save-message>=[Gmail]/All Mail<enter><enter>" "Archive"
Manage folders / labels
Folders in IMAP, labels in Gmail — same thing. Move or copy a message:
C → type folder name → Enter # Copy (message stays in current folder too)
s → type folder name → Enter # Move (removes from current folder)
Compose a new message
m
Fill in To:, Subject:, write body, then:
| Key | Action |
|---|---|
Ctrl-X (in editor) | Finish editing and go to send screen |
y | Send (only if sending is approved) |
P | Postpone — saves to the drafts folder |
q | Abort / discard |
Default behaviour: press
Pto postpone (save draft) unless the user has explicitly asked to send.
Resume a draft
neomutt -f imaps://imap.gmail.com/[Gmail]/Drafts # Gmail
neomutt -f imaps://imap.fastmail.com/Drafts # Fastmail / generic
Open the draft and press e to edit, then y to send or P to re-postpone.
Quit
q → confirm with y