alot
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
| System | Support | Install |
|---|---|---|
| Linux | Native | apt sudo apt install alotdnf sudo dnf install alotpacman sudo pacman -S alot |
| macOS | Native | Homebrew brew install alot |
| Windows | Through WSL | WSL sudo apt install alotNo native Windows build; runs in WSL. |
| BSD | Native | FreeBSD pkg pkg install mail/py-alotThe FreeBSD port is an older release (0.9). |
| Android | Not supported | - |
Protocols and features
| Protocol | alot |
|---|---|
| IMAP | Through a separate tool |
| POP3 | Through a separate tool |
| SMTP | Through a separate tool |
| JMAP | No |
| Maildir | Yes |
| mbox | No |
| notmuch | Yes |
| Feature | alot |
|---|---|
| OpenPGP | Yes |
| S/MIME | No |
| OAuth2 sign-in | No |
| Threads | Yes |
| Search | notmuch queries |
| HTML mail | via mailcap, e.g. w3m -dump |
| Mouse | Yes |
| Multiple accounts | Yes |
| Offline use | always; reads a local notmuch database |
| Calendar | No |
| Contacts | via an external lookup command such as abook, khard or notmuch address |
| Vim-style keys | Yes |
| Configuration | INI-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.
# 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| Protocol | Server | Port | Security |
|---|---|---|---|
| IMAP | imap.forwardemail.net | 993 | SSL/TLS |
| POP3 | pop3.forwardemail.net | 995 | SSL/TLS |
| SMTP | smtp.forwardemail.net | 465 | SSL/TLS |
| SMTP | smtp.forwardemail.net | 587 | STARTTLS |
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
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
- github.com/pazz/alot
- github.com/pazz/alot/blob/master/COPYING
- github.com/pazz/alot/blob/master/pyproject.toml
- github.com/pazz/alot/blob/master/README.md
- alot.readthedocs.io/en/latest/
- alot.readthedocs.io/en/latest/installation.html
- alot.readthedocs.io/en/latest/configuration/accounts.html
- alot.readthedocs.io/en/latest/configuration/config_options.html
- formulae.brew.sh/formula/alot
- sources.debian.org/src/alot/
- packages.fedoraproject.org/pkgs/alot/alot/
- archlinux.org/packages/extra/any/alot/
- freshports.org/mail/py-alot/
- manpages.debian.org/trixie/isync/mbsync.1.en.html
- github.com/forwardemail/forwardemail.net/blob/master/helpers/ensure-default-mailboxes.js