Boogie
jmapcli · JMAP จากเทอร์มินัล
01.
v1.4.0 · macOS
ไคลเอนต์บรรทัดคำสั่ง JMAP แบบเนทีฟ

JMAP จากบรรทัดคำสั่ง

jmapcli สื่อสารด้วย JMAP กับ Stalwart (และเซิร์ฟเวอร์ JMAP ใดก็ได้) โดยตรงจากเทอร์มินัลของคุณ — ส่ง อ่าน ค้นหา ซิงค์ ย้าย และจัดการอีเมล เขียนด้วย Swift ล้วน เก็บข้อมูลรับรองไว้ใน macOS Keychain ไม่มีการเก็บข้อมูลการใช้งาน

$ brew tap jasonhollis/boogie && brew install jmapcli $ jmapcli login # เก็บไว้ใน macOS Keychain $ jmapcli send --to you@example.com --subject "Hi" --body "From the CLI"
02.
— Section 2
Install
Homebrew

บรรทัดเดียว ลงนามแล้ว

2.1
Homebrew tap
brew tap jasonhollis/boogie && brew install jmapcli — ไบนารีที่ลงนามแล้วเพียงไฟล์เดียว ไม่มี dependency ให้คอมไพล์ อัปเกรดผ่าน brew upgrade.
— macOS
Apple silicon
2.2
การยืนยันตัวตนผ่าน Keychain
ข้อมูลรับรองถูกอ่านจาก macOS login Keychain ตามแต่ละ JMAP identity ไม่มีอะไรอยู่ใน dotfiles ไม่มีอะไรอยู่ใน env vars
— security
find-generic
2.3
ไม่มีการเก็บข้อมูลการใช้งาน
เครื่องมือนี้ไม่ส่งข้อมูลกลับไปที่ใดเลย เครือข่ายเดียวที่มันเชื่อมต่อคือเซิร์ฟเวอร์ JMAP ของคุณ
— zero
SDKs
03.
— Section 3
Credentials
macOS Keychain

รหัสผ่านของคุณไม่เคยแตะดิสก์

jmapcli ไม่เก็บความลับใดไว้บนดิสก์ รหัสผ่าน (หรือ bearer token) ของคุณอยู่ใน Keychain สำหรับเข้าสู่ระบบ macOS ส่วนไฟล์บัญชี — ~/.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 token (เช่น Fastmail) ตั้งค่าเฉพาะตัวที่คุณใช้งาน
-a
account — ที่อยู่อีเมลของคุณ (ชื่อผู้ใช้เดียวกับที่คุณให้ jmapcli)
-l
label — สิ่งที่คุณจะเห็นในแอป Keychain Access; -U อัปเดตรายการที่มีอยู่แบบ in-place
-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
3.1
ไม่มีอะไรในประวัติ, ล็อก — หรือบริบทของ AI
เมื่อความลับอยู่ใน Keychain แล้ว คำสั่งประจำวัน (list, send, draft, sync) จะไม่มีรหัสผ่านแนบไปด้วย ดังนั้นจึงไม่สามารถถูกจับได้ใน ~/.zsh_history, รายการโปรเซส หรือล็อก CI ซึ่งทำให้ jmapcli ใช้งานร่วมกับเครื่องมือ terminal-AI ได้อย่างปลอดภัย — agent จะได้รับ JMAP client ไม่ใช่ความลับของคุณ
— zsh
CI · agents
3.2
หมุนเวียนหรือออกจากระบบ
เปลี่ยนรหัสผ่านแล้ว? รันบรรทัด security add-generic-password … -w อีกครั้ง — -U จะเขียนทับแบบ in-place หากต้องการลบบัญชี jmapcli logout จะลบทั้งรายการ config และความลับใน Keychain ในขั้นตอนเดียว (--all ล้างทุกบัญชี)
— rotate
logout
3.3
แยกตาม Mac โดยการออกแบบ
Keychain สำหรับเข้าสู่ระบบไม่ซิงค์ผ่าน iCloud — เป็นขอบเขตที่ตั้งใจไว้ เพื่อให้รหัสผ่านของคุณไม่ออกจาก Mac ที่คุณพิมพ์ลงไป ทำขั้นตอน security ซ้ำหนึ่งครั้งต่อ Mac; config.json สามารถอยู่ในโฟลเดอร์ home ที่ซิงค์ได้เพราะไม่มีความลับอยู่ในนั้น
— per
machine
04.
— Section 4
Commands
One verb each

ทุกอย่างคือซับคอมมานด์

login
เก็บข้อมูลรับรองสำหรับเซิร์ฟเวอร์ JMAP ไว้ใน Keychain
discover
ค้นพบเซสชัน JMAP จากเซิร์ฟเวอร์
accounts
แสดงรายการบัญชีที่ตั้งค่าไว้และตัวตนที่ส่งได้ทุกตัว
mailboxes
แสดงรายการกล่องจดหมายทั้งหมด
list
แสดงรายการอีเมลในกล่องจดหมาย
search
ค้นหาเมลจากข้อความ หัวเรื่อง ผู้ส่ง ผู้รับ หรือเนื้อหา (ฝั่งเซิร์ฟเวอร์)
read
แสดงเนื้อหาอีเมลทั้งหมด (แสดงผลแบบ Markdown)
send
ส่งอีเมลผ่าน JMAP Submission จากตัวตนที่ส่งได้ตัวใดก็ได้ (--from)
reply
ตอบกลับข้อความตาม ID แบบจัดเธรดพร้อมอ้างอิงต้นฉบับ
forward
ส่งต่อข้อความตาม ID พร้อมแนบไฟล์เดิมกลับเข้าไป
draft
พักอีเมลไว้ใน Drafts โดยไม่ส่ง
move · trash · delete
ย้ายเข้ากล่องจดหมาย ย้ายไปถังขยะ หรือทำลายถาวรด้วย ID
sync
ทำการซิงค์ส่วนต่างและแสดงสิ่งที่เปลี่ยนแปลง
contacts
รายชื่อติดต่อ JSContact: แสดง เพิ่ม แก้ไข ลบ นำเข้านามแฝง
calendar
แสดงปฏิทินและกิจกรรม เขียนกิจกรรม ตั้งสีปฏิทิน
sieve
แสดง ดึง ตรวจสอบ และส่งตัวกรอง Sieve ฝั่งเซิร์ฟเวอร์
alias
จัดการนามแฝงผู้รับ
mcp
เรียกใช้เป็นเซิร์ฟเวอร์ Model Context Protocol สำหรับเครื่องมือ AI
logout
ลบข้อมูลรับรองที่เก็บไว้
05.
— Section 5
Changelog
Every release

มีอะไรใหม่

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
— ส่วนหนึ่งของ Boogie

ต้องการแอปฉบับเต็มไหม?

jmapcli ฟรี
แอปอีเมล + ปฏิทินแบบเนทีฟมีอยู่บน App Store
KTP Digital Pty Ltd · ABN 85 648 755 980