Boogie
jmapcli · JMAP من الطرفية
01.
v1.4.0 · macOS
عميل JMAP أصلي لسطر الأوامر.

JMAP من سطر الأوامر.

jmapcli يتحدث JMAP إلى Stalwart (وأي خادم JMAP) مباشرة من طرفيتك — أرسل واقرأ وابحث وزامن وانقل وأدر بريدك. Swift أصلي، بيانات الاعتماد في Keychain على macOS، بلا تتبّع.

$ brew tap jasonhollis/boogie && brew install jmapcli $ jmapcli login # مخزّنة في Keychain على macOS $ 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 — ثنائي واحد موقّع، بلا تبعيات للترجمة. التحديثات عبر brew upgrade.
— macOS
Apple silicon
2.2
مصادقة Keychain
تُقرأ بيانات الاعتماد من Keychain لتسجيل الدخول في macOS حسب هوية JMAP. لا شيء في dotfiles، ولا شيء في env vars.
— security
find-generic
2.3
بلا تتبّع
لا تتصل الأداة بأي جهة. الشبكة الوحيدة التي تلمسها هي خادم JMAP الخاص بك.
— zero
SDKs
03.
— Section 3
Credentials
macOS Keychain

كلمة مرورك لا تلمس القرص أبدًا.

لا يحتفظ jmapcli بأي سر على القرص. تُخزَّن كلمة مرورك (أو رمز الحامل) في سلسلة مفاتيح تسجيل الدخول بـ macOS؛ أما ملف الحساب — ~/.config/jmapcli/config.json، وضع 0600 — فلا يحتوي إلا على عنوان URL للخادم واسم المستخدم وعلامة افتراضية. جديد على سلسلة المفاتيح من الطرفية؟ سير العمل بالكامل ثلاثة أوامر 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 لرمز الحامل (مثل Fastmail)؛ حدِّد فقط ما تستخدمه.
-a
account — عنوان بريدك الإلكتروني (نفس اسم المستخدم الذي تمنحه لـ jmapcli).
-l
label — ما ستراه في تطبيق Keychain Access؛ -U يُحدِّث عنصرًا موجودًا في مكانه.
-w
بدون قيمة — يطلب إدخال السر. هذا هو الجزء الذي يبقيه بعيدًا عن ~/.zsh_history وقائمة العمليات.

2 · وجِّه jmapcli إلى خادمك. سجِّل الحساب مرة واحدة؛ يُسحب السر مباشرةً من عنصر سلسلة المفاتيح الذي خزَّنته للتو، ولن يظهر أبدًا في سطر الأوامر.

$ 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
لا شيء في سجلاتك أو سجلات النظام — ولا في سياق أي ذكاء اصطناعي
بمجرد تخزين السر في سلسلة المفاتيح، لن تحمل الأوامر اليومية (list، send، draft، sync) كلمة مرور، لذلك لا يمكن التقاطها في ~/.zsh_history أو قائمة العمليات أو سجلات CI. هذا ما يجعل jmapcli آمنًا للاستخدام مع أدوات الذكاء الاصطناعي في الطرفية — يحصل الوكيل على عميل JMAP، لا على سرك.
— zsh
CI · agents
3.2
تحديث كلمة المرور أو تسجيل الخروج
غيَّرت كلمة مرورك؟ أعِد تشغيل سطر security add-generic-password … -w — الخيار -U يستبدله في مكانه. لإزالة حساب، يحذف jmapcli logout كلًا من إدخال الإعدادات وسر سلسلة المفاتيح في خطوة واحدة (--all يمسح جميع الحسابات).
— rotate
logout
3.3
مرتبط بكل جهاز Mac بتصميم مقصود
سلسلة مفاتيح تسجيل الدخول لا تُزامَن عبر iCloud — حدٌّ مقصود، لكي لا تغادر كلمة مرورك الـ Mac الذي كتبتها عليه. كرِّر خطوة security مرة واحدة لكل Mac؛ يمكن نقل config.json في مجلد منزلي مزامَن لأنه لا يحتوي على أي سر.
— 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
النقل إلى صندوق بريد، أو النقل إلى المهملات، أو الحذف النهائي حسب المعرّف
sync
تنفيذ مزامنة تفاضلية وعرض ما تغيّر
contacts
جهات اتصال JSContact: عرض، إضافة، تعديل، حذف، استيراد أسماء مستعارة
calendar
عرض التقويمات والأحداث، كتابة الأحداث، تعيين ألوان التقويم
sieve
عرض مرشّحات Sieve على الخادم وجلبها والتحقق منها ورفعها
alias
إدارة أسماء المستلمين المستعارة
mcp
التشغيل كخادم Model Context Protocol لأدوات الذكاء الاصطناعي
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