فنی · پاسخ مستند

احراز هویت SMTP چیست؟ تعریف و پیاده‌سازی فنی

احراز هویت SMTP سازوکاری امنیتی است که کلاینت ایمیل یا برنامه را ملزم می‌کند پیش از اجازه ارسال ایمیل، هویت خود را به سرور SMTP ثابت کند. این سازوکار با تضمین اینکه فقط کاربران مجاز می‌توانند پیام‌ها را از طریق سرور مسیریابی کنند، از open relay جلوگیری می‌کند و معمولاً از نام کاربری و رمز عبور از طریق افزونه AUTH استفاده می‌کند.

فرایند فنی

فرایند با اتصال کلاینت به سرور و صدور دستور EHLO آغاز می‌شود. سرور با فهرستی از افزونه‌های پشتیبانی‌شده، از جمله AUTH، پاسخ می‌دهد. سپس کلاینت یک سازوکار احراز هویت، مانند PLAIN یا LOGIN، انتخاب می‌کند و اعتبارنامه‌ها را می‌فرستد. اگر سرور این اعتبارنامه‌ها را با پایگاه‌داده کاربران خود تأیید کند، به کلاینت اجازه می‌دهد دستورهای MAIL FROM و RCPT TO را بفرستد.

اهمیت برای فرستندگان

بدون احراز هویت، سرور به یک open relay تبدیل می‌شود و به هر کسی اجازه ارسال ایمیل می‌دهد. این وضعیت به قرار گرفتن سریع IP در لیست سیاه منجر می‌شود، چون اسپمرها از پورت باز سوءاستفاده می‌کنند. پیاده‌سازی احراز هویت SMTP تضمین می‌کند فقط برنامه‌های مشروع بتوانند ایمیل بفرستند؛ این یک الزام بنیادی برای حفظ اعتبار پاک فرستنده و جلوگیری از رد شدن پیام‌ها توسط سرورهای ایمیل گیرنده است.

نکات عملیاتی و اشتباهات رایج

اشتباه رایج، ارسال اعتبارنامه‌ها از طریق اتصال‌های رمزگذاری‌نشده است. برای جلوگیری از سرقت اعتبارنامه‌ها، احراز هویت همیشه باید همراه با STARTTLS یا TLS ضمنی (implicit TLS) باشد. مشکل رایج دیگر، استفاده از روش‌های احراز هویت قدیمی است که ارائه‌دهندگان مدرن از آن‌ها پشتیبانی نمی‌کنند. توسعه‌دهندگان می‌توانند با ابزارهای رایگان SendHQ (https://sendhq.cc/tools) پیکربندی DNS و احراز هویت خود را بررسی کنند.

نمونه عملی پیاده‌سازی

در یک پیاده‌سازی معمولی Python با smtplib، توسعه‌دهنده به پورت 587 وصل می‌شود، starttls() را برای امن کردن اتصال فراخوانی می‌کند و سپس login(user, password) را اجرا می‌کند. این توالی تضمین می‌کند هویت پیش از آنکه سرور پیام را برای تحویل به مقصد نهایی بپذیرد، از طریق یک کانال رمزگذاری‌شده تأیید شود.

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

رایج‌ترین روش‌ها عبارت‌اند از PLAIN که رمز عبور را در قالبی شبیه متن آشکار (Base64) می‌فرستد، و LOGIN که روشی قدیمی است و کلاینت‌های قدیمی‌تر از آن استفاده می‌کنند. سیستم‌های مدرن اغلب OAuth2 را برای احراز هویت SMTP ترجیح می‌دهند که به برنامه‌ها اجازه می‌دهد به‌جای رمزهای عبور ثابت از توکن استفاده کنند و خطر افشای اعتبارنامه‌ها در فایل‌های پیکربندی را کاهش می‌دهد.

پرسش‌هایی که تیم‌ها می‌پرسند

آیا احراز هویت SMTP همان SPF یا DKIM است؟

خیر. احراز هویت SMTP کلاینت را در فرایند ارسال به سرور معرفی و تأیید می‌کند. SPF و DKIM پس از ارسال ایمیل، فرستنده را برای سرور گیرنده تأیید می‌کنند.

برای SMTP با احراز هویت معمولاً از کدام پورت استفاده می‌شود؟

پورت 587 استاندارد ارسال ایمیل (mail submission) با احراز هویت و STARTTLS است، در حالی که پورت 465 برای TLS ضمنی استفاده می‌شود.

اگر احراز هویت SMTP شکست بخورد چه می‌شود؟

سرور کد خطای 535 Authentication Failed برمی‌گرداند و پیام را رد می‌کند؛ در نتیجه پیام وارد صف نمی‌شود و تحویل داده نمی‌شود.

منابع اصلی