Skip to content

Organising mail

Every change here is a durable operation: the row moves at once, the op lands in a local log, and the daemon replays it against the server when it next talks to it. Offline changes queue; nothing needs the network to feel done.

Archive

A sends the selected (or open) message to the account's archive folder. The folder is archive unless the account names another:

[account]
archive = "archive"

Move

C opens a picker over the account's other folders; J / K and Enter move the message, Esc closes. :move <folder> does the same by name, and accepts a folder alias, the real path, or inbox for the account root.

Server-side, moves use IMAP UID MOVE where the server offers it and fall back to copy-and-expunge where it does not. The target folder must exist on the server; the daemon resolves the local name back to the server's own spelling.

Read, flag, delete

  • M toggles the message between read and unread.
  • Shift+M marks the whole listing read, the entire selected folder or search, not just the visible rows.
  • Shift+F toggles the flag ( in the list).
  • D moves the message to the account's trash folder (trash unless the account names another with the trash key); your server's own expiry empties it. Only inside the trash folder does D delete, and then behind an explicit delete forever? y/n.

Opening a message marks it read; the server's \Seen flag follows.

Delivery rules

Rules run in the daemon as mail arrives, first match wins:

[[rules]]
match_list = "~sircmpwn/aerc-devel"
move_to = "lists/aerc"

[[rules]]
match_sender = "billing@example.net"
tag = "invoices"

move_to files the message like a hand move (and replays to the server the same way); tag adds a notmuch tag you can search and save. See accounts for the full rule shape.

Unsubscribing

:unsubscribe acts on the open message's List-Unsubscribe header. A one-click (RFC 8058) entry asks for confirmation naming the list, then hands the POST to the daemon, which requires https and performs it off your machine's ordinary client path; a mailto entry opens a prefilled compose; a web-only entry shows you the URL and touches nothing.

Conflicts

The server wins. If a message you flagged offline was deleted elsewhere in the meantime, the op is dropped and the log says so; replays never guess, and a failed op never wedges the queue behind it.