هر روز بیش از ۳۰۶ میلیارد ایمیل در سراسر جهان ارسال و دریافت میشوند. ایمیل یکی از معمولترین راههای تبادل پیام برای کسبوکارها، سازمان و اشخاص است، اما آیا تا به حال به این فکر کردهاید که بعد از فشردن دکمه ارسال چه اتفاقی برای پیام شما میافتد و چطور به دست دریافتکننده میرسد؟
SMTP چیست؟
SMTP مخفف عبارت Simple Mail Transfer Protocol (پروتکل تبادل ایمیل ساده) بوده و همانطور که از نام آن پیداست، یک پروتکل معمول برای ارسال ایمیل از یک حساب کاربری به یک حساب دیگر است. پروتکلهای ایمیل مجموعهای از قوانین هستند که اجازه میدهند کلاینتها و حسابهای مختلف ایمیل به راحتی تبادل اطلاعات کنند و SMTP در کنار POP و IMAP پرکاربردترین پروتکلها در سطح وب هستند؛ با این تفاوت که SMTP تنها پروتکل مختص ارسال ایمیل است. بیشتر کلاینتهای ایمیل معروف مانند یاهو، جیمیل، Outlook و اپلمیل از پروتکل SMTP برای ارسال ایمیل بهره میبرند.
سرور SMTP چیست؟
مانند هر سرور دیگری، یک سرور SMTP در واقع یک اپلیکیشن است که به اپلیکیشنهای دیگر در شبکه (کلاینتها) خدمات میدهد. یک سرور SMTP به طور خاص ارسال، دریافت و تبادل ایمیلها را مدیریت میکند.
سرورهای SMTP مانند ادارههای پست در دنیای واقعی هستند. وقتی شما یک نامه از شهر «الف» به شهر «ب» میفرستید، نامه شما ابتدا به اداره پست شهر «الف» رفته و از آنجا به اداره پست شهر «ب» ارسال میشود و پس از آن به دست دریافتکننده میرسد. همین روند در ارسال ایمیل از طریق SMTP نیز اتفاق میافتد، با این تفاوت که فرایند ارسال ایمیل تنها چند ثانیه یا چند دقیقه زمان میبرد.
همچنین به اندپوینتهای ارتباطی که تبادل ایمیل با استفاده از SMTP و روی شبکه را مدیریت می کنند، پورت SMTP میگویند.
پورتهای پرکابرد SMTP
هنگام اتصال به یک سرور SMTP، باید بدانیم سرور به چه پورتهایی برای دریافت ایمیل گوش میکند. در ادامه برخی از پرکابردترین پورتهای SMTP را معرفی میکنیم:
- پورت ۲۵ SMTP
- پورت ۴۶۵ SMTP
- پورت ۵۸۷ SMTP
- پورت ۲۵۲۵ SMTP
SMTP چطور کار میکند؟
بهترین راه برای درک نحوه کار SMTP بررسی فرایند ارسال، قوانین و دستورات است. وقتی که یک سرور SMTP راهاندازی شد، کلاینتهای میتوانند به آن وصل شده و با آن ارتباط برقرار کنند. وقتی که کاربر روی دکمه ارسال کلیک میکند، کلاینت یک ارتباط (کانکشن) SMTP با سرور برای ارسال ایمیل برقرار میکند. کانکشن SMTP بر اساس کانکشن TCP (مخفف عبارت Transmission Control Protocol) ساخته شده است.
بعد از برقراری ارتباط، کلاینت به سرور دستورات و اطلاعات لازم (مانند آدرس ایمیل فرستنده، آدرس ایمیل گیرنده، عنوان و محتوای ایمیل) را ارسال میکند. مامور انتقال نامه یا MTA (مخفف عبارت Mail Transfer Agent) بررسی میکند که آیا هر دو آدرس متعلق به یک دامنه (مانند gmail.com) است یا خیر؛ اگر هر دو آدرس متعلق به دامنه باشند، ایمیل را بلافاصله میفرستد.
اگر دامنهها یکسان نباشند، سرور از DNS (مخفف عبارت Domain Name System) برای شناسایی دامنه گیرنده و ارسال به سرور مربوطه استفاده میکند.
دستورات اصلی SMTP
همانطور که گفتیم، دستورات SMTP مجموعهای از کدها هستند که انتقال ایمیل بین سرورها را ممکن میسازند. در ادامه دستورات اصلی که باید بدانید را معرفی میکنیم:
HELO یا EHLO: این دستور ضروری تمام فرایند ارسال ایمیل را آغاز میکند. با این دستور کلاینت ایمیل خود را به سرور معرفی میکند. در واقع دستور HELO آغاز یک مکالمه است و به طور معمول نیز سرور پاسخ HELO را برای تکمیل دامنه و آدرس IP میفرستد.
MAIL FROM: بعد از دستور معرفی، کلاینت کدی را میفرستد که فرستنده ایمیل را تعیین میکند. به این ترتیب آدرس ایمیل مشخص شده و سرور SMTP متوجه میشود یک تبادل جدید در شرف انجام است.
(RCPT TO (Recipient To: این دستور بعد از کد تایید ۲۵۰ ارسال می شود و حاوی کدی است که آدرس گیرنده را مشخص میکند. سرور SMTP نیز در پاسخ کد تایید ارسال میکند و در صورتی که گیرنده دیگری نیز وجود داشته باشد، کلانت کد آدرس نفر بعدی را ارسال می کند. این فرایند برای تمام گیرندهها تکرار می شود.
DATA: این دستور فرایند تبادل اطلاعات بین سرور و کلاینت را آغاز میکند. تمام محتوای ایمیل روی سرور SMTP منتقل میشود و سرور نیز در پاسخ کد ۳۶۵ را برمیگرداند. در پایان ارسال محتوای ایمیل، یک نقطه به صورت جداگانه در یک خط ارسال میشود تا پایان پیام را اعلام کند. در صورتی که مشکلی وجود نداشته باشد، سرور دوباره یک کد ۲۵۰ ارسال میکند. به این تر ایمیل در حال رسیدن به گیرنده است.
QUIT: وقتی ایمل ارسال شد، کلاینت با ارسال این دستور ارتباط را قطع میکند. اگر ارتباط به طور موفق قطع شده باشد، سرور یک کد ۲۲۱ ارسال می کند.
(RSET (Reset: این دستور تنها زمانی به سرور ارسال میشود که فرایند تبادل ایمیل باید متوقف شود. این دستور ارتباط را قطع نمیکند، اما فرایند به طور مجدد راهاندازی کرده و تمام دادههای قبلی و آدرسها را پاک میکند. به طور معمول دستور RSET زمانی ارسال می شود که خطایی وجود دارد.
در کنار این دستورهای اصلی، دستورات دیگری برای بهبود امنیت و احراز هویت مانند AUTH و STARTTLS نیز وجود دارند که از حوصله این پست خارج است، اما در صورت علاقه میتوانید بیشتر در مورد آنها مطالعه کنید.
درک کدهای خطای SMTP
فرایند ارسال ایمیل همیشه به راحتی انجام نمیشود. برگشت خوردن، بلاک بودن و یا عوامل دیگر میتوانند جلوی ارسال ایمیل را بگیرند. در صورت بروز مشکل، سرور SMTP با ارسال کدهای خطا میتواند کلاینت را از وجود خطا آگاه کند. دانستن این کدها به شما کمک میکند منشاء خطا را شناسایی و آن را حل کنید. در ادامه دو دوسته از خطاهای اصلی که به طور معمول اتفاق میافتند را توضیح میدهیم:
خطاهای 4XX (خطاهای Persistent Transient Failure): این خطاها که با عدد ۴ شروع شده و با دو عدد دیگر ادامه مییابند، نشان از وجود یک مشکل موقت در سرور ایمیل دارد. اجرای مجدد دستور گاهی میتواند این مشکل را برطرف کند، اما این خطاها به طور معمول توسط سرور برای معطل کردن فرستندههای مشکوک استفاده میشوند.
خطاهای 5XX (خطاهای Permanent Error): این خطاها با عدد ۵ شروع شده و نشان میدهند که ارتباط SMTP قطع شده است. اگر تلاش کنید که ایمیل را دوباره ارسال کنید، به احتمال زیاد دوباره همان خطا را دریافت میکنید.
راهاندازی یک سرور SMTP شخصی یا استفاده از یک سرویس ثالث؟
وقتی صحبت از راهاندازی سرور SMTP است، دو راه پیش روی شما قرار دارد:
- خودتان سرور را راهاندازی کنید
- از یک سرویس ثالث استفاده کنید
اما کدام بهتر است؟ مانند بیشتر سوالهایی از این دست، گزینه قطعی وجود ندارد. هر کدام از روشها مزایا و معایب خودشان را دارند و شما باید بنا بر نیازهای خود تصمیم بگیرید. در ادامه با بیان مزایا و معایب هر کدام، سعی میکنیم به تصمیمگیری شما کمک کنیم.
راهاندازی یک سرور شخصی
راهاندازی یک سرور شخصی مزایا و معایب متفاوتی دارد که در ادامه به آنها میپردازیم:
مزایا:
- نامحدود بودن تعداد ایمیلهای ارسالی
- نظارت کامل بر فرایند ارسال ایمیل
- شخصی بودن لیست ایمیل
معایب:
- نیاز به زمان، هزینه و کار بیشتر
- لوکال و آسیبپذیر بودن
- احتمال بیشتر بروز خطاهای ارسال
استفاده از یک سرویس ثالث
سرویسهای ثالث امکانات متفاوتی را ارائه میکنند که در برخی موارد معایب سرور شخصی را برطرف میکند، اما معایب خاص خود را هم دارد.
مزایا:
- صرفهجویی در زمان، هزینه و نیرو
- امنیت بیشتر
- ثبات فرایند ارسال ایمیل
معایب
- وابستگی به سرویس ثالث
- محدودیت در ارسال ایمیلها
تفاوت SMTP با سایر پروتکلهای ایمیل
تفاوت اصلی SMTP با سایر پروتکلهایی مانند POP و IMAP این است که SMTP تنها پروتکل ارسال یا پوش کردن (Pushing) ایمیل از یک سرور ایمیل ناشناخته به یک سرور دیگر است. پروتکلهای POP و IMAP برای دریافت یا کشیدن ایمیل (Pulling) از دریافتکننده به سرور ایمیل خودشان طراحی شدهاند. بنابراین پروتکلهای POP و IMAP به تبادل ایمیل بین سرورهای تایید شده محدود بوده و از این رو برای برقراری ارتباط خارج از شبکه مناسب نیستند.