Complete user guide for indiMailbox — a desktop email client in the spirit of Eudora, for Linux, macOS, and Windows.
1. Getting Started
indiMailbox is a desktop email client that runs natively on Linux, macOS, and Windows. It speaks IMAP, POP3, and SMTP directly to your mail servers — there is no indiMailbox account, no relay, and no cloud service in the middle. Your mail is stored on your own machine, in formats you can read without us.
It is built in the spirit of Eudora: mailboxes you arrange yourself, filters that do real work, stationery, personalities, and a multi-window layout — brought forward to modern protocols and modern authentication.
The Welcome Screen
indiMailbox opens on a welcome screen in the reading pane, pointing at the few things worth knowing before you start: where message threading lives, what the Tools menu holds, and where to set the text sizes. Get started puts it away; Don't show this at startup stops it appearing on future launches.
It is a greeting rather than an empty state, so it belongs to the start of a session and nothing else. Opening a message or switching mailboxes ends it, and it will not reappear later on just because the reading pane happens to be empty again.
It is not gone either way. Help → Support indiMailbox brings it back at any time, whatever that checkbox says and whatever message you happen to be reading. The same screen carries the donation links, which is the only place indiMailbox ever asks — see Supporting indiMailbox.
Recommended First Steps
Add your first account. With no accounts configured, the setup wizard appears at launch and walks you through it; afterwards, reach the same screen from the sidebar's Accounts link or from Preferences → Accounts & Tools.
Click Get Messages to bring your mail down.
Open Preferences (Ctrl+,) and set how often mail is checked, and whether you want the Modern or Classic layout.
If you're arriving from another mail program, see Importing Mail.
indiMailbox has two layouts. They are the same program with the same features — pick whichever suits how you work, and switch whenever you like from Preferences → General or the toolbar's layout button.
Modern Mode
A single window in three panes: the mailbox list on the left, the message list in the middle, the message itself on the right. Every divider is draggable, and the sizes you set are remembered. The sidebar and the preview pane can each be hidden from the toolbar.
Classic Mode
Eudora's desktop. The mailbox list is a window, each mailbox you open is a window, and the message you're reading is a window — all draggable, resizable, and stacked inside the main frame, with their positions remembered between sessions.
Double-click a mailbox in the Mailboxes window to open it in its own window.
Each mailbox window has an expand toggle (the ▼ in its splitter bar) that opens a preview pane inside that window.
Double-click a message to open it in a window of its own.
Each mailbox window is titled with its account and then the mailbox — Work — INBOX — since every account has an inbox and having several open at once is the point.
A mailbox window remembers where you put it and comes back there next time you open that mailbox.
Windows
The Window menu lists everything you have open and brings it forward. In Classic Mode it lists the individual windows — Mailboxes, each open mailbox, the message window — rather than the frame they live in. In Modern Mode it names the main window after the mailbox you're reading, like [Work] > Inbox. Compose, Preferences, Search, and standalone message windows are listed alongside.
Compose windows carry a menubar of their own, with only what applies to writing a message.
The tools on the Tools menu — the address book,
signatures, stationery, filters, statistics and the link history —
open in the same window Preferences uses, rather than taking over your
mail. They share it: picking a second tool moves that window rather
than opening another, so it stays where you put it.
Ctrl+W closes the window you are in. The main window is the
exception — it holds your mail, and closing it is what quitting means,
so that is Ctrl+Q. Ctrl+Shift+W closes every window
except the main one, for when the desktop has filled up.
Quitting asks each window to close rather than pulling the application
out from under them, so a compose window with an unsaved message still
gets to ask — and answering "don't close" keeps indiMailbox running
too, rather than losing the message anyway.
Theme & Typography
Light, dark, or follow the system. On Linux, indiMailbox reads your desktop's accent colour and applies it. Font family (system, sans, serif, monospace) and size are configurable, and there's a light canvas option that keeps message bodies on white with black text even while the rest of the app is dark — useful because most mail is written assuming a white page.
Manage accounts from the sidebar's Accounts link, or from Preferences → Accounts & Tools → Manage Email Accounts. There is no limit on how many you can add, and each keeps its own mail, mailboxes, and settings.
Protocols
IMAP — mail stays on the server and is synchronised. indiMailbox tracks messages by server UID, so a mail check fetches what's new rather than re-reading everything.
Password — plain login over an encrypted connection.
OAuth2 for Gmail and Outlook / Microsoft 365, using the PKCE flow a desktop application is supposed to use. This is what those providers now require instead of a password.
Passwords and OAuth tokens are stored in your operating system's keychain — GNOME Keyring or KWallet on Linux, the Keychain on macOS, the Credential Manager on Windows. They are never written into indiMailbox's own configuration files.
The account editor has a Test Connection button that tries the incoming and outgoing servers and reports exactly what came back, so a wrong port or a bad password is caught at setup rather than at the first mail check.
Enabling and Disabling
An account can be switched off without deleting it. Disabled accounts are skipped by automatic and manual mail checks alike, and their mail stays where it is.
Personalities (Identities)
Eudora called them personalities: several addresses that share one set of servers. Add them under an account and each can carry its own:
From address and display name.
Reply-To, for when replies should go somewhere other than where the message came from.
Default signature.
Default stationery — a template applied whenever you write from that address.
The composer's From picker lists every address across every account. Changing it swaps in that identity's signature and stationery.
What to Download
An IMAP account can bring down either the whole of every message, or
only their headers. The choice is offered when you add an account and
can be changed later under Accounts.
Headers only (the default) — senders, subjects, dates and sizes. Enough to read the list, search it, and decide what to open; each message is fetched from the server as you open it. Far less to download, and the right choice on a metered connection.
Whole messages — every message stored on this machine, readable with no connection at all. A large mailbox can be several gigabytes.
Whole messages are stored in the same per-mailbox mbox
files POP accounts use, so they are readable by other mail programs
too. Downloading is resumable and goes newest first: a message that is
already stored is never fetched again, and turning the option on for an
existing account brings down what's missing at the next mail check
rather than starting over.
POP accounts always download whole messages — there is nothing to go
back to the server for.
Collect Mail as It Arrives
On by default for IMAP accounts. indiMailbox holds a connection open so the server can announce new mail as it is delivered, rather than waiting for a check. See Checking Mail for what it does and when to turn it off.
POP Server Options
For POP accounts, under Server Options:
Leave mail on the server (on by default). indiMailbox knows what it has already downloaded by the server's UIDL, not by deleting it — so leaving mail in place costs nothing and another client, or another machine, can still see it.
Delete from the server after N days. Zero leaves it there indefinitely.
Skip messages larger than N KB. A skipped message stays on the server and is reconsidered at the next check, so raising the limit later picks it up.
POP accounts get a real local Sent mailbox. A POP server has nowhere to file
sent mail, so indiMailbox keeps its own copy on disk in mbox format — you can read your sent
mail here, and so can any other program that understands mbox.
Click Get Messages, press Ctrl+M, or choose File → Check Mail. Every enabled account is checked; disabled ones are skipped.
Mail as It Arrives
indiMailbox holds one connection open per account so the server can announce new mail the moment it is delivered — usually within a second, without waiting for a check. This is IMAP's IDLE command, and it is on by default.
Turn it off per account with Collect mail as it arrives in the account's settings. That is worth doing only on a server that allows very few connections at once, since a held-open connection is one the rest of the program cannot use. A server that doesn't support IDLE needs nothing changed: the account works it out and falls back to checking on its timer.
Changing the setting takes effect at once rather than at the next restart.
Automatic Checking
In Preferences → Checking Mail, set an interval: never (manual only), or every 1, 5, 10, 15, 30, or 60 minutes. Manual only is the default — nothing happens on a timer unless you ask for it. With mail collected as it arrives, an interval is a backstop rather than the main way mail reaches you.
Check for mail when indiMailbox opens — one check at startup, separate from the interval.
Send queued messages when checking mail — anything waiting in the Outbox goes out as part of the check. Messages that fail stay queued so you can try again.
Notify me when new mail arrives — a desktop notification for unread mail that lands in your mailboxes. Mail your filters moved away, or that arrives in Sent, Drafts, Trash, or Spam, is not announced. Clicking the notification brings up the message it is about; reading the message clears the notification and the count on the app's launcher icon. Where the message opens is up to you — see Preferences.
Downloading Whole Messages
An account set to keep whole messages fetches every body it doesn't already have. On a large mailbox that is hours of work, so it runs in the background on a connection of its own — a check stays a matter of seconds, and mail arriving during a download is collected straight away.
The download resumes where it left off, newest first, and a progress bar in the mailbox pane shows how far it has got. It starts with the next check rather than the moment the program opens: having asked for whole messages says what to fetch, not when.
One Copy at a Time
Starting indiMailbox while it is already running raises the window you have rather than opening a second one. Two copies would write to the same mail files at once, so this is a safeguard as much as a convenience.
Mailboxes are shown as a tree, nested on the server's own separator, with unread counts. Inbox, Sent, Drafts, Trash, Spam, and Archive are recognised and sorted to the top; everything else follows alphabetically. Which folders are expanded is remembered.
Working with Mailboxes
New Mailbox (Mailbox menu) creates one on the server, nested under an existing mailbox if you choose one.
Transfer to… (Ctrl+Shift+M) moves the selected messages to another mailbox. You can also drag messages onto a mailbox in the list.
Empty Trash permanently removes everything in Trash.
Compact Mailboxes is Eudora's housekeeping command — see below.
The Mailbox menu lists Inbox, Sent, Drafts and Trash. With one account they sit at the top of the menu; with several, each account gets a submenu of its own, so the entry you pick always names the account it belongs to.
Ctrl+1 through Ctrl+4 jump to Inbox, Sent, Drafts and Trash of the account you are in — that is, whichever account you last opened a mailbox in. An account with no mailbox of that type stays where it is rather than jumping to another account's.
Right-click a mailbox for Mark All Read, which clears its unread count without touching anything else — a message that is already read keeps its replied, forwarded and labelled state, and nothing that was unread gains any flag but read.
Compact Mailboxes
Eudora had a Compact Mailboxes command and so does indiMailbox, for much the same reason: mail accumulates, and a program that stores it locally should have a way to tidy up after itself. It runs on the selected account, from the Mailbox menu, and does four things in order.
Expunges each mailbox on the server. This permanently discards messages already marked for deletion. Nothing is marked during compaction, so it can only remove mail that was already staged to go.
Drops local records for mailboxes the server no longer has. These build up when you delete a folder from webmail or another mail program — indiMailbox keeps the messages it knew about until something tells it the folder is gone.
Rechecks every downloaded message for attachments. Each message with a local copy is read again and asked directly whether it carries an attachment, and the paperclip in the message list is corrected where the answer has changed.
Shrinks the database. SQLite holds on to freed pages for reuse rather than returning them, so this step is what actually gives the disk space back.
When it finishes, it reports how many mailboxes were compacted, how many stale records were cleared, how many attachment markers were corrected, and how much space was reclaimed.
Why the attachment pass exists. Whether a message "has an attachment" is decided when the message arrives, and it is a harder question than it looks. A newsletter is typically an HTML message with its images travelling alongside it, referenced from the HTML rather than offered to you as files. Those images are part of the message you are looking at, not attachments — but earlier versions of indiMailbox counted them, which put a paperclip on mail that then showed an empty attachment bar when you opened it. That is fixed for mail arriving now. Mail that came down before the fix keeps whatever it was told at the time, because the flag was written once and never revisited. Compacting revisits it.
It takes a while. The attachment pass reads every message stored on your machine, so on a large account it can run for several minutes. That is why it lives behind a menu command you choose to run rather than happening during a mail check. You do not need to run it routinely — once, if older messages show a paperclip and then nothing when you open them, is enough. Messages you have not downloaded in full are left alone; they are fetched when you read them and get the current answer then.
Compaction still does everything but the first step when the server can't be reached, so it is worth running offline too.
The Message List
Columns can be sorted by clicking their headers, and each mailbox remembers its own sort — your Inbox can be newest-first while an archive stays sorted by sender. Sortable columns:
Status — unread ●, replied ↩, forwarded ↪, redirected ⤳.
Priority — highest ↑↑ through lowest ↓↓, coloured, with normal shown as nothing at all.
Unread messages are shown in bold until you read them. Walk the list with the ↑ and ↓ keys — keying onto a message opens it and marks it read, exactly as clicking would.
Selecting and Acting on Several
Select several messages with Shift or Ctrl-click, or all of them with Ctrl+A. An action then applies to the whole selection: pressing Delete with three messages selected deletes three. Right-clicking one of a selection acts on all of them; right-clicking a message outside the selection acts on that message alone.
Right-click any message for reply, forward, redirect, transfer, label, junk, and Make Filter.
Right-click a message and choose Change Status to set whether it is read, replied to, forwarded, or redirected. Eudora had this on the Status column and it is worth having back: on POP, replying from your phone leaves the copy here looking unanswered forever, and nothing on the server will ever correct it. On IMAP it matters less often but still happens — flags routinely fail to survive a move between providers. Each entry toggles, so a mis-click has a way back, and the change applies to every message selected. Read, replied and forwarded are pushed to the server where it has a flag for them; redirection has no IMAP flag at all, so it is recorded locally only.
Deleting the message you are reading moves you on to the next one down, so you can work through a mailbox clearing it out without stopping at every message. At the bottom of the mailbox it moves up instead. Deleting messages you were not reading — from a right-click elsewhere in the list — leaves the reading pane on whatever you had open.
What the Counts Mean
The coloured number beside a mailbox is its unread count, and it appears wherever there is unread mail. The grey number is how many messages the mailbox holds in total, and it is shown for the inbox and for whichever mailbox you are looking at — selected in Modern Mode, open in a window in Classic. Showing it on every folder of every account turned the list into a wall of digits.
Tidying the List
Click an account's name to fold it away. Collapsed, it shows its inbox's unread count on the same line, so an account you're not watching closely costs one line instead of six. Which accounts are folded is remembered.
Preferences → Appearance sets the text size of the mailbox list and of the message list separately, from 70% to 170% of the application font — along with the reading view and the composer.
Click a message to read it in the preview pane, or double-click to open it in a window of its own. HTML mail is sanitised before it is shown — scripts, embedded objects, and anything that could reach back out are stripped, and the body is rendered isolated from the rest of the application.
Finding Text in a Message
Ctrl+F opens a find bar within the open message; Ctrl+G jumps to the next match.
Attachments
A strip between the headers and the body says what a message is carrying — one attachment by name, several by count, with the total size. Open it with the arrow at the left to list each one.
Save asks where the file should go. The arrow beside it offers the rest:
Open — hands the file to whatever your desktop uses for that kind of document. Files the system would run rather than open are refused, with a note saying to save it first if you're sure. Mail is where hostile files arrive, and "it opened when I clicked it" is how they get run.
Save As… — choose the name and folder.
Save All… — every attachment into a folder you pick.
Save to Attachments Folder — straight to the folder set in Preferences, without being asked.
Show in Folder — reveals what you just saved in your file manager.
Images the message displays itself — the logos and pictures a newsletter is built from, referenced by Content-ID — are shown in place and are not listed as attachments. They are the message rather than files that came with it. An image marked inline that the body never refers to is still listed, since plenty of mail programs label a genuine attachment that way.
Links
Clicking a link in a message opens it in your normal browser — the message body itself is sandboxed and cannot navigate anywhere on its own. Every link you open is recorded in your Link History.
Only links that point at a web page are opened. Anything else — a file: path, a scheme registered by some other application — is refused with a note saying why, rather than doing nothing and leaving you wondering. A mailto: link opens a new message here instead of being handed to whatever else the system has registered.
Remote Content
Images and other remote content are blocked by default, because loading them tells the sender you opened the message, and when. A banner shows how many items were blocked, with two choices:
Load images — just this once, for this message.
Always load images for this sender — adds them to a trusted list, so their mail loads automatically from then on. You can stop trusting a sender at any time from the same banner.
Content Distiller
Eudora's idea, under a name of our own, for the long reply chain where three lines are new. It strips what you have already read — the quoted history, the attribution line above it, signature blocks, and legal footers — and shows what's left, with a count of the lines removed. One click puts the full message back; nothing is ever altered on disk. If distilling would leave nothing, you get the original message untouched.
Unsubscribing
A newsletter that says how to leave it — in the List-Unsubscribe header its sender is supposed to provide — gets an Unsubscribe button above the message. Clicking it does the whole thing for you: a one-click request to the sender's own server where they support it (RFC 8058), or an unsubscribe message sent on your behalf where they don't.
Nothing goes through a third party, and the button is never shown for a message with no unsubscribe header — mail that provides no way out is junk to be filtered, not a list to leave politely. Lists you have left are remembered, so the button says Unsubscribed rather than offering the same thing again, and mail that keeps arriving weeks later is visible for what it is.
ScamGuard
indiMailbox checks the links in a message for the mechanic behind most phishing mail: link text that claims one destination while the link goes somewhere else. Where the visible text disagrees with the actual target, the message is flagged and the real destination shown, so you can see where a link would take you before you click it.
Press Ctrl+N or click Write. In Classic Mode composing always opens a window of its own; in Modern Mode you can choose a separate window or a tab in the main window under Preferences → General.
Composition Modes
Plain Text — no formatting, sent as text/plain.
Markdown — write in Markdown with a live preview beside the editor; sent as HTML.
Rich HTML — a WYSIWYG editor with bold, italic, underline, strikethrough, lists, and links.
Set the default in Preferences → Composing Mail; you can change mode on any individual message.
Addressing
To, Cc, and Bcc fields autocomplete from your address book as you type — by name, by address, or by nickname. Typing a group's nickname expands it to its members when the message is sent.
A new message opens with the cursor in the recipient field, since that is where writing starts. A reply or forward already has its recipient, so the cursor goes to the body instead.
Spell Check
Misspellings are underlined as you type, in all three composition modes. Right-click a word for suggestions. The language follows your desktop's own locale and uses the dictionaries already installed on it, so a system that spell-checks everywhere else spell-checks here too.
The Compose Window
A compose window opens at the size and position you last left one, rather than in the middle of the screen every time.
Message Options
Priority — highest through lowest, sent as X-Priority and shown in the recipient's list if their client honours it.
Return receipt — asks the recipient's mail program to confirm they opened it.
Signature — picked per message, defaulting to the one attached to the address you're sending from.
Stationery — apply a template to the message you're writing.
Attachments — attach any number of files; each is listed with its size and can be removed before sending.
ToneGuard
Eudora's chilli peppers. indiMailbox rates how heated a message reads and, if it's genuinely angry, asks whether you want to send it before it goes. Only a real problem prompts — a warning that fires constantly gets clicked through — and you can always send anyway.
Drafts
Save as Draft (Ctrl+S) puts the message in your Drafts mailbox, with its attachments, to pick up later.
Closing a message you have started writing — by the window's close
button, File → Close, or Ctrl+W — asks
what to do with it first: Save as Draft,
Discard, or Cancel and carry on. A
draft that can't be saved leaves the window open rather than closing
over the top of the failure.
Send sends the message immediately (Ctrl+Return). The arrow beside it opens the other ways to send.
Send Later
Choose Send Later… from the Send button's menu. A dialog asks when:
Leave the time empty and the message waits in the Outbox until you send queued mail yourself — Eudora's original meaning of Send Later.
Give it a time and it goes out on its own when that time arrives, provided indiMailbox is running. A time already past is refused rather than quietly going out on the next send.
Once a message has a time, the composer shows it as a chip you can clear.
The Outbox
File → Outbox… shows everything waiting to go, with Eudora's markers: Q for queued and ready, - for a message that couldn't be sent and is still waiting. From here you can:
Reopen a queued message for editing. It comes back into a composer with its recipients, body, attachments, and its schedule intact; sending or re-queueing updates that entry rather than leaving the old version behind.
Remove a message from the queue.
A message that fails to send stays queued with the reason, so a server hiccup never loses your mail. Sent mail is filed in your Sent mailbox — on the server for IMAP accounts, in a local mbox for POP.
Reply (Ctrl+R) — answers the sender, quoting the original.
Reply to All (Ctrl+Shift+R) — answers everyone on the message, leaving your own addresses out.
Forward (Ctrl+J) — passes the message on, with its attachments.
Redirect (Ctrl+D) — Eudora's own. The message goes to someone else as if from the original sender, and their replies go to that sender, not to you. The composer shows a banner explaining this and lists the From as "Original Sender (by way of you)", which is exactly what the recipient sees.
Reply With — reply using a stationery template. Every template appears in this submenu.
Replied, forwarded, and redirected messages are marked in the list with ↩, ↪, and ⤳, so you can see at a glance what you've dealt with.
Filters are where a mail program earns its keep. Manage them from Tools → Filters & Labels.
When a Filter Runs
Each filter is set to run on:
Incoming — mail as it arrives.
Outgoing — messages you send, for filing a copy of what you write.
Manual — only when you ask, with Message → Filter Messages (Ctrl+Shift+J) on the messages you've selected. Useful for a rule you want to apply to a mailbox full of old mail without it running forever afterwards.
Conditions
A filter matches on all or any of its conditions. Each tests a field — From, To, Cc, Subject, the message body, or any other header by name (List-Id, X-Spam-Status, whatever your mail carries) — with contains, does not contain, equals, starts with, or ends with. Matching is case-insensitive.
Actions
A filter can carry several actions, run in order:
Move to mailbox / Copy to mailbox
Apply label — your own named, coloured labels, shown in the message list
Mark as read, Flag
Set priority and Set status
Notify — a desktop notification for this message specifically
Forward to — pass the message on to an address automatically
Redirect to — the same, preserving the original sender
Reply with — send a stationery template back; this is how you build an out-of-office reply
Play sound — an audio file of your choosing
Speak — read a phrase aloud through the system's speech synthesiser
Open — bring the message up in a window as it arrives
Print — print it automatically
Server options — for POP accounts, decide per-message whether to fetch or leave it
Set personality — file the message against a particular identity
Delete
Skip rest — stop, so later filters don't also fire
Auto-reply throttling. A "reply with stationery" filter waits before answering
the same person again — three days by default, adjustable, or zero to reply every time.
indiMailbox also honours RFC 3834: it will not auto-reply to mailing list
traffic, bounces, or another program's automatic reply, which is what stops two out-of-office
responders from talking to each other forever.
Make Filter
Select a message and press Ctrl+Shift+K (or right-click → Make Filter). indiMailbox builds a filter from the message in front of you — sender, recipient, subject, whichever you tick — with a suggested name and an action, so you never retype an address into the filter editor.
Labels
Define labels with a name and a colour. Apply them by hand from the message list's context menu, or automatically from a filter. Labels are a sortable column, so a mailbox can be arranged by them.
indiMailbox includes SpamGuard, a classifier that learns from you rather than from a list someone else maintains. Right-click a message and choose Mark as Junk or Not Junk; each one trains the model, and junk is filed into the account's Spam mailbox if it has one. Nothing is sent anywhere to do this — the model is yours and lives on your machine. It can be reset to start over.
App — indiMailbox's own address book, kept in a plain contacts.toml file, for people who want their mail contacts separate from the rest of the system.
System — your desktop's own address book. On Linux this is GNOME's Evolution Data Server, which covers GNOME, Cinnamon, and related desktops.
Contact Details
Each contact has a name, any number of email addresses, notes, a favourite flag, and:
Custom fields — anything worth keeping: a phone number, a job title, a birthday. Name them yourself.
Nicknames — see below.
Nicknames & Groups
A nickname is a short name you can address someone by. Type it into a recipient field and it resolves to their address when the message is sent — an addressing shortcut, not a label. A contact can have several.
Groups work the same way: give a group a nickname and typing it addresses everyone in it. A group can contain other groups, and expansion follows them; a group that ends up containing itself is stopped rather than looped over.
Import & Export
Contacts import and export as vCard (.vcf), which every other address book reads and writes.
Stationery is a message template — Eudora's word for it. Manage templates from Tools → Stationery. Each can carry a subject, a body, To/Cc/Bcc addresses, a composition mode, and a priority; anything you leave blank is simply left alone.
There are four ways to use one:
Message → New Message With → — start a new message already filled in. Every template appears in this menu.
Message → Reply With → — reply using a template.
The Stationery picker in the composer, to apply one to the message you're already writing.
A filter's "Reply with" action, which is how you build an automatic response.
An identity can name a default stationery, applied whenever you write from that address. Applied automatically it fills empty fields rather than overwriting what you've already typed.
Create signatures per account from Tools → Signatures. Mark one as the default and it's inserted automatically on new messages from that account, below the standard -- separator. Switching signatures in the composer replaces the previous block rather than stacking another one underneath.
Press Ctrl+Shift+F, or type into the toolbar's search box, to open the Search window. Search is full-text and indexed, so it stays fast as your mail grows, and it runs entirely against the local index — no query leaves your machine.
Scope
A dropdown limits the search to From, To, Cc, Subject, Body, or Attachment names. Left unset, it searches everything.
A panel of checkboxes narrows the search to particular mailboxes, grouped by account. Tick none and every mailbox is searched.
Search Terms
Alongside plain words, the search box understands a few prefixes, which can be mixed with ordinary text:
Term
Matches
from:name
Messages from an address or name
to:name
Messages addressed to someone
subject:word or subject:"several words"
Words in the subject
has:attachment
Messages carrying an attachment
So from:alice invoice has:attachment finds mail from Alice mentioning an invoice with something attached.
Results
Results appear beside the search, with the message shown in the pane to the right; double-click one to open it in a window of its own.
If the index ever falls behind your mail, click Rebuild Index — it's rebuilt from local storage, and indiMailbox also does this on its own at startup if it finds the index empty.
File → Import Mailbox… reads an archive from another mail program and files it into a mailbox you choose. Three formats are read:
Unix mbox (.mbox) — the lingua franca of mail archives, written by Thunderbird, Apple Mail, Evolution, mutt, Gmail Takeout, and most others.
Eudora mailboxes (.mbx) — Eudora's own files, which are mbox with a From ???@??? separator.
Outlook archives (.pst, .ost) — read directly, with each message rebuilt into a standard RFC 822 message from the properties Outlook stores.
Anything with an unfamiliar extension is read as mbox, since that's the most common archive format. Imported messages are uploaded to the account you pick, so they behave exactly like any other mail from then on — searchable, filterable, and visible from your other devices if the account is IMAP.
Tools → Mail Statistics shows what the mail on this machine adds up to: total and unread counts, how much disk it occupies, how many messages carry attachments, a per-day chart over the period you choose, your most frequent correspondents, and a breakdown by mailbox. Days with no mail are shown as zero rather than left out, so the chart can't close a gap and imply mail arrived when it didn't. Each mailbox is listed with the account it belongs to, since every account has an INBOX and a column of them would otherwise say nothing about which is which.
Everything is computed from the mail already on your machine and goes nowhere. Eudora's usage statistics were about your own habits, and so are these.
Link History
Tools → Link History lists every link you have opened from a message, newest first, with the message it came from. Search it, open a link again, or jump back to the message. It's kept for the person who clicked, not reported about them, and can be cleared outright at any time.
indiMailbox speaks OpenPGP, in the PGP/MIME form
(RFC 3156) that Thunderbird, Enigmail, Evolution, Apple Mail with GPGTools, and every
other serious client understands. Signed and encrypted mail written here can be read
there, and vice versa.
Signing proves a message came from you and hasn’t been altered on the way. Anyone can check it; nothing is hidden.
Encrypting makes the message readable only by the people you addressed it to. Not your mail provider, not theirs, not anyone watching in between.
Keys
Manage keys under Preferences → Security. indiMailbox keeps them in
its own directory rather than in your system GnuPG keyring — writing to a keyring other
programs depend on is not something a mail client should do behind their back — so
import and export are how keys move between the two.
Create a key for an address you send from. Use the same address, because that’s how indiMailbox knows which key to sign with.
Import a key by pasting it or picking a file. Public keys let you write to someone encrypted and check their signatures; your own secret key can be brought in from another machine.
Export public gives you the file to send to people who want to write to you. Back up secret saves your own key — do this, and keep it somewhere safe.
Passphrases
A key can be protected by a passphrase. indiMailbox stores it in your system keychain
alongside your mail passwords, so you are not asked for it on every message — which
means the passphrase protects the key file, not this application. Anyone with your
unlocked desktop session can use the key.
Check a fingerprint before you trust a key. Anyone can send you a key
claiming to be someone else. A key’s fingerprint identifies it exactly — compare it
with its owner over a channel that isn’t email (in person, or over the phone) before
relying on it. This is the part of OpenPGP no software can do for you.
Signing and Encrypting a Message
The composer has Sign and Encrypt tick boxes. Each is
offered only when it could actually be carried out:
Sign is available when you hold a secret key for the address in the From picker.
Encrypt is available once the message is addressed and every recipient has a key you hold. If one doesn’t, hovering the box names who is missing.
A message you encrypt is also encrypted to your own key, so the copy in your Sent mailbox
stays readable to you. When you both sign and encrypt, the signature travels inside the
encryption — so it isn’t visible to anyone who couldn’t read the message anyway.
Reading Signed and Encrypted Mail
Encrypted mail is decrypted as you open it, and signatures are checked at the same time. A badge above the headers says what was found:
Badge
Means
🔓 Decrypted
The message arrived encrypted and was opened with your key.
🔒 Encrypted — can’t be opened
Encrypted, but not to a key you hold — or the passphrase for that key wasn’t available. The badge says which.
✓ Signed by …
The signature was checked against the sender’s key and matches.
✎ Signed, key unknown
The message is signed, but you don’t hold the signer’s key, so nothing could be concluded. Import their public key to check it. This is not a warning.
⚠ Signature does not match
The signature was checked and failed. The message has been altered since it was signed, or it isn’t from who it claims. Treat it with suspicion.
The last two are deliberately different. Mail from someone whose key you have never
imported is the ordinary case, and colouring all of it red would train you to ignore red.
What Encryption Does Not Hide
These are properties of OpenPGP itself, not of indiMailbox, and every client that uses it shares them:
The subject line travels in the open. So do the From, To, Cc, and Date headers. Keep anything sensitive out of the subject — the composer reminds you when encryption is on.
Who you wrote to is visible to anyone handling the message.
Bcc and encryption can’t be combined. An encrypted message names the keys it was encrypted to, so a Bcc’d recipient would be revealed to everyone else on it — exactly what Bcc exists to prevent. indiMailbox refuses rather than doing it wrongly; send the blind copy as its own message.
Encryption protects the message, not your machine. Decrypted mail is shown, indexed and searched locally like any other.
Your mail servers, and nothing else. indiMailbox has no telemetry, no analytics, no account, and no server of its own. Search runs locally, the junk classifier is trained locally, statistics are computed locally, and your link history is stored locally.
Credentials
Passwords and OAuth tokens live in your operating system's keychain — GNOME Keyring or KWallet on Linux, the Keychain on macOS, the Credential Manager on Windows — not in indiMailbox's configuration files.
Transport
TLS and STARTTLS are supported for IMAP, POP3, and SMTP, with certificate verification.
Message Rendering
HTML mail is sanitised before display: scripts and embedded objects are removed, remote content is blocked until you ask for it, and the body is rendered in an isolated frame that cannot navigate on its own. Links are handed to your browser deliberately, and checked by ScamGuard first.
End-to-End Encryption
indiMailbox signs and encrypts mail with OpenPGP, so a message can be readable only by the person you sent it to, and provably from you. See OpenPGP: Signing & Encryption.
Press Ctrl+, or choose Edit → Preferences. Preferences opens in a window of its own, with the categories down the left, so you can change how mail is displayed while still looking at it. A Tools entry at the bottom of the list crosses over to the tools, which carry a Preferences entry of their own to come back — the two share one window.
Category
What's in it
General
Modern or Classic layout; whether composing opens a window or a tab; the interface language; whether the welcome screen appears at startup.
Appearance
Light, dark, or system theme; font family; and the text size of the message list, the mailbox list, the reading view, and the composer, each set separately.
Checking Mail
Automatic check interval; check at startup; send queued mail on check; new-mail notifications.
Viewing Mail
Light canvas for message bodies; whether clicking a notification shows the message in place or in its own window; where attachments are saved.
Composing Mail
Default composition mode.
Accounts & Tools
Links to Accounts, Address Book, Signatures, and Filters & Labels.
Security
Where credentials are stored, how remote content is handled, and your OpenPGP keys.
indiMailbox keeps configuration and mail in separate places, both under your own home directory, and both in formats you can read without it.
Platform
Configuration
Mail & index
Linux
~/.config/indimailbox/
~/.local/share/indimailbox/
macOS
~/Library/Application Support/indimailbox/
~/Library/Application Support/indimailbox/
Windows
%APPDATA%\indimailbox\
%APPDATA%\indimailbox\
One Folder per Account
Each account has its own folder under accounts/, named
after the account — an account called "Work" lands in
accounts/work/ — so a folder can be recognised, copied
and backed up on its own. The current path is shown when you edit an
account.
The name is only a label. Everything indiMailbox stores refers to an
account by an identifier that never changes, so renaming the account
leaves the folder where it is, and you can rename the folder yourself
without breaking anything — it is found by the account inside it, not
by what it is called. Two accounts never share a folder: a second
account with the same name gets work-2.
Settings, accounts, filters, stationery, and signatures are TOML text files.
Your address book is contacts.toml.
Message bodies for POP accounts are stored as mbox, which any mail program can open.
Message metadata is in a per-account SQLite database, and the search index is a Tantivy index rebuilt from your mail whenever needed.
Backing up is copying those directories. Passwords are not among them — they're in your system keychain — so a restored profile will ask for them again.
A keychain service (GNOME Keyring, KWallet, or another Secret Service provider) is needed to store account passwords.
macOS
Download the .dmg and drag indiMailbox to your Applications folder. macOS 10.15 or later.
Windows
Download the MSI installer and run it.
Making indiMailbox Your Default Mail Application
Installing from the .deb or .rpm registers indiMailbox as a mail client, so it appears wherever your desktop asks which one to use — System Settings → Default Applications on GNOME and Cinnamon, Default Applications on KDE.
Once it is chosen, a mailto: link anywhere on your desktop opens a message here, addressed to whoever was named and carrying the subject and body the link asked for. If indiMailbox is already running, the message opens in that copy rather than starting a second one.
An AppImage is not installed in the usual sense and so is not registered automatically. To register one, copy the desktop entry out of the AppImage into ~/.local/share/applications/, correct its Exec line to point at where you keep the AppImage, and run update-desktop-database ~/.local/share/applications.
Check that the account is enabled — disabled accounts are skipped by every mail check, manual or automatic. If it is enabled, open the account and use Test Connection, which reports exactly what the server said.
Gmail or Outlook rejects my password
Both refuse ordinary account passwords from mail clients. Gmail says so plainly — Application-specific password required — and indiMailbox passes that on with what to do about it.
Create an app password in your provider's account settings and use that, with the account's authentication set to App password. Typing a @gmail.com address into a new account sets this up for you. OAuth2 is the alternative and needs client credentials of your own — see Accounts.
Every account fails at once with something about a message bus
That is the system keychain, not your mail. A message such as Platform secure storage failure … recipient disconnected from message bus means the keyring service stopped answering — usually because the login keyring was never unlocked, or the service is wedged.
On Linux, open Passwords and Keys (Seahorse), find the Login keyring, and set its password to match your login password so it unlocks automatically. A keyring in a genuinely stuck state usually needs a restart. indiMailbox reads each password once per run and holds it, so a keyring having a bad moment after startup no longer interrupts anything.
POP mail keeps re-downloading
indiMailbox identifies POP messages by the server's UIDL. A server that doesn't support UIDL, or that changes the identifiers between sessions, can't be tracked reliably — check whether your provider offers IMAP instead.
Blank or white window on startup (Linux)
Some GPU drivers cause WebKitGTK rendering issues. Try launching with:
WEBKIT_DISABLE_DMABUF_RENDERER=1 indimailbox
Passwords are forgotten every launch (Linux)
indiMailbox stores credentials in the system keychain through the Secret Service API. On a minimal desktop or window manager there may be no keychain daemon running — install and start gnome-keyring or kwalletmanager.
Mail takes a long time to arrive on a big account
The first sync of a mailbox with six figures of messages is a large
download however it is done. The folder pane shows what it is working
on and how far it has got, mail arrives newest first so the recent
messages are usable within seconds, and the whole thing is resumable —
closing indiMailbox and reopening it picks up where it left off rather
than starting again. If you chose whole
messages, headers come down first and the bodies follow.
Search finds nothing, or misses recent mail
Rebuild the index from Search. indiMailbox also rebuilds it automatically at startup if it finds it empty, so restarting often fixes this on its own.
An imported mailbox didn't appear
Imported messages are uploaded to the account you selected, then picked up by the next sync. Run Get Messages. If your archive has an unusual extension, indiMailbox reads it as mbox — rename it to .mbox, or to .pst for an Outlook archive, if that isn't right.
A filter's Reply With never fires twice for the same person
That's the auto-reply throttle: three days by default. Change the interval in Filters & Labels, or set it to zero to reply every time. indiMailbox also never auto-replies to mailing list mail, bounces, or another program's automatic reply.
A queued message won't send
Open the Outbox. A message that failed shows the reason beside it and stays queued, so nothing is lost — fix the cause and use Send Queued Messages. You can also reopen it for editing.
The Encrypt box is greyed out
Encryption needs a public key for every recipient. Hover the box and it names who is
missing; import their key under Preferences → Security. It also stays
unavailable until the message is addressed — there is nobody to encrypt to before that.
The Sign box is greyed out
Signing needs a secret key for the address in the From picker. Create one under
Preferences → Security, using that same address — a key for
you@example.com won’t sign mail sent from you@example.org.
"Encrypted — can’t be opened"
Either the message wasn’t encrypted to a key you hold — check that the sender used
your current public key — or the passphrase for that key isn’t in your keychain. Hover
the badge and it says which. Re-importing your secret key with its passphrase under
Preferences → Security fixes the second case.
"Signature does not match"
The signature was checked and failed: the message has been altered since it was signed, or
it isn’t from who it claims to be. This is different from "Signed, key unknown",
which only means you haven’t imported the sender’s key and nothing could be concluded.
Treat a mismatch with suspicion; confirm with the sender through another channel.
A recipient can’t read a message I encrypted
You encrypted to a key that isn’t the one they hold — usually an old key, or one
someone else uploaded in their name. Ask them for their current public key, check its
fingerprint with them directly, delete the old one, and import the new.
Need More Help?
This page is also reachable from inside the program, at
Help → Documentation. To report a problem or ask for a feature,
open an issue on GitHub.
If you are reporting a fault, Help → Open Log File opens the log
indiMailbox keeps — attaching it saves a round of questions.
indiMailbox is free, and stays free. There is no premium tier, no feature held back, no advertising, and nothing about you being sold — not your attention and not your mail. There is also no company behind it, which means donations are the only way any of it gets paid for.
It asks once. The welcome screen carries the links, and a panel appears once a year in December where the reading pane would otherwise say "select a message" — never over anything you were doing, and never again once you say no. Both are reachable on purpose at any time from Help → Support indiMailbox.
Either link works, and neither passes through a server of ours:
If money isn't what you have to give, a clear bug report, a fix, or a translation is worth as much. The source is on GitHub under the GNU GPL v3. The code is free to use, change, and share; the indiMailbox name and logo are trademarks, so a fork needs its own name.