-
Notifications
You must be signed in to change notification settings - Fork 0
Feature Server keywords
English · Tiếng Việt · 中文
Since 1.12.0 SkimMail can display the IMAP keywords your mail server reports — the tags you set in Thunderbird, Apple Mail or any other client — as read-only chips beside your mail. It is off by default, it is a per-device preference, and SkimMail never writes a keyword back.
If you already tag mail in another client, that work was invisible here. SkimMail has stored every flag the server reports since long before this release, refreshed them on every sync, and rendered none of them. This switch turns on the display, and nothing else.
Settings ▸ Appearance ▸ Show server keywords.
The preference lives in the browser, beside your theme. It is not tied to your account and does not sync: switching it on at your desk does not switch it on for your phone.
-
In the message list — up to two chips per row, then a
+Nwhose tooltip lists the rest. The row already carries a bundle chip most of the time, and the list is a scanning surface rather than a reading one. - In the reading pane — the complete list under the header, with no cap, behind a small "Server keywords (read-only)" label.
The chips are drawn with a dashed border. Everything editable in SkimMail has a solid one: the border style is the "can I change this?" signal, kept separate from colour, which answers "which tag is this?".
A keyword appears if a human plausibly set it: $Important, $followed,
$memo, $muted, and any custom keyword your server accepts. The leading $
is stripped for display, and the chips are sorted so they do not reshuffle
between syncs.
Two families are filtered out:
-
System flags —
\Seen,\Flagged,\Deletedand every future one. The IMAP grammar says a keyword can never begin with a backslash, so this is an exact rule rather than a list to maintain. -
Machine keywords, taken from the IANA IMAP and JMAP Keywords registry:
spam and scanner output (
$Junk,$NotJunk,$Phishing), protocol bookkeeping ($MDNSent,$Forwarded,$Submitted), flags a server sets on delivery ($HasAttachment,$Imported,$New…), the$MailFlagBitNcolour index — which is a number, not a word — and JMAP's lowercase mirrors of the system flags, because$flaggedwould just be a second star.
Matching ignores case, as the IMAP specification requires: Thunderbird writes
$label1, the documentation writes $Label1, and they are one flag. Two
spellings of the same keyword collapse into one chip, displayed in the casing
the server used — you are the authority on how you capitalised your own tag,
not SkimMail.
One keyword from a server nobody has seen yet can slip through as a single odd chip. That is the accepted failure mode of a denylist that can never be complete: nothing breaks, one chip looks strange.
Gmail accounts will display no keywords at all, and no setting changes that. Gmail presents labels as IMAP folders rather than as keywords, and reports none over the protocol. The same is true of Google Workspace.
This feature is for Dovecot, Cyrus, Mailcow, Stalwart and other servers that implement IMAP keywords properly. If every account on your instance is Gmail, turning the switch on will change nothing you can see, and that is the expected result rather than a fault.
Because the evidence for it is absent, not positive — and that is a different thing from the evidence being negative.
The measurement that would have justified shipping it on found zero user-authored keywords across 918 messages. But that corpus was 45 out of 46 Gmail accounts, and Gmail architecturally cannot report keywords over IMAP. So the number says almost nothing: the assumption "people tag mail in other clients" is neither confirmed nor refuted by it.
An unconfirmed assumption belongs behind a switch the user turns on. If you run Dovecot and tag mail in Thunderbird, this is for you and you will find it immediately; if you do not, nothing about your inbox changes.
| Available since | 1.12.0 |
| Default | off |
| Scope | one browser on one device |
| Direction | read-only, always |
| Chips shown in a list row | 2, then +N
|
| Chips shown in the reading pane | all of them |
- Keywords arrive with a sync. Tag a message in Thunderbird and the chip appears here after SkimMail next syncs that mailbox, not instantly.
-
Mail older than your sync window will not show its tags until that mail is
re-fetched.
SYNC_DEPTH_DAYS(default 30) decides how far back headers were fetched in the first place — see Configuration. - You cannot filter by a keyword. The chips are display only; the tag filter in the toolbar is for SkimMail's own tags, which are a different thing.
-
It never writes. No button adds or removes a keyword, and this is a
deliberate refusal rather than an unfinished half. Keywords are per-mailbox
rather than per-account; a server has to advertise
PERMANENTFLAGS \*before it will keep one; a server that does not support them drops the write silently with no error to show you; and removing a keyword is indistinguishable from never having had it — so writing back could destroy another client's data while reporting success. - It is not a second tagging system. SkimMail's own tags are applied by rules and are filterable; server keywords are somebody else's data, shown as it is. See Tags for the difference.
- It does not sync between your devices, because it is a display preference, not an account setting.
- It is not masked by screenshot-safe mode. A keyword is a word you wrote, so it is left alone — check your chips before you capture. See Screenshot-safe mode.
- Tags — SkimMail's own tags, applied by rules and filterable
- Screenshot-safe mode — the other per-device preference added in 1.12.0
-
Configuration —
SYNC_DEPTH_DAYSand how far back mail is fetched
SkimMail · skimmail@base101.app · 2026-09-13 · commit 59e3951