بررسی پروتکل SMTP بر روی ایمیل سرورها
پروتکل ساده ی انتقال نامه (SMTP : Simple Mail Transfer Protocol) ، پروتکل ارسال ایمیل از یک کاربر به کاربر دیگر است.SMTP در کنار سایر پروتکل های انتقال ایمیل از جمله IMAP و POP3 فعالیت می کند. SMTP پیام ها را از میل سرور فرستنده به میل سرور گیرنده ارسال می کند و برای این کار از فرآیند ذخیره و ارسال (Store and Forward) استفاده می کند. SMTP در لایه کاربرد شبکه (Application Layer) قرار دارد و برای ارسال ایمیل از سرویس انتقال داده ی قابل اطمینان TCP استفاده می کند. SMTP با (MTA : Mail Transfer Agent) یا نماینده انتقال ایمیل شما کار می کند تا ارتباط شما را به کامپیوتر یا گیرنده مورد نظر ارسال کند. MTA در اصل یک سرور SMTP است. SMTP اساساً نحوه انتقال ایمیلی را که ارسال می کنید از MTA شما به MTA دیگر کنترل می کند. SMTP مجموعه ای از کد را در اختیار شما قرار می دهد که ارتباط ایمیل ها را بین میل سرور ها (mail server) آسان می کند. SMTP به تجزیه پیام به قسمتهای مختلف کمک می کند که فقط میل سرور ها می توانند آن را درک کنند.
قدمت پروتکل SMPT زیاد است. با این که SMTP تقریبا در همه جای اینترنت حضور دارد و کیفیت شگفت آوری دارد اما یک فناوری قدیمی است و برخی ویژگی های قدیمی را دارد که امروزه جزو قوانین دست و پا گیر تلقی می شوند. برای مثال در نامه ها، کاربر برای ارسال ایمیل های حاوی محتوای چند رسانه ای باید آن را بصورت کد ASCII 7 بیتی کد گذاری کند. و در مقصد هم عکس همین روند یعنی تبدیل کد ASCII 7بیتی به باینری باید انجام شود.البته این محدودیت ها بدلیل آن بود که در دهه 1980 که این پروتکل وجود داشت و ظرفیت انتقال خطوط بسیار پایین بود و استفاده از محتوای چند رسانه ای در ایمیل ها هم مرسوم نبود. با توجه به این که SMTP تنها می تواند متن و کلمات را ارسال کند و نمی تواند ارسال ضمیمه ها و فونت و گرافیک را کنترل کند، اصطلاحا به آن پروتکل ساده یا simple می گویند. برای حل این مشکل، افزونه هایی مانند MIME وجود دارد که می توانند محتوای غیر متنی را به متن ساده رمز گذاری کند.
در نظر داشته باشید که SMTP برای فرستادن ایمیل از سرویس دهنده ای به عنوان سرویس دهنده واسط استفاده نمی کند، حتی اگر میل سرور مقصد بسیار دور باشد. برای مثال، اگر میل سرور فرستنده در تهران باشد و میل سرور گیرنده در لندن باشد، یک اتصال TCP مستقیم بین تهران و لندن برقرار می شود. اگر حتی میل سرور گیرنده خاموش باشد یا به هر دلیلی در دسترس نباشد ، ایمیل فرستاده شده تا زمانی که میل سرور فرستنده آن را بصورت مستقیم به میل سرور گیرنده تحویل بدهد، در میل سرور فرستنده باقی می ماند و میل سرور هرگز ایمیل های خود را به سرویس دهنده ی واسط نمی دهد.
SMTP چگونه یک پیام را از میل سرور فرستنده به میل سرور گیرنده ارسال می کند؟
عملکرد SMTP مانند افرادی است که می خواهند مستقیم و رو در رو با یکدیگر صحبت کنند.
ابتدا کلاینت ( مشتری) در میل سرور فرستنده از TCP درخواست می کند که یک اتصال به پورت 25 سرویس دهنده ی SMTP در میل سرور گیرنده ایجاد کند. اگر سرویس دهنده ی گیرنده خاموش باشد یا در دسترس نباشد، بعد از مدت کوتاهی فرستنده دوباره تلاش خود را انجام می دهد. زمانی که اتصال برقرار شد، کلاینت و سرویس دهنده SMTP قبل از تبادل نامه، خود را به یکدیگر معرفی می کنند. در همین مرحله، کلاینت SMTP ، آدرس ایمیل فرستنده و آدرس ایمیل گیرنده را به سرویس دهنده ی SMTP می دهد. بعد از این معرفی، کلاینت پیام را ارسال می کند و SMTP برای این که پیام ها بدون کم و کاست به مقصد برسند، از سرویس انتقال داده ی TCP استفاده می کند.
برخی اصطلاحات دستوری به شرح زیر است:
- HELO : که مخفف HELLO است و برای شروع معرفی به کار می رود.
- Mail Frome : فرستنده را مشخص می کند.
- RCPT TO : گیرنده را مشخص می کند.
- DATA : متن یا بدنه نامه است.
- QUIT : پایان ارتباط را مشخص می کند.
خوب است بدانید که SMTP از اتصال پایدار (Permanent) استفاده می کند. یعنی اگر میل سرور فرستنده بخواهد چندین پیام را به میل سرور گیرنده ارسال کند ، می تواند همه ی این پیام ها را روی یک اتصال TCP ارسال کند و بدین صورت است که که برای فرستان هر پیام، فرستنده با یک دستور Mail From جدید شروع می کند و بعد از این که تمامی پیام های خود را ارسال کرد ، دستور QUIT را می فرستد و باعث قطع اتصال TCP میشود.
برای نکات پایانی خوب است بدانید که SMTP اساسا یک پروتکل فرستشی (Push Protocol) است که میل سرور فرستنده ، ایمیل را به میل سرور گیرنده می فرستد. هم چنین توجه داشته باشید که کل پیام ایمیل را همراه با تمامی اشیا داخل آن در قالب یک پیام واحد به گیرنده ارسال می کند.