
به اشتراک بگذارید

به اشتراک بگذارید
ایمیل فاکتور فروشگاه یا لینک بازیابی رمز به جای اینباکس در پوشه 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، نام hostname و پورت 25
◀️ تنظیم SPF، DKIM و DMARC برای دامنه فرستنده
◀️ بلکلیست، Relay و تست نهایی تحویل

سرور گیرنده برای هر پیام سه پرسش دارد: این IP کیست، آیا دامنه به این سرور اجازه ارسال داده است، و این فرستنده تا امروز چه رفتاری داشته است. سرور تازهای که PTR و DKIM ندارد و 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 |
پیش از هر تنظیم DNS، لایه شبکه باید سالم باشد. آدرس IP سرور رکورد PTR داشته باشد که به یک hostname کامل اشاره کند و همان hostname با رکورد A یا AAAA به همان IP برگردد. پورت 25 خروجی هم باید باز باشد. این سه شرط پایه ارسال ایمیل از سرور ایران است و بدون آنها بهترین رکورد SPF هم کمکی نمیکند.
رکورد 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 و دامنهها نمونهاند.
سرور ایمیل خودش را با 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 خروجی را بهطور پیشفرض میبندند تا سرورهای آلوده اسپم نفرستند. نمونه مستندش 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 درست فقط حداقل شرطاند و اینباکس را تضمین نمیکنند؛ اعتبار را رفتار ارسال میسازد.

این سه رکورد DNS میگویند کدام سرورها حق ارسال دارند، پیام دستکاری نشده و اگر بررسی رد شد چه شود. برای ارسال ایمیل از سرور ایران به جیمیل، دستکم یکی از SPF یا DKIM الزامی است و برای بیش از ۵۰۰۰ پیام در روز هر سه رکورد لازماند.
رکورد 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 با کلید خصوصی سرور ساخته و با کلید عمومی در 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 میگوید اگر احراز هویت رد شد یا با دامنه 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 رفتوبرگشت | الزامی | الزامی |
| نرخ اسپم | زیر ۰٫۳ درصد | زیر ۰٫۳ درصد |
| لغو اشتراک | اعلام نشده | یککلیکی و اعمال لغو ظرف دو روز |

آخرین مرحله سنجیدن نتیجه است: IP را در بلکلیستها بررسی کنید، اگر پورت 25 بسته است Relay بسازید و یک ایمیل واقعی به جیمیل و یاهو بفرستید. فقط همین ایمیل نشان میدهد تنظیمات درست کار میکند.
آدرس IP را در check.spamhaus.org وارد کنید. حضور در فهرست SBL یا XBL یعنی از این IP اسپم یا ترافیک آلوده دیده شده و اول باید منبع را پیدا کنید. روند پاکسازی را در راهنمای رفع خطای IP blacklisted نوشتهایم. فهرست PBL فرق دارد: رنجهایی مثل IP کاربران خانگی را نشان میدهد که نباید مستقیم به MX بفرستند. حضور در آن خرابکاری نیست، اما گیرندهای که از آن استفاده کند معمولاً پیام را رد میکند. Spamhaus خروج یک IP از PBL را وقتی میپذیرد که:
درخواست از نشانی ایمیل رایگان مثل جیمیل پذیرفته نمیشود. خروج تکی بعد از یک سال منقضی میشود و با دیده شدن اسپم زودتر برمیگردد.
در روش 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 دوباره بررسی کنید.
پرسشهای رایج درباره اسپم شدن ایمیلهای سرور
رکورد 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 و دامنه واقعی در نظرات بنویسید تا بررسی کنیم.
منابع