Boogie
jmapcli · টার্মিনাল থেকে JMAP
01.
v1.7.0 · macOS
একটি নেটিভ JMAP কমান্ড-লাইন ক্লায়েন্ট।

কমান্ড লাইন থেকে JMAP।

jmapcli আপনার টার্মিনাল থেকে সরাসরি Stalwart (এবং যেকোনো JMAP সার্ভার)-এর সাথে JMAP বলে — মেইল পাঠান, পড়ুন, অনুসন্ধান করুন, সিঙ্ক করুন, সরান এবং পরিচালনা করুন। নেটিভ Swift, ক্রেডেনশিয়াল macOS Keychain-এ, কোনো টেলিমেট্রি নেই।

$ brew install boogie-digital/boogie/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 install boogie-digital/boogie/jmapcli — একটি একক স্বাক্ষরিত বাইনারি, কম্পাইল করার জন্য কোনো ডিপেন্ডেন্সি নেই। আপগ্রেড করতে brew upgrade jmapcli।
— macOS
Apple silicon
2.2
Keychain প্রমাণীকরণ
ক্রেডেনশিয়াল JMAP পরিচয় অনুযায়ী macOS লগইন Keychain থেকে পড়া হয়। dotfiles-এ কিছু নেই, env vars-এ কিছু নেই।
— security
find-generic
2.3
কোনো টেলিমেট্রি নেই
এই টুল কাউকে কিছু রিপোর্ট করে না। এটি কেবল আপনার JMAP সার্ভারের সাথে নেটওয়ার্ক সংযোগ করে।
— zero
SDKs
03.
— Section 3
Credentials
macOS Keychain

আপনার পাসওয়ার্ড কখনো ডিস্কে সংরক্ষিত হয় না।

jmapcli ডিস্কে কোনো গোপন তথ্য রাখে না। আপনার পাসওয়ার্ড (বা bearer token) macOS লগইন Keychain-এ থাকে; অ্যাকাউন্ট ফাইল — ~/.config/jmapcli/config.json, মোড 0600 — শুধুমাত্র সার্ভার URL, আপনার ব্যবহারকারীনাম এবং একটি ডিফল্ট ফ্ল্যাগ সংরক্ষণ করে। টার্মিনাল থেকে Keychain ব্যবহারে নতুন? পুরো ওয়ার্কফ্লোটি মাত্র তিনটি বিল্ট-ইন security কমান্ড দিয়ে হয়।

১ · একটি গোপন তথ্য সংরক্ষণ করুন — এবং পুনরায় পড়ুন। 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, অথবা bearer token-এর জন্য jmap-token (যেমন Fastmail); শুধুমাত্র যেটি ব্যবহার করেন সেটি সেট করুন।
-a
account — আপনার ইমেইল ঠিকানা (jmapcli-কে যে ব্যবহারকারীনাম দেন সেটি)।
-l
label — Keychain Access অ্যাপে আপনি যা দেখবেন; -U বিদ্যমান আইটেমটি যথাস্থানে আপডেট করে।
-w
কোনো মান ছাড়া — গোপন তথ্যের জন্য প্রম্পট করে। এটিই সেই অংশ যা এটিকে ~/.zsh_history এবং প্রসেস তালিকা থেকে দূরে রাখে।

২ · 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
আপনার হিস্ট্রি, লগ — বা কোনো AI-এর কনটেক্সটে কিছু নেই
একবার গোপন তথ্য Keychain-এ গেলে, দৈনন্দিন কমান্ডগুলো (list, send, draft, sync) কখনো পাসওয়ার্ড বহন করে না, তাই এটি ~/.zsh_history, প্রসেস তালিকা বা CI লগে ধরা পড়তে পারে না। এটিই jmapcli-কে টার্মিনাল-AI টুল থেকে চালানোর জন্য নিরাপদ করে তোলে — একটি এজেন্টের হাতে একটি JMAP ক্লায়েন্ট তুলে দেওয়া হয়, আপনার গোপন তথ্য নয়।
— zsh
CI · agents
3.2
রোটেট করুন বা সাইন আউট করুন
পাসওয়ার্ড পরিবর্তন করেছেন? security add-generic-password … -w লাইনটি পুনরায় চালান — -U এটি যথাস্থানে ওভাররাইট করে। একটি অ্যাকাউন্ট সরাতে, jmapcli logout এক ধাপেই কনফিগ এন্ট্রি এবং Keychain গোপন তথ্য উভয়ই মুছে দেয় (--all প্রতিটি অ্যাকাউন্ট সাফ করে)।
— rotate
logout
3.3
ডিজাইন অনুযায়ী প্রতিটি Mac-এর জন্য আলাদা
লগইন Keychain iCloud-এর মাধ্যমে সিঙ্ক হয় না — এটি একটি ইচ্ছাকৃত সীমানা, যাতে আপনার পাসওয়ার্ড যে Mac-এ টাইপ করেছেন সেটি কখনো না ছেড়ে যায়। প্রতিটি Mac-এ একবার security ধাপটি পুনরাবৃত্তি করুন; config.json একটি সিঙ্ক করা হোম ফোল্ডারে রাখা যায় কারণ এটি কোনো গোপন তথ্য বহন করে না।
— per
machine
04.
— Section 4
Commands
One verb each

সবকিছুই একটি সাবকমান্ড।

login
কোনো JMAP সার্ভারের ক্রেডেনশিয়াল Keychain-এ সংরক্ষণ করুন
discover
সার্ভার থেকে JMAP সেশন আবিষ্কার করুন
accounts
কনফিগার করা অ্যাকাউন্ট ও প্রতিটি পাঠানোযোগ্য পরিচয় তালিকাভুক্ত করুন
identity
আপনার সব অ্যাকাউন্ট জুড়ে প্রতিটি প্রেরণযোগ্য পরিচয় তালিকাভুক্ত করুন, এবং কোনো একটির জন্য সার্ভার যে প্রদর্শন নাম দেখায় তা সেট করুন।
mailboxes
সব মেইলবক্স তালিকাভুক্ত করুন
list
কোনো মেইলবক্সের ইমেইল তালিকাভুক্ত করুন
search
টেক্সট, বিষয়, প্রেরক, প্রাপক বা বডি দিয়ে মেল খুঁজুন (সার্ভার-সাইড)
read
সম্পূর্ণ ইমেইল বিষয়বস্তু দেখান (Markdown-রেন্ডার)
attachments
একটি ইমেইলের সংযুক্তিগুলির তালিকা দেখান, অথবা সেগুলি একটি ফোল্ডারে সংরক্ষণ করুন
send
JMAP Submission-এর মাধ্যমে যেকোনো পাঠানোযোগ্য পরিচয় থেকে ইমেল পাঠান (--from)
reply
ID দিয়ে মেসেজে উত্তর দিন, থ্রেডে ও মূল লেখা উদ্ধৃত করে
forward
ID দিয়ে মেসেজ ফরোয়ার্ড করুন, সংযুক্তি পুনরায় জুড়ে
draft
না পাঠিয়ে Drafts-এ ইমেল সাজিয়ে রাখুন
move · trash · delete
কোনো মেইলবক্সে সরান, Trash-এ পাঠান, বা ID দিয়ে স্থায়ীভাবে মুছে ফেলুন
sync
ডেল্টা সিঙ্ক করুন এবং কী পরিবর্তিত হয়েছে দেখান
contacts
JSContact পরিচিতি: তালিকা, যোগ, সম্পাদনা, মুছুন, উপনাম আমদানি
calendar
ক্যালেন্ডার ও ইভেন্ট তালিকাভুক্ত করুন, ইভেন্ট লিখুন, ক্যালেন্ডারের রং সেট করুন
sieve
সার্ভার-সাইড Sieve ফিল্টার তালিকা, আনুন, যাচাই ও পুশ করুন
alias
প্রাপকের উপনাম পরিচালনা করুন
mcp
AI টুলিংয়ের জন্য Model Context Protocol সার্ভার হিসেবে চালান
logout
সংরক্ষিত ক্রেডেনশিয়াল সরান
05.
— Section 5
Changelog
Every release

নতুন যা এল।

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
— Boogie-এর অংশ

সম্পূর্ণ অ্যাপ চান?

jmapcli বিনামূল্যে
নেটিভ Mail + Calendar অ্যাপ App Store-এ আছে
KTP Digital Pty Ltd · ABN 85 648 755 980