Terminal Email

alot

TUIEmail client

Terminal mail reader written in Python that works on a local notmuch database, with tag-based search and threads.

alot is a full-screen terminal front end for the notmuch mail indexer, offered as an alternative to the notmuch Emacs mode. It reads mail from a local notmuch database, so remote mail must first be synced into a Maildir with a tool such as mbsync or OfflineIMAP, and it sends through a sendmail-compatible command such as msmtp. It suits users who organize mail with tags and searches instead of folders, and it can be extended with Python hooks.

Type
Email client
Interface
Full-screen terminal interface
Systems
Runs on Linux, macOS and BSD, on Windows through WSL. Not available for Android.
Language
Python
License
GPL 3.0 or later
Latest version
0.12
Maintained
Yes
Website
alot.readthedocs.io
Source
github.com/pazz/alot
Documentation
alot.readthedocs.io

Install

SystemSupportInstall
LinuxNative
aptsudo apt install alot
dnfsudo dnf install alot
pacmansudo pacman -S alot
macOSNative
Homebrewbrew install alot
WindowsThrough WSL
WSLsudo apt install alot

No native Windows build; runs in WSL.

BSDNative
FreeBSD pkgpkg install mail/py-alot

The FreeBSD port is an older release (0.9).

AndroidNot supported-

Protocols and features

Protocols
Protocolalot
IMAPThrough a separate tool
POP3Through a separate tool
SMTPThrough a separate tool
JMAPNo
MaildirYes
mboxNo
notmuchYes
Features
Featurealot
OpenPGPYes
S/MIMENo
OAuth2 sign-inNo
ThreadsYes
Searchnotmuch queries
HTML mailvia mailcap, e.g. w3m -dump
MouseYes
Multiple accountsYes
Offline usealways; reads a local notmuch database
CalendarNo
Contactsvia an external lookup command such as abook, khard or notmuch address
Vim-style keysYes
ConfigurationINI-style config file plus optional Python hooks

Pros and cons

Pros

  • Tag-based searches through notmuch instead of folders
  • Full PGP/MIME signing and encryption
  • Python hooks for custom behavior and formatting

Cons

  • Needs separate tools to fetch mail (mbsync) and send it (msmtp)
  • No direct IMAP, POP3 or SMTP support
  • No S/MIME support

Use alot with Forward Email

A working setup for a Forward Email mailbox. Replace you@example.com with your alias and the password command with your own. The same settings work with any provider once the server names change.

~/.config/alot/config (plus ~/.mbsyncrc and ~/.config/msmtp/config)
# alot reads a local notmuch database. Sync Forward Email over IMAP
# into a Maildir with mbsync, index it with notmuch, and send with msmtp.

# ~/.mbsyncrc (isync 1.5+; older versions use SSLType instead of TLSType)
IMAPAccount forwardemail
Host imap.forwardemail.net
Port 993
TLSType IMAPS
User you@example.com
PassCmd "pass show email/forwardemail"

IMAPStore forwardemail-remote
Account forwardemail

MaildirStore forwardemail-local
Path ~/Mail/forwardemail/
Inbox ~/Mail/forwardemail/INBOX
SubFolders Verbatim

Channel forwardemail
Far :forwardemail-remote:
Near :forwardemail-local:
Patterns *
Create Both
SyncState *

# Then run: mbsync forwardemail && notmuch setup && notmuch new

# ~/.config/msmtp/config
account forwardemail
host smtp.forwardemail.net
port 465
tls on
tls_starttls off
auth on
user you@example.com
passwordeval "pass show email/forwardemail"
from you@example.com

# ~/.config/alot/config
[accounts]
    [[forwardemail]]
        realname = Your Name
        address = you@example.com
        sendmail_command = msmtp --account=forwardemail -t
        sent_box = maildir://~/Mail/forwardemail/Sent Mail
        draft_box = maildir://~/Mail/forwardemail/Drafts
ProtocolServerPortSecurity
IMAPimap.forwardemail.net993SSL/TLS
POP3pop3.forwardemail.net995SSL/TLS
SMTPsmtp.forwardemail.net465SSL/TLS
SMTPsmtp.forwardemail.net587STARTTLS

Username: your full alias address, such as you@example.com. Password: the one shown by Generate Password next to the alias in your Forward Email account. Folders: INBOX, Drafts, Sent Mail, Trash, Spam and Archive.

Prefer no config at all? Forward Email's terminal app signs in with your account and has mail, calendar and contacts in one program.

Compare alot

All alot alternatives

Questions

Does alot work on Windows?

Not natively. It runs in Windows Subsystem for Linux (WSL). No native Windows build; runs in WSL.

Does alot support IMAP?

Through a separate tool. alot reads local mail, so a sync program such as isync copies it from the IMAP server.

Is alot open source?

Yes, under the GPL 3.0 or later.

How do I use alot with Forward Email?

Use the config in the Forward Email section on this page, saved as ~/.config/alot/config (plus ~/.mbsyncrc and ~/.config/msmtp/config), and replace the address and password with your own.

Sources