03.
— Section 3
Credentials
macOS Keychain
您的密码从不触碰磁盘。
jmapcli 不在磁盘上保存任何密钥。您的密码(或 bearer 令牌)存储在 macOS 登录钥匙串中;账户文件 — ~/.config/jmapcli/config.json,权限 0600 — 仅保存服务器 URL、用户名和默认标志。首次在终端使用钥匙串?整个流程只需三条内置 security 命令。
1 · 存储密钥 — 并读取验证。 macOS 会提示输入值,因此密钥不会出现在命令行、屏幕显示或 shell 历史记录中。
# store it — you’re prompted for the secret, nothing echoes
$ security add-generic-password -U -s jmap-password -a you@example.com -l "Boogie JMAP password" -w
# read it back at any time
$ security find-generic-password -s jmap-password -a you@example.com -w
# remove it
$ security delete-generic-password -s jmap-password -a you@example.com
- -s
- service — jmapcli 查找的名称:密码使用 jmap-password,bearer 令牌(如 Fastmail)使用 jmap-token;只需设置您实际使用的那一个。
- -a
- account — 您的电子邮件地址(即您提供给 jmapcli 的用户名)。
- -l
- label — 您在「钥匙串访问」应用中看到的名称;-U 可就地更新已有条目。
- -w
- 不带值 — 提示输入密钥。这正是让密钥不出现在 ~/.zsh_history 和进程列表中的关键所在。
2 · 将 jmapcli 指向您的服务器。 一次性注册账户;密钥直接从您刚才存储的钥匙串条目中获取,永远不会出现在命令行中。
$ jmapcli login --url https://mail.example.com --username you@example.com \
--password "$(security find-generic-password -s jmap-password -a you@example.com -w)"
# token auth: swap --password for --token (and store under jmap-token above)
$ jmapcli list # from here on, every command reads the Keychain for you
3.1
历史记录、日志 — 以及 AI 上下文中均无痕迹
密钥一旦存入钥匙串,日常命令(list、send、draft、sync)就不再携带密码,因此密码不会被记录到 ~/.zsh_history、进程列表或 CI 日志中。这正是 jmapcli 可以安全地与终端 AI 工具配合使用的原因 — 代理获得的是一个 JMAP 客户端,而非您的密钥。
— zsh
CI · agents
3.2
轮换密钥或退出登录
更改了密码?重新执行 security add-generic-password … -w 命令 — -U 会就地覆盖原有条目。若要移除账户,jmapcli logout 一步删除配置条目和钥匙串密钥(--all 可清除所有账户)。
— rotate
logout
3.3
每台 Mac 各自独立 — 有意为之
登录钥匙串不通过 iCloud 同步 — 这是有意设定的边界,确保您的密码永远不会离开您输入它的那台 Mac。每台 Mac 只需执行一次 security 步骤;config.json 不含任何密钥,可以随同步的主目录一起使用。
— per
machine