Skip to content

Feature Remote access zh

SkimMail docs edited this page Sep 15, 2026 · 1 revision

English · Tiếng Việt · 中文

Remote access(远程访问)

1.4.2 起,SkimMail 可以通过隧道把自己暴露到公网上——不需要在你的路由 器上开放任何入站端口——用 Cloudflare Tunnel 或 Tailscale 作为可选的、运行时 下载的插件来实现。

解决什么问题

一个自托管实例通常活在私有网络里:局域网、VPN,或者绑定在 localhost 上, 由你自己运行的反向代理挡在前面。这在家里没问题,但「用手机流量查一下邮件」 需要一个能公开访问的地址,而获得它的常规方式——一台有公网 IP 的 VPS、你自 己的反向代理、一张 TLS 证书——是大多数自托管者不想仅仅为此而搭建的基础设施。 Remote access 让你不需要这些就能获得一个公网(或仅 tailnet 内可见)的 HTTPS 地址,代价是要把流量的元数据托付给一个隧道厂商。

位置

Settings ▸ Remote access,仅所有者——/api/remote/* 下的每一个路由都要 求所有者角色。

两个厂商

厂商 插件 需要什么 地址是否稳定
Cloudflare Tunnel,quick tunnel cloudflared(Cloudflare 自己的二进制,已做 SHA256 固定) 什么都不用——无需账号、无需 token 否——每次启动都是一个新的随机 trycloudflare.com URL
Cloudflare Tunnel,named tunnel cloudflared 一个 Cloudflare tunnel token,以及你在 Cloudflare 上为它配置的 hostname
Tailscale skimmail-tunnel-ts(SkimMail 基于 tsnet 自行构建) 一个 Tailscale auth key 是,在你的 tailnet 内;只有开启 Funnel 才公开

两个插件都是按需下载的——基础二进制、apt 包或容器镜像里都不包含它们——安装 /更新/移除都走和其他运行时插件一样的机制;插件在磁盘上的位置、manifest 签 名校验,以及更新时「in use」影响的含义,见 Operations ▸ Plugins。这个界面自己的 Install/Uninstall 按钮只负责把插件 放到磁盘上;更新一个已安装的厂商插件是在 Settings ▸ Plugins 里完成 的,不是在这里——这个界面本身没有 Update 按钮。

保存某个厂商的配置和启动隧道是同一个动作,Save & connect。token/auth-key 字段是只写的:之后编辑时留空会保留已存的值,和 Settings 里其他密钥字段的 约定一致。Cloudflare token 通过环境变量传给 cloudflared 子进程,绝不出现 在命令行里——命令行是主机上任何能运行 ps 的人都能看到的。

公网 URL 和二维码

隧道运行起来后,面板会显示实时 URL、一个 Copy 按钮,以及一个在客户端本 地渲染的二维码(没有任何第三方服务会看到这个 URL),可以直接用手机摄像头 扫描——在小屏幕上什么都不用打字。任何一种 Cloudflare tunnel 一旦运行就总是 公开的;Tailscale tunnel 只有开启 Funnel 才公开,否则只有你自己 tailnet 里的设备能访问。

启动一个隧道会停掉当前正在运行的那个——同一时刻只有一个隧道进程在运行, 不论厂商。

AUTH_MODE=none 硬性拦截

在这里做任何改变——保存配置、安装、启动、停止——只要服务器运行在 AUTH_MODE=none(完全跳过登录界面的模式,用于真正私密的网络)下,都会被直 接拒绝。界面会把厂商卡片替换成一条纯红色横幅,API 返回 409 auth_mode_none。这是代码里的硬性拦截,不是可以从 UI 里覆盖的设置:关闭身份 验证和打开 remote access 被有意设计为互斥——因为一个通向没有登录的实例的公 网隧道,会把整个邮箱交给任何找到这个 URL 的人。AUTH_MODE=none 的用途见 安全

2FA 提示

当隧道处于公开状态时,如果双因素认证看起来是关闭的,界面会显示一条琥珀色警 告。有一个值得知道的限制:这个检查看的具体是 account id 1,而不是当前 登录的人。在常见的单所有者实例上,那就是你自己,所以这个提示是准确的;在多 用户实例上,它反映的是最早创建的那个账户,未必是正在打开这个界面的所有者, 也未必和你一样开了 2FA。

限制

起始版本 1.4.2
角色 所有者
厂商数量 2 —— Cloudflare Tunnel、Tailscale
并发 两个厂商合计同一时刻只有一个隧道进程
2FA 提示 只检查 account id 1,不是调用者本人
硬性禁用于 AUTH_MODE=none

它不做什么

  • 不附加任何自己的身份验证。 公网隧道让 SkimMail 自身的登录成为互联网 和你的邮件之间唯一的屏障——这正是 AUTH_MODE=none 拦截和 2FA 提示存在的 原因。
  • 不能同时运行两个隧道。 启动一个会停掉当前正在运行的那个厂商;两者之 间没有负载均衡或故障转移。
  • Cloudflare quick tunnel 让你完全无法控制地址。 只有带 token 的 named tunnel 在重启之间才是稳定的。
  • 不管理任何自己的 TLS 证书。 两个厂商都在各自的边缘节点终止 TLS; SkimMail 从不会看到或存储这方面的证书。

另请参阅

  • 运维 —— 插件在磁盘上的位置、如何更新,以及 manifest 签 名校验
  • 安全 —— AUTH_MODE,以及为什么 none 会完全禁用这个功能
  • 配置 —— SKIMMAIL_PLUGINS_URL,用于把插件 manifest 的抓取指向一个私有镜像

SkimMail · skimmail@base101.app · 2026-09-15 · commit dffbb18

Clone this wiki locally