# 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 (GPL-3.0-or-later)
- Latest version: 0.12
- Maintained: yes
- Website: https://alot.readthedocs.io/
- Source: https://github.com/pazz/alot
- Documentation: https://alot.readthedocs.io/en/latest/

## Install

### Linux

Native.

- apt: `sudo apt install alot`
- dnf: `sudo dnf install alot`
- pacman: `sudo pacman -S alot`

### macOS

Native.

- Homebrew: `brew install alot`

### Windows

Through WSL. No native Windows build; runs in WSL.

- WSL: `sudo apt install alot`

### BSD

Native. The FreeBSD port is an older release (0.9).

- FreeBSD pkg: `pkg install mail/py-alot`

### Android

Not supported.

## Protocols

- IMAP: Through a separate tool
- POP3: Through a separate tool
- SMTP: Through a separate tool
- JMAP: No
- Maildir: Yes
- mbox: No
- notmuch: Yes

## Features

- 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

- 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

File: `~/.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
```

| 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. Password: the one from Generate Password next to the alias. Folders: INBOX, Drafts, Sent Mail, Trash, Spam and Archive.

## 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

- https://github.com/pazz/alot
- https://github.com/pazz/alot/blob/master/COPYING
- https://github.com/pazz/alot/blob/master/pyproject.toml
- https://github.com/pazz/alot/blob/master/README.md
- https://alot.readthedocs.io/en/latest/
- https://alot.readthedocs.io/en/latest/installation.html
- https://alot.readthedocs.io/en/latest/configuration/accounts.html
- https://alot.readthedocs.io/en/latest/configuration/config_options.html
- https://formulae.brew.sh/formula/alot
- https://sources.debian.org/src/alot/
- https://packages.fedoraproject.org/pkgs/alot/alot/
- https://archlinux.org/packages/extra/any/alot/
- https://www.freshports.org/mail/py-alot/
- https://manpages.debian.org/trixie/isync/mbsync.1.en.html
- https://github.com/forwardemail/forwardemail.net/blob/master/helpers/ensure-default-mailboxes.js
