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

به اشتراک بگذارید
رفع خطای Retry Time Not Reached در ارسال ایمیل یکی از پرتکرارترین دغدغههای مدیران سرور و صاحبان وبسایت است. تصور کنید ایمیل مهمی را ارسال کردهاید؛ فاکتور مشتری، تأیید سفارش یا یک پیشنهاد تجاری حیاتی. اما بهجای رسیدن به مقصد، با پیغام خطای Retry time not reached for any host after a long failure period مواجه میشوید. این یعنی سرور شما عملاً دست از تلاش برای ارسال ایمیل برداشته و ایمیلهایتان در صف گیر کردهاند.
حتماً زمانی که این مقاله را باز کردهاید، به دنبال راهحلی سریع و قابلاعتماد برای رفع این مشکل هستید. خبر خوب اینکه این خطا مختص سرورهایی است که از Exim بهعنوان میلسرور استفاده میکنند، یعنی اکثر سرورهای cPanel و بسیاری از سرورهای DirectAdmin. و در بیشتر موارد با چند دستور ساده از طریقSSH قابل حل است. در ادامه، همراه تیم وبداده باشید تا از صفر تا صد، هم دلیل این خطا را درک کنید و هم بهصورت عملی آن را رفع کنید، حتی اگر تازهکار باشید.
آنچه در این مقاله میخوانید:
وقتی از هاست یا سرور خودتان ایمیل میفرستید، پشتصحنه یک نرمافزار قدرتمند به نام Exim مسئول ارسال و تحویل پیامها است. حالا فرض کنید ایمیلی ارسال میکنید و سرور مقصد در دسترس نیست — مثلاً خاموش شده، مشکل شبکه دارد یا DNS درست تنظیم نشده. در این حالت Exim ایمیل را در صف (Queue) قرار میدهد و بعد از مدتی دوباره تلاش میکند.
اطلاعات این تلاشهای ناموفق در یک فایل داخلی به نام Retry Database ذخیره میشود. البته نگران نباشید؛ این یک دیتابیس واقعی مثل MySQL نیست، بلکه فقط یک فایل باینری ساده (از نوع DBM) است که اگزیم اطلاعات زمانبندی تلاشهای مجدد را در آن نگه میدارد. چیزی شبیه یک دفترچه یادداشت مخصوص پستچی سرور.
حالا مشکل از کجا شروع میشود؟ اگر این فایل بر اثر قطعی برق، پر شدن فضای دیسک، یا ریستارت ناگهانی سرور آسیب ببیند و غیرقابلخواندن شود (اصطلاحاً corrupt شود)، اگزیم دیگر نمیتواند بفهمد کِی باید ایمیلها را دوباره ارسال کند. نتیجه؟ پیغام خطای معروف:
retry time not reached for any host after a long failure period
به زبان ساده، سرور شما میگوید: «من قبلاً تلاش کردم و نشد؛ هنوز وقت تلاش دوباره نرسیده.» ولی مشکل اینجاست که بهخاطر خرابی دیتابیس، این «وقت» هیچوقت نمیرسد و ایمیلها برای همیشه گیر میکنند.
Exim یک MTA یا Mail Transfer Agent است؛ یعنی عامل انتقال ایمیل. اگر بخواهیم ساده بگوییم، Exim مثل پستچی سرور شماست. هر وقت ایمیلی ارسال یا دریافت میشود، این اگزیم است که مسئول تحویل آن پیام به مقصد صحیح است.
در اکثر سرورهای cPanel و بسیاری از سرورهای DirectAdmin، اگزیم بهصورت پیشفرض نصب و فعال است. طبق مستندات رسمی Exim در سال 2026، این نرمافزار از مکانیزم Retry هوشمند برخوردار است که بر اساس آدرس IP مقصد (نه بر اساس هر پیام) عمل میکند. یعنی اگر یک هاست مقصد از کار بیفتد، اگزیم ارسال تمام ایمیلها به آن هاست را به تعویق میاندازد، نه فقط یک ایمیل خاص را.
ساختار ارسال ایمیل در سرور:
📧 ایمیل شما
⬇️
🖥️ Exim (MTA)
⬇️
┌─────────────────────┐
│ تلاش اول ارسال │
│ ✅ موفق ➡️ تحویل │
│ ❌ ناموفق ⬇️ │
├─────────────────────┤
│ 🗄️ دیتابیس Retry │
│ ذخیره زمان تلاش │
│ بعدی │
├─────────────────────┤
│ تلاش دوم، سوم... │
│ ❌ بازهم ناموفق │
│ ⬇️ │
│ ⚠️ retry time not │
│ reached! │
└─────────────────────┘
دیتابیس Retry در مسیر /var/spool/exim/db/ قرار دارد و شامل فایلهایی مثل retry، retry.lockfile، wait-remote_smtp و wait-remote_smtp.lockfile است. وقتی ایمیلی ارسال نمیشود، اگزیم اطلاعاتی شامل زمان اولین خطا، زمان آخرین تلاش و زمان محاسبهشده برای تلاش بعدی را در این دیتابیس ثبت میکند.
طبق تنظیمات پیشفرض اگزیم، دادههای قدیمیتر از 7 روز در دیتابیس Retry نادیده گرفته میشوند. اما اگر دیتابیس خراب (corrupt) شود، اگزیم نمیتواند این اطلاعات را بخواند و در نتیجه هیچ تلاش مجددی انجام نمیدهد. مثل اینکه پستچی دفترچه آدرسش پاره شده باشد و دیگر نتواند نامهها را تحویل دهد.
مشکل Retry Time Not Reached در ارسال ایمیل میتواند دلایل مختلفی داشته باشد. مهمترین نکته این است که فقط به یک دلیل بسنده نکنید؛ گاهی ترکیبی از چند مشکل باعث بروز این خطا میشود. در ادامه رایجترین دلایل این ارور را بررسی میکنیم.
این شایعترین دلیل است. فایلهای دیتابیس در مسیر /var/spool/exim/db/ ممکن است بر اثر ریستارت ناگهانی سرور، پر شدن فضای دیسک، یا حتی مشکلات سختافزاری خراب شوند. وقتی دیتابیس corrupt میشود، اگزیم نمیتواند رکوردهای retry را بخواند و تمام ایمیلهای صفشده با خطای «retry time not reached» رد میشوند.
اگر رکوردهای MX دامنه مقصد درست resolve نشوند، یا DNS سرور شما (فایل /etc/resolv.conf) به nameserver معتبری اشاره نکند، اگزیم نمیتواند آدرس سرور ایمیل مقصد را پیدا کند. این مشکل بعد از چند بار تلاش ناموفق، منجر به ثبت خطا در دیتابیس Retry و در نهایت پیغام retry time not reached میشود.
اگر IP سرور شما در یکی از بلاکلیستهای معتبر مثل Spamhaus یا Barracuda ثبت شده باشد، سرورهای مقصد (مثل Gmail یا Yahoo) اتصال سرور شما را رد میکنند. اگزیم هم بعد از چندین بار تلاش، این میزبان را بهعنوان «شکستخورده» علامتگذاری میکند و دیگر تلاش نمیکند.
برخی دیتاسنترها و ارائهدهندگان VPS (خصوصاً برای سرورهای جدید) پورت 25 خروجی را مسدود میکنند تا از ارسال اسپم جلوگیری شود. اگر پورت 25 بسته باشد، اگزیم اصلاً نمیتواند به سرورهای مقصد وصل شود و مشکل ارسال ایمیل در سیپنل یا دایرکتادمین پیش میآید. برای تست میتوانید این دستور را بزنید:
telnet gmail-smtp-in.l.google.com 25 اگر پاسخ Connected نگرفتید، احتمالاً این پورت خروجی مسدود است و باید با دیتاسنتر تماس بگیرید.
در این بخش همراه ما باشید تا بهصورت عملی و گامبهگام، رفع مشکل ارسال ایمیل را بررسی کنیم. بسته به کنترل پنل سرور شما سه روش اصلی برای خطای Retry time not reached از طریق SSH وجود دارد.
اگر سرور شما cPanel/WHM دارد، این روش سریعترین راهحل است. مراحل زیر را با دسترسی Root انجام دهید:
🔸 مرحله 1: ابتدا به ترمینال سرور SSH بزنیدیا از بخش Terminal در WHM استفاده کنید.
🔸 مرحله 2: به مسیر دیتابیس اگزیم بروید و فایلهای خراب را حذف کنید. پس ابتدا ابزار پاکسازی cPanel را اجرا کنید:
/usr/local/cpanel/scripts/exim_tidydb 
🔸 مرحله 3: فایلهای Retry را بهجای حذف، به یک بکاپ منتقل کنید (روش ایمنتر):
cd /var/spool/exim/db
mv -vi retry{,.$(date +%s)}
mv -vi retry.lockfile{,.$(date +%s)}
mv -vi wait-remote_smtp{,.$(date +%s)}
mv -vi wait-remote_smtp.lockfile{,.$(date +%s)} 
📌 با این کار فایلهای قدیمی حذف نمیشوند بلکه با یک پسوند تاریخ تغییر نام میگیرند. اگر مشکلی پیش آمد، میتوانید آنها را برگردانید.
🔸 مرحله 4: سرویس اگزیم را ریستارت کنید تا فایلهای جدید ساخته شوند:
/scripts/restartsrv_exim 
🔸 مرحله 5: ایمیلهای صفشده را فوراً مجدد ارسال کنید:
exim -qff 🔸 مرحله 6: لاگ را بررسی کنید تا مطمئن شوید مشکل حل شده:
tail -f /var/log/exim_mainlog 
این روش مطابق با مستندات رسمی پشتیبانی cPanel و منابع فنی معتبر 2026 تأیید شده است.
اگر از DirectAdmin استفاده میکنید، مسیر و دستورات مشابه هستند؛ اما نکات کوچکی تفاوت دارد:
# حذف کامل فایلهای دیتابیس
rm -f /var/spool/exim/db/*
# ریستارت اگزیم
service exim restart 
در دایرکتادمین، لاگ ایمیل معمولاً در مسیر /var/log/exim/mainlog قرار دارد (بهجای /var/log/exim_mainlog در سیپنل). برای بررسی وضعیت ارسال:
tail -100 /var/log/exim/mainlog | grep "retry" اگر نمیخواهید کل دیتابیس را حذف کنید و ترجیح میدهید فقط رکوردهای قدیمی را پاکسازی کنید، ابزار exim_tidydb انتخاب بهتری است:
/usr/sbin/exim_tidydb -t 1d /var/spool/exim retry > /dev/null
/usr/sbin/exim_tidydb -t 1d /var/spool/exim reject > /dev/null
/usr/sbin/exim_tidydb -t 1d /var/spool/exim wait-remote_smtp > /dev/null این دستورات تمام رکوردهای قدیمیتر از ۱ روز را حذف میکنند. سپس اگزیم را ریستارت کنید:
service exim restart /usr/local/cpanel/scripts/exim_tidydb -t 1m /var/spool/exim retry بعد از اجرای هر کدام از روشهای بالا، حتماً لاگ اگزیم را بررسی کنید تا مطمئن شوید خطای Retry timeout exceeded رفع شده:
# برای سیپنل:
tail -f /var/log/exim_mainlog
# برای دایرکت ادمین:
tail -f /var/log/exim/mainlog اگر ایمیلها با موفقیت ارسال شوند، خروجی مشابه زیر را میبینید:
=> user@example.com R=lookuphost T=remote_smtp H=mail.example.com [x.x.x.x] اگر هنوز خطا دارید، باید دلایل ریشهای (DNS، بلاکلیست و پورت) را بررسی کنید.
گاهی اوقات مشکل ارسال ایمیل در سیپنل یا دایرکتادمین به دیتابیس Retry مربوط نیست؛ ریشه مشکل در تنظیمات DNS سرور است. وقتی اگسیم نتواند آدرس سرور مقصد را از طریق DNS پیدا کند، ایمیلها در صف میمانند و بعد از مدتی با خطای Retry time not reached برگشت میخورند.
ابتدا مطمئن شوید DNS سرورتان (resolverها) درست کار میکنند:
# بررسی فایل resolver
cat /etc/resolv.conf
# تست resolve یک دامنه
dig gmail.com MX +short
# یا با nslookup
nslookup -type=mx gmail.com اگر خروجی خالی بود یا Timeout گرفتید، NameServerهای فایل /etc/resolv.conf را به یک DNS معتبر مثل Google تغییر دهید. کافی است از طریق دستور nano /etc/resolv.conf وارد محیط ویرایش فایل شوید و نیم سرورهای زیر را جایگزین کنید.
nameserver 8.8.8.8
nameserver 8.8.4.4 resolv.conf را به حالت قبلی برمیگرداند. اگر بعد از ریبوت دوباره مشکل داشتید، باید DNS را از طریق تنظیمات شبکه سیستمعامل تغییر دهید. مثلاً در AlmaLinux/CentOS:nmcli con mod "System eth0" ipv4.dns "8.8.8.8 8.8.4.4"
systemctl restart NetworkManagerاگر دیتابیس Retry سالم است و DNS هم درست کار میکند، ممکن است IP سرور شما BlackList شده باشد. برای بررسی:
اگر IP شما در لیست سیاه بود، باید با هر سرویس بلاکلیست جداگانه درخواست حذف (Delist) بدهید. همچنین دلیل بلاکلیست شدن (مثلاً ارسال اسپم از یکی از اکانتها) را پیدا و رفع کنید.
| دلیل خطا | نشانه تشخیصی | راهحل | سطح دشواری |
|---|---|---|---|
| خرابی دیتابیس Retry | خطا بلافاصله بعد از ارسال ظاهر میشود | حذف فایلهای DB و ریستارت Exim | 🟢 آسان |
| مشکل DNS/Resolver | dig نتیجه نمیدهد یا TimeOut میخورد | اصلاح /etc/resolv.conf | 🟢 آسان |
| رکورد MX نادرست | MX به آدرس اشتباه اشاره میکند | اصلاح رکوردهای DNS دامنه | 🟡 متوسط |
| بلاکلیست شدن IP | لاگها حاوی Rejected یا 550 هستند | درخواست Delist و رفع علت اسپم | 🟡 متوسط |
| پورت 25 مسدود | telnet به پورت 25 TimeOut میخورد | تماس با دیتاسنتر | 🔴 نیاز به هماهنگی |
| پر شدن فضای دیسک | df -h فضای پر نشان میدهد | آزادسازی فضا و ریستارت Exim | 🟡 متوسط |
| مشکل فایروال سرور | ایمیلهای داخلی ارسال میشوند ولی خارجی نه | بررسی قواعد IPtables یا Firewalld | 🟡 متوسط |
رفع مشکل خوب است؛ اما باید از تکرار آن جلوگیری کنید. چند راهکار ساده وجود دارد که میتوانید انجام دهید تا خطای Retry timeout exceeded در ارسال ایمیل دوباره سراغتان نیاید:
df -h و df -i فضا و inodeها را بررسی کنید.# اضافه کردن به crontab
0 3 * * 0 /usr/sbin/exim_tidydb -t 1d /var/spool/exim retry > /dev/null 2>&1 در این مقاله از بلاگ وب داده، بهصورت کامل بررسی کردیم که خطای retry time not reached for any host after a long failure period چیست، چرا اتفاق میافتد و چطور میتوان آن را رفع کرد. دیدیم که شایعترین دلیل، خرابی دیتابیس Retry اگزیم است که با چند دستور ساده SSH قابل رفع است.
مهمترین نکاتی که باید به خاطر بسپارید:
در صورتی که سوالی داشتید، میتوانید در بخش ثبت دیدگاه با ما در ارتباط باشید. امیدوارم این مقاله از بلاگ وبداده برای شما مفید بوده باشد.
این خطا به این معناست که اگزیم (Exim) قبلاً تلاش کرده ایمیل شما را ارسال کند و ناموفق بوده. و حالا طبق زمانبندی داخلی Exim، هنوز وقت تلاش مجدد نرسیده. معمولاً دلیل اصلی، خرابی دیتابیس Retry است که باعث میشود این زمانبندی دچار اختلال شود.