-
Notifications
You must be signed in to change notification settings - Fork 0
FAQ zh
English · Tiếng Việt · 中文
这个项目真正会收到的问题,答案来自源码,而不是来自「它本该怎样工作」。凡是诚实 的答案是「它不做那件事」,那就是答案。
不能,而且这正是重点。 SkimMail 读邮件。它不发信,也完全没有对外的 SMTP 通 路。
这是一条有意划下的边界,不是缺失的功能。一个产品一旦开始发信,就继承了整套投递 性问题——SPF、DKIM、DMARC、信誉、黑名单——那是一份全职工作,而且和「把阅读做好」 彼此正交。没有花在投递性上的每一小时,都花在了收件箱上。
默认情况下远程图片会被拦下,因为加载一张图片就等于告诉发件人:这封邮件被打开 了、什么时候打开的、大致从哪里打开的。追踪像素正是这个机制。
你可以按邮件改(显示图片)、按发件人改(始终显示 / 从不显示),也 可以改整个实例。完整说明见邮件中的远程图片。
图片被显示时,是服务器去获取,而不是你的浏览器——而且走的是该账户收信时用的 同一条网络路径。发件人的服务器看到的是你的实例,不是你。
多半是格式问题。SkimMail 通过检查字节本身来判断一张图片是什么,而不是相信
发件人的 Content-Type,并且只提供常见的位图格式。
-
SVG 被有意拒绝。 它是文档,不是图片:SVG 可以携带
<script>,而从 SkimMail 自己的源提供时,那就是在你的会话里运行脚本。 - AVIF 被拒绝,因为 Go 的内容嗅探器识别不了它。接受它就意味着要相信发件人 的标签——而这恰恰是本设计唯一不做的事。
其他原因:发件人服务器宕机或拒绝我们、图片超过 5 MB、或者地址解析到内网(按 SSRF 拒绝)。
需要,做一次就行。1.18.0 更正了 SkimMail 请求的权限——早期版本请求的是面向 provider 网页 API 的 scope,而对方的邮件服务器会拒绝它,所以在旧 scope 下拿到 的登录状态无法原地升级。请从 Settings ▸ Accounts ▸ Re-authenticate 把每一 个 Gmail 或 Outlook 账户重新连接一遍;它会带你回到 provider 的同意界面,并更新 你已有的那个账户。使用 app password 的 IMAP 账户不需要做任何事。见 Accounts。
在 S3 上这是预期行为。一次性清理会统计它无法归属的对象然后停下,因为那 个存储桶可能同时存放着你的备份归档。它不会删除自己不确定的东西。清理命令见 运维里的缓存自己会做的事。
在文件系统存储上占用应当下降。如果没有,可能是对账还没跑——它只在启动时跑一 次。
另外请注意:只有文件系统存储才计入 Community 版的存储计量——该计量测的是
DATA_DIR,S3 上的 blob 不在其中。
没有。它表示编译该二进制时源码树里有未提交的改动——实际情况是发布脚本在编译器已
经开始运行时,重新构建并重新嵌入了 Web 界面。vcs.revision 仍与发布标签一致,
产物也仍然有签名。
这在若干个版本上都发生过,并且是记录在各自的发布页面上,而不是悄悄重打标签 了事——因为重打标签会让已经下载过旧文件的人拿到不同的字节。现在这个成因已经在发 布脚本里被直接拦住了。
有。六个路由——摘要、分类、翻译、提取行动项、线程摘要,以及收件箱 digest——内置 在每一个版本里,另外还有一个后台分类器,每次同步最多能读取 20 封新邮件的正文。 本版本界面上对应的按钮是隐藏的,但隐藏一个按钮是界面上的决定,不是一道边 界:路由仍然注册着,任何持有 session 的人都能直接调用它们。这些接口都没有任何 licence 或 tier 检查。
在你配置一个 provider 之前,不会有任何东西被发送出去——可选
Anthropic、OpenAI、Google Gemini,或者完全跑在你自己硬件上的 Ollama。默认安装
什么都不发送,而且后台分类器需要两个开关都打开(AI 本身,以及
auto-classify)才会运行。完整披露见 PRIVACY.md 的 "AI features" 一节——它更
正了早期版本(1.10.0 到 1.17.0)在同一段代码上说错的三件事。
实验性。 SQLite 是默认,Postgres 是推荐的「正经数据库」目标。MySQL 能构建、 schema 也存在,但它的全文检索行为不同,且真实使用量少得多。安装向导把它标为实验 性正是因为这个。
只有一个目录——apt 包是 /var/lib/skimmail。apt remove 和 apt purge 都不
会删除它。 大多数人以为 purge 会删,但它不会:没有任何移除脚本,因此不存在
自动删除你邮件的东西。清除是手动的 rm -rf。
同一个目录里还有 master.key,没有它数据库根本读不出来。要么两者一起备份,要么
都别备份。见运维。
可以,从 1.10.0 起,配合 AUTH_MODE=users。每个人的账户、分组、邮件和发件人偏
好都只属于自己,并且有三种角色——owner、operator、viewer。在 1.10.0 之前,这个模
式只是名义上存在:第二个人能读到实例上的每一个邮箱。
共用之前请先升到 1.18.0。 从 1.10.0 到 1.17.0,共有十四个操作只按角色把关而 没有按归属者把关——五个在 1.12.0 修好,六个在 1.13.0 修好,两个在 1.14.0 修好, 还有一个在 1.18.0 修好。中间那六个里最严重的是搜索会把每个账户的主题与发件人 返回给任何能登录的人;有两个让一个人的请求能用别人保存的密码打开别人的邮箱; 1.18.0 的修复补上的是 Sync now 按钮上的同一个漏洞,自 1.10.0 起就存在。单 用户实例从未受影响。1.18.0 的细节见 Security。
登录数是一项受许可的资源:Community 1、Sponsor 3、Pro 不限。该限制只拦截创建
用户,绝不阻止读取或恢复——超出限制的实例会保留已有的所有人。用户在主机上用
skimmail user 管理;见用户与角色。
Settings ▸ Storage,自 1.14.0 起。 它隐藏了十一个版本,而原因值得说清楚: blob 引擎本身——文件系统 ↔ S3,带真实的连接测试和一次中断后可续跑的迁移——早就 做完了。让这个开关一直关着的,是旁边那块屏幕告诉你:要用 Postgres 或 MySQL 必须 带 build tag 重新编译。这自 1.4.3 起就不再成立,那时每个发布版都开始把这些驱 动编译进去。这个开关一直在保存一条已经不存在的要求。
那个标签页上的数据库迁移仍然是一份操作手册,而不是一个按钮:它列出迁到 Postgres 或 MySQL 的步骤,并明确标注为指引,而不是假装自己会执行迁移。
邮件正文缓存的面板是另一回事,不在那里。它以前确实被困在这个标签页里;自 1.11.1 起它在 Settings ▸ Security —— 用量、容量上限、保留天数和手动清理 —— 因为"你有多少邮件放在这块磁盘上、放多久"是一个数据留存问题,而不是存储引擎问题。 见邮件正文缓存。
可以,自 1.12.0 起:Settings ▸ Appearance ▸ 截图安全模式 会把每一个地址、姓 名、主题、预览和附件名都换成逼真的替代内容,并完全停止渲染邮件正文。它默认关闭, 且按浏览器而不是按账户保存。在依赖它之前请读 截图安全模式——特别要注意,它有意不会遮蔽 你的分组名称、规则标签或搜索框。
自 1.12.0 起它们可以显示——打开 Settings ▸ Appearance ▸ 显示服务器关键字。它 默认关闭,并且是只读的。
如果你已经打开却仍然什么都看不到,最可能的原因是 Gmail:它把标签以 IMAP 文件夹的 形式呈现,完全不报告关键字,所以没有东西可显示。这项功能是给 Dovecot、Cyrus、 Mailcow 之类用的。见服务器关键字。
侧栏 ▸ 已加星标,自 1.13.0 起。它列出你所有账户里加过星标的每一封邮件。在此 之前星标只写不读:你能设置它,SkimMail 却没有任何地方把它显示回来。见 已加星标。
Settings ▸ Security,自 1.13.0 起——你静音过或标记为 VIP 的每个发件人都列在
那里,各自带一个撤销按钮。列表为空时该面板不显示。在 1.13.0 中它的标题与按钮显示
的是键名本身(settings.sendersUnmute 之类),因为那四条翻译在三个语言文件里都
缺失;按钮功能本身正常。已在 1.14.0 修复。 见
静音与 VIP 发件人。
可以移动,只是文件夹选择器列出的是侧栏中当前选中账户的文件夹,而在统一列表 里,那未必就是你打开的这封邮件所属的账户。请先选中那个账户。见 移动到文件夹。
开。 只有 false、0、no 和 off 会关闭缓存正文的加密;其它任何值都让它
保持开启,因为一个默认开启的设置必须朝安全方向失败。
这一点在 1.11.0 中是反的:那时只有 true 这个词算数,而 1 会悄悄把它关
掉。1.11.1 已修复。如果这说的正是你的实例,如何让受影响的正文重新被加密,见
故障排查。
SkimMail · skimmail@base101.app · 2026-09-18 · commit f525934