-
Notifications
You must be signed in to change notification settings - Fork 0
FAQ
English · Tiếng Việt · 中文
Questions this project actually gets, answered from the source rather than from how it ought to work. Where the honest answer is "it does not do that", that is the answer.
No, and that is the point. SkimMail reads mail. It does not send, and it has no outbound SMTP path at all.
That is a deliberate boundary, not a missing feature. The moment a product sends mail it inherits deliverability — SPF, DKIM, DMARC, reputation, blocklists — which is a full-time job orthogonal to reading well. Every hour not spent on deliverability is an hour spent on the inbox.
By default remote images are withheld, because loading one tells the sender that the message was opened, when, and roughly from where. That is the whole mechanism behind a tracking pixel.
You can change it per message (Show images), per sender (Always from this sender / Never), or for the whole instance. Full detail on Remote images in mail.
When images are shown, the server fetches them, not your browser — and it does so through the same network path that account uses for mail. The sender's server sees your instance, not you.
Most often the format. SkimMail decides what an image is by inspecting the
bytes, not by believing the sender's Content-Type, and it serves only
common raster formats.
-
SVG is refused on purpose. It is a document, not a picture: an SVG can
carry a
<script>, and served from SkimMail's own origin that would be a script running in your session. - AVIF is refused because Go's content sniffer cannot recognise it. Admitting it would mean trusting the sender's label — the one thing this design does not do.
Other causes: the sender's server is down or refuses us, the image is over 5 MB, or the address resolves to a private network (refused as SSRF).
Yes, once. 1.18.0 corrects the permissions SkimMail requests — earlier releases asked for scopes meant for the providers' web APIs, which their mail servers reject, so a sign-in granted under the old scopes cannot be upgraded in place. Reconnect each Gmail or Outlook account from Settings ▸ Accounts ▸ Re-authenticate; it takes you back to the provider's consent screen and updates the account you already have. IMAP accounts with an app password need nothing. See Accounts.
On S3, that is expected. The one-time cleanup pass counts objects it cannot account for and stops, because that bucket may also hold your backup archives. It will not delete something it is not certain about. See What the cache does on its own in Operations for the purge command.
On filesystem storage it should drop. If it has not, the reconciliation pass may not have run yet — it runs once, at startup.
Note also that only filesystem storage counts toward the Community storage
meter at all: the meter measures DATA_DIR, and S3 blobs are not in it.
No. It means the source tree had uncommitted changes when the binary was
compiled — in practice, the release script rebuilding and re-embedding the web
UI while the compiler was already running. vcs.revision still matches the
release tag, and the artifact is still signed.
It has happened on several releases and is recorded on each affected release page rather than quietly fixed by re-cutting a tag, because re-cutting would hand different bytes to anyone who had already downloaded the old ones. The cause is now blocked in the release script itself.
Yes. Six routes — summarise, classify, translate, extract action items, thread summary, and an inbox digest — are built into every release, plus a background classifier that can read up to 20 new message bodies per sync. The button for them is hidden in this release's interface, but hiding a button is a display decision, not a boundary: the routes stay registered, and anything holding a session can call them directly. There is no licence or tier check on any of it.
Nothing is sent anywhere until you configure a provider — Anthropic,
OpenAI, Google Gemini, or Ollama, which can run entirely on your own hardware.
A default installation sends nothing, and the background classifier needs two
separate switches on (AI, and auto-classify) before it runs at all. See
PRIVACY.md's "AI features" section for the full disclosure — it corrects
three claims earlier releases (1.10.0 through 1.17.0) got wrong about this
same code.
Experimental. SQLite is the default and Postgres is the recommended "serious database" target. MySQL builds and the schema exists, but its full-text search behaves differently and it has had far less real use. The install wizard labels it as experimental for that reason.
One directory — /var/lib/skimmail for the apt package. Neither
apt remove nor apt purge deletes it. Most people expect purge to, and
it does not: there is no removal script, so nothing automated ever deletes your
mail. Erasing it is a manual rm -rf.
The same directory holds master.key, without which the database cannot be
read at all. Back up both together or neither. See Operations.
Yes, from 1.10.0, with AUTH_MODE=users. Each person's accounts, groups,
messages and sender preferences are theirs alone, and there are three roles —
owner, operator, viewer. Before 1.10.0 that mode existed in name only: a second
person could read every mailbox on the instance.
Be on 1.18.0 before you share one. Fourteen operations were gated by role but not by owner between 1.10.0 and 1.17.0 — five fixed in 1.12.0, six in 1.13.0, two in 1.14.0, and one more in 1.18.0. The worst of the six was that search returned every account's subjects and senders to anyone who could sign in; two of them let one person's request open somebody else's mailbox using that person's own saved password; the 1.18.0 fix closed the same hole in Sync now, present since 1.10.0. Single-user instances were never affected. See Security for the 1.18.0 detail.
Sign-ins are a licensed resource: Community 1, Sponsor 3, Pro unlimited. The
limit gates creating a user and never blocks reading or restoring — an
instance that is over the limit keeps everyone it has. Users are managed from
the host with skimmail user; see Users and roles.
Settings ▸ Storage, since 1.14.0. It was hidden for eleven releases, and the reason turned out to be worth stating: the blob engine itself — filesystem ↔ S3, with a real connection test and a migration that resumes if it is interrupted — had been finished for a long time. What kept the flag off was one screen beside it telling you a rebuild with build tags was required to use Postgres or MySQL. That stopped being true in 1.4.3, when every released build began shipping those drivers compiled in. The flag had been preserving a requirement that no longer existed.
The database migration on that tab is still a runbook, not a button: it tells you the steps to move to Postgres or MySQL, and it is labelled as guidance rather than pretending to perform the move.
The message-body cache panel is a separate thing and is not there. It used to be stranded in this tab; since 1.11.1 it is in Settings ▸ Security — usage, size limit, keep-for and the manual purge — because how much of your mail sits on this disk, and for how long, is a retention question rather than a storage-engine one. See Message body cache.
Yes, since 1.12.0: Settings ▸ Appearance ▸ Screenshot-safe mode substitutes every address, name, subject, preview and attachment name with a realistic stand-in, and stops rendering message bodies entirely. It is off by default and set per browser, not per account. Read Screenshot-safe mode before you rely on it — notably, it deliberately does not mask your group names, your rule tags or your search box.
They can, since 1.12.0 — switch on Settings ▸ Appearance ▸ Show server keywords. It is off by default and read-only.
If you turned it on and still see nothing, the likely reason is Gmail: it presents labels as IMAP folders and reports no keywords at all, so there is nothing to show. The feature is for Dovecot, Cyrus, Mailcow and similar. See Server keywords.
Sidebar ▸ Starred, since 1.13.0. It lists every starred message across all your accounts. Before that the star was write-only: you could set it and nothing in SkimMail would show it back to you. See Starred.
Settings ▸ Security, since 1.13.0 — every sender you have muted or marked
VIP is listed there with an undo button. The panel is hidden while the list is
empty. In 1.13.0 its heading and buttons showed raw key names
(settings.sendersUnmute and friends) because the four translations were
missing from all three language files; the buttons worked. Fixed in 1.14.0.
See Muted and VIP senders.
You can, but the folder picker offers the folders of the account selected in the sidebar, which in a unified list is not necessarily the account the open message belongs to. Select that account first. See Move to folder.
On. Only false, 0, no and off turn encryption of cached bodies off;
every other value leaves it on, because a setting that defaults to on must fail
in the safe direction.
This was backwards in 1.11.0, where only the exact word true counted and
1 silently disabled it. Fixed in 1.11.1. If that describes your instance, see
Troubleshooting for how to get the affected bodies
re-encrypted.
Reference — Home · Troubleshooting · Operations · Security
SkimMail · skimmail@base101.app · 2026-09-18 · commit f525934