SMTP (Simple Mail Transfer Protocol) یا پروتکل ساده انتقال ایمیل، ستون فقرات ارسال ایمیل در اینترنت است و بدون آن، هیچ ایمیلی از هیچ وب‌سایتی ارسال نمی‌شود. این پروتکل، از سال ۱۹۸۲ که در RFC 821 استانداردسازی شد، به‌عنوان زبان مشترک سرورهای ایمیل عمل می‌کند و پیام‌ها را از فرستنده به گیرنده منتقل می‌سازد. در وب‌سایت‌ها، SMTP نقشی حیاتی در ارسال ایمیل‌های تراکنشی مانند تأیید ثبت‌نام، بازیابی رمز عبور، تأیید سفارش و اطلاع‌رسانی‌ها ایفا می‌کند. آستانه زمان پاسخ مطلوب برای یک SMTP Server زیر ۵۰۰ میلی‌ثانیه است و هر تأخیر در این لایه، به تأخیر در دریافت ایمیل منجر می‌شود. برخلاف تصور رایج، ارسال ایمیل از وب‌سایت تنها با استفاده از تابع mail() PHP کافی نیست؛ این روش در اکثر سرورهای اشتراکی به دلیل نبود احراز هویت، به اسپم منتهی می‌شود. راهکار صحیح، استفاده از یک SMTP Server احراز‌شده است که با رکوردهای SPF (Sender Policy Framework)، DKIM (DomainKeys Identified Mail) و DMARC (Domain-based Message Authentication) پشتیبانی می‌شود. تجربه‌های واقعی از پروژه‌های وب نشان می‌دهد که بیش از ۷۰ درصد مشکلات ارسال ایمیل، ریشه در پیکربندی نادرست SMTP یا رکوردهای احراز هویت دارند. این مقاله، SMTP را از پایه بررسی می‌کند، تفاوت آن با IMAP و POP3 را روشن می‌سازد، فرآیند ارسال ایمیل از وب‌سایت را توضیح می‌دهد و راهکارهای عملی برای ارسال ایمیل‌های تراکنشی ارائه می‌کند. همچنین، پیکربندی رکوردهای SPF، DKIM و DMARC، انتخاب SMTP Server مناسب و اشتباهات رایج در این حوزه بررسی می‌شود.

در پروژه‌های متعدد وب، به‌روشنی دیده‌ام که ارسال ایمیل، یکی از آن حوزه‌هایی است که تا زمانی که مشکل ایجاد نشود، جدی گرفته نمی‌شود. اما وقتی ایمیل‌های بازیابی رمز عبور به اسپم می‌روند یا اصلاً ارسال نمی‌شوند، اهمیت پیکربندی درست SMTP و رکوردهای احراز هویت آشکار می‌شود.

SMTP چیست و چگونه کار می‌کند؟

SMTP (Simple Mail Transfer Protocol) یک پروتکل ارتباطی است که برای ارسال و انتقال ایمیل بین سرورها طراحی شده است. این پروتکل، مسئول ارسال ایمیل از کلاینت به سرور و از سرور به سرور است اما در دریافت ایمیل نقش مستقیم ندارد.

ویژگی‌های کلیدی SMTP

  • Push Protocol: SMTP یک پروتکل فشار (Push) است؛ یعنی فرستنده، پیام را به سرور فشار می‌دهد.
  • مبتنی بر TCP: SMTP بر پایه پروتکل TCP ساخته شده و از اتصال پایدار استفاده می‌کند.
  • متن‌محور: دستورات SMTP به‌صورت متن ساده ارسال می‌شوند.
  • Stateful: اتصال SMTP وضعیت‌دار است؛ یعنی ترتیب دستورات مهم است.
  • پورت‌های خاص: SMTP از پورت‌های ۲۵، ۴۶۵ و ۵۸۷ استفاده می‌کند.

اجزای SMTP

  • MUA (Mail User Agent): نرم‌افزار کلاینت ایمیل که کاربر با آن کار می‌کند (مانند Outlook، Thunderbird، اپلیکیشن موبایل).
  • MSA (Mail Submission Agent): سروری که ایمیل را از MUA دریافت و به MTA ارسال می‌کند.
  • MTA (Mail Transfer Agent): سروری که ایمیل را بین سرورها منتقل می‌کند (مانند Postfix، Exim، Sendmail).
  • MDA (Mail Delivery Agent): سروری که ایمیل را در صندوق پستی گیرنده ذخیره می‌کند.
«SMTP، ستون فقرات ارسال ایمیل است؛ در واقع، هر ایمیل تراکنشی که از یک وب‌سایت ارسال می‌شود، مسیری از چند سرور SMTP را طی می‌کند تا به گیرنده برسد.»

برای درک مبانی ارسال ایمیل، ابتدا باید تفاوت SMTP با سایر پروتکل‌های ایمیل را بشناسیم. همچنین اگر می‌خواهید مبانی DNS و رکوردهای مرتبط با ایمیل را درک کنید، مقاله DNS و نقش آن در دسترسی به اینترنت را مطالعه کنید.

تفاوت SMTP با IMAP و POP3

یکی از پرتکرارترین اشتباهات در حوزه ایمیل، یکسان‌گرفتن SMTP با IMAP و POP3 است. این سه پروتکل، نقش‌های متفاوتی در چرخه عمر ایمیل ایفا می‌کنند.

SMTP — پروتکل ارسال

SMTP مسئول ارسال و انتقال ایمیل است. وقتی شما ایمیلی ارسال می‌کنید، SMTP آن را از کلاینت شما به سرور مقصد منتقل می‌کند.

IMAP — پروتکل دریافت همگام‌شده

IMAP (Internet Message Access Protocol) مسئول دریافت ایمیل از سرور است و پیام‌ها را در سرور نگهداری می‌کند. کاربر می‌تواند از چند دستگاه به صندوق پستی دسترسی داشته باشد و تغییرات (خوانده‌شدن، حذف، انتقال) در همه دستگاه‌ها همگام می‌شود.

POP3 — پروتکل دریافت دانلودی

POP3 (Post Office Protocol version 3) نیز مسئول دریافت ایمیل است اما پیام‌ها را روی دستگاه کاربر دانلود و از سرور حذف می‌کند. این پروتکل، برای دسترسی از یک دستگاه واحد طراحی شده است.

پروتکلنقشپورت‌های رایجویژگی کلیدی
SMTPارسال و انتقال ایمیل25، 465، 587Push، مبتنی بر TCP
IMAPدریافت با نگهداری در سرور143، 993همگام‌سازی چنددستگاهی
POP3دریافت با دانلود محلی110، 995مناسب یک دستگاه

چرا این تفاوت مهم است؟

در وب‌سایت‌ها، تنها SMTP برای ارسال ایمیل ضروری است. IMAP و POP3 مربوط به دریافت ایمیل هستند و معمولاً توسط سرویس ایمیل دامنه یا کلاینت‌های ایمیل استفاده می‌شوند. بسیاری از کاربران، اشتباهاً پورت IMAP را در تنظیمات SMTP وارد می‌کنند که به خطای اتصال منجر می‌شود.

برای درک عمیق‌تر تفاوت IMAP و POP3، مقاله تفاوت IMAP و POP3 در تنظیمات ایمیل را مطالعه کنید.

فرآیند ارسال ایمیل از وب‌سایت

وقتی یک وب‌سایت ایمیلی ارسال می‌کند، این ایمیل مسیر پیچیده‌ای را در زیرساخت ایمیل طی می‌کند. درک این مسیر، برای عیب‌یابی مشکلات ارسال ضروری است.

گام‌های ارسال ایمیل

  1. تولید ایمیل در وب‌سایت: کاربر یا سیستم، ایمیلی را در وب‌سایت ایجاد می‌کند (مثلاً تأیید ثبت‌نام).
  2. ارسال به SMTP Server: وب‌سایت از طریق پروتکل SMTP، ایمیل را به SMTP Server می‌فرستد.
  3. احراز هویت: SMTP Server اعتبار فرستنده را بررسی می‌کند (از طریق نام کاربری و رمز).
  4. بررسی رکوردهای SPF/DKIM: سرور ایمیل گیرنده، رکوردهای احراز هویت را بررسی می‌کند.
  5. انتقال به MTA گیرنده: SMTP Server فرستنده، ایمیل را به MTA سرور گیرنده منتقل می‌کند.
  6. تحویل به صندوق پستی: MTA گیرنده، ایمیل را در صندوق پستی کاربر ذخیره می‌کند.
  7. دسترسی کاربر: کاربر از طریق IMAP یا POP3 ایمیل را دریافت می‌کند.

نقش رکوردهای DNS در این فرآیند

  • رکورد MX: تعیین سرور ایمیل دامنه.
  • رکورد SPF: تعیین سرورهای مجاز به ارسال ایمیل از دامنه.
  • رکورد DKIM: امضای رمزنگاری ایمیل برای تأیید اصالت.
  • رکورد DMARC: سیاست تعیین‌شده برای ایمیل‌های احراز‌نشده.
«ارسال ایمیل از وب‌سایت، یک زنجیره است؛ اگر هر حلقه از این زنجیره ضعیف باشد، ایمیل یا ارسال نمی‌شود یا در اسپم فرود می‌آید.»

برای درک عمیق‌تر رکوردهای ایمیل، مقاله MX Record و تنظیمات ایمیل دامنه را مطالعه کنید.

چرا mail() PHP برای ارسال ایمیل کافی نیست؟

بسیاری از توسعه‌دهندگان تازه‌کار، برای ارسال ایمیل از وب‌سایت از تابع mail() PHP استفاده می‌کنند. این تابع، در ظاهر ساده است اما در عمل، محدودیت‌های جدی دارد که به شکست ارسال ایمیل منجر می‌شود.

محدودیت‌های تابع mail()

  • عدم احراز هویت: این تابع از احراز هویت SMTP پشتیبانی نمی‌کند و در سرورهای اشتراکی، ایمیل‌های ارسالی معمولاً به اسپم می‌روند.
  • عدم تضمین تحویل: mail() تنها به سرور محلی تحویل می‌دهد و هیچ تضمینی برای تحویل نهایی وجود ندارد.
  • محدودیت در هدرها: امکان تعریف کامل هدرهای ایمیل (مانند Reply-To و List-Unsubscribe) محدود است.
  • عدم گزارش خطا: اگر ارسال ناموفق باشد، mail() بازخورد دقیقی ارائه نمی‌دهد.
  • کارایی پایین: در ارسال انبوه ایمیل، mail() عملکرد ضعیفی دارد.

راهکار صحیح: SMTP احراز‌شده

به‌جای mail()، توصیه می‌شود از یک SMTP Server احراز‌شده استفاده شود. این رویکرد، تضمین می‌کند که:

  • ایمیل از سرور معتبر ارسال می‌شود.
  • احراز هویت با نام کاربری و رمز انجام می‌شود.
  • ارسال با TLS/SSL رمزنگاری می‌شود.
  • گزارش دقیقی از وضعیت ارسال ارائه می‌شود.
  • رکوردهای SPF و DKIM پشتیبانی می‌شوند.

در وردپرس، این چگونه اعمال می‌شود؟

در وردپرس، تابع wp_mail() به‌طور پیش‌فرض از mail() استفاده می‌کند. برای تغییر این رویکرد به SMTP، باید یک افزونه SMTP نصب و پیکربندی شود که در مقاله رفع مشکلات SMTP در وردپرس به تفصیل بررسی شده است.

انتخاب SMTP Server مناسب

انتخاب SMTP Server، یکی از تصمیم‌های کلیدی در پیکربندی ایمیل وب‌سایت است. سه گزینه اصلی وجود دارد.

گزینه اول: SMTP Server هاست

بسیاری از هاست‌ها، SMTP Server داخلی ارائه می‌دهند که از دامنه خود سایت استفاده می‌کند. این گزینه، برای سایت‌های کوچک با حجم ایمیل کم مناسب است اما محدودیت‌هایی دارد.

مزایا:

  • بدون هزینه اضافی.
  • پیکربندی ساده.
  • یکپارچگی با DNS دامنه.

معایب:

  • محدودیت در حجم ارسال.
  • ریسک بالای اسپم شدن.
  • پشتیبانی محدود.

گزینه دوم: سرویس‌های SMTP تراکنشی

سرویس‌های تخصصی مانند SendGrid، Mailgun، Amazon SES، Postmark و Brevo، امکان ارسال ایمیل تراکنشی با قابلیت تحویل بالا را فراهم می‌کنند.

مزایا:

  • قابلیت تحویل بالا (بیش از ۹۹ درصد).
  • گزارش دقیق از ارسال و بازشدن.
  • پشتیبانی از SPF، DKIM و DMARC.
  • مقیاس‌پذیری بالا.

معایب:

  • هزینه اشتراک ماهانه یا بر پایه حجم.
  • وابستگی به سرویس خارجی.

گزینه سوم: SMTP Server اختصاصی

راه‌اندازی SMTP Server اختصاصی (مانند Postfix یا Exim) روی یک VPS.

مزایا:

  • کنترل کامل روی سرور.
  • بدون محدودیت حجم.
  • استقلال از سرویس‌های خارجی.

معایب:

  • نیاز به دانش فنی بالا.
  • مسئولیت مدیریت reputation IP.
  • هزینه سرور اختصاصی.
گزینهمناسب برایهزینهقابلیت تحویل
SMTP هاستسایت‌های کوچکرایگانپایین
سرویس تراکنشیسایت‌های متوسط و بزرگماهانه/حجمیبالا
SMTP اختصاصیسازمان‌های بزرگهزینه سرورمتوسط تا بالا

در پروژه‌های واقعی، برای سایت‌های وردپرسی که ایمیل تراکنشی ارسال می‌کنند، سرویس‌های تراکنشی مانند SendGrid و Mailgun انتخاب عاقلانه‌تری هستند چون قابلیت تحویل بالا و گزارش‌گیری دقیقی ارائه می‌دهند.

پورت‌های SMTP و تفاوت آنها

SMTP از سه پورت اصلی استفاده می‌کند که هر یک، کاربرد و ملاحظات امنیتی خاص خود را دارد.

پورت ۲۵ (SMTP سنتی)

پورت پیش‌فرض SMTP است که برای انتقال ایمیل بین سرورها (Server-to-Server) استفاده می‌شود. بسیاری از ISPها و سرورهای ابری، این پورت را برای کلاینت‌ها مسدود می‌کنند تا از ارسال اسپم جلوگیری کنند.

پورت ۴۶۵ (SMTPS)

پورت ۴۶۵ برای SMTP با SSL استفاده می‌شود. این پورت، از ابتدا اتصال را رمزنگاری می‌کند و برای ارسال ایمیل از کلاینت‌ها مناسب است.

پورت ۵۸۷ (SMTP with STARTTLS)

پورت ۵۸۷ برای SMTP با STARTTLS استفاده می‌شود. در این روش، اتصال از ابتدا رمزنگاری نشده است اما با دستور STARTTLS، به اتصال رمزنگاری‌شده ارتقا می‌یابد. این پورت، استاندارد مدرن برای ارسال ایمیل از کلاینت‌ها محسوب می‌شود.

پورترمزنگاریکاربرد اصلی
25بدون رمزنگاریServer-to-Server
465SSL/TLS از ابتداکلاینت به سرور
587STARTTLSکلاینت به سرور (مدرن)

توصیه عملی

برای ارسال ایمیل از وب‌سایت، استفاده از پورت ۵۸۷ با STARTTLS توصیه می‌شود. این پورت، هم امن است و هم توسط اکثر سرویس‌دهندگان پشتیبانی می‌شود. پورت ۴۶۵ نیز گزینه مناسبی است اما در برخی محیط‌ها ممکن است مسدود شود.

«انتخاب پورت مناسب SMTP، نه‌تنها بر امنیت اثر می‌گذارد، بلکه در برخی شبکه‌ها تنها راه عبور از فایروال است.»

احراز هویت در SMTP

احراز هویت در SMTP، یکی از جنبه‌های حیاتی ارسال ایمیل است که نادیده‌گرفتن آن به رد شدن ایمیل منجر می‌شود.

روش‌های احراز هویت

  • SMTP AUTH با نام کاربری و رمز: رایج‌ترین روش که در آن، کلاینت نام کاربری و رمز عبور خود را به سرور ارائه می‌دهد.
  • OAuth 2.0: روش مدرن‌تر که در سرویس‌هایی مانند Gmail و Outlook پشتیبانی می‌شود.
  • API Key: برخی سرویس‌ها (مانند SendGrid و Mailgun) از API Key برای احراز هویت استفاده می‌کنند.
  • IP Whitelisting: در برخی محیط‌ها، IP فرستنده در سرور مجاز تعریف می‌شود.

نکات امنیتی احراز هویت

  • همیشه از رمز عبور قوی و یکتا استفاده کنید.
  • رمز SMTP را در فایل‌های عمومی ذخیره نکنید.
  • از متغیرهای محیطی (Environment Variables) برای ذخیره اعتبار استفاده کنید.
  • در صورت پشتیبانی، از OAuth 2.0 استفاده کنید.
  • دسترسی به پنل SMTP را با 2FA محافظت کنید.
  • دوره‌ای رمز SMTP را تغییر دهید.

SPF: تعیین سرورهای مجاز

SPF (Sender Policy Framework) یک رکورد TXT در DNS است که تعیین می‌کند کدام سرورها مجاز به ارسال ایمیل از دامنه شما هستند.

ساختار رکورد SPF

v=spf1 include:_spf.google.com include:sendgrid.net ~all

در این مثال:

  • v=spf1 — نسخه SPF.
  • include:_spf.google.com — اجازه به سرورهای Google.
  • include:sendgrid.net — اجازه به سرورهای SendGrid.
  • ~all — سیاست Soft Fail برای سایر سرورها.

سیاست‌های SPF

  • -all — Hard Fail: رد کامل ایمیل‌های غیرمجاز.
  • ~all — Soft Fail: پذیرش با علامت‌گذاری به‌عنوان مشکوک.
  • ?all — Neutral: بدون سیاست خاص.
  • +all — Pass: اجازه به همه (توصیه نمی‌شود).

محدودیت SPF

رکورد SPF محدودیت ۱۰ Lookup دارد. اگر تعداد Lookup از ۱۰ عبور کند، SPF نامعتبر می‌شود. برای مدیریت این محدودیت، از سرویس‌هایی مانند SPF Flattening استفاده می‌شود.

برای درک عمیق‌تر این حوزه، مقاله SPF چیست و چگونه از جعل ایمیل جلوگیری می‌کند؟ را مطالعه کنید. همچنین اگر دامنه ایرانی دارید، مقاله تنظیم SPF برای دامنه‌های ایرانی نکات مهمی ارائه می‌دهد.

DKIM: امضای رمزنگاری ایمیل

DKIM (DomainKeys Identified Mail) یک استاندارد احراز هویت ایمیل است که با افزودن امضای رمزنگاری به هدر ایمیل، اصالت آن را تأیید می‌کند.

چگونه DKIM کار می‌کند؟

  1. سرور فرستنده، یک کلید خصوصی دارد.
  2. هنگام ارسال ایمیل، سرور با کلید خصوصی، امضایی به هدر ایمیل اضافه می‌کند.
  3. کلید عمومی، در رکورد TXT در DNS دامنه منتشر می‌شود.
  4. سرور گیرنده، با کلید عمومی، امضا را تأیید می‌کند.

ساختار رکورد DKIM

selector._domainkey.example.com TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQ..."

مزایای DKIM

  • تأیید اصالت ایمیل.
  • جلوگیری از دستکاری محتوا در مسیر.
  • بهبود قابلیت تحویل ایمیل.
  • افزایش اعتماد سرورهای گیرنده.

راه‌اندازی DKIM

  1. تولید جفت کلید خصوصی و عمومی در سرور.
  2. انتشار کلید عمومی در DNS به‌عنوان رکورد TXT.
  3. پیکربندی سرور برای امضای ایمیل‌ها با کلید خصوصی.
  4. بررسی صحت DKIM با ابزارهایی مانند MXToolbox.

برای درک عمیق‌تر این حوزه، مقاله DKIM چیست و چطور ایمیل‌ها را از اسپم نجات می‌دهد؟ را مطالعه کنید.

DMARC: سیاست ایمیل دامنه

DMARC (Domain-based Message Authentication, Reporting & Conformance) یک استاندارد است که به صاحب دامنه امکان می‌دهد سیاست خود را برای ایمیل‌های احراز‌نشده تعیین کند.

ساختار رکورد DMARC

_dmarc.example.com TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; ruf=mailto:forensic@example.com; pct=100"

سیاست‌های DMARC

  • p=none — بدون اقدام (فقط گزارش).
  • p=quarantine — انتقال به اسپم.
  • p=reject — رد کامل ایمیل.

مزایای DMARC

  • کاهش جعل ایمیل از دامنه شما.
  • افزایش قابلیت تحویل ایمیل.
  • گزارش دقیق از ایمیل‌های احراز‌نشده.
  • افزایش اعتماد سرورهای گیرنده.

راه‌اندازی DMARC

  1. ابتدا از p=none شروع کنید.
  2. گزارش‌ها را برای چند هفته بررسی کنید.
  3. پس از تثبیت SPF و DKIM، سیاست را به quarantine یا reject تغییر دهید.
  4. گزارش‌ها را به‌طور مستمر پایش کنید.

برای درک عمیق‌تر این حوزه، مقاله DMARC چیست و چگونه امنیت ایمیل را تقویت می‌کند؟ را مطالعه کنید.

ایمیل تراکنشی و اهمیت آن

ایمیل تراکنشی (Transactional Email) به ایمیل‌هایی گفته می‌شود که در پاسخ به یک عمل کاربر یا رویداد سیستم ارسال می‌شوند.

انواع ایمیل تراکنشی

  • تأیید ثبت‌نام: ارسال لینک تأیید پس از ثبت‌نام کاربر.
  • بازیابی رمز عبور: ارسال لینک بازنشانی رمز.
  • تأیید سفارش: ارسال فاکتور و جزئیات سفارش.
  • اطلاع‌رسانی ارسال: ارسال اطلاعات پیگیری مرسوله.
  • اعلان‌های سیستم: هشدارهای امنیتی یا اطلاع‌رسانی تغییرات.

ویژگی‌های ایمیل تراکنشی خوب

  • تحویل سریع: کاربر منتظر ایمیل است و تأخیر به تجربه ضعیف منجر می‌شود.
  • محتوا کاربردی: تمرکز بر اطلاعات مورد نیاز کاربر، نه بازاریابی.
  • قالب سازگار: نمایش صحیح در کلاینت‌های مختلف.
  • امنیت بالا: جلوگیری از دسترسی غیرمجاز به لینک‌های حساس.
  • قابلیت تحویل بالا: رسیدن به Inbox نه Spam.
«ایمیل تراکنشی، ستون تجربه کاربری هر وب‌سایت است؛ اگر این ایمیل نرسد یا در اسپم برود، کاربر تجربه‌ای ناامیدکننده خواهد داشت.»

سرویس‌دهندگان SMTP

سرویس‌دهندگان SMTP متعددی وجود دارند که هر یک، ویژگی‌ها و محدودیت‌های خاص خود را دارند.

سرویس‌های بین‌المللی

  • SendGrid: یکی از محبوب‌ترین سرویس‌ها با قابلیت تحویل بالا و پلن رایگان محدود.
  • Mailgun: سرویس محبوب با API قدرتمند و پشتیبانی از SMTP.
  • Amazon SES: ارزان‌ترین سرویس با یکپارچگی با AWS.
  • Postmark: تمرکز بر ایمیل تراکنشی با تحویل سریع.
  • Brevo (قبلاً Sendinblue): ترکیبی از ایمیل تراکنشی و بازاریابی.
  • SparkPost: مناسب برای حجم بالا.
  • Mailjet: گزینه مقرون‌به‌صرفه برای شروع.

سرویس‌های داخلی

  • سرویس‌های هاست ایرانی: SMTP داخلی هاست که برای سایت‌های کوچک مناسب است.
  • سرویس‌های ایمیل تراکنشی ایرانی: برخی ارائه‌دهندگان داخلی، سرویس SMTP تراکنشی ارائه می‌دهند.

معیارهای انتخاب سرویس‌دهنده

  • قابلیت تحویل: درصد ایمیل‌هایی که به Inbox می‌رسند.
  • پشتیبانی از SMTP و API: انعطاف در روش ارسال.
  • گزارش‌گیری: جزئیات بازشدن، کلیک و خطاها.
  • قیمت‌گذاری: بر پایه حجم یا اشتراک ماهانه.
  • پشتیبانی فنی: پاسخ‌گویی سریع در زمان مشکل.
  • رعایت حریم خصوصی: سیاست‌های شفاف درباره داده.
سرویسپلن رایگانقابلیت تحویلمناسب برای
SendGrid۱۰۰ ایمیل در روزبالاسایت‌های کوچک تا بزرگ
Mailgunمحدودبالاسایت‌های متوسط
Amazon SES۶۲٬۰۰۰ ایمیل در ماه از EC2بالاپروژه‌های AWS
Postmark۱۰۰ ایمیل در ماهبسیار بالاایمیل تراکنشی
Brevo۳۰۰ ایمیل در روزبالاترکیبی

پیکربندی SMTP در PHP

پیکربندی SMTP در PHP، نیازمند استفاده از کتابخانه‌های تخصصی است. رایج‌ترین گزینه، PHPMailer است.

نمونه کد با PHPMailer

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;

$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = 'smtp.example.com';
$mail->SMTPAuth = true;
$mail->Username = 'user@example.com';
$mail->Password = 'your-password';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;

نکات مهم در پیکربندی

  • ذخیره امن اعتبار: از متغیرهای محیطی استفاده کنید.
  • مدیریت خطا: خطاهای SMTP را لاگ و پایش کنید.
  • تست پیش از انتشار: با ابزارهایی مانند Mailtrap تست کنید.
  • زمان‌بندی مناسب: Timeout مناسب برای اتصال تعریف کنید.

در وردپرس، پیکربندی SMTP معمولاً از طریق افزونه‌ها انجام می‌شود. برای راهنمای گام‌به‌گام، مقاله رفع مشکلات SMTP در وردپرس را مطالعه کنید.

امنیت SMTP: TLS و SSL

امنیت در SMTP، از طریق رمزنگاری TLS و SSL تأمین می‌شود. این رمزنگاری، از شنود اطلاعات حساس (مانند اعتبار و محتوا) جلوگیری می‌کند.

TLS در برابر SSL

  • SSL: پروتکل قدیمی‌تر که امروز منسوخ شده است.
  • TLS: پروتکل مدرن که جایگزین SSL شده است.
  • STARTTLS: ارتقاء اتصال بدون رمزنگاری به اتصال رمزنگاری‌شده.

پیکربندی امنیتی

  • استفاده از پورت ۵۸۷ با STARTTLS یا پورت ۴۶۵ با SSL.
  • رد اتصال‌های بدون رمزنگاری.
  • استفاده از گواهی معتبر برای سرور SMTP.
  • پیکربندی صحیح TLS در سرور.
  • پایش مستمر اتصال‌های ناموفق.

ملاحظات امنیتی

  • ذخیره امن اعتبار SMTP در سرور.
  • محدودسازی دسترسی به SMTP Server.
  • پایش لاگ‌های SMTP برای تشخیص دسترسی غیرمجاز.
  • استفاده از IP Whitelisting در صورت امکان.

قابلیت تحویل ایمیل

قابلیت تحویل (Deliverability) به درصد ایمیل‌هایی گفته می‌شود که به Inbox گیرنده می‌رسند، نه به پوشه اسپم یا بلاک می‌شوند.

عوامل مؤثر بر قابلیت تحویل

  • اعتبار IP: IPهایی که در blacklist هستند، قابلیت تحویل پایینی دارند.
  • رکوردهای SPF، DKIM و DMARC: نبود این رکوردها به اسپم منجر می‌شود.
  • کیفیت محتوا: استفاده از کلمات اسپم‌محور.
  • نرخ شکایت: درصد کاربرانی که ایمیل را به‌عنوان اسپم علامت می‌زنند.
  • نرخ Bounce: درصد ایمیل‌های برگشتی.
  • حجم ارسال: ارسال ناگهانی حجم بالا به اعتبار آسیب می‌زند.
  • تاریخ IP: IPهای قدیمی، اعتبار بیشتری دارند.

راهکارهای بهبود قابلیت تحویل

  • پیکربندی صحیح SPF، DKIM و DMARC.
  • استفاده از IP اختصاصی یا Warm-up تدریجی.
  • پاک‌سازی لیست ایمیل از آدرس‌های غیرفعال.
  • پایش blacklistها.
  • تست محتوای ایمیل با ابزارهایی مانند Mail-Tester.
  • استفاده از سرویس‌های تراکنشی معتبر.
«قابلیت تحویل، نتیجه اعتبار انباشته‌شده است؛ نه یک تنظیم یک‌باره.»

اشتباهات رایج در SMTP

اشتباهاثر عملیاتی
استفاده از mail() به‌جای SMTP احراز‌شدهاسپم شدن ایمیل‌ها
نبود رکورد SPFرد یا اسپم شدن ایمیل
رکورد SPF نامعتبر (بیش از ۱۰ Lookup)رد شدن SPF
نبود DKIMاحراز هویت ناقص
نبود DMARCعدم کنترل جعل ایمیل
استفاده از پورت ۲۵ در سرورهای مسدودکنندهعدم ارسال ایمیل
عدم رمزنگاری TLSریسک امنیتی
ذخیره اعتبار در کد عمومیریسک امنیتی
عدم مدیریت Bounceکاهش اعتبار IP
ارسال انبوه ناگهانیمسدودسازی موقت
نبود پایش قابلیت تحویلعدم تشخیص افت

در تجربه‌های واقعی، بیشترین اتلاف زمان از اشتباه اول و دوم ناشی می‌شود. تیم‌هایی که بدون پیکربندی SPF و DKIM، از mail() استفاده می‌کنند، اغلب با مشکل اسپم شدن ایمیل‌ها روبرو می‌شوند.

پرسش‌های پرتکرار درباره SMTP

SMTP چیست و چه تفاوتی با IMAP و POP3 دارد؟

SMTP پروتکل ارسال و انتقال ایمیل است، در حالی که IMAP و POP3 پروتکل‌های دریافت ایمیل هستند. در وب‌سایت‌ها، تنها SMTP برای ارسال ایمیل ضروری است. برای درک عمیق‌تر، مقاله تفاوت IMAP و POP3 در تنظیمات ایمیل را مطالعه کنید.

چرا ایمیل‌های سایت من در اسپم می‌روند؟

دلایل متعددی دارد: نبود یا پیکربندی نادرست SPF، DKIM و DMARC؛ استفاده از mail() به‌جای SMTP احراز‌شده؛ اعتبار پایین IP؛ محتوای اسپم‌محور؛ و نرخ بالای شکایت. برای رفع مشکل، ابتدا رکوردهای احراز هویت را پیکربندی کنید.

آیا mail() برای ارسال ایمیل کافی است؟

خیر. تابع mail() PHP در سرورهای اشتراکی معمولاً به اسپم منتهی می‌شود چون احراز هویت ندارد. توصیه می‌شود از SMTP Server احراز‌شده استفاده کنید.

تفاوت SPF، DKIM و DMARC چیست؟

SPF تعیین می‌کند کدام سرورها مجاز به ارسال از دامنه هستند. DKIM با امضای رمزنگاری، اصالت ایمیل را تأیید می‌کند. DMARC سیاست دامنه را برای ایمیل‌های احراز‌نشده تعیین می‌کند. این سه، مکمل یکدیگرند.

کدام پورت SMTP را انتخاب کنم؟

پورت ۵۸۷ با STARTTLS توصیه می‌شود. این پورت، هم امن است و هم توسط اکثر سرویس‌دهندگان پشتیبانی می‌شود. پورت ۴۶۵ گزینه دوم است اما در برخی محیط‌ها ممکن است مسدود شود.

آیا SMTP برای ارسال ایمیل انبوه مناسب است؟

SMTP برای ارسال ایمیل تراکنشی مناسب است. برای ارسال ایمیل انبوه (بازاریابی)، سرویس‌های تخصصی Email Marketing (مانند Mailchimp و Brevo) توصیه می‌شود چون قابلیت مدیریت لیست، گزارش‌گیری و مدیریت Bounce ارائه می‌دهند.

چگونه قابلیت تحویل ایمیل را بهبود دهم؟

با پیکربندی SPF، DKIM و DMARC؛ استفاده از IP معتبر با Warm-up تدریجی؛ پاک‌سازی لیست ایمیل؛ پایش blacklistها؛ تست محتوا با ابزارهایی مانند Mail-Tester؛ و استفاده از سرویس‌های تراکنشی معتبر.

آیا SMTP Server اختصاصی راه‌حل بهتری است؟

برای سازمان‌های بزرگ، ممکن است. اما برای اکثر سایت‌ها، سرویس‌های تراکنشی (مانند SendGrid و Mailgun) قابلیت تحویل بالاتر و مدیریت ساده‌تری ارائه می‌دهند. راه‌اندازی SMTP Server اختصاصی نیازمند دانش فنی بالا و مدیریت reputation IP است.

چگونه مشکل SMTP در وردپرس را رفع کنم؟

با نصب افزونه SMTP و پیکربندی صحیح آن. برای راهنمای گام‌به‌گام، مقاله رفع مشکلات SMTP در وردپرس را مطالعه کنید.

آیا SMTP بر سئو اثر دارد؟

اثر مستقیم ندارد، اما اگر ایمیل‌های بازیابی رمز عبور یا تأیید ثبت‌نام به کاربر نرسد، تجربه کاربری ضعیف می‌شود و این به‌طور غیرمستقیم بر سئو اثر می‌گذارد. برای درک عمیق‌تر، مقاله رابطه Core Web Vitals و نرخ تبدیل چیست؟ را مطالعه کنید.

پایان‌بندی مهندسی

SMTP، ستون فقرات ارسال ایمیل از وب‌سایت است و مدیریت صحیح آن، بخشی از بلوغ فنی هر تیم وب محسوب می‌شود. برخلاف تصور رایج، ارسال ایمیل تنها با mail() کافی نیست؛ این رویکرد، در اکثر سرورهای اشتراکی به اسپم منتهی می‌شود. راهکار صحیح، استفاده از یک SMTP Server احراز‌شده با پشتیبانی از SPF، DKIM و DMARC است.

از منظر مهندسی سطح ارشد، سه اصل در معماری SMTP تعیین‌کننده است. نخست، طراحی یک لایه احراز هویت چندگانه که شامل SPF، DKIM و DMARC باشد و به‌طور یکنواخت در تمام کانال‌های ارسال اعمال شود. دوم، پیاده‌سازی یک مکانیزم پایش پیوسته که قابلیت تحویل، نرخ Bounce، نرخ شکایت و اعتبار IP را به‌عنوان شاخص‌های راهبردی رصد کند و در صورت افت، هشدار دهد. سوم، استقرار یک سیاست مدیریت اعتبار (Reputation Management Policy) که Warm-up تدریجی IP، مدیریت لیست ایمیل و پاسخ به blacklistها را به‌عنوان یک فرآیند مستمر تعریف کند. رعایت این سه اصل، SMTP را از یک پروتکل فنی به یک قابلیت راهبردی در معماری ایمیل سازمان تبدیل می‌کند.

سازمانی که این اصول را جدی بگیرد، در ارسال ایمیل تراکنشی، تجربه کاربری پایدارتری خواهد داشت و از اسپم شدن ایمیل‌های حساس جلوگیری خواهد کرد. SMTP، اگرچه در ظاهر یک پروتکل ساده است، در واقع یکی از ارکان حیاتی زیرساخت ارتباطی هر وب‌سایت محسوب می‌شود.

اگر در پروژه‌های خود تجربه‌ای از پیکربندی SMTP داشته‌اید، برایم جالب است بدانید کدام بخش بیشترین چالش را ایجاد کرد: پیکربندی SPF و DKIM، انتخاب SMTP Server یا مدیریت قابلیت تحویل. تجربه‌تان را در دیدگاه‌ها بنویسید؛ به‌ویژه اگر راه‌حل خلاقانه‌ای برای بهبود قابلیت تحویل به کار برده‌اید. ✉️