بطور اختصار SMTP، پروتکلی ساده و در عین حال مهم و اساسی برای انتقالایمیل است. این اصطلاح از آن رو به کار میرود که نسبت به سایر پروتکلهای ایمیل قبلی بسیار ساده عمل میکند. SMTP فقط به نام کاربری و دامنه نیاز دارد تا مستقیم پیغام را به سمت گیرنده مسیریابی کند. SMTP یک پروتکل ارسال است و برای دریافت مناسب نیست، به همین دلیل برای دریافت ایمیل به جای SMTP از پروتکلهای دریافت ایمیل مثل پروتکل دستیابی به پیغام در اینترنت و پاپ۳ استفاده میشود.
پست الکترونیکی یکی از مهمترین سرویس های اینترنت است که شباهت زیادی به پست معمولی دارد. این سرویس، اتصال غیر هم زمان رابرای افراد پدید می آورد. بدین معنا که افراد هر زمان مایل باشند می توانند اقدام به ارسال و یا مطالعه ی نامه های خود نمایند، بدون این که نیاز باشد این اعمال را با زمان و برنامه ریزی دیگران منطبق کنند. هنگامی که یک نامه ی الکترونیکی ارسال می شود، انتظار این است که سرویس دهنده ی پست الکترونیکی، آن نامه را به درستی به مقصدارسال نماید. مراحل ارسال بدون توجه به سخت افزار و نرم افزار و تنها با استفاده از پروتکل های انتقال پست الکترونیکی انجام می شود.
SMTP مهمترین پروتکل انتقال پست الکترونیکی می باشد. پروتکل SMTP مخفف SIMPLE MAIL TRANSFER PROTOCOL بوده که از این پروتکل برای ارسال پیامهای الکترونیکیE-mailاستفاده میشود. . تا قبل از آن از پروتکل UUCP(Unix-to-Unix Copy) برای ارسال پیامهای الکترونیکیE-mail استفاده میشد.
این پروتکل دارای ویژگی های بسیار زیادی است که آن را به یکی از مهمترین پروتکلهای اینترنت تبدیل کرده است. اما با این وجود، این پروتکل محدودیت هایی از قبیل محدودکردن بدنه ی نامه های الکترونیکی به هفت بیت کد اسکی را از زمان گذشته با خود به همراه دارد. این محدودیت تا اوایل دهه ۱۹۸۰میلادی که انتقال و ارسال نامه های الکترونیکی بسیار کم و به ندرت بود، مشکلی ایجاد نمی کرد. اما امروزه و در عصر رسانه های چند منظوره، محدودیت هفت بیت کد اسکی دردسرساز است. زیرا نیاز دارد که داد ه های مالتی مدیای باینری، قبل از ارسال از طریق SMTPبه کد اسکی تبدیل شوند و پس از انتقال از طریق این پروتکل از اسکی به باینری برگردانده شوند.
پروتکل smtp به دلیل محدودیتهایی در نگهداری نامهها، معمولا با پروتکلهای POP3 یا (post office protocol3) یا internet message access protocol) IMAP) استفاده میشود که برای کاربران امکان ذخیره نامهها را روی یک سرور یا دانلود آنها را از سرور فراهم میکند. در حقیقت میتوان گفت، SMTP برای ارسال نامهها و POP3 یا IMAP برای دریافت نامهها به کار میروند. به عبارت سادهتر، سرور SMTP، مانند وب سرور یک رایانه است که مانند مسیریاب عمل میکند. هنگامی که پیامهای پست الکترونیکی از کاربران را دریافت میکند آنها را به گیرندگان مورد نظر میفرستند. SMTP فقط به نام کاربری و دامنه نیاز دارد تا مستقیم پیغام را به سمت گیرنده مسیریابی کند و به طور پیشفرض بر روی پورت ۲۵ قرار دارد. البته مدیران سرور برای افزایش امنیت می توانند پورت آن را تغییر دهند.
سناریوی زیر عملیات پروتکل SMTP را به تصویر میکشد:
فرض کنیدclient A میخواهد یک نامه الکترونیکی ساده را به client B ارسال کند:
- clientA آدرس پست الکترونیکیclientB را در کارگزار کاربر( user agent) خود وارد کرده و پس از نوشتن نامه ی الکترونیکی، آن را ارسال مینماید.
- لازم به ذکر است که کارگزار کاربر (user agent) برنامه ای است که محیطی را برای نوشتن، خواندن، ارسال و دریافت نامه های الکترونیکی فراهم می کند.
- clientA (user agent)نامه را در صف نامه های سرویس دهنده ی پست الکترونیکی وی قرار می دهد.
- سرویس دهنده ی پست الکترونیکیclientA یک اتصال TCP با سرویس دهنده ی پست الکترونیکیclientB ایجاد می کند.
- پس از برقراری اتصال TCP نامه یclientA از طریق آن اتصال منتقل میگردد.
- نامه ی ارسال شده از طریق سرویس دهنده ی پست الکترونیکی clientB دریافت شده و در فهرست نامه هایclientB قرار می گیرد.
- clientB از طریق کارگزار کاربر خود نامه دریافتی را میخواند.
توجه به این نکته ضروری است که پروتکلSMTP برای ارسال نامه های الکترونیکی از سرویس دهندگان پست الکترونیکی میان مبداو مقصد استفاده نمی کند، حتی اگر دو سرویس دهنده ی مذکور در فاصله ی بسیار دوری از یکدیگر قرار داشته باشند. به عنوان مثال، اگر سرویس دهنده ی پست الکترونیکیclientA در ایران و سرویس دهنده ی پست الکترونیکیclientBدرآلمان باشد، اتصال TCP مستقیما بین ایران و آلمان برقرار می گردد منظور از این جمله به طور دقیق تر این است که چنانچه سرویس دهنده ی پست الکترونیکیclientB دردسترس نباشد، نامه در سرویس دهنده ی پست الکترونیکیclientAباقی مانده و این سرویس دهنده سعی در برقراری اتصال مجدد با سرویس دهنده ی باب می نماید و نامه به هیچ وجه در سرویس دهندگان پست الکترونیکی میانی قرار نمی گیرد.
در این بخش چگونگی انتقال یک پیام از سرویس دهنده ی پست الکترونیکی مبدا به سرویس دهنده ی پست الکترونیکی مقصد شرح داده می شود.در ابتدا، سرویس گیرنده SMTP (که بر روی سرویس دهنده ی پست الکترونیکی مبدا قرار دارد) یک اتصالTCP بر روی پورت ۲۵ با سرویس دهنده SMTP (که بر روی سرویس دهنده ی پست الکترونیکی مقصد قرار دارد) برقرار می نماید. پس از برقراری اتصال، سرویس گیرنده و سرویس دهنده یک سری Handshaking های لایه کاربردی را انجام می دهند.
در طی مرحله Handshaking ، سرویس گیرنده SMTP آدرس پست الکترونیکی فرستنده و گیرنده نامه را مشخص میکند. پس از معرفی سرویس گیرنده و سرویس دهنده SMTP به یکدیگر، سرویس گیرنده پیام را ارسال می کند.
در مثال زیر چگونگی برقراری اتصال بین سرویس گیرنده C و سرویس دهنده S را نمایش می دهد.
نام میزبان سرویس گیرنده mydomain.com و نام میزبان سرویس دهنده smtp2go.com می باشد.
خطوطی که با C: ” ” شروع شده اند به معنی ارسال اطلاعات از طرف سرویس گیرنده و خطوطی که با ” S: “شروع شده اند به معنی ارسال اطلاعات از طرف سرویس دهنده می باشند.
در مثال بالا سرویس گیرنده SMTP پیامی را از سرویس دهنده ی پست الکترونیکی mydomain.com به سرویس دهنده ی پست الکترونیکی smtp2go.com ارسال میکند. سرویس گیرنده، پنج دستور QUIT و DATA ،RCPT TO ،MAIL FROM ،HELO را ارسال می کند. در مقابل، سرویس دهنده متناسب با هر دستور پاسخی را ارسال می کند.
هر پاسخ شامل یک کد و یک توضیح (اختیاری) به زبان انگلیسی است. تذکر این نکته در این جا ضروری است که اگر نیاز باشد که سرویس دهنده ی پست الکترونیکی مبدا چندین پیام را به سرو یس دهنده ی پست الکترونیکی مقصد یکسانی ارسال کند، می تواند تمام آن پیام ها را بر روی یک اتصال TCP بفرستد.
البته برای هر پیام باید دستور HELO جدیدی به سرویس دهنده ی مقصد ارسال کند و پس از پایان یافتن تمام پیا مها از دستور QUIT استفاده کند.
در بسیاری از موارد کد رشته ی پاسخ ۲۵۰ بیانگر موفقیت آمیز بودن دستور است.
در صورت شکست خوردن یکی از کدهای ۵۵۲ یا ۴۵۱ یا ۴۵۲ صادر می شود.
و در صورت بروز خطا یکی از کدهای ۵۰۰ یا ۵۰۱ یا ۴۲۱ صادر می شود.
همانطور که در مثال بالا مشاهده می کنید.
درفرمان اول “: HELO “
فرمان دوم: ” MAIL FROM:” و سپس ایمیل فرستنده وارد شده است.
فرمان سوم” RCPT TO: “و سپس ایمیل گیرنده وارد شده است.
فرمان چهارم “:DATA ” که بعد از این فرمان هیچ کلمه ای قرار نمی گیرد.
سپس سرور پاسخی می دهد که متن ایمیل خود را وارد کرده و با یک نقطه (.) به آن پایان دهید.
در پایان باید فرمان Quit را صادر کرده تا Server اتصال را ببندد.
هر سرآیند(header) باید شامل کلمات کلیدی زیر باشد.
- Subject:
- To:
- From:
توجه به این نکته ضروری است که این خطوط سرآیند متفاوت از دستورات SMTP می باشند.