پروتکل SMTP
SMTP یا (simple mail transfer protocol) یکی از پروتکلهای TCP/IP برای ارسال و دریافت نامههای الکترونیکی است. این پروتکل به دلیل محدودیتهایی در نگهداری نامهها، معمولا با پروتکلهای POP3 یا (post office protocol3) یا (internet message access protocol) IMAP استفاده میشود.
SMTP برای کاربران امکان ذخیره نامهها را روی یک سرور یا دانلود آنها را از سرور فراهم میکند. در حقیقت میتوان گفت، SMTP برای ارسال نامهها و POP3 یا IMAP برای دریافت نامهها به کار میروند.
پست الكترونيكي يكي از مهمترين سرويس هاي اينترنت است كه شباهت زيادي به پست معمولي دارد. اين سرويس، اتصال غير هم زمان رابراي افراد پديد مي آورد. بدين معنا كه افراد هر زمان مايل باشند مي توانند اقدام به ارسال و يا مطالعه ي نامه هاي خود نمايند، بدون اين كه نياز باشد اين اعمال را با زمان و برنامه ريزي ديگران منطبق كنند. هنگامي كه يك نامه ي الكترونيكي ارسال مي شود، انتظار اين است كه سرويس دهنده ي پست الكترونيكي، آن نامه را به درستي به مقصدارسال نمايد. مراحل ارسال بدون توجه به سخت افزار و نرم افزار و تنها با استفاده از پروتكل هاي انتقال پست الكترونيكي انجام مي شود.
SMTP مهمترين پروتكل انتقال پست الكترونيكي می باشد. پروتكل SMTP مخفف SIMPLE MAIL TRANSFER PROTOCOL بوده که از اين پروتکل براي ارسال پيامهاي الكترونيكيE-mail استفاده میشود. . تا قبل از آن از پروتکلUUCP”) Unix-to-Unix Copy براي ارسال پيامهاي الكترونيكي Gmail استفاده میشد.
اين پروتكل داراي ويژگي هاي بسيار زيادي است كه آن را به يكي از مهمترين پروتكل هاي اينترنت تبديل كرده است. اما با اين وجود، اين پروتكل محدوديت هايي از قبيل محدود كردن بدنه ي نامه هاي الكترونيكي به هفت بيت كد اسكي را از زمان گذشته با خود به همراه دارد. اين محدوديت تا اوايل دهه 1980 ميلادي كه انتقال و ارسال نامه هاي الكترونيكي بسيار كم و به ندرت بود، مشكلي ايجاد نمي كرد. اما امروزه و در عصر رسانه هاي چند منظوره، محدوديت هفت بيت كد اسكي دردسرساز است. زيرا نياز دارد كه داد ه هاي مالتي مدياي باينري، قبل از ارسال از طريق SMTPبه كد اسكي تبديل شوند و پس از انتقال از طريق اين پروتكل از اسكي به باينري برگردانده شوند.
پروتکل smtp به دلیل محدودیتهایی در نگهداری نامهها، معمولا با پروتکلهای POP3 یا (post office protocol3) یا internet message access protocol) IMAP) استفاده میشود که برای کاربران امکان ذخیره نامهها را روی یک سرور یا دانلود آنها را از سرور فراهم میکند. در حقیقت میتوان گفت، SMTP برای ارسال نامهها و POP3 یا IMAP برای دریافت نامهها به کار میروند. به عبارت سادهتر، سرورSMTP، مانند وب سرور یک رایانه است که مانند مسیریاب عمل میکند. هنگامی که پیامهای پست الکترونیکی از کاربران را دریافت میکند آنها را به گیرندگان مورد نظر میفرستند. SMTP فقط به نام کاربری و دامنه نیاز دارد تا مستقیم پیغام را به سمت گیرنده مسیریابی کند و به طور پیشفرض بر روی پورت 25 قرار دارد. البته مدیران سرور برای افزایش امنیت می توانند پورت آن را تغییر دهند.
سناريوي زير عمليات پروتكل 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
در ابتدا، سرويس گيرنده SMTP (كه بر روي سرويس دهنده ي پست الكترونيكي مبدا قرار دارد) يك اتصالTCP بر روي پورت 25 با سرويس دهنده 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 استفاده كند.
در بسیاری از موارد کد رشته ی پاسخ 250 بیانگر موفقیت آمیز بودن دستور است.
در صورت شکست خوردن یکی از کدهای 552 یا 451 یا 452 صادر می شود.
و در صورت بروز خطا یکی از کدهای 500 یا 501 یا 421 صادر می شود.
همانطور که در مثال بالا مشاهده می کنید.
درفرمان اول “: HELO “
فرمان دوم: “ MAIL FROM:” و سپس ایمیل فرستنده وارد شده است.
فرمان سوم” RCPT TO: “و سپس ایمیل گیرنده وارد شده است.
فرمان چهارم “:DATA ” که بعد از این فرمان هیچ کلمه ای قرار نمی گیرد.
سپس سرور پاسخی می دهد که متن ایمیل خود را وارد کرده و با یک نقطه (.) به آن پایان دهید.
در پایان باید فرمان Quit را صادر کرده تا Server اتصال را ببندد.
قالب نامه هاي الكترونيكي
هنگامي كه clientA نامه ا ي را بهclientB ارسال ميكند مانند اين است كه اين نامه را در پاكتي كه آدرسclientB بر روي آن نوشته شده قرار داده وارسال مي كند. مشابه آن، هر نامه ي الكترونيكي كه از فردي به فرد ديگر ارسال مي شود، داراي سرآيندي(header)است كه شامل اطلاعاتي جانبي در رابطه با نامه ي الكترونيكي است هر خط از سرآيند(header) شامل يك متن خوانا از كلمات كليدي به همراه يك مقدار خاص مي باشد. برخي از اين كلمات كليدي لازم و برخي اختياري هستند.
هر سرآيند(header) بايد شامل كلمات كليدي زیر باشد.
- Subject:
- To:
- From:
توجه به اين نكته ضروري است كه اين خطوط سرآيند متفاوت از دستورات SMTP مي باشند.
دیدگاهتان را بنویسید