03.
— Section 3
Credentials
macOS Keychain
Ваш пароль никогда не попадает на диск.
jmapcli не хранит никаких секретов на диске. Ваш пароль (или bearer-токен) хранится в macOS login Keychain; файл учётной записи — ~/.config/jmapcli/config.json, режим 0600 — содержит только URL сервера, имя пользователя и флаг по умолчанию. Впервые работаете с Keychain из терминала? Весь процесс состоит из трёх встроенных команд security.
1 · Сохраните секрет — и считайте его обратно. macOS запрашивает значение, поэтому секрет никогда не вводится в командной строке, не отображается на экране и не записывается в историю оболочки.
# 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 для пароля или jmap-token для bearer-токена (например, Fastmail); укажите только то, что используете.
- -a
- account — ваш адрес электронной почты (то же имя пользователя, которое вы указываете в jmapcli).
- -l
- label — название, которое вы увидите в приложении Keychain Access; -U обновляет существующий элемент на месте.
- -w
- без значения — запрос секрета. Именно это не позволяет ему попасть в ~/.zsh_history и список процессов.
2 · Укажите jmapcli ваш сервер. Зарегистрируйте учётную запись один раз; секрет извлекается напрямую из только что сохранённого элемента Keychain и никогда не появляется в командной строке.
$ 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
# OAuth — no app password to create, copy, or rotate.
# Your browser opens once; the token lands in the Keychain under jmap-oauth.
$ jmapcli login --url https://api.fastmail.com --username you@fastmail.com --oauth
# Stalwart — or any server that speaks RFC 8252 — same flag.
$ jmapcli login --url https://mail.example.com --username you@example.com --oauth
3.1
Ничего в истории, журналах — и в контексте ИИ
После того как секрет помещён в Keychain, повседневные команды (list, send, draft, sync) никогда не передают пароль, поэтому он не может быть перехвачен в ~/.zsh_history, списке процессов или журналах CI. Именно это делает jmapcli безопасным для работы с инструментами терминального ИИ — агент получает JMAP-клиент, но никогда не получает ваш секрет.
— zsh
CI · agents
3.2
Смена пароля или выход из системы
Изменили пароль? Повторно выполните команду security add-generic-password … -w — -U перезапишет его на месте. Чтобы удалить учётную запись, jmapcli logout одним шагом удаляет и запись конфигурации, и секрет из Keychain (--all очищает все учётные записи).
— rotate
logout
3.3
Привязка к Mac по замыслу
Login Keychain не синхронизируется через iCloud — это намеренное ограничение: ваш пароль никогда не покидает Mac, на котором вы его ввели. Выполните шаг с security один раз на каждом Mac; config.json можно хранить в синхронизируемой домашней папке, поскольку он не содержит секретов.
— per
machine