ایمیل از سرور خودت ارسال میشود، SPF و DKIM هم ست شده، اما Gmail پیام را با 550-5.7.25 برمیگرداند یا مستقیم میفرستدش به اسپم. لاگ Postfix چیزی نشان نمیدهد چون مشکل سمت تو نیست. مشکل این است که IP تو در DNS معکوس به هیچ نامی اشاره نمیکند و سرور گیرنده راهی برای فهمیدن هویت فرستنده ندارد.
رکورد PTR همان جوابی است که وقتی کسی IP تو را برعکس Query میکند برمیگردد. بدون آن، هر سیاست ضداسپمی مدرن تو را مشکوک میبیند، حتی اگر محتوای ایمیلت کاملاً سالم باشد.
رکورد PTR دقیقاً چه چیزی را حل میکند
وقتی سرور Gmail از IP تو ایمیل میگیرد، اول یک Query معکوس میزند: dig -x 203.0.113.45 +short. اگر جواب خالی باشد یا به نامی اشاره کند که خودش به همان IP برنمیگردد، امتیاز اعتبار فرستنده صفر میشود. این بررسی قبل از SPF و DKIM انجام میشود؛ یعنی حتی امضای درست هم نجاتت نمیدهد.
نکتهای که خیلیها نمیدانند: PTR باید Forward-Confirmed باشد. یعنی اگر dig -x 203.0.113.45 جواب mail.example.com داد، آنگاه dig mail.example.com هم باید همان 203.0.113.45 را برگرداند. اگر این دو به هم نخورند، PTR بیارزش است. این را FCrDNS میگویند و اکثر ابزارهای تست ایمیل آن را جدا چک میکنند.
چه کسی PTR را تنظیم میکند
اینجا جایی است که بیشتر مدیرها گیر میکنند. PTR را تو در پنل DNS دامنهات تنظیم نمیکنی. PTR در Zone فایل ISP یا دیتاسنتری است که IP از آن گرفتهای. تو فقط میتوانی درخواست بدهی.
اگر سرور اختصاصی یا VPS از یک ارائهدهنده ایرانی داری، معمولاً از طریق تیکت پشتیبانی یا پنل مدیریت سرور میتوانی rDNS را ست کنی. اگر روی هاست اشتراکی هستی، PTR معمولاً روی نام سرور خود ارائهدهنده ست شده و تو دسترسی نداری. در این حالت ارسال ایمیل تراکنشی از دامنه شخصی روی هاست اشتراکی همیشه ریسک دارد.
برای سرورهایی که خودت مدیریت میکنی، اگر از هاست لینوکس استفاده میکنی، بخش rDNS معمولاً در همان پنل قابل تنظیم است.
تنظیم PTR در عمل: از کجا شروع کنم
اول IP عمومی خروجی سرورت را پیدا کن. روی سرور بزن:
curl -4 ifconfig.me
ip -4 addr show scope global
بعد بررسی کن که آیا PTR فعلی وجود دارد یا نه:
dig -x 203.0.113.45 +short
host 203.0.113.45
اگر خروجی خالی بود، باید درخواست rDNS بدهی. در درخواست، این دو چیز را دقیق بنویس: IP و نام FQDN مورد نظر. مثلاً mail.example.com. نامی که انتخاب میکنی باید یک A Record معتبر داشته باشد که به همان IP اشاره کند.
الگوی درست در Zone فایل
در Zone دامنهات باید این رکوردها وجود داشته باشند:
mail.example.com. IN A 203.0.113.45
example.com. IN MX 10 mail.example.com.
example.com. IN TXT "v=spf1 mx -all"
و در سمت ISP، PTR باید اینطور ست شود:
45.113.0.203.in-addr.arpa. IN PTR mail.example.com.
ترتیب مهم است. اول A Record را ست کن، DNS را Propagate کن، بعد درخواست PTR بده. اگر PTR را قبل از A Record ست کنی، FCrDNS شکست میخورد و ابزارهای تست ایمیل هشدار میدهند.
چطور تأیید کنم که درست کار میکند
بعد از ست شدن، این دستور را بزن:
dig -x 203.0.113.45 +short
dig mail.example.com +short
هر دو باید یکدیگر را تأیید کنند. برای تست نهایی، یک ایمیل به check-auth@verifier.port25.com بفرست. جوابی که برمیگردد شامل وضعیت SPF، DKIM، و rDNS است. اگر در بخش rDNS نوشته did not find a PTR record، یعنی هنوز ست نشده یا Propagation کامل نشده.
اشتباههایی که واقعاً دیدهام
اینجا اشتباه میکنند: PTR را روی دامنه اصلی ست میکنند، نه روی Subdomain میل. یعنی example.com را به عنوان PTR میدهند، در حالی که MX به mail.example.com اشاره میکند. نتیجه این است که FCrDNS شکست میخورد و Gmail همچنان ایمیل را مشکوک میبیند. علامتش هم این است که تستها همه سبز نشان میدهند اما ایمیل همچنان اسپم میشود.
اشتباه دوم: چند دامنه روی یک IP، همه با یک PTR. اگر روی یک سرور ده سایت میزبانی میکنی و همه از یک IP ایمیل میفرستند، PTR فقط میتواند به یک نام اشاره کند. بقیه دامنهها از نظر FCrDNS ناسازگار میشوند. راهحل درست، IP اختصاصی برای هر دامنهای است که ایمیل تراکنشی میفرستد.
اشتباه سوم که کمتر دیده میشود اما دردناک است: PTR را ست میکنند اما A Record را بعداً عوض میکنند و یادشان میرود PTR را بهروز کنند. یک هفته بعد ایمیلها بیصدا به اسپم میروند و کسی نمیفهمد چرا. اگر IP سرورت را عوض کردی، PTR را هم دوباره چک کن.
PTR کافی نیست: زنجیره کامل اعتبار
PTR فقط یکی از حلقههای زنجیره است. اگر PTR داری اما SPF نداری، همچنان رد میشوی. اگر SPF داری اما DKIM امضا نداری، بعضی گیرندهها پیام را علامتدار میکنند. اگر DMARC نداری، نمیفهمی چه کسی از دامنهات جعل میکند.
| رکورد | چه چیزی را ثابت میکند | اگر نباشد |
|---|---|---|
| PTR | IP به نام میزبان معتبر اشاره میکند | رد در مرحله اتصال |
| SPF | سرور مجاز به ارسال است | Soft-fail یا Reject |
| DKIM | پیام دستنخورده مانده | احتمال اسپم بالاتر |
| DMARC | سیاست جعلزدایی مشخص است | گزارش و کنترل نداری |
ترتیب راهاندازی را رعایت کن: اول A Record، بعد PTR، بعد SPF، بعد DKIM، آخر DMARC. اگر برعکس بروی، هر مرحله تست را سختتر میکند.
وقتی PTR را نمیتوانی ست کنی
روی هاست اشتراکی، PTR در دست تو نیست. اگر ایمیل تراکنشی داری (فرم تماس، بازیابی رمز، تأیید سفارش)، دو راه داری: یا از سرویس ایمیل تراکنشی استفاده کن که IP خودش را با PTR درست مدیریت میکند، یا یک VPS کوچک بگیر و فقط برای ارسال ایمیل استفاده کن.
راه اول سریعتر است و دردسر کمتری دارد. راه دوم کنترل بیشتری میدهد اما باید خودت SPF و DKIM و DMARC را مدیریت کنی. برای اکثر سایتهای وردپرسی، راه اول انتخاب درست است. اگر روی وردپرس هستی و ایمیلهای سیستمیات نمیرسد، قبل از هر چیز مشکل wp-cron وردپرس را چک کن؛ گاهی مشکل اصلاً PTR نیست و کرون اجرا نمیشود.
اگر میخواهی بدانی ایمیلهایت از کجا رد میشوند، ابزارهای رایگان سرورنت شامل تست DNS و بررسی رکوردهاست. برای درک بهتر خطاهای سرور، راهنمای کد وضعیت HTTP هم مرجع خوبی است.
پرسشهای پرتکرار
چرا ایمیلهایم به اسپم میرود در حالی که SPF و DKIM دارم؟
چون PTR نداری یا FCrDNS تأیید نمیشود. سرور گیرنده قبل از بررسی SPF و DKIM، هویت IP تو را چک میکند. اگر PTR خالی باشد یا به نامی اشاره کند که به همان IP برنمیگردد، امتیاز اعتبار فرستنده پایین میآید و پیام به اسپم میرود.
با dig -x IP و dig mail.example.com هر دو را چک کن. اگر یکی از این دو خالی بود یا با دیگری نمیخواند، مشکل همانجاست.
رکورد PTR را خودم در پنل DNS دامنهام ست کنم؟
نه. PTR در Zone فایل ISP یا دیتاسنتر است، نه در DNS دامنه تو. تو فقط میتوانی از طریق تیکت یا پنل سرور درخواست rDNS بدهی. در پنل DNS دامنهات فقط A Record و MX و TXT را ست میکنی.
اگر روی هاست اشتراکی هستی، معمولاً دسترسی به rDNS نداری و باید از سرویس ایمیل تراکنشی استفاده کنی.
چند دامنه میتوانند یک PTR مشترک داشته باشند؟
فقط یکی. PTR فقط به یک نام میزبان اشاره میکند. اگر چند دامنه از یک IP ایمیل بفرستند، فقط دامنهای که PTR به آن اشاره دارد FCrDNS معتبر دارد. بقیه از نظر سرورهای گیرنده مشکوک میشوند.
راهحل درست، IP اختصاصی برای هر دامنهای است که ایمیل تراکنشی میفرستد. اگر تعداد دامنهها زیاد است، سرویس ایمیل تراکنشی بهصرفهتر از مدیریت چند IP است.
بعد از ست کردن PTR چقدر طول میکشد تا اثر کند؟
Propagation معمولاً بین چند دقیقه تا چند ساعت طول میکشد، بسته به TTL رکورد. اگر TTL را روی ۳۰۰ ثانیه (۵ دقیقه) ست کرده باشی، سریعتر میبینی. برای رکوردهای با TTL بالاتر، ممکن است تا ۲۴ ساعت طول بکشد.
بعد از ست شدن، یک ایمیل تست به check-auth@verifier.port25.com بفرست و جواب را بخوان. اگر rDNS تأیید شده بود، مشکل جای دیگری است و باید SPF و DKIM را بررسی کنی.
دیدگاهها ۰
هنوز دیدگاهی ثبت نشده؛ اولین نفر باشید!