SPF، DKIM و DMARC چیست؟ راهنمای تنظیم و عیبیابی ایمیل
رسیدن ایمیل به Inbox فقط به سالمبودن SMTP وابسته نیست. سرور گیرنده باید بتواند تشخیص دهد پیام واقعاً از طرف دامنه شما ارسال شده و در مسیر تغییر نکرده است. سه سازوکار اصلی این زنجیره SPF، DKIM و DMARC هستند.
این سه رکورد جای یکدیگر را نمیگیرند: SPF مسیر ارسال را مجاز میکند، DKIM پیام را امضا میکند و DMARC نتیجه آنها را با دامنه قابلمشاهده در From همتراز میکند و سیاست برخورد را مشخص میکند.
SPF چیست؟
SPF یا Sender Policy Framework یک رکورد TXT در DNS است که مشخص میکند چه IPها یا سرویسهایی اجازه دارند برای دامنه شما ایمیل ارسال کنند.
example.com. TXT "v=spf1 ip4:203.0.113.10 include:_spf.example.net -all"
در زمان دریافت پیام، سرور مقصد IP فرستنده را با SPF دامنه Envelope-From یا Return-Path مقایسه میکند. نکته مهم این است که SPF لزوماً دامنهای را که کاربر در قسمت From میبیند بررسی نمیکند؛ به همین دلیل DMARC مفهوم Alignment را اضافه میکند.
خطاهای رایج SPF
- وجود بیش از یک رکورد SPF برای یک دامنه
- فراموشکردن سرویسهای جانبی مانند CRM، فرم سایت یا خبرنامه
- عبور از سقف ۱۰ DNS Lookup
- استفاده زودهنگام از
-allقبل از شناسایی همه فرستندهها - قرار دادن SPF روی Host اشتباه
DKIM چیست؟
DKIM یا DomainKeys Identified Mail به سرور ارسالکننده اجازه میدهد بخشهایی از پیام را با کلید خصوصی امضا کند. کلید عمومی در DNS منتشر میشود و گیرنده با آن امضا را بررسی میکند.
رکورد DKIM معمولاً روی آدرسی شبیه زیر قرار میگیرد:
selector1._domainkey.example.com
Selector مشخص میکند کدام کلید باید خوانده شود. امکان داشتن چند Selector وجود دارد؛ این ویژگی برای تعویض دورهای کلید و استفاده همزمان از چند سرویس مفید است.
دلایل رایج شکست DKIM
- انتشار کلید روی Selector اشتباه
- ناقصشدن مقدار TXT هنگام کپی در DNS
- امضاشدن پیام با دامنهای متفاوت از دامنه From
- تغییر محتوای امضاشده توسط Forwarder، Gateway یا Disclaimer
- استفاده از کلید قدیمی پس از Rotation
DMARC چیست و Alignment چه معنایی دارد؟
DMARC نتیجه SPF و DKIM را در ارتباط با دامنه موجود در Header From بررسی میکند. برای قبولی DMARC کافی است حداقل یکی از این دو مسیر پاس شود و با From همتراز باشد:
- SPF Pass + SPF Alignment
- DKIM Pass + DKIM Alignment
یک رکورد مانیتورینگ اولیه میتواند شبیه این باشد:
_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com; pct=100"
سیاستها عبارتاند از:
p=none: جمعآوری گزارش بدون درخواست قرنطینه یا ردp=quarantine: درخواست انتقال پیام نامعتبر به Spam یا قرنطینهp=reject: درخواست رد پیام نامعتبر
طبق راهنمای Google، بهتر است ابتدا SPF و DKIM را راهاندازی و پایدار کنید و سپس DMARC را مرحلهای اجرا کنید. تغییر مستقیم از نبود DMARC به p=reject میتواند ارسال سرویسهای قانونی اما فراموششده را مختل کند. منابع رسمی: روشهای احراز هویت ایمیل و راهاندازی DMARC.
روش مرحلهبهمرحله تنظیم
۱. همه منابع ارسال را فهرست کنید
میلسرور اصلی، فرم سایت، Help Desk، CRM، سرویس خبرنامه، سیستم فاکتور، مانیتورینگ و هر سرویس ابری را ثبت کنید. اگر منبعی در این فهرست نباشد، ممکن است پس از سختگیری DMARC حذف یا قرنطینه شود.
۲. فقط یک SPF معتبر منتشر کنید
همه منابع مجاز را در یک رکورد ترکیب کنید. قبل از افزودن Include، زنجیره Lookup آن را بررسی کنید. رکوردهای قدیمی را بدون اطمینان حذف نکنید.
۳. DKIM را برای هر سرویس فعال کنید
کلید پیشنهادی سرویس را در DNS منتشر کنید، سپس ارسال آزمایشی انجام دهید. برای سرویسهای مختلف از Selectorهای جدا استفاده کنید تا Rotation و عیبیابی سادهتر باشد.
۴. DMARC را با مانیتورینگ شروع کنید
ابتدا p=none و یک Mailbox مخصوص گزارشهای Aggregate تعریف کنید. گزارشها را بررسی کنید تا همه فرستندههای مجاز شناسایی شوند. پس از پایدارشدن SPF/DKIM و Alignment، سیاست را بهتدریج به Quarantine و سپس Reject ببرید.
چطور نتیجه را در هدر ایمیل بررسی کنیم؟
در Gmail از گزینه Show original و در سایر Clientها از View Source یا Message Headers استفاده کنید. به بخش Authentication-Results نگاه کنید:
spf=pass
dkim=pass
dmarc=pass
فقط Pass بودن کافی نیست؛ دامنههای smtp.mailfrom و header.d را با دامنه header.from مقایسه کنید. اگر SPF و DKIM پاس هستند اما DMARC Fail است، معمولاً مشکل Alignment وجود دارد.
ابزارهای خط فرمان برای بررسی DNS
dig TXT example.com
dig TXT selector1._domainkey.example.com
dig TXT _dmarc.example.com
nslookup -type=TXT example.com
به TTL توجه کنید. مشاهده رکورد در پنل DNS به معنی انتشار جهانی فوری نیست؛ Resolverهای مختلف ممکن است تا پایان TTL پاسخ قبلی را نگه دارند.
چکلیست عیبیابی تحویل ایمیل
- بررسی A، MX و PTR/Reverse DNS
- تطبیق Hostname و Banner سرویس SMTP
- بررسی SPF Lookup و منابع ارسال
- بررسی Selector و امضای DKIM
- بررسی DMARC Alignment و Policy
- بررسی Reputation، Blacklist و نرخ Bounce
- بررسی Queue و Log میلسرور
- ارسال آزمایشی به چند Provider و مقایسه Header
از کجا بفهمیم تنظیمات موفق بوده است؟
شاخص موفقیت فقط وجود رکورد DNS نیست. پیامهای واقعی باید SPF/DKIM/DMARC Pass داشته باشند، گزارشهای DMARC منبع ناشناس مهمی نشان ندهند، Bounce افزایش پیدا نکند و سرویسهای قانونی پس از اعمال Policy همچنان تحویل شوند.
اگر در تنظیم DNS، لاگ SMTP یا تحویل ایمیل مشکل دارید، خدمات مدیریت سرویسهای ایمیل و زیرساخت میتواند به بررسی مرحلهبهمرحله کمک کند.