03.
— Section 3
Credentials
macOS Keychain
Twoje hasło nigdy nie trafia na dysk.
jmapcli nie przechowuje żadnych sekretów na dysku. Twoje hasło (lub token Bearer) jest przechowywane w Keychain logowania macOS; plik konfiguracyjny — ~/.config/jmapcli/config.json, tryb 0600 — zawiera jedynie adres URL serwera, nazwę użytkownika i flagę domyślną. Dopiero zaczynasz z Keychain z poziomu terminala? Cały przepływ pracy sprowadza się do trzech wbudowanych poleceń security.
1 · Zapisz sekret — i odczytaj go z powrotem. macOS prosi o podanie wartości, dzięki czemu sekret nigdy nie jest wpisywany w wierszu poleceń, wyświetlany na ekranie ani zapisywany w historii powłoki.
# 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 — nazwa, której szuka jmapcli: jmap-password dla hasła lub jmap-token dla tokenu Bearer (np. Fastmail); ustaw tylko ten, którego używasz.
- -a
- account — Twój adres e-mail (ta sama nazwa użytkownika, którą podajesz w jmapcli).
- -l
- label — to, co zobaczysz w aplikacji Keychain Access; -U aktualizuje istniejący wpis w miejscu.
- -w
- bez wartości — monit o podanie sekretu. To właśnie ten element sprawia, że sekret nie trafia do ~/.zsh_history ani na listę procesów.
2 · Wskaż jmapcli swój serwer. Zarejestruj konto raz; sekret jest pobierany bezpośrednio z właśnie zapisanego wpisu w Keychain, dzięki czemu nigdy nie pojawia się w wierszu poleceń.
$ 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
Nic w historii, logach — ani w kontekście AI
Gdy sekret jest w Keychain, codzienne polecenia (list, send, draft, sync) nigdy nie przenoszą hasła, więc nie może ono zostać przechwycone przez ~/.zsh_history, listę procesów ani logi CI. To właśnie sprawia, że jmapcli jest bezpieczny w użyciu z narzędziami AI w terminalu — agent otrzymuje klienta JMAP, nigdy Twój sekret.
— zsh
CI · agents
3.2
Rotacja hasła lub wylogowanie
Zmieniłeś hasło? Uruchom ponownie linię security add-generic-password … -w — -U nadpisuje je w miejscu. Aby usunąć konto, jmapcli logout usuwa jednocześnie wpis konfiguracyjny i sekret z Keychain (--all czyści wszystkie konta).
— rotate
logout
3.3
Jeden Mac — z założenia
Keychain logowania nie jest synchronizowany przez iCloud — to celowa granica, dzięki której Twoje hasło nigdy nie opuszcza Maca, na którym je wpisałeś. Wykonaj krok security raz na każdym Macu; config.json może być przechowywany w synchronizowanym folderze domowym, ponieważ nie zawiera żadnych sekretów.
— per
machine