SMTP یا پروتکل انتقال ساده ایمیل، یک پروتکل لایه برنامه در TCP/IP است که طراحی شده تا مسیرهای مورد نیاز برای نرم افزار را جهت ارسال ایمیل بر روی بستر اینترنت یا اینترانت فراهم نماید. SMTP قوانین اساسی را برای تحویل یک پیام به یک سرور ایمیل مشخص میکند، جایی که محتویات آن توسط یک مشتری ایمیل قابل دریافت خواهد بود.
این پروتکل برای ارسال پیام از یک کامپیوتر یا یک کاربر بر پایهی آدرس پست الکترونیک، این امکان را فراهم میسازد تا به راحتی بتوان همان مسیر سنتی پست را در نرم افزار شبیهسازی نمود و نیز این قابلیت را داراست که بتوان یک پیام را بین یک نفر یا چندین نفر به صورت همزمان ارسال کرد.
SMTP یک پروتکل application layer است. کاربری که قصد ارسال نامه الکترونیکی دارد، TCP connection مربوط به SMTP server را باز میکند و ایمیل را از طریق کانکشن ارسال میکند. بنابراین SMTP، بخشی از پروتکل TCP/IP است و با استفاده از فرایندی به نام “store and forward”، به شبکه دسترسی پیدا میکند و ایمیل را ارسال میکند.
پروتکل SMTP با همکاری MTA یا Mail Transfer Agent ایمیل شما را به صورت درست و صحیح و به آن جایی که باید، ارسال میکند. SMTP، چگونگی ارسال ایمیل از MTA رایانه شما را به MTA کامپیوترهای دیگر توضیح میدهد و هدایت میکند. با استفاده از فرایند “store and forward”، پیامهای شما، قدم به قدم تا مقصد را طی میکنند.
عملکرد پروتکل SMTP
SMTP، یک مجموعه کد فراهم میکند تا ارتباط پیامهای ایمیل بین سرورهای ایمیل (شبکهی کامپیوتری که دریافت و ارسال ایمیل را مدیریت و کنترل میکند) را ساده کند. در حقیقت با نوعی اختصارنویسی این کار انجام میشود، و به سرور این امکان را میدهد تا پیامها را به دستههای مختلف تقسیم کند و به سرور دیگر اجازه میدهد تا آن را فراخوانی کند.
زمانی که شما ایمیلی را ارسال میکنید، به رشتههایی از متن تبدیل میشوند که توسط کدهایی از جنس کلمه یا عدد، از هم جدا میشوند و هدف هر بخش نیز مشخص شده است. در واقع SMTP این کدها را تهیه میکند و نرم افزار سرور ایمیل، طوری طراحی شده است که بتواند این کدها را بازیابی کند.
همانطور که یک پیام به سمت مقصد خود در حرکت است، گاهی اوقات از کامپیوترها و MTA های شخصی نیز عبور میکند. قبل از این که در مسیر خود به کامپیوتر بعدی برسد، به طور خلاصه ذخیره میشود. درست مانند نامهای است که دست به دست میچرخد تا مقصد خود را پیدا کند.
اما SMTP به تنهایی کامل نیست. اولاً، تنها میتواند پیامهای متنی ساده را بدون هیچ پیوستی انتقال دهد. این پیامها باید به زبان ASCII با 7 بیت نوشته شده باشند، که محدودیت متن به الفبای انگلیسی و اعداد را ایجاد میکند. برای غلبه بر این محدودیتها، SMTP باید با پروتکل Multipurpose Internet Mail Extensions (MIME) ترکیب شود، که همه محتواهای غیر ASCII را به قالبی تبدیل میکند که SMTP قادر به پردازش آن باشد.
انواع SMTP
1- Secure SMTP: جهت برقراری ارتباط با استفاده از پروتکل TLS، اطلاعات را از طریق یک تانل رمزنگاری شده انتقال میدهد. در این روش ارتباطات بین راه قابل شنود یا باز شدن نمیباشند.
2- Unsecure SMTP: در این روش ارتباطات همانند روش قبل بوده اما از یک تانل ارتباطی معمولی و بدون رمزگذاری منتقل میگردند که این فرآیند میتواند باعث درز اطلاعات شود.
سرور SMTP چیست؟
سرورهای SMTP را به عنوان دفاتر پست مجازی تصور کنید. در دنیای واقعی وقتی یک نامه را ارسال میکنید، آن را به یک پستچی نمیدهید تا به صندوق پستی گیرنده برساند. نامه باید در دفتر پست محل شما پردازش شود و سپس به دفتری که مسئول منطقه گیرنده است، ارسال شود. سرورهای SMTP نیز به همین شکل پیامهای ایمیل را جمعآوری و ارسال میکنند، فقط با سرعت بیشتر.
انواع سرورهای SMTP
یک سرور SMTP میتواند به طور همزمان پیامها را ارسال، دریافت و انتقال دهد. با این حال میتوان سرورهای SMTP را بر اساس نقشی که در یک تراکنش ایمیل خاص ایفا میکنند، دستهبندی کرد.
-
سرورهای ارسالی (Outgoing Mail Servers)
سرورهای ارسالی یا Outbound مسئولیت گرفتن پیام از مشتری ایمیل را دارند و آن را به سمت سرور ایمیل ورودی گیرنده ارسال میکنند.
برای جلوگیری از اسپم، سرورهای رایج ارسالی برای تعداد پیامهایی که میتوانند ارسال کنند، محدودیتهای روزانه سختگیرانه ای دارند. به عنوان مثال، سرورهای SMTP جیمیل برای کاربران رایگان، به 500 ایمیل در روز محدود هستند. این محدودیتها، ارسالهای جمعی مانند ایمیلهای تبلیغاتی را غیرممکن میکنند.
-
سرورهای اختصاصی SMTP
با استفاده از سرورهای اختصاصی SMTP، برای طرفداران اسپم هنوز امکان ارسال کردن میلیونها ایمیل با پیشنهادات داغ و انحصاری وجود دارد. سرور SMTP اختصاصی یک نوع ویژه از سرورهای ارسالی است که برای پردازش حجم بزرگی از ترافیک به صورت انحصاری برای یک مشتری (معمولا سازمانها) تنظیم شده است. سرورهای اختصاصی SMTP به کاربران خود انعطاف بیشتر و محدودیتهای کمتری نسبت به سرورهای عمومی و اشتراکی SMTP ارائه میدهند.
-
سرورهای رله SMTP (SMTP relay servers)
اگرچه هر سرور SMTP ارسالی در واقع یک سرور رله است زیرا پیامهای ایمیل را به سرورهای دیگر منتقل میکند، اما عبارت “سرور رله SMTP” به طور معمول برای سرورهای استفاده شده توسط یک سرویس رله SMTP برای ارسال ایمیلهای جمعی استفاده میشود. مانند سرورهای اختصاصی، سرویسهای رله SMTP به سازمانها اجازه میدهند تا به طور همزمان تعداد زیادی پیام ارسال کنند با این تفاوت که اینکار توسط یک شرکت شخص ثالث انجام میشود.
-
سرورهای ورودی ایمیل
سرورهای ایمیل ورودی (Inbound) پیامهای ایمیلی که از سرورهای رله SMTP دریافت میشوند را تا زمانی که توسط گیرنده ایمیل قابل دریافت باشند، ذخیره میکنند. برخلاف سرورهای ارسالی که تقریباً انحصاراً از پروتکل SMTP استفاده میکنند، سرورهای ایمیل ورودی به پروتکلهای POP و IMAP تکیه دارند.
-
سرورهای SMTP تقلبی
سرورهای SMTP تقلبی که به عنوان سرورهای SMTP مجازی هم شناخته میشوند، اصولاً برای تست ایمیلها استفاده میشوند. مانند یک سرور SMTP واقعی، سرور SMTP تقلبی ایمیلها را از مشتری ایمیل شما پذیرفته و آنها را ارسال میکند فقط بدون ارسال واقعی.
سرورهای SMTP تقلبی به توسعهدهندگان این امکان را میدهند تا بدون نیاز به ایجاد حسابهای ایمیل یکبار مصرف، بررسی کنند که برنامهها و وبسایتها چگونه با ایمیلها برخورد میکنند.
پروتکل SMTP چگونه کار می کند؟
همانطور که از نامش پیداست، پروتکل SMTP نسبت به بسیاری از سایر پروتکلهای TCP/IP نسبتا ساده است. SMTP برای کار خود نیاز به احراز هویت ندارد (اگرچه احراز هویت با استفاده از افزونه SMTP AUTH امکانپذیر است) و عملکرد آن را میتوان به مراحل زیر تقسیم کرد:
- برای آغاز جلسه، کلاینت SMTP (که به عنوان عامل کاربر پست الکترونیکی یا MUA نیز شناخته میشود) با انجام دست تکانیSMTP، به سرور SMTP دامنه خود متصل میشود (که به عنوان عامل انتقال پست یا MTA شناخته میشود).
- پس از برقراری ارتباط جلسه SMTP آغاز میشود. سرویس گیرنده ایمیل شما (کلاینت SMTP که در بالا به آن اشاره شده) با استفاده از پروتکل MIME، تمام اطلاعات مورد نیاز برای ارسال ایمیل را ارسال میکند (آدرس ایمیل فرستنده، آدرس ایمیل گیرنده، محتوای پیام و هر پیوست).
- قبل از انجام هر کار دیگری، سرور SMTP ابتدا بررسی میکند که آیا نامهای دامنه فرستنده و گیرنده یکسان هستند یا خیر. اگر یکسان باشند، ایمیل بلافاصله به سرور ایمیل ورودی گیرنده ارسال میشود.
- اگر دامنهها متفاوت باشند، سرور SMTP از یک سرور DNS درخواست میکند تا آدرس IP سرور ایمیل گیرنده را ارائه دهد. با این آدرس IP، سرور SMTP فرستنده به سرور SMTP گیرنده متصل میشود (که به عنوان عامل تحویل پست یا MDA نیز شناخته میشود) تا پیام را منتقل کند.
- اگر سرور SMTP گیرنده در حال حاضر در دسترس نباشد، پیام ایمیل یا به صف SMTP (یک بافر که ایمیلها در آن ذخیره میشوند) اضافه میشود یا به یک سرور پشتیبان ارسال میشود.
- سرور SMTP گیرنده نام دامنه و نام کاربری ایمیل را تأیید میکند. اگر اطلاعات تایید شوند، سرور SMTP ایمیل را به سرور ایمیل ورودی مناسب تحویل میدهد.
دستورات SMTP
برای ارتباط با سرورهای SMTP، مشتریان ایمیل و برنامههای وب از دستورات خاص SMTP استفاده میکنند. این دستورات سرور SMTP را در مورد وضعیت انتقال ایمیل مطلع میسازند و به آن میگویند که چه کاری باید انجام دهد. در زیر نمونههایی از دستورات SMTP استفاده شده در انتقال ایمیل آورده شده است:
- HELO: دستور HELO برای آغاز جلسه SMTP استفاده میشود. این دستور به کلاینت ایمیل امکان میدهد خود را به طور رسمی به سرور SMTP معرفی کند تا ارتباطی برقرار کند. بدون دستور HELO انتقال هیچ ایمیلی انجام نخواهد شد. در حال حاضر، دستور HELO به طور گسترده توسط EHLO که توسط پروتکل توسعهیافته ESMTP استفاده میشود، جایگزین شده است.
- MAIL FROM: دستور MAIL FROM به شروع انتقال ایمیل میپردازد و آدرس ایمیل فرستنده (reverse path) را نشان میدهد. در برخی موارد، ممکن است آدرس خالی باقی بماند. به عنوان مثال، زمانی که یک سیستم خودکار به شخصی درباره عدم توانایی در تحویل پیام پاسخ میدهد.
- RCPT TO: دستور RCPT TO صندوق ایمیل مقصد (مسیر پیشرو) را برای تحویل فراهم میکند. امکان اضافه کردن بیش از یک گیرنده وجود دارد، اما هر کدام باید با استفاده از دستور RCPT TO به صورت جداگانه اضافه شوند.
- DATA: دستور DATA یک درخواست ساده برای اجازه از سمت سرور برای انتقال محتوای پیام است. اگر مشتری ایمیل در پاسخ کد 354 دریافت کند، ایمیل را خط به خط بارگذاری میکند، از جمله هر پیوست. خط نهایی فقط شامل یک نقطه تک ( . ) است تا نشان دهد که انتقال دادهها به اتمام رسیده است.
- HELP: دستور HELP به سرور SMTP دستور میدهد تا به یک لیست از دستورات پشتیبانی شده پاسخ دهد. به طور معمول توسط مشتریان ایمیل یا مدیران سیستم برای بررسی عملکردهایی که سرور SMTP اختصاص داده شده به آنها میتواند انجام دهد، استفاده میشود.
- RSET: دستور RSET بدون پایان دادن به اتصالSMTP، اسلات را تمیز میکند. با پاک کردن بافرها و جداول وضعیت فرستنده و گیرنده، مشتری ایمیل میتواند یک انتقال پیام جدید را آغاز کند.
- QUIT: دستور QUIT به سرور SMTP میگوید که جلسه را خاتمه دهد. جلسه به طور فوری بسته نمیشود. ابتدا سرور باید با کد 221 پاسخ دهد تا پایان اطمینان از پایان دادن جلسه داده شود.
تفاوت بین SMTP و IMAP و POP3
پروتکل SMTP تنها پروتکل ایمیل موجود نیست. در بالا در مورد پروتکلهای دیگری مثل پروتکل Post Office Protocol (POP) و پروتکل Internet Message Access Protocol (IMAP) صحبت کردیم. در ادامه به ارائه توضیح مختصری در خصوص این دو پروتکل و تفاوت آنها با SMTP میپردازیم.
– پروتکل IMAP
پروتکل IMAP (در حال حاضر آخرین نسخه آن به نام IMAP4 ارائه شده است) یک پروتکل TCP/IP برای دریافت ایمیلها از سرورها است. هنگام استفاده از IMAP، مرورگر ایمیل در ابتدا تنها تاریخها، اطلاعات فرستنده و خطوط موضوع ایمیلها را از سرور دریافتی ایمیل باز میکند و این اطلاعات را در حافظه محلی (کش) ذخیره میکند. این کار به منظور صرفهجویی در پهنای باند انجام میشود و بقیه محتواها فقط زمانی دانلود میشوند که کاربر تصمیم به باز کردن پیام میگیرد.
یکی از بزرگترین مزایای پروتکل IMAP این است که پس از تحویل ایمیلها، آنها را از سرور حذف نمیکند. به این معنا که کاربران میتوانند از چندین دستگاه و از مکانهای مختلف به ایمیلهای خود دسترسی داشته باشند. همچنین هرگونه تغییری که در پیامها اعمال میشود (مانند خوانده شدن یا حذف شدن آنها)، در سرور ایمیل ذخیره میشود. این باعث میشود که وضعیت صندوق ورودی کاربر در تمام دستگاهها یکسان باقی بماند.
– پروتکل POP
مشابه IMAP، پروتکلPOP (که در حال حاضر نسخه سوم آن به نام POP3 مورد استفاده قرار میگیرد) یک پروتکل TCP/IP برای دریافت ایمیلها از سرورها است. با این حال، برخلاف IMAP که محتوای ایمیل را تنها زمانی دریافت میکند که کاربر پیام را باز میکند، POP به طور خودکار تمام ایمیلهای در انتظار (شامل همه پیوستها) را از سرور دریافتی ایمیل به دستگاه شما دانلود کرده و نسخههای سرور را حذف میکند.
دریافت همه اطلاعات به صورت یکجا یک مزیت اساسی دارد آن هم اینکه شما میتوانید ایمیلها را در هر زمانی که بخواهید بدون اتصال به اینترنت مطالعه کنید. با این حال، به دلیل حذف کپی پیامها توسط سرور به عنوان بخشی از این فرآیند، نمیتوانید از دیگر دستگاهها به ایمیلهای خود دسترسی داشته باشید. بنابراین بلافاصله پس از دانلود آنها، شما باید محتویات را به صورت دستی انتقال دهید.
تفاوت:
حتما متوجه شدهاید که ما از SMTP به عنوان یک پروتکل ارسال ایمیل صحبت میکنیم. به این دلیل که SMTP یک پروتکل فشار دهنده (push) است که به خصوص برای ارسال داده از سرور به سرور طراحی شده است. این پروتکلها push میکنند که سرورهای تنظیم شده در حالت گوش دادن، به طور خودکار دادهها را به مقصد خود بفرستند (push کنند).
در مقابل، پروتکلهای IMAP و POP هر دو از نوع پروتکلهای pull هستند که برای دریافت ایمیل از سرورهای دریافت ایمیل مورد استفاده قرار میگیرند. این پروتکلها پیامها را از سرور دریافت ایمیل با درخواست کاربر pull میکنند. پروتکلهای IMAP و POP هیچ نقشی در انتقال ایمیلها از فرستنده به سرور دریافت ایمیل ندارند.
برای درست کارکردن سیستمهای ایمیل مدرن، نیاز به همزمانی پروتکلهای push و pull دارید. این بدان معناست که SMTP در رقابت با IMAP یا POP نیست بلکه با آنها همکاری میکند تا ایمیلها را به سراسر جهان ارسال کند.
نتیجه گیری
بدون پروتکل انتقال ساده پیامها (SMTP)، ایمیل مدرن وجود نخواهد داشت. پروتکل SMTP یک روش آسان برای تبادل ایمیل بین ارائهدهندگان مختلف ایمیل، دامنهها و شبکههایی که در منظر ارتباطات امروزی وجود دارند، فراهم میکند. اما باید به خاطر داشته باشیم که SMTP یک اثر برجستهی مهندسی نرمافزار نیست و به مرور زمان در طی تقریباً چهار دهه کار، به صورت تکهتکه ساخته شده است.
پروتکل SMTP در دهه ۱۹۸۰ به عنوان یک روش ساده برای ارسال پیامهای ساده آغاز شد. آن زمان، SMTP تنها میتوانست متن 7 بیتی ASCII را انتقال دهد، که این مسأله تا حد زیادی کاربرد آن را محدود میکرد. همچنین هیچ تدبیری برای رمزگذاری نداشت که منجر به ارسال ایمیلهای spam و حملات spoofing در دهه ۱۹۹۰ شد.
بعدها این معایب با توسعهی SMTP و تکنیکهای امنیتی جدید، بهبود یافتند. برای مثال پروتکل MIME توانایی ارسال کاراکترهای غیر ASCII و پیوستها را اضافه کرد، SMTP AUTH امکان احراز هویت را فراهم کرد و نرمافزارهای رمزگذاری راههای جدیدی برای حفاظت از محتویات ایمیل ارائه دادند.
با تشکر از این ابزارها، SMTP در حال حاضر با وجود محدودیتهای متعدد، به خوبی عمل میکند.