قرارداد ساده نامه‌رسانی
قرارداد سادهٔ نامه‌رسانی به‌طور اختصار SMTP، پروتکلی ساده و در عین حال مهم و اساسی برای انتقال ایمیل است. این اصطلاح از آن رو به کار می‌رود که نسبت به سایر پروتکل‌های ایمیل قبلی بسیار ساده عمل می‌کند. SMTP فقط به نام کاربری و دامنه نیاز دارد تا مستقیم پیغام را به سمت گیرنده مسیریابی کند. SMTP یک پروتکل ارسال است و برای دریافت مناسب نیست، به همین دلیل برای دریافت ایمیل به جای SMTP از پروتکل‌های دریافت ایمیل مثل پروتکل دستیابی به پیغام در اینترنت و پاپ۳ استفاده می‌شود.
ایمیل توسط کلاینت نامه (MUA) به سرور نامه(MSA) توسط SMTP روی پورت 587، TCP فرستاده می شود. بیشتر سرویس دهنده های ایمیل همچنان روی پورت 25 نامه ها را می پذیرند. MSA نامه را به مامور انتقال نامه (MTA) تحویل می دهد. معمولا این دو نمونه هایی از یک نرم‌افزار هستند که با آپشن های متفاوت روی یک ماشین اجرا می شوند. پردازش محلی می تواند روی یک ماشین اجرا شود یا بین چندین ماشین تقسیم شود. پردازش های مامور نامه روی یک ماشین می تواند فایل ها را به اشتراک بگذارد ولی اگر پردازش روی چندین ماشین باشد آن ها پیام هایی را توسط SMTP به یکدیگر انتقال می دهند که هر ماشین به گونه ای تنظیم شده که از ماشین بعدی به عنوان سرور ایمیل استفاده کند.
MTA از DNS استفاده می کند تا رکورد MX (بخشی از ایمیل که بعد @ میاید) را پیدا کند. رکورد MX شامل نام MTA مقصد می باشد. بر اساس میزبان مقصد و فاکتور های دیگر، MTA یک سرور دریافت کننده را انتخاب و برای کامل کردن تبادل نامه به آن متصل می شود.
انتقال نامه می تواند در یک ارتباط یگانه بین دو MTA انجام شود یا به صورت دنباله ای از مراحل توسط سیستم های میانی. سرور SMTP دریافت کننده ممکن است مقصد نهایی باشد یا به صورت یک رله میانی عمل کند (که نامه را ذخیره و آن را فروارد می کند) و یا به صورت دروازه(gateway) ،که نامه را توسط پروتکلی غیر از SMTP فروارد می کند، باشد. در هر مرحله سرور یا باید نامه را تحویل دهد یا خطایی گزارش کند.
در آخرین مرحله که نامه دریافت می شود به منظور تحویل محلی به مامور تحویل نامه(MDA) داده می شود. سپس MDA نامه در فرمت مناسب برای نامه دان(mailbox) ذخیره می کند. دریافت نامه می تواند توسط یک یا چند کامپیوتر انجام شود که در شکل MDA به صورت یک جعبه نمایش داده شده است. MDA می تواند نامه را مستقیم ذخیره کند یا توسط پروتکل های SMTP و LMTP آن را در شبکه فروارد کند.
وقتی نامه به سرور محلی نامه رسید، به منظور دریافت توسط کلاینت های نامه(MUAs) ذخیره می شود. نامه توسط اپلیکیشن هایend-user(کلاینت های ایمیل) تحت پروتکل های IMAP و POP دریافت میشود. SMTP انتقال نامه را تعریف می کند و نه محتوای نامه. بنابراین پارامتر هایی مانند ارسال کننده نامه در SMTP مشخص می شوند اما بدنه و عنوان مشخص نمی شوند.
SMTP یک ارتباط اتصال گرا و مبتنی بر متن است که در آن فرستنده نامه با دریافت کننده نامه تحت سازوکاری ، معمولا TCP ، ارتباط برقرار می کند. یک نشست SMTP از دستورهای تشکیل می شود که توسط کلاینت آغاز و توسط سرور پاسخ داده می شود و در آن پارامتر های نشست مبادله می شوند. هر نشست ممکن است شامل صفر و یا تعداد بیشتری تراکنش باشد. هر تراکنش از سه مجموعه فرمان/پاسخ تشکیل شده است:
1. فرمان MAIL، برای تنظیم آدرس بازگشت
2. فرمان RCPT، برای تنظیم دریافت کننده پیام.
3. فرمان DATA، برای فرستادن سیگنال آغاز محتوای پیام. محتوای پیام شامل عنوان و بدنه می باشد که با یک خط خالی جدا شده اند. DATA در واقع گروهی از فرمان ها است که سرور به آن دو بار پاسخ می دهد: یک بار به خود فرمان DATA برای تایید آمادگی برای دریافت و بار دوم در انتهای دنباله داده به منظور رد/قبول کل پیام.
علاوه بر پاسخ میانی به فرمان DATA، پاسخ هر سرور می تواند مثبت یا منفی باشد. پاسخ های منفی می توانند گذرا یا دائم باشند. reject یک پاسخ منفی دائم است وdrop یک پاسخ مثبت است.
کلاینت SMTP می تواند کلاینت ایمیل کاربر انتهایی(end-user) یا مامور انتقال نامه(MTA) در سرور relay باشد.  سرور های SMTP پیام هایی با پاسخ منفی گذرا را در صف هایی برای تلاش مجدد نگهداری می کنند.
SMTP پروتکلی برای تحویل نامه است. در استفاده معمول، نامه از سروری به سرور دیگر تا رسیدن به سرور مقصد منتقل می شود و مسیریابی با استفاده از سرور مقصد شکل میگیرد. پروتکل های دیگر مانند POP و IMAP به‌طور ویژه برای مدیریت صندوق های نامه شخصی طراحی شده اند.
هنگامی که کلاینت ایمیل یک پیام را ارسال می کند، آن را به سرور SMTP پیکربندی شده منتقل می کند و با استفاده از پروتکل SMTP با مقصد ارتباط برقرار می کند. بدین ترتیب که سرور SMTP مبدا ایمیل را به سرور SMTP مقصد انتقال می دهد. این کلاینت باید آدرس IP سرور SMTP مبدا را در تنظیماتش بداند. سپس سرور مبدا از طرف کاربر این ایمیل را ارسال می کند.
ادمین سرور باید کلاینت های سرور را کنترل کند. این کنترل به جلوگیری از spam کمک می کند. دو راهکار وجود دارد:
• روش قدیمی تر از محدودیت گذاشتن روی مکان کلاینت استفاده می کرد و تنها کلاینت هایی که آدرس IP آن ها در کنترل ادمین بود مجاز به استفاده بودند.
• سرور های SMTP جدید از روش احراز هویت استفاده می کنند و قبل از دسترسی اعتبار کاربر باید تایید شود. اعمال محدودیت دسترسی مرتبط با مکان:
در این سیستم سرور SMTP متعلق به ISP اجازه دسترسی به کاربران خارج از شبکه ISP را فراهم نمی کند. به‌طور دقیق تر تنها کاربران با آدرس IP متعلق به ISP می توانند از خدمات آن استفاده کنند. در حقیقت کاربران باید اینترنت را از ISP مربوط گرفته باشند. کاربران موبایلی که خارج از شبکه ISP هستند با شکستن خوردن عملیات ارسال ایمیل مواجه می شوند.
این سیستم انواع مختلفی دارد. برای مثال ممکن است سرور SMTP شرکتی تنها به کاربران که روی همان شبکه هستند سروریس بدهد و دسترسی بقیه کاربران را با firewall بلاک کند. یا ممکن است سرور محدوده آدرس های IP کلاینت ها را چک کند.
این روش ها معمولا توسط دانشگاه ها و مراکز مشابه برای ارتباط درون سازمانی استفاده می شد. اما امروزه بیشتر از روش احراز هویت استفاده می شود.
احراز هویت کلاینت:
این روش برای کاربران موبایل بسیار مناسب است و به آن ها این امکان را می دهد تنظیمات واحدی را برای ارتباط با سرور استفاده کنند.
Open relay:
میل سروری است که به شخص ثالث بدون احراز هویت اجازه ارسال ایمیل می دهد، بدین معنا که برای یک کاربر که از لوکال دامین سرور نیست امکان ارسال و یا دریافت ایمیل را فراهم می نماید. یک سرور Open relay اجازه می دهد که کاربران تلفن همراه ابتدا از طریق یک ISP محلی برای اتصال به شبکه های شرکتی استفاده کنند، سپس پیام را به ISP اصلی خود و در نهایت به مقصد نهایی منتقل می کند. با این حال خطر اصلی و نکته منفی Open relay ، گسترش استفاده از آن توسط اسپمر ها است که به دنبال مبهم سازی یا حتی پنهان کردن منبع حجم زیاد ایمیل های اسپمی هستند که ارسال می کنند.
پورت ها:
ارتباط بین سرور های نامه به‌طور کلی از پورت 25 پروتکل TCP ،که به SMTP اختصاص داده شده است، استفاده می کند. کلاینت ها معمولا به جای پورت 25 از پورت های 587 و 465 استفاده می کنند. پورت 2525 توسط افرادی استفاده می شود ولی هیچگاه به صورت رسمی پشتیبانی نشده است.
در زیر یک مثال از ارسال نامه از طریق SMTP بین دو صندوق نامه ،که در یک دامنه(example.com) هستند، آمده است. در این مثال S و C به ترتیب سرور و کلاینت هستند و جزو پیام نیستند. پس از آنکه کلاینت(ارسال کننده نامه) یک اتصال مطمئن با سرور(دریافت کننده نامه) برقرار کرد، یک نشست با پیامی از سمت سرور آغاز می شود. این پیام معمولا شامل نام دامنه (در اینجا smtp.example.com) می باشد.کلاینت مکالمه خود را با فرمان HELO آغاز می کند.
کلاینت، آدرس ایمیل فرستنده نامه را با فرمان MAIL FROM به دریافت کننده اطلاع می دهد. در این مثال نامه دو دریافت کننده دارد که در یک سرور SMTP هستند. برای این که این دو دربخش TO و CC لیست شوند فرمان RCPT TO استفاده شده است. هر دریافت موفق توسط سرور با کد و پیامی مشخص تایید می شود. (مثال: 250 OK)
انتقال بدنه نامه با فرمان DATA آغاز می شود و سپس خط به خط فرستاده می شود تا اینکه نامه تمام شود. نشانه اتمام نامه یک خط جدید به دنبال یک نقطه و یک خط جدید دیگر است.(.)
ممکن است متن نامه حاوی خطی باشد که با نقطه آغاز می شود. در اینصورت کلاینت دو تا نقطه می فرستد و سرور آن را با یک خط جدید و یک نقطه جایگزین می کند. به این روش dot-stuffing می گویند.
پاسخ مثبت سرور به پایان نامه به معنی این است که سرور مسئولیت تحویل نامه را پذیرفته است. ممکن است به دلایلی مانند قطعی برق ارتباط قطع شود و دو نسخه از نامه نگهداری شود. تا زمانی که فرستنده کد تایید 250 را دریافت نکرده فرض می کند نامه تحویل داده نشده است. از طرفی، دریافت کننده نامه را پذیرفته است و فرض می کند نامه به آن تحویل داده شده است. احتمال اینکه در این زمان خطایی رخ دهد با میزان فیلتری که سرور با هدف anti-spamming انجام می دهد متناسب است. زمان timeout ده دقیقه در نظر گرفته می شود.
فرمان QUIT نشست را به اتمام می رساند. اگر ایمیل چندین دریافت کننده داشته باشد کلاینت فرمان QUIT را اجرا می کند و برای ارسال به مقصدی دیگر، به سروری دیگر متصل می شود. بعضی کلاینت ها به صورت خودکار پس از دریافت پیام  250 OK: queued as 12345 به اتصال خاتمه می دهند. بنابراین دو خط آخر در مثال فوق ممکن است رخ ندهند. این موضوع سرور را هنگام تلاش برای پاسخ با کد 221، با مشکل مواجه می کند.