ایمیل فاکتور فروشگاه یا لینک بازیابی رمز به جای اینباکس در پوشه Spam جیمیل می‌نشیند؟ برای ارسال ایمیل از سرور ایران به اینباکس، چهار شرط لازم است. رکورد PTR با hostname هماهنگ باشد و دامنه با SPF و DKIM و DMARC احراز هویت شود. مسیر خروجی روی پورت 25 یا یک SMTP Relay معتبر سالم باشد و IP در بلک‌لیست‌ها نباشد. در الزامات رسمی جیمیل و یاهو شرطی درباره کشور فرستنده نیامده است.

بررسیوضعیت درستابزار تست
رکورد PTRتطابق رفت‌وبرگشت IP و hostnameدستور dig -x
نام HELO سروربرابر با hostname ثبت‌شده در PTRدستور postconf myhostname
پورت 25 خروجیاتصال به MX جیمیل برقرار شوددستور nc -vz
رکورد SPFفقط یک رکورد v=spf1 با حداکثر ۱۰ جست‌وجوی DNSدستور dig TXT
امضای DKIMکلید ۲۰۴۸ بیتی و نتیجه dkim=passگزینه Show original در جیمیل
رکورد DMARCشروع با p=none و دریافت گزارش ruaرکورد _dmarc دامنه
بلک‌لیستآدرس IP در فهرست‌های Spamhaus نباشدسایت check.spamhaus.org

💡 نکته کلیدی

اسپم شدن یعنی سرور گیرنده به هویت فرستنده یا اعتبار IP او اعتماد نکرده است.
✅ جیمیل از همه فرستنده‌ها PTR معتبر، اتصال TLS و دست‌کم یکی از SPF یا DKIM را می‌خواهد.
✅ بعد از هر تغییر، یک ایمیل تست به جیمیل بفرستید و نتیجه را در هدر پیام بخوانید.

ترتیب انجام کارها مهم است. اگر پیش از درست شدن PTR و DKIM ارسال انبوه را شروع کنید، گزارش‌های اسپم کاربران اعتبار دامنه را پایین می‌آورد. به گفته گوگل، بهبود نرخ اسپم زمان می‌برد تا اثر کند. پس از لایه شبکه شروع می‌کنیم، بعد DNS دامنه و آخر تست با ایمیل واقعی؛ هر مرحله دستور تست و خروجی نمونه دارد. این راهنما برای سرور لینوکسی با Postfix نوشته شده است.

نمودار مسیر یک ایمیل از سرور مجازی تا اینباکس جیمیل همراه با بررسی‌های PTR، SPF و DKIM، ارسال ایمیل از سرور ایران

چرا ارسال ایمیل از سرور ایران به پوشه اسپم می‌رسد؟

سرور گیرنده برای هر پیام سه پرسش دارد: این IP کیست، آیا دامنه به این سرور اجازه ارسال داده است، و این فرستنده تا امروز چه رفتاری داشته است. سرور تازه‌ای که PTR و DKIM ندارد و IP آن سابقه‌ای ندارد، به هیچ‌کدام از این سه پرسش پاسخ قانع‌کننده‌ای نمی‌دهد.

اعتبار IP و سابقه آدرس فرستنده

روی هاست اشتراکی وضعیت سخت‌تر است. گوگل می‌گوید فعالیت هر فرستنده روی IP مشترک، اعتبار همه فرستنده‌های آن IP را تغییر می‌دهد. برای ایمیل‌های مهم، سروری که IP آن فقط در اختیار خودتان است، مثل یک سرور مجازی ایران، کنترل این اعتبار را به دست خودتان می‌دهد.

احراز هویت ناقص دامنه

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

رفتار ارسال و کدهای خطای رایج

ارسال ناگهانی هزار ایمیل از سروری که دیروز ساکت بوده، برای فیلترها هشدار است؛ گوگل توصیه می‌کند با حجم کم و مخاطبان فعال شروع کنید. لاگ را روی Debian و Ubuntu در /var/log/mail.log، روی RHEL در /var/log/maillog و روی cPanel در /var/log/exim_mainlog ببینید.

پیام یا کد خطامعنیاقدام
کد 5.7.26پیام احراز هویت نشده استرکورد SPF و امضای DKIM را بررسی کنید
کد 4.7.28از سقف نرخ ارسال جیمیل عبور کرده‌اید۱۰ دقیقه صبر و شروع دوباره با یک اتصال
پیام IPv6 sending guidelinesارسال روی IPv6 انجام شده و PTR یا احراز هویت آن مشکل داردبرای IPv6 هم PTR بگیرید یا ارسال را به IPv4 محدود کنید
خطای Connection timed out روی پورت 25معمولاً پورت 25 خروجی بسته استبررسی فایروال، پرسش از ارائه‌دهنده یا Relay

پیش‌نیاز شبکه: رکورد PTR، نام hostname و پورت 25

پیش از هر تنظیم DNS، لایه شبکه باید سالم باشد. آدرس IP سرور رکورد PTR داشته باشد که به یک hostname کامل اشاره کند و همان hostname با رکورد A یا AAAA به همان IP برگردد. پورت 25 خروجی هم باید باز باشد. این سه شرط پایه ارسال ایمیل از سرور ایران است و بدون آن‌ها بهترین رکورد SPF هم کمکی نمی‌کند.

رکورد PTR و تطابق رفت‌وبرگشت

رکورد PTR در DNS معکوس IP تعریف می‌شود و مدیریتش با دارنده آن IP، یعنی ارائه‌دهنده سرور، است؛ برای همین در پنل DNS دامنه پیدایش نمی‌کنید. گوگل شرط را دقیق نوشته است: PTR به یک hostname برسد و همان hostname با رکورد A یا AAAA به همان IP فرستنده برگردد. مراحل ثبت را در راهنمای تنظیم رکورد PTR یا rDNS ببینید و بعد نتیجه را بسنجید:

dig -x 203.0.113.10 +short
# expected: mail.example.ir.

dig +short A mail.example.ir
# expected: 203.0.113.10

dig +short AAAA mail.example.ir   # only if the server sends over IPv6

اگر خروجی دستور اول خالی بود، PTR وجود ندارد. اگر نامی کلی مثل static.203-0-113-10.provider.net برگشت، PTR هست اما با hostname شما یکی نیست و باید عوض شود. لازم نیست hostname هم‌دامنه آدرس From باشد، اما زیردامنه‌ای مثل mail.دامنه‌شما ساده‌تر است. IP و دامنه‌ها نمونه‌اند.

نام hostname و پیام HELO سرور

سرور ایمیل خودش را با HELO یا EHLO معرفی می‌کند. در Postfix پارامتر smtp_helo_name به‌طور پیش‌فرض همان myhostname است و باید با نام PTR یکی باشد. نام‌هایی مثل localhost.localdomain را عوض کنید:

sudo hostnamectl set-hostname mail.example.ir
sudo postconf -e 'myhostname = mail.example.ir'
sudo postconf -e 'smtp_tls_security_level = may'
sudo systemctl reload postfix

خط سوم TLS فرصت‌طلبانه را روشن می‌کند. طبق مستندات Postfix، پیش‌فرض این پارامتر از نسخه 3.11 برابر may است و در نسخه‌های قدیمی‌تر خالی؛ پس روی Postfix قدیمی آن را دستی تنظیم کنید.

وضعیت پورت 25 خروجی و راه تست آن

برخی ارائه‌دهندگان پورت 25 خروجی را به‌طور پیش‌فرض می‌بندند تا سرورهای آلوده اسپم نفرستند. نمونه مستندش Hetzner است که پورت‌های 25 و 465 را روی سرورهای ابری می‌بندد و 587 را باز می‌گذارد. تفاوت این پورت‌ها را در راهنمای پروتکل‌ها و پورت‌های ایمیل توضیح داده‌ایم. برای تست، به سرور MX جیمیل وصل شوید:

nc -vz -w 5 gmail-smtp-in.l.google.com 25
# succeeded / open -> port 25 is open; timed out -> blocked

# fallback without nc (bash):
timeout 5 bash -c '</dev/tcp/gmail-smtp-in.l.google.com/25' && echo open

اگر اتصال بسته بود، اول فایروال سرور را ببینید، بعد از پشتیبانی بپرسید آیا پورت 25 خروجی باز می‌شود؛ اگر نه، راه بعدی Relay روی 587 در بخش آخر است.

🔶 یادداشت وب‌داده

سرورهای مجازی ایران وب‌داده در دیتاسنتر تهران و روی شبکه رسپینا میزبانی می‌شوند و هر سرور IP مستقیمی دارد که از اینترنت بین‌الملل هم در دسترس است؛ IPv4 و IPv6 هر دو پشتیبانی می‌شوند. پیش از خرید، روی تست ساعتی رایگان همین دستور nc را اجرا کنید. اگر IPv6 روشن است، برای آن هم PTR بگیرید یا با inet_protocols = ipv4 ارسال را به IPv4 محدود کنید.

⚠️ محدودیت این مرحله

رکورد PTR و hostname درست فقط حداقل شرط‌اند و اینباکس را تضمین نمی‌کنند؛ اعتبار را رفتار ارسال می‌سازد.

پیش‌نیاز شبکه: رکورد PTR، نام hostname و پورت 25

تنظیم SPF، DKIM و DMARC برای دامنه فرستنده

این سه رکورد DNS می‌گویند کدام سرورها حق ارسال دارند، پیام دست‌کاری نشده و اگر بررسی رد شد چه شود. برای ارسال ایمیل از سرور ایران به جیمیل، دست‌کم یکی از SPF یا DKIM الزامی است و برای بیش از ۵۰۰۰ پیام در روز هر سه رکورد لازم‌اند.

رکورد SPF با حداکثر ۱۰ جست‌وجو

رکورد SPF فرستنده‌های مجاز دامنه را فهرست می‌کند. طبق RFC 7208، هر دامنه فقط یک رکورد SPF دارد و مکانیزم‌های include، a، mx، ptr و exists به‌اضافه redirect روی هم حداکثر ۱۰ جست‌وجوی DNS مجازند؛ بیشتر از آن نتیجه را permerror می‌کند. نمونه:

example.ir.  IN  TXT  "v=spf1 ip4:203.0.113.10 ip6:2001:db8::10 include:relay.example.net ~all"

در ip4 و ip6 آدرس عمومی سرور را بگذارید؛ این دو جست‌وجو حساب نمی‌شوند. مقدار include را از مستندات سرویس Relay بردارید و برای شمردن جست‌وجوها روی هر include دستور dig TXT بزنید. پایان ~all یعنی بقیه فرستنده‌ها مشکوک‌اند اما رد نمی‌شوند.

کلید DKIM و امضای پیام با OpenDKIM

امضای DKIM با کلید خصوصی سرور ساخته و با کلید عمومی در DNS سنجیده می‌شود. RFC 8301 حداقل ۱۰۲۴ بیت را اجباری و ۲۰۴۸ بیت را توصیه کرده و گوگل هم همین را نوشته است. ساختن کلید کافی نیست؛ Postfix باید هر پیام را از OpenDKIM عبور دهد. روی Debian و Ubuntu:

sudo apt install opendkim opendkim-tools
sudo mkdir -p /etc/opendkim/keys && cd /etc/opendkim/keys
sudo opendkim-genkey -b 2048 -d example.ir -s mail
sudo chown opendkim:opendkim mail.private
# publish the content of mail.txt as TXT at: mail._domainkey.example.ir

حالا در فایل /etc/opendkim.conf حالت امضا، دامنه، کلید و سوکت را تعریف کنید و خط Socket پیش‌فرض را با این خط عوض کنید. بعد Postfix را به همان سوکت وصل کنید:

# /etc/opendkim.conf
Mode      sv
Domain    example.ir
Selector  mail
KeyFile   /etc/opendkim/keys/mail.private
Socket    inet:8891@localhost

# /etc/postfix/main.cf
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
milter_default_action = accept

sudo systemctl restart opendkim postfix

خط non_smtpd_milters ایمیل‌هایی را که اسکریپت سایت با sendmail می‌فرستد هم امضا می‌کند و accept یعنی با از کار افتادن OpenDKIM ارسال متوقف نشود. کلید ۲۰۴۸ بیتی در یک رشته ۲۵۵ کاراکتری TXT جا نمی‌شود؛ اگر پنل DNS خطا داد، آن را به چند رشته بشکنید.

رکورد DMARC از حالت نظارت تا اجرا

رکورد DMARC می‌گوید اگر احراز هویت رد شد یا با دامنه From هم‌تراز نبود، گیرنده چه کند و گزارش را کجا بفرستد. سند RFC 9989 در ۲۹ اردیبهشت ۱۴۰۵ جای RFC 7489 را گرفت؛ رکوردها همچنان با v=DMARC1 شروع می‌شوند و تگ pct حذف شده است. گوگل حتی برای ارسال انبوه می‌نویسد سیاست DMARC می‌تواند none باشد؛ پس با حالت نظارت شروع کنید:

_dmarc.example.ir.  IN  TXT  "v=DMARC1; p=none; rua=mailto:dmarc@example.ir"

وقتی گزارش‌ها نشان داد فرستنده‌های واقعی pass می‌گیرند، به quarantine و بعد reject بروید. برای سایت‌های روی cPanel، آموزش تنظیم رکورد DMARC در cPanel مراحل را در پنل نشان می‌دهد.

الزامات جیمیل و یاهو (اجرا از فوریه ۲۰۲۴)

جیمیل این قواعد را از ۱ فوریه ۲۰۲۴ اجرا می‌کند:

الزام جیمیلهمه فرستنده‌هابیش از ۵۰۰۰ پیام در روز
رکورد SPF و امضای DKIMیکی از این دو کافی استهر دو الزامی‌اند
رکورد DMARCتوصیه می‌شودالزامی؛ p=none کافی است
هم‌ترازی دامنه Fromالزام صریح نداردبا دامنه SPF یا DKIM هم‌تراز باشد
رکورد PTR و DNS رفت‌وبرگشتالزامیالزامی
اتصال TLSالزامیالزامی
نرخ اسپم در Postmaster Toolsزیر ۰٫۳ درصدزیر ۰٫۳ درصد؛ هدف زیر ۰٫۱ درصد
لغو اشتراکراه ساده لغو توصیه می‌شودیک‌کلیکی برای پیام تبلیغاتی و اشتراکی

یاهو هم اجرای قواعدش را از فوریه ۲۰۲۴ اعلام کرده، اما برای فرستنده انبوه عددی منتشر نکرده و از TLS نامی نبرده است:

الزام یاهوهمه فرستنده‌هافرستنده انبوه
رکورد SPF و امضای DKIMدست‌کم یکیهر دو
رکورد DMARCاعلام نشدهسیاست معتبر با حداقل p=none که pass شود
رکورد PTR و DNS رفت‌وبرگشتالزامیالزامی
نرخ اسپمزیر ۰٫۳ درصدزیر ۰٫۳ درصد
لغو اشتراکاعلام نشدهیک‌کلیکی و اعمال لغو ظرف دو روز

تنظیم SPF، DKIM و DMARC برای دامنه فرستنده

بلک‌لیست، Relay و تست نهایی ارسال ایمیل از سرور ایران

آخرین مرحله سنجیدن نتیجه است: IP را در بلک‌لیست‌ها بررسی کنید، اگر پورت 25 بسته است Relay بسازید و یک ایمیل واقعی به جیمیل و یاهو بفرستید. فقط همین ایمیل نشان می‌دهد تنظیمات درست کار می‌کند.

بررسی بلک‌لیست و شرایط خروج از Spamhaus PBL

آدرس IP را در check.spamhaus.org وارد کنید. حضور در فهرست SBL یا XBL یعنی از این IP اسپم یا ترافیک آلوده دیده شده و اول باید منبع را پیدا کنید. روند پاک‌سازی را در راهنمای رفع خطای IP blacklisted نوشته‌ایم. فهرست PBL فرق دارد: رنج‌هایی مثل IP کاربران خانگی را نشان می‌دهد که نباید مستقیم به MX بفرستند. حضور در آن خرابکاری نیست، اما گیرنده‌ای که از آن استفاده کند معمولاً پیام را رد می‌کند. Spamhaus خروج یک IP از PBL را وقتی می‌پذیرد که:

  • آدرس IP ثابت باشد و پویا نباشد.
  • روی آن IP یک سرور ایمیل خروجی کار کند.
  • رکورد A و رکورد معکوس (rDNS) آن درست تنظیم شده باشد.
  • آن IP به همان شخص یا شرکت درخواست‌دهنده واگذار شده باشد.
  • پورت 25 خروجی برای همه دستگاه‌ها به‌جز همان سرور ایمیل بسته باشد.

درخواست از نشانی ایمیل رایگان مثل جیمیل پذیرفته نمی‌شود. خروج تکی بعد از یک سال منقضی می‌شود و با دیده شدن اسپم زودتر برمی‌گردد.

ارسال از طریق SMTP Relay وقتی پورت 25 بسته است

در روش Relay، سرور پیام را با نام کاربری و رمز روی پورت 587 به یک سرویس ارسال ایمیل می‌دهد تا آن را تحویل دهد. پیش از هر چیز مطمئن شوید آن سرویس مشتری و سرور در ایران را می‌پذیرد؛ بعد بسته SASL را نصب کنید (libsasl2-modules در Debian و Ubuntu، cyrus-sasl-plain در RHEL):

# /etc/postfix/main.cf
relayhost = [smtp.relay.example.net]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = encrypt

# /etc/postfix/sasl_passwd
[smtp.relay.example.net]:587  USERNAME:PASSWORD

sudo postmap /etc/postfix/sasl_passwd
sudo chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
sudo systemctl reload postfix

با Relay، مقدار encrypt جای may را می‌گیرد تا رمز بدون رمزنگاری فرستاده نشود. کروشه دور نام سرور جلوی جست‌وجوی رکورد MX را می‌گیرد. سرویس Relay را با include به SPF اضافه کنید و DKIM را فعال نگه دارید.

تست تحویل با هدر کامل در جیمیل و یاهو

در جیمیل پیام را باز کنید و از منوی More گزینه Show original را بزنید؛ در یاهو از آیکون More گزینه View Raw Message را انتخاب کنید. در خط Authentication-Results باید spf=pass و dkim=pass و dmarc=pass ببینید و اگر یکی fail بود، همان رکورد را با dig دوباره بررسی کنید.

  1. دامنه را در Google Postmaster Tools ثبت کنید تا نرخ اسپم را ببینید.
  2. حجم ارسال را در هفته‌های اول آرام بالا ببرید.
  3. برای خبرنامه، هدرهای List-Unsubscribe و List-Unsubscribe-Post طبق RFC 8058 را بگذارید. این دو هدر باید زیر امضای DKIM باشند.
  4. نرخ اسپم را زیر ۰٫۱ درصد نگه دارید و هرگز به ۰٫۳ درصد نرسانید.

پرسش‌های رایج درباره اسپم شدن ایمیل‌های سرور

رکورد PTR چیست و چه فرقی با رکورد A دارد؟

رکورد A نام را به IP تبدیل می‌کند و PTR برعکس، IP را به نام. رکورد A را در DNS دامنه می‌سازید، اما PTR را ارائه‌دهنده سرور تنظیم می‌کند. جیمیل و یاهو هر دو PTR معتبر را لازم می‌دانند.

رکورد DMARC سیاست دامنه برای پیام‌هایی است که احراز هویت آن‌ها رد می‌شود یا با دامنه From هم‌تراز نیست. با p=none و یک نشانی rua شروع کنید و بعد از اطمینان از گزارش‌ها به quarantine و reject بروید.

پروتکل SMTP. پورت 25 برای انتقال بین سرورهای ایمیل است و 587 برای تحویل پیام به سرور ارسال با نام کاربری و رمز؛ با بسته بودن 25، ارسال از راه 587 و Relay ممکن است.

در الزامات رسمی جیمیل و یاهو شرطی درباره کشور فرستنده وجود ندارد و فهرست‌هایی مثل Spamhaus، IP یا رنج مشخص را بر اساس رفتار یا سیاست ثبت می‌کنند. وضعیت IP خودتان را با یک بررسی چندفهرستی، از جمله check.spamhaus.org، و گزارش Postmaster Tools بسنجید.

ممکن است؛ روی IP مشترک، رفتار همه سایت‌های سرور روی اعتبار IP اثر دارد. برای ایمیل‌های مهم، سرور با IP اختصاصی یا یک Relay معتبر پیش‌بینی‌پذیرتر است.

این پیام در لاگ Exim، موتور ایمیل سرورهای cPanel و DirectAdmin، دیده می‌شود و یعنی تلاش‌های قبلی برای تحویل به جیمیل شکست خورده و هنوز زمان تلاش دوباره نرسیده است. علت را در خطای اولیه لاگ پیدا کنید؛ معمولاً پورت 25 بسته، نبود PTR یا رد شدن احراز هویت است.

هر سرویس فیلتر و سابقه جداگانه‌ای از IP و دامنه شما دارد. هدر پیام را با View Raw Message در یاهو و Show original در جیمیل مقایسه کنید تا بررسی ردشده را پیدا کنید.

جمع‌بندی؛ ارسال ایمیل از سرور ایران بدون اسپم مسیر اینباکس چهار لایه دارد. اول شبکه: PTR هماهنگ با hostname و HELO، اتصال TLS و پورت 25 باز یا Relay روی پورت 587. بعد هویت دامنه: یک رکورد SPF با حداکثر ۱۰ جست‌وجو و کلید DKIM با طول ۲۰۴۸ بیت که OpenDKIM واقعاً با آن امضا کند. رکورد DMARC با p=none شروع می‌شود و بعد از خواندن گزارش‌ها سخت‌گیرتر می‌شود. سوم پاکی IP در Spamhaus و آخر رفتار: ارسال تدریجی، نرخ اسپم زیر ۰٫۱ درصد و لغو اشتراک یک‌کلیکی. کشور محل سرور در هیچ‌کدام از این الزامات شرط نشده است. اگر فقط یک توصیه را به خاطر بسپارید: بعد از هر تغییر یک ایمیل تست بفرستید و خط Authentication-Results را بخوانید؛ این خط نشان می‌دهد گیرنده درباره ایمیل شما چه تصمیمی گرفته است.

🚀 تست ساعتی رایگان سرور

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

اگر هنوز ایمیل‌ها به اسپم می‌روند، کد خطا یا خط Authentication-Results را بدون IP و دامنه واقعی در نظرات بنویسید تا بررسی کنیم.

منابع

وب داده
وب داده

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

مقاله‌ها: 230
پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *