Boogie
jmapcli · JMAP aus dem Terminal
01.
v1.7.0 · macOS
Ein nativer JMAP-Kommandozeilen-Client.

JMAP von der Kommandozeile.

jmapcli spricht JMAP mit Stalwart (und jedem JMAP-Server) direkt aus Ihrem Terminal — senden, lesen, durchsuchen, synchronisieren, verschieben und verwalten Sie E-Mails. Natives Swift, Anmeldedaten im macOS Keychain, keine Telemetrie.

$ brew install boogie-digital/boogie/jmapcli $ jmapcli login # im macOS Keychain gespeichert $ jmapcli send --to you@example.com --subject "Hi" --body "From the CLI"
02.
— Section 2
Install
Homebrew

Eine Zeile. Signiert.

2.1
Homebrew tap
brew install boogie-digital/boogie/jmapcli — eine einzelne signierte Binärdatei, keine Abhängigkeiten zum Kompilieren. Updates über brew upgrade jmapcli.
— macOS
Apple silicon
2.2
Keychain-Authentifizierung
Anmeldedaten werden anhand der JMAP-Identität aus dem macOS Login-Keychain gelesen. Nichts in dotfiles, nichts in env vars.
— security
find-generic
2.3
Keine Telemetrie
Das Tool funkt nirgendwohin. Das einzige Netzwerk, das es kontaktiert, ist Ihr JMAP-Server.
— zero
SDKs
03.
— Section 3
Credentials
macOS Keychain

Dein Passwort berührt nie die Festplatte.

jmapcli speichert kein Geheimnis auf der Festplatte. Dein Passwort (oder Bearer-Token) liegt im macOS-Login-Schlüsselbund; die Account-Datei — ~/.config/jmapcli/config.json, Modus 0600 — enthält nur die Server-URL, deinen Benutzernamen und ein Standard-Flag. Neu beim Schlüsselbund aus dem Terminal? Der gesamte Ablauf besteht aus drei eingebauten security-Befehlen.

1 · Geheimnis speichern — und wieder auslesen. macOS fragt nach dem Wert, sodass das Geheimnis niemals in der Befehlszeile eingegeben, auf dem Bildschirm angezeigt oder in deine Shell-Historie geschrieben wird.

# 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 — der Name, den jmapcli nachschlägt: jmap-password für ein Passwort, oder jmap-token für ein Bearer-Token (z. B. Fastmail); setze nur den, den du verwendest.
-a
account — deine E-Mail-Adresse (derselbe Benutzername, den du jmapcli übergibst).
-l
label — was du in der Schlüsselbundverwaltung siehst; -U aktualisiert einen vorhandenen Eintrag an Ort und Stelle.
-w
ohne Wert — fordert zur Eingabe des Geheimnisses auf. Das ist der Teil, der es aus ~/.zsh_history und der Prozessliste heraushält.

2 · jmapcli auf deinen Server zeigen. Registriere den Account einmalig; das Geheimnis wird direkt aus dem soeben gespeicherten Schlüsselbund-Eintrag geladen und erscheint so nie in der Befehlszeile.

$ 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
Nichts in deiner Historie, in Logs — oder im Kontext einer KI
Sobald das Geheimnis im Schlüsselbund liegt, übermitteln alltägliche Befehle (list, send, draft, sync) niemals ein Passwort — es kann also nicht in ~/.zsh_history, einer Prozessliste oder CI-Logs auftauchen. Das macht jmapcli sicher für den Einsatz mit Terminal-KI-Tools — ein Agent erhält einen JMAP-Client, niemals dein Geheimnis.
— zsh
CI · agents
3.2
Rotieren oder abmelden
Passwort geändert? Führe die Zeile security add-generic-password … -w erneut aus — -U überschreibt den Eintrag an Ort und Stelle. Um einen Account zu entfernen, löscht jmapcli logout sowohl den Konfigurationseintrag als auch das Schlüsselbund-Geheimnis in einem Schritt (--all löscht jeden Account).
— rotate
logout
3.3
Pro Mac — bewusst so
Der Login-Schlüsselbund wird nicht über iCloud synchronisiert — eine bewusste Grenze, damit dein Passwort den Mac, auf dem du es eingegeben hast, nie verlässt. Wiederhole den security-Schritt einmalig pro Mac; config.json kann in einem synchronisierten Home-Ordner liegen, da es kein Geheimnis enthält.
— per
machine
04.
— Section 4
Commands
One verb each

Alles ist ein Unterbefehl.

login
Anmeldedaten für einen JMAP-Server im Keychain speichern
discover
Die JMAP-Sitzung vom Server ermitteln
accounts
Konfigurierte Konten und alle versandfähigen Identitäten auflisten
identity
Listet alle sendefähigen Identitäten über Ihre Konten hinweg auf und legt den Anzeigenamen fest, den der Server für eine davon anzeigt.
mailboxes
Alle Postfächer auflisten
list
E-Mails in einem Postfach auflisten
search
Mail nach Text, Betreff, Absender, Empfänger oder Inhalt durchsuchen (serverseitig)
read
Vollständigen E-Mail-Inhalt anzeigen (Markdown-gerendert)
attachments
Die Anhänge einer E-Mail auflisten oder in einen Ordner speichern
send
Eine E-Mail per JMAP Submission senden, von jeder versandfähigen Identität (--from)
reply
Auf eine Nachricht per ID antworten, im Thread und mit zitiertem Original
forward
Eine Nachricht per ID weiterleiten, samt ihrer Anhänge
draft
Eine E-Mail in Drafts ablegen, ohne sie zu senden
move · trash · delete
In ein Postfach verschieben, in den Papierkorb verschieben oder per ID dauerhaft löschen
sync
Einen Delta-Sync durchführen und Änderungen anzeigen
contacts
JSContact-Kontakte: auflisten, hinzufügen, bearbeiten, entfernen, Aliase importieren
calendar
Kalender und Termine auflisten, Termine schreiben, Kalenderfarben setzen
sieve
Serverseitige Sieve-Filter auflisten, abrufen, prüfen und hochladen
alias
Empfänger-Aliase verwalten
mcp
Als Model Context Protocol-Server für KI-Tools ausführen
logout
Gespeicherte Anmeldedaten entfernen
05.
— Section 5
Changelog
Every release

Was ist neu.

v1.7.0
Reply-To and display names: --reply-to sets a message's Reply-To on send, draft, reply and forward, staged drafts included, and replaces the sending identity's own Reply-To for that message. --to, --cc and --bcc now take Name <addr>, so "Jane Doe <jane@example.com>" goes out as a name and an address; a bare address is unchanged. — 2026-10-15
v1.6.0
Attachments: jmapcli attachments lists an email's attachments (index, name, type, size) and --save writes one or all of them to a folder, refusing to overwrite an existing file unless --force. The MCP server gains the same surface: mail.read now reports attachment metadata and the new mail.save_attachment tool writes one attachment to a local directory. — 2026-09-28
v1.5.0
OAuth login: jmapcli login --oauth is a first-class alternative to --password and --token, using loopback PKCE (RFC 8252) and dynamic client registration (RFC 7591). The token is held in the macOS Keychain under jmap-oauth. Verified against Fastmail and Stalwart; app-password and token login are unchanged. — 2026-09-01
v1.4.6
identity list (id, display name, email) and identity set --name to write the server Identity display name. Role aliases no longer have to be renamed via raw Identity/set. — 2026-08-24
v1.4.5
JMAP core from Boogie 1.4.5: Stalwart aliases now appear as send-as identities (accounts identities and send --from); send, contacts, and calendar library fixes from the 1.4.5 cycle. — 2026-08-24
v1.4.0
Full-text search (text, subject, from, to, body); threaded reply and forward; draft — stage in Drafts without sending; multi-account: accounts and identities, and send/reply/forward as any sendable identity via --from; contacts import-aliases; faster multi-recipient sends. — 2026-06-24
v1.3.1
Calendar event write (add, edit, remove); offline-first hardening. — 2026-06-20
v1.3.0
JSContact contacts — read and write, with a lossless round-trip. — 2026-06-15
v1.2.0
Sieve filters — list, get, validate, and push server-side mail rules. — 2026-06-12
v1.1.0
Calendar — list calendars and events, set colours. — 2026-06-11
v1.0.0
Initial release — send, read, search, sync, and triage mail from the terminal, credentials in the macOS Keychain. — 2026-06-06
— Teil von Boogie

Möchten Sie die vollständige App?

jmapcli ist kostenlos
die native Mail- + Kalender-App ist im App Store
KTP Digital Pty Ltd · ABN 85 648 755 980