Sender Policy Framework (SPF) یک روش احراز هویت ایمیل است که برای تشخیص آدرس جعلی فرستنده، هنگام تحویل ایمیل طراحی شده است.
SPF به سرور ایمیل دریافت کننده اجازه می دهد تا بررسی کند ایمیلی که ادعا می کند از یک دامنه خاص آمده است توسط یک آدرس IP مجاز که توسط ادمین آن دامنه مشخص شده است ارسال شده است یا خیر. لیست سرور های مجاز به ارسال ایمیل و آدرسهای IP برای هر کدام از آنها در رکوردهای SPF آن دامنه منتشر می شود.
SPF در RFC 7208 مورخ آوریل ۲۰۱۴ به عنوان “استاندارد پیشنهادی” تعریف شده است.
فرمت رکورد SPF
برای تعریف یک رکورد SPF، از رکورد TXT استفاده میشود. رکورد TXT نیز یکی از انواع رکوردهای DNS است که میتوان در آن متنی را مشخص کرد. مقدار یک رکورد TXT برای آن که معرف یک رکورد SPF باشد، میتواند چیزی مشابه زیر باشد:
"example.com. 114 IN TXT "v=spf1 a mx ip4:94.101.186.147 -all
این رکورد همیشه با عبارت «v» آغاز میشود. v مخفف version است و به نسخهی SPF مورد استفاده اشاره دارد. تنها نسخهی ارایه شده برای SPF تاکنون، SPFv1 است. از سوی دیگر، خط بالا مشخصکنندهی چند مکانیزم مختلف برای تطبیق است. در حالت عادی و بدون استفاده از کاراکترهای زیر تمام مکانیزمها بررسی و همگی اعمال میشوند:
- + : به قبول مکانیزم تعریفشده اشاره دارد. به بیانی، آدرس یا host مشخصشده در مکانیزم، مجاز به ارسال ایمیل است. این کاراکتر، کاراکتر پیشفرض میان مکانیزمها در خط تعریفی رکورد SPF است.
- – : این کاراکتر به معنای رد مکانیزم تعریف شده است. پس اگر پیش از مکانیزمی این گزینه درج شود، آدرس مشخصشده در مکانیزم مجاز به ارسال ایمیل نیست.
- ~ : مکانیزم پذیرفته میشود اما آدرس مشخص شده در آن برچسب non-compliant mail میخورد.
- ? : بیانگر آن است که مکانیزم نه قبول و نه رد شده است. احتمالن آدرس یا host مطابقتیافته با این مکانیزم پذیرفته شود.
مکانیزمهایی که میتوانند در تعریف رکورد SPF استفاده شوند عبارتاند از:
- ip4 : برای مشخص کردن آدرسهای IP مجاز بهمنظور ارسال ایمیل از این مکانیزم استفاده میشود. اگر ایمیل سرورها از IPv6 پشتیبانی میکنند، میتوانید بهجای ip4 از ip6 استفاده کنند.
- Include : با استفاده از این مکانیزم میتوان ایمیل سرورهایی که خارج از کنترل و مدیریت ما بوده و خدمات ایمیل ارایه میدهند را مشخص کرد. برای نمونه include:_spf.google.com
- all : این عبارت به همه چیز اشاره دارد و هر آدرس و host با آن مطابقت پیدا میکند. معمولن از این عبارت در انتهای سایر مکانیزمها استفاده میشود تا شیوهی برخورد با آدرسهای IP که با هیچیک از مکانیزمهای مشخص شده در خط مطابقت پیدا نکردهاند، تعیین شود.
- all+ : به معنای آن است که هر سروری میتواند از دامنهی شما برای ارسال ایمیل استفاده کند.
- all- : اگر از این عبارت در پایان خطی شامل چند مکانیزم استفاده شود، به معنای آن است که هیچ IP یا host دیگری جز آنچه در خط مشخص شده، اجازهی ارسال ایمیل ندارد. اگر در تعریف رکورد SPF این گزینه بهتنهایی به کار رود یعنی هیچ سروری مجاز به ارسال ایمیل نیست.
- all~ : ایمیلها از سمت سرورهایی جز آنچه در سایر مکانیزمها مشخص شده، پذیرفته میشوند اما برچسب non-compliant mail میخورد.
- a: این مکانیزم به تمام آدرسهای درون رکورد A اشاره دارد.
- mx: این مکانیزم مشخصکنندهی تمام رکوردهای A مربوط به MX record هر host است.
- ptr: این مکانیزم مشخصکنندهی رکوردهای A مربوط به رکورد PTR هر host است.
- exists: با استفاده از این مکانیزم میتوان یک یا چند دامنه را بهعنوان استثنا تعریف کرد.
SPF Modifierها
Modifierها ترکیبی از نام و مقداری هستند که بهوسیلهی = از هم متمایز میشوند. Modifierها معمولن در انتهای خطِ تعریفِ رکورد SPF قرار میگیرند و فقط یکبار میتوان از آنها در تعریف یک رکورد SPF استفاده کرد:
- redirect: از redirect modifier برای اشاره به SPF رکوردی دیگر استفاده میشود. از این مکانیزم میتوان هنگام اعمال رکورد SPF یکسان به چند دامنه استفاده کرد. دقت داشته باشید تنها هنگامی میتوان از redirect استفاده کرد که مدیریت دامنهی دیگری که redirect به آن انجام میشود را نیز در اختیار داشته باشید، وگرنه باید از مکانیزم include استفاده کنید. نمونهای از چگونگی استفاده از این مکانیزم عبارت است از:
v=spf1 redirect=_spf.yourdomain.com
تنظیم رکورد های SPF در پنل کاربری ابر آروان
برای ثبت نمونه رکورد در پنل آروان پس از انتخاب دامنه از پنل کاربری، روی رکوردهای DNS کلیک و یک رکورد TXT جدید ایجاد کنید.
کاربردهای رایج
ارسال ایمیل از IPهای مجاز
اگر قصد دارید تا تنها وبسروری که روی آن سرویس ایمیل را فعال کردهاید مجاز به ارسال ایمیل باشد (برای نمونه تصور کنید آدرس IP وبسرور شما که مجاز به ارسال ایمیل است: 192.168.243.1 است) در بخش عنوان، کاراکتر @ و در بخش مقدار عبارتی همانند زیر درج کنید:
v=spf1 ip4:192.168.243.1
در انتهای عبارت بالا میتوانید از گزینههای +a و +mx نیز استفاده کنید.
ارسال ایمیل از G suite
طبق راهنمای گوگل، مقدار رکورد TXT باید به شکل زیر تعیین شود:
v=spf1 include:_spf.google.com ~all
همچنین اگر از چند دامنهی دیگر جز گوگل نیز استفاده میکنید، این مقدار میتواند به یکی از دو روش زیر تعریف شود:
v=spf1 ip4:172.16.254.1 include:_spf.google.com ~all
یا
v=spf1 include:serverdomain.com include:_spf.google.com ~all
برای اطلاع بیشتر میتوانید راهنمای G suite در این زمینه را بخوانید.
ثبت رکورد با استفاده از API
curl --location --request POST \ 'https://napi.arvancloud.ir/cdn/4.0/domains/example.com/dns-records' --header 'authority: napi.arvancloud.ir' \ --header 'accept: application/json, text/plain,*/*'\ --header 'authorization: API 1.2.3.4' \ --header 'content-type: application/json;charset=UTF-8' \ --header 'origin: https://panel.arvancloud.ir' \ --data-raw '{"type":"TXT","name":"@","cloud":true,"value":{"text":"v=spf1 a mx ip4:192.168.1.1 -all"},"upstream_https":"default","ip_filter_mode":{"count":"single","geo_filter":"none","order":"none"},"ttl":120} '
Bind Format رکورد ثبتشده
"example.com. 120 IN TXT "v=spf1 a mx ip4:192.168.1.1 -all