Terminal-based Mail User Agent
mjg and pazz make bounce command use the correct sender account
Bounce correctly determines the address and account to send the bounce
from. It uses the account to choose an address book for "to:" completion
and passes the sender address as "Resent-From:" to SendCommand(). The
latter uses the "From:" header, though, to determine the sending account
again and (in the case of a bounce) wrongly.

Make SendCommand() use "Resent-From:" if present and "From:" else.

Code remark: specifying "False" as the default return value for get()
ist not necessary; it is meant to make this short form clearer to read,
and to safeguard for times when '' or None do not evaluate to False
Latest commit 4feebc9 Nov 14, 2018


Build Status Code Climate Codacy Grade Codacy Coverage

Alot is a terminal-based mail user agent based on the notmuch mail indexer. It is written in python using the urwid toolkit and features a modular and command prompt driven interface to provide a full MUA experience as an alternative to the Emacs mode shipped with notmuch.

Notable Features

  • multiple accounts for sending mails via sendmail
  • can spawn terminal windows for asynchronous editing of mails
  • tab completion and usage help for all commands
  • contacts completion using customizable lookups commands
  • user configurable keyboard maps
  • customizable colour and layout themes
  • python hooks to react on events and do custom formatting
  • forward/reply/group-reply of emails
  • printing/piping of mails and threads
  • configurable status bar with notification popups
  • database manager that manages a write queue to the notmuch index
  • full support for PGP/MIME encryption and signing

Installation and Customization

Have a look at the user manual for installation notes, advanced usage, customization, hacking guides and frequently asked questions. We also collect user-contributed hooks and hacks in a wiki.

Most of the developers hang out in #alot@freenode, feel free to ask questions or make suggestions there. You are welcome to open issues or pull-requests on the github page.

Basic Usage

The arrow keys, page-up/down, j, k and Space can be used to move the focus. Escape cancels prompts and Enter selects. Hit : at any time and type in commands to the prompt.

The interface shows one buffer at a time, you can use Tab and Shift-Tab to switch between them, close the current buffer with d and list them all with ;.

The buffer type or mode (displayed at the bottom left) determines which prompt commands are available. Usage information on any command can be listed by typing help YOURCOMMAND to the prompt; The key bindings for the current mode are listed upon pressing ?. See the manual for more usage info.