Multipurpose Internet Mail Extensions (MIME) یک استاندارد است که برای گسترش قالب پیامهای ایمیل بهکار میرود و امکان ارسال فراتر از متن ساده را فراهم میسازد. به کمک MIME، میتوان درون پیامهای ایمیل، محتوای چندرسانهای مانند تصاویر، صدا، ویدیو، فایلهای پیوست و سایر انواع دادهها را انتقال داد. در واقع، MIME به ایمیلها اجازه میدهد که متنوعتر، غنیتر و کاربردیتر باشند و از قالب محدود متنی ASCII خارج شوند.
آنچه در ادامه میخوانید:
پروتکل MIME (Multipurpose Internet Mail Extension)
پروتکل MIME برای افزایش قابلیتهای پیامهای ایمیل طراحی شده است تا امکان ارسال انواع متنوعتری از محتوا را فراهم کند، در حالی که سیستمهای ایمیل سنتی فقط از متن ساده ASCII پشتیبانی میکردند. MIME با رمزگذاری (Encoding) محتوای پیام بهگونهای عمل میکند که اطمینان حاصل شود دادهها بدون از دست رفتن یا خراب شدن از طریق پروتکلهایی مانند Simple Mail Transfer Protocol (SMTP) پروتکل ساده انتقال ایمیل منتقل میشوند.
عملکرد MIME به این صورت است که:
دادهها را به فرمتی تبدیل میکند که برای انتقال از طریق ایمیل ایمن باشد (مانند تبدیل دادههای باینری به متن). همراه با محتوا، اطلاعات فرادادهای (Metadata) نیز ارسال میکند که به شناسایی نوع دادهها (مانند تصویر، ویدیو، فایل، متن و...) کمک میکند.
به این ترتیب، MIME امکان ارسال ایمیلهایی با محتوای چندرسانهای و ساختار یافته را فراهم میسازد، بدون اینکه محدود به قالب ساده و ابتدایی ایمیلهای اولیه باشد.
ناتانیل بورنشتاین (Nathaniel Borenstein) در سال ۱۹۹۱، به عنوان عضو فنی از شرکت Bellcore، به کارگروه مهندسی اینترنت (IETF) پیشنهاد داد که پروتکل SMTP گسترش یابد تا مشتریها (کلاینتها) و سرورهای وب (و سایر خدمات اینترنتی) بتوانند همه نوع داده را تشخیص داده و پردازش کنند. این داده ها شامل متنهایی که بر پایه الفبای لاتین و کد ASCII است، میشود. همچنین این توسعه قرار بود امکان رمزگذاری فایلهای باینری برای انتقال از طریق SMTP را فراهم کند.
در نتیجه، انواع فایل جدیدی به «ایمیل» به عنوان نوع فایل پشتیبانیشده در پروتکل اینترنت افزوده شد. MIME به دادههای متنی محدود نمیشود و امروزه برای سایر پروتکلهای ارتباطی نیز اهمیت دارد، هرچند در ابتدا فقط برای رفع محدودیتهای ایمیل و SMTP طراحی شده بود.
نوعهای داده جدید MIME توسط مرجع تخصیص شمارههای اینترنتی (IANA) ثبت میشوند. سند RFC 6838 ازIETF، رویههای اعلام و ثبت انواع داده رسانهای (Media Types) را برای استفاده در MIME مشخص میکند. MIME محدودیتهای پروتکل ایمیل SMTP را که میتوانند منجر به آسیبپذیریهایی مانند جعل ایمیل (Email Spoofing) شوند، برطرف میکند.
MIME نسبت به SMTP مزایای متعددی دارد، از جمله:
MIME چهار نوع فرعی (Subtype) برای پیامهای چندبخشی تعریف میکند که ماهیت بخشهای مختلف و ارتباط بین آنها را مشخص میسازد. بهویژه، نوع فرعی "multipart/alternative" این امکان را فراهم میکند که سیستمها بتوانند بهترین نمایش پیام را مانند متن ساده یا نسخه HTML انتخاب کنند.
MIME با افزودن هدرهای اضافه به پیام ایمیل کار میکند. این هدرها، اطلاعاتی دربارهی موارد زیر ارائه میدهند:
ایمیلهایی که از قالببندی MIME استفاده میکنند، از طریق پروتکلهای استانداردی مانند SMTP ،POP یا IMAP منتقل میشوند. بدنه چنین پیامهایی میتواند از چندین بخش تشکیل شده باشد. در قسمت هدر پیام، میتوان از مجموعه نویسههای غیر ASCII استفاده کرد که MIME از آنها پشتیبانی میکند. سند RFC 2045 از IETF، ساختار و هدرهای مختلف مورد استفاده در پیامهای MIME را تعریف کرده است.
در هنگام ارسال ایمیل، سرور هدر MIME را در ابتدای پیام قرار میدهد کلاینت (گیرنده) از این هدر استفاده میکند تا نرمافزار مناسبی را برای نمایش نوع داده تشخیص دهد. برخی از این نرمافزارها در مرورگر یا کلاینت ایمیل به صورت داخلی تعبیه شدهاند برای مثال، مرورگرها بهطور پیشفرض توانایی نمایش فایلهای GIF، JPEG و HTML را دارند. اما برای سایر فرمتها ممکن است نیاز به دانلود برنامهای جداگانه باشد.
در سمت فرستنده، MIME دادههای غیر ASCII را به دادههای ۷-بیتی شبکهای (NVT) تبدیل میکند. کاراکترهای ASCII ،۷ بیتی میتوانند حداکثر ۱۲۸ کاراکتر را نمایش دهند. سپس MIME این دادههای تبدیلشده را به SMTP کلاینت ارسال میکند. در سمت گیرنده، پیام دوباره به داده اصلی بازگردانده میشود، تا بدون توجه به اینکه محتوا شامل متن، صدا، ویدیو یا نوع دیگری از دادهها باشد، بتوان آن را مشاهده کرد.
هدر MIME شامل چندین زیر بخش (Subpart) است که به شرح زیر توضیح داده میشود:
نکتهای که باید به آن توجه کنید این است که نوعهای MIME حساس به حروف بزرگ یا کوچک نیستند (Case-insensitive).
میتوان به MIME Type پارامترهای اختیاری اضافه کرد تا جزئیات بیشتری ارائه دهد. برای مثال، اگر پارامتر "charset" باشد، مجموعه نویسهای (Character Set) مورد استفاده برای داده را مشخص میکند. اگر این پارامتر مشخص نشود، MIME بهصورت پیشفرض از مجموعه نویسه ASCII استفاده میکند.
با استفاده از نوع multipart ،MIME این امکان را میدهد که پیامهای ایمیل دارای ساختاری درختی باشند تا از انواع محتوای زیر پشتیبانی شود:
Content-Disposition: این فیلد نحوه نمایش یا ارائه پیام ایمیل را مشخص میکند. دو نوع اصلی برای این فیلد وجود دارد:
مشخصات این فیلد در سند RFC 2183 تعریف شده است.
Content-Transfer-Encoding: این فیلد مشخص میکند که آیا یک روش رمزگذاری باینری به متنی (Binary-to-Text Encoding) برای انتقال دادهها استفاده شده است یا خیر؛ علاوه بر آنچه که در فیلد Content-Type تعیین شده است.
در ادامه مقاله، با پروتکل SMTP نیز آشنا خواهیم شد و خواهیم دید که چگونه با MIME همکاری میکند تا پیامها به مقصد برسند.
Simple Mail Transfer Protocol بهمعنای پروتکل ساده انتقال ایمیل است. این پروتکل تعریف میکند که ایمیل سرورها چگونه با یکدیگر ارتباط برقرار میکنند تا ایمیلها را ارسال و دریافت کنند.
SMTP بر پایه مدل کلاینت-سرور کار میکند، که در آن:
کلاینت، سرور ایمیل فرستنده است، و سرور، سرور ایمیل گیرنده است.
SMTP از دستورات (Commands) و پاسخها (Responses) برای تبادل اطلاعات و دادهها میان کلاینت و سرور استفاده میکند.
SMTP در سه مرحله اصلی کار میکند:
SMTP معمولاً همراه با MIME استفاده میشود تا بتواند پیامهایی با محتوای پیچیدهتر مثل فایلهای پیوست، تصاویر، HTML و غیره را نیز بهدرستی منتقل کند.
زمانی که شما یک ایمیل با پیوستها یا محتوای غنی (rich text) (مثل متن فرمتشده، تصویر یا ویدیو) ارسال میکنید، اتفاقات زیر رخ میدهد:
کلاینت ایمیل شما مثل Outlook یا Gmail، از MIME برای قالببندی و رمزگذاری محتوای ایمیل طبق استاندارد MIME استفاده میکند.
سپس همان کلاینت ایمیل، از SMTP برای اتصال به سرور ایمیل فرستنده مثلاً (example.com) استفاده میکند و دادههای ایمیل را به آن ارسال میکند. سرور ایمیل شما نیز از SMTP برای برقراری ارتباط با سرور ایمیل گیرنده (مثلاً example.net) استفاده میکند و پیام شما را به آن منتقل میکند.
سرور ایمیل گیرنده، ایمیل را در صف پیامها (Mail Queue) ذخیره میکند تا وقتی که گیرنده ایمیل خود را دریافت کند.
در نهایت، کلاینت ایمیل گیرنده مثلاً Outlook یا Gmail از MIME برای رمزگشایی و نمایش درست محتوای ایمیل استفاده میکند؛ خواه متن ساده باشد، یا محتوای HTML، یا فایلهای چندرسانهای.
در این مقاله، با دو پروتکل کلیدی که پایه و اساس ارتباطات ایمیلی در اینترنت هستند آشنا شدیم:
MIME برای قالببندی و رمزگذاری انواع مختلف داده جهت ارسال ایمیل و SMTP برای انتقال پیامها بین سرورهای ایمیل از طریق دستورات و پاسخها. همچنین دیدیم که چگونه MIME و SMTP با همکاری یکدیگر امکان ارسال و دریافت ایمیلهایی با پیوستها و محتوای پیشرفته را فراهم میکنند.
MIME (Multipurpose Internet Mail Extensions) یک استاندارد اینترنتی است که امکان ارسال محتوای چندرسانهای مانند تصویر، ویدیو، فایلهای پیوست و متن HTML را از طریق ایمیل فراهم میکند.
ایمیلها بهصورت پیشفرض فقط از متن ASCII پشتیبانی میکنند، MIME این محدودیت را با رمزگذاری دادههای غیراستاندارد و افزودن اطلاعات مربوط به نوع فایل برطرف میکند.
MIME، ایمیل را قالببندی کرده و محتوای آن را رمزگذاری میکند؛ سپس SMTP این پیام را بین سرورهای ایمیل منتقل میکند. MIME مسئول ساختار، SMTP مسئول ارسال است.
Content-Type نوع داده (مثلاً متن، تصویر، ویدیو) را مشخص میکند، در حالیکه Content-Disposition نحوه نمایش محتوا (درون متن یا بهصورت پیوست) را تعیین میکند.
MIME از روشهایی مانند Base64 برای تبدیل دادههای باینری به متن قابل انتقال از طریق ایمیل استفاده میکند تا اطلاعات آسیب نبینند.
MIME چهار نوع اصلی برای پیامهای چندبخشی دارد، از جمله multipart/alternative که امکان ارسال نسخههای مختلف از یک پیام (مثلاً HTML و متن ساده) را فراهم میسازد.
خیر. امروزه MIME در سایر پروتکلها مانند HTTP نیز برای تعیین نوع محتوا (Content-Type) استفاده میشود.
ناتانیل بورنشتاین در سال ۱۹۹۱ این استاندارد را پیشنهاد داد تا با ایمیل بتوان انواع مختلف دادهها را ارسال کرد.
انواع جدید MIME توسط سازمان IANA ثبت میشوند و باید طبق مشخصات RFC 6838 تعریف و اعلام شوند.
تا حدی بله. MIME با ساختاردهی بهتر پیامها میتواند برخی آسیبپذیریها مانند جعل فرمت ایمیل را کاهش دهد؛ اما بهتنهایی کافی نیست و برای امنیت کامل نیاز به استفاده از فناوریهایی مثل DKIM ،SPF و رمزنگاری است.
بله، برای مثال Gmail از پروتکل امنیت ایمیل MIME برای ارسال ایمیل استفاده میکند.