I’m lucky enough to choose my own email client at work. After experimenting with several options, I settled on Thunderbird (open source, heavily customizable, and actively developed).
Here’s what my inbox looks like when I open it:

242 unread emails. Don’t panic.
242 unread items sounds overwhelming. With the right setup, I can process all of them in a short time.
The ground rules Link to heading
Before any tooling, the workflow rests on a few principles:
- Touch each email once: when you open it, either archive it, move it to a “waiting for” folder, or act on it (reply, forward). No deferring. No re-reading.
- Human-generated emails never get auto-archived: only machine-generated messages (build logs, alerts, notifications) can be automatically filtered away.
- Everything unfiltered lands in the inbox: the inbox is where attention is required.
- Direct emails get highest priority: if I’m in the To field (not just CC), it needs my attention first.
- Mobile processing is a first-class citizen: the setup has to work on a phone too.
The Thunderbird message list Link to heading
I customized the column order to show, at a glance:
- Starred status
- Sender
- Subject
- Thread size
- Date/time
This layout lets me scan hundreds of emails quickly without opening any of them.
The idea: server-side filters + IMAP flags Link to heading
The core of the system is server-side Sieve filtering combined with IMAP flags.
IMAP flags are labels stored on the server, not in the client. If your IMAP server supports user-defined flags (mine does, per RFC 3501), you can assign arbitrary labels to messages from the server side.
Sieve is a server-side mail filtering language. Filters run before the email reaches your client, on every device, automatically.
Filtering by recipient Link to heading
A Sieve rule that tags all messages from the Uyuni project mailing list:
# rule:[uyuni]
if anyof (
header :is "x-mailinglist" "uyuni-devel",
header :is "x-mailinglist" "uyuni-users",
header :is "x-mailinglist" "uyuni-announce"
) {
addflag "$label5";
stop;
}
Messages matching this rule get flag $label5. In Thunderbird, I’ve configured that flag to display in a specific color, so mailing list messages stand out visually in the message list.
The catch-all rule Link to heading
The last filter in the chain applies to everything that wasn’t caught by a previous rule: these are the emails that need immediate attention (direct emails, unrecognized senders):
# rule:[unfiltered-emails-tagging]
if true {
addflag "\\Flagged";
addflag "$label6";
stop;
}
Two flags are applied: \\Flagged (the standard IMAP “starred” flag) and $label6 (my “unfiltered” label). The \\Flagged flag is critical for mobile: my mobile client doesn’t support user-defined IMAP flags, but it does show the starred indicator, so important emails stand out on mobile too.
Configuring Thunderbird to display flags as colors Link to heading
Thunderbird needs to be told which color to associate with each IMAP flag:
- Open Thunderbird settings → Advanced Settings → Config Editor
- Add new String keys:
mailnews.tags.$label0.color=#000000mailnews.tags.$label0.tag=my-tag-name- (Each flag gets its own incremental
$labelnumber)
- Restart Thunderbird
- In Settings → Display, you can further customize tag colors
The daily workflow Link to heading
Filter for direct emails first: in Thunderbird, show only messages tagged with the “unfiltered-email” label (or equivalently, show only starred messages). On mobile, show only starred/flagged messages. Process everything in this view according to the ground rules above.
Process the rest by category: once the priority queue is empty, use Thunderbird’s tag filter to focus on one category at a time.

Showing only starred (directly addressed) messages.

Thunderbird’s tag filter supports AND/OR combinations across multiple tags.

Filtered to only the uyuni-or-spacewalk tag, for a focused view for one project.
Troubleshooting Link to heading
To check which user-defined flags your IMAP server supports, this Ruby script is handy.
The verdict Link to heading
This setup is the result of months of iteration: trying different tools, rolling back, tweaking, and committing. The payoff is genuine ownership of my inbox: I decide what gets my attention and when, instead of reacting to whatever arrived most recently. The filtering and color-coding let me switch between “important and urgent” mode and “focused project review” mode with a single click.
Updated 2026: Thunderbird has improved significantly since 2019. The newer versions have a reworked UI and better Sieve filter management. The core workflow described here still applies, though some UI steps may look different in current versions.
If you use a similar system, or a completely different approach to email management, I’d be curious to hear about it.