03.
— Section 3
Credentials
macOS Keychain
您的密碼從不寫入磁碟。
jmapcli 不在磁碟上保存任何機密。您的密碼(或 bearer token)儲存於 macOS 登入鑰匙圈;帳號設定檔 — ~/.config/jmapcli/config.json,權限 0600 — 只包含伺服器網址、使用者名稱及預設旗標。第一次在終端機使用鑰匙圈?整個流程只需三個內建的 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 token(例如 Fastmail)使用 jmap-token;只需設定您實際使用的那一個。
- -a
- account — 您的電子郵件地址(即您提供給 jmapcli 的使用者名稱)。
- -l
- label — 在「鑰匙圈存取」App 中顯示的名稱;-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 工具使用的原因 — 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