بیشتر وبمیلها هنوز با پروتکل IMAP با سرور ایمیل حرف میزنند. IMAP در سال ۱۹۸۶ طراحی شد و نسخهٔ فعلی آن، IMAP4rev2 (RFC 9051، اوت ۲۰۲۱)، هنوز یک پروتکل متنی و حالتدار است که برای کلاینت دسکتاپی ساخته شده که یک اتصال طولانی را باز نگه میدارد. تب مرورگر نوع دیگری از کلاینت است: باز و بسته میشود، در مسیر اینترنتش قطع میشود و همزمان صد کار میخواهد. JMAP (JSON Meta Application Protocol) برای همین کلاینت نوشته شده است. فنمیل روی Stalwart Mail Server متنباز اجرا میشود که هر دو پروتکل را پشتیبانی میکند و وبمیل ما از JMAP استفاده میکند.
JMAP چیست؟
JMAP یک استاندارد IETF برای همگامسازی ایمیل با سرور از طریق JSON روی HTTPS است. پروتکل پایه RFC 8620 (ژوئیهٔ ۲۰۱۹) و مدل دادهٔ ایمیل RFC 8621 (اوت ۲۰۱۹) است که هر دو را نیل جنکینز از Fastmail و کریس نیومن از Oracle نوشتهاند. سند بعدی، RFC 8887 (اوت ۲۰۲۰)، انتقال از طریق WebSocket را اضافه میکند. RFC 8621 طوری طراحی شده که یک سرور بتواند یک صندوق را همزمان با IMAP و JMAP ارائه دهد.
مقایسهٔ IMAP و JMAP
| IMAP (RFC 9051) | JMAP (RFC 8620/8621) | |
|---|---|---|
| قالب | فرمانهای متنی خطبهخط روی اتصال TCP پایدار | JSON روی HTTPS، با WebSocket اختیاری (RFC 8887) |
| چند کار همزمان | فرمانها پشت سر هم ارسال میشوند، اما هر پوشه وضعیت انتخابشدهٔ خودش را لازم دارد | چند فراخوانی در یک درخواست، و فراخوانیهای بعدی میتوانند از نتیجهٔ قبلیها استفاده کنند |
| ایمیل جدید | IDLE در هر اتصال فقط یک پوشهٔ انتخابشده را میپاید | Push برای همهٔ تغییرهای حساب و بعد دریافت فقط چیزهایی که تغییر کرده |
| اتصال دوباره پس از قطعی شبکه | کلاینت پوشهها را دوباره انتخاب و وضعیت را مقایسه میکند | کلاینت آخرین رشتهٔ وضعیتش را میفرستد و تغییرهای پس از آن را میگیرد |
| ارسال | پروتکل جدا (SMTP submission) | ارسال بخشی از همان API است |
| کلاینت مناسب | اپهای ایمیل دسکتاپ و گوشی | اپهای وب و موبایل که مدام باز و بسته میشوند |
این برای کسی که ایمیل میخواند چه تغییری میدهد
- کارهای دستهای یک درخواست است. جابهجا یا علامتگذاری صد پیام یک فراخوانی با فهرست شناسههاست، نه یک حلقه از فرمانها.
- باز کردن صندوق یک رفتوبرگشت است. کلاینت میتواند فهرست پیامها و سرآیند همان پیامها را در یک درخواست بخواهد، چون فراخوانی دوم به نتیجهٔ اولی ارجاع میدهد.
- قطع شدن اتصال هزینهٔ کمی دارد. بعد از قطعی اینترنت یا بستن درِ لپتاپ، کلاینت فقط تغییرهای پس از آخرین وضعیتش را میخواهد و پوشهها را دوباره نمیگردد.
- پیشنویس، رشتهٔ گفتوگو و ارسال در یک مدلاند. نویسندهٔ پیام لازم نیست پرچمهای IMAP و یک نشست SMTP جدا را به هم بدوزد.
چرا این موضوع در میزبانی روی سرور خودتان مهمتر است
یک ارائهدهندهٔ بزرگ میتواند پروتکل پرحرف را پشت لایههای کش و سختافزار زیاد پنهان کند. سرور روی زیرساخت خودتان روی ماشینهایی اجرا میشود که هزینهاش را میدهید، پس پروتکل مستقیم در حس کار با صندوق و بار سرور در چند هزار کاربر دیده میشود. رفتوبرگشت کمتر یعنی درخواست کمتر برای همان کار. اگر در حال تعیین سختافزار هستید، مقایسهٔ موتورها در Stalwart در برابر mailcow و Mailu در ۱۰ هزار صندوق آمده است.
JMAP برای همه جای IMAP را نمیگیرد. Outlook، Thunderbird و اپهای ایمیل گوشی هنوز با IMAP وصل میشوند و فنمیل IMAP را برایشان روشن نگه میدارد، پس مهاجرت به آن کسی را مجبور به عوض کردن کلاینت ایمیل نمیکند.
آزموده در مقیاس واقعی
فنمیل در مقیاس ۱۰ هزار صندوق بهعنوان جایگزین کامل IceWarp در حال اجراست و پنل مدیریت داخلی آن کارهای روزمرهٔ سرور را انجام میدهد. بخش هزینهٔ این مهاجرت در مطالعهٔ موردی هزینهٔ ایمیل روی سرور خودتان آمده است و اگر هنوز بین سرویس میزبانیشده و سرور خودتان مردد هستید، فنمیل در برابر Google Workspace و Zoho Mail را ببینید. وبمیل سریع هنوز به ورودی نیاز دارد که مردم واقعاً از آن استفاده کنند، برای همین فنمیل کد یکبارمصرف پیامکی کنار اپهای احراز هویت هم دارد. جزئیات محصول در صفحهٔ فنمیل است.
پرسشهای متداول
فرق JMAP و IMAP چیست؟
IMAP یک پروتکل متنی و حالتدار از ۱۹۸۶ است که امروز با نام IMAP4rev2 (RFC 9051) شناخته میشود و برای کلاینت دسکتاپی ساخته شده که اتصال را باز نگه میدارد. JMAP (RFC 8620 و RFC 8621، سال ۲۰۱۹) از JSON روی HTTPS استفاده میکند، چند کار را در یک درخواست جمع میکند، تغییرهای کل حساب را push میکند و اجازه میدهد کلاینت پس از قطعی از آخرین وضعیتش همگام شود.
آیا JMAP جایگزین IMAP میشود؟
نه برای همهٔ کلاینتها. RFC 8621 طوری طراحی شده که یک سرور بتواند یک صندوق را با هر دو پروتکل ارائه دهد. وبمیل و اپهای موبایل بیشترین سود را از JMAP میبرند، در حالی که Outlook، Thunderbird و اپهای ایمیل گوشی هنوز با IMAP وصل میشوند. فنمیل IMAP را روشن نگه میدارد تا کاربران کلاینت فعلیشان را نگه دارند.
کدام سرورهای ایمیل JMAP را پشتیبانی میکنند؟
Stalwart Mail Server، سرور متنبازی که فنمیل روی آن اجرا میشود، JMAP را کنار IMAP، POP3 و SMTP پشتیبانی میکند و فهرست RFCهایی را که پیاده کرده در مستنداتش آورده است. Fastmail هم که مهندسانش در نوشتن مشخصات JMAP شریک بودند از آن استفاده میکند. بسیاری از راهکارهای دیگر روی سرور خودتان هنوز فقط IMAP دارند.
آیا JMAP از IMAP سریعتر است؟
برای کلاینت وب معمولاً رفتوبرگشت کمتری لازم دارد. یک درخواست JMAP میتواند فهرست پیامها و سرآیند آنها را با هم بگیرد، صد پیام را میتوان در یک فراخوانی جابهجا کرد و کلاینتی که دوباره وصل میشود فقط تغییرهای پس از آخرین وضعیتش را میخواهد. حس سرعت همچنان به سرور، شبکه و کلاینت هم بستگی دارد.

