Previously, worker action messages did not specify which directory they targeted. Workers implicitly assumed operations applied to the currently selected folder. This assumption breaks when the UI needs to perform operations on a folder different from the one currently open, such as when fetching messages from a background account or handling move/copy operations across folders. Add Directory field to FetchDirectoryContents, FetchDirectoryThreaded, SearchDirectory, FetchMessageHeaders, FetchFullMessages, FetchMessageBodyPart, FetchMessageFlags, DeleteMessages, FlagMessages, AnsweredMessages, and ForwardedMessages. Add Source field to CopyMessages and MoveMessages to specify the origin folder. The message store now populates these fields with its directory name. Each worker backend validates the directory and switches context when necessary. For IMAP, this means issuing a SELECT command when the requested directory differs from the currently selected mailbox. Update the foldermapper middleware to translate the new Directory and Source fields between external and internal folder names in both ProcessAction and PostMessage. In the maildir backend, pass the resolved directory to search and msgInfoFromUid instead of relying on the selected folder state. This ensures FetchMessageHeaders and SearchDirectory operate on the correct directory when it differs from the currently selected one. Signed-off-by: Robin Jarry <robin@jarry.cc> Reviewed-by: Simon Martin <simon@nasilyan.com>
aerc
aerc is an email client for your terminal.
This is a fork of the original aerc by Drew DeVault.
A short demonstration can be found on https://aerc-mail.org/
Join the IRC channel: #aerc on irc.libera.chat for end-user support, and development.
Usage
On its first run, aerc will copy the default config files to ~/.config/aerc
on Linux or ~/Library/Preferences/aerc on MacOS (or $XDG_CONFIG_HOME/aerc if set)
and show the account configuration wizard.
If you redirect stdout to a file, logging output will be written to that file:
$ aerc > log
Note that the default HTML filter additionally needs w3m to be installed
along with optional unshare (from util-linux) or socksify (from
dante-utils).
Documentation
Also available as man pages:
- aerc(1)
- aerc-accounts(5)
- aerc-binds(5)
- aerc-config(5)
- aerc-imap(5)
- aerc-jmap(5)
- aerc-maildir(5)
- aerc-notmuch(5)
- aerc-patch(7)
- aerc-search(1)
- aerc-sendmail(5)
- aerc-smtp(5)
- aerc-stylesets(7)
- aerc-templates(7)
- aerc-tutorial(7)
- carddav-query(1)
User contributions and integration with external tools:
Installation
Binary Packages
Recent versions of aerc are available on:
And likely other platforms.
From Source
Install the dependencies:
- go (>=1.23) (Go versions are supported until their end-of-life; support for older versions may be dropped at any time due to incompatibilities or newer required language features.)
- scdoc
- GNU make
Then compile aerc:
$ gmake
aerc optionally supports notmuch. To enable it, you need to have a recent
version of notmuch, including the header
files (notmuch.h). The notmuch build tag should be automatically added. To
check if it is, run the following command:
$ ./aerc -v
aerc 0.14.0-108-g31e1cd9af565 +notmuch (go1.19.6 amd64 linux)
^^^^^^^^
If it is not, you can force it before building:
$ gmake GOFLAGS=-tags=notmuch
If you have notmuch headers available but do not want to build notmuch support in aerc, force GOFLAGS to an empty value:
$ gmake GOFLAGS=
To install aerc locally (no need to be root):
$ gmake install PREFIX=~/.local
$ mandb -q ~/.local/share/man
By default, aerc will install config files to directories under /usr/local/aerc,
and will search for templates and stylesets in these locations in order:
${XDG_CONFIG_HOME:-~/.config}/aerc${XDG_DATA_HOME:-~/.local/share}/aerc/usr/local/share/aerc/usr/share/aerc
At build time it is possible to add an extra location to this list and to use
that location as the default install location for config files by setting the
PREFIX option like so:
# gmake PREFIX=/custom/location
# gmake install PREFIX=/custom/location
# mandb -q /custom/location/share/man
This will install templates and other config files to /custom/location/share/aerc,
and man pages to /custom/location/share/man. This extra location will have lower
priority than the XDG locations but higher than the fixed paths.
Contributing
Anyone can contribute to aerc. Please refer to the contribution guidelines
Resources
Ask for support or follow general discussions on ~rjarry/aerc-discuss@lists.sr.ht.
Send patches and development related questions to ~rjarry/aerc-devel@lists.sr.ht.
Instructions for preparing a patch are available at git-send-email.io
Subscribe to release announcements on ~rjarry/aerc-announce@lists.sr.ht
Submit confirmed bug reports and confirmed feature requests on https://todo.sr.ht/~rjarry/aerc.
Send security vulnerability reports via emails to
~rjarry/aerc-security@lists.sr.ht
encrypted with the GPG key located at
contrib/signing-key.asc
(fingerprint DC07 18E3 22E2 C760 5EBD C831 4695 7EC0 8FD0 FE90).