دلایل عدم ارسال ایمیل در هاست سی پنل

ایمیل‌های دامنه‌تان از هاست سی پنل ارسال نمی‌شود، یا ارسال می‌شود اما هرگز به Inbox مقصد نمی‌رسد و یک‌راست در Spam می‌افتد. دلایل عدم ارسال ایمیل در هاست سی پنل در بیشتر موارد به یکی از این دو دسته برمی‌گردد: رکوردهای DNS مربوط به ایمیل (نیم‌سرور، MX، SPF و DKIM) درست تنظیم نشده‌اند، یا سرویس ایمیل سرور یعنی Exim به‌دلیل محدودیت‌های داخلی، اتصال فرستنده را رد می‌کند. در ادامه هر دو دسته را به‌ترتیب بررسی و رفع می‌کنیم.

اگر رکوردها درست بودند و باز هم پیامی نرسید، با ردیابی ایمیل و خواندن هدرها می‌توانید نقطه دقیق توقف پیام را پیدا کنید.

گام اول: درستی نیم‌سرورهای دامنه

پیش از هر چیز باید نیم‌سرورها را از شرکت هاستینگ بگیرید و روی دامنه موردنظر تنظیم کنید تا دامنه به سمت آی‌پی سرور هدایت شود. برای تست این مورد می‌توانید از یک آنالیزور مانند intodns.com یا mxtoolbox.com استفاده کنید و مانند تصویر زیر، ابتدا از درستی نیم‌سرورها اطمینان حاصل نمایید.

در انتهای کار هم می‌توانید با همان آنالیزور، مانند تصویر زیر از صحت رکورد MX مطمئن شوید.

رکورد MX

MX Record که مخفف Mail Exchanger Record (رکورد مبدل ایمیل) است، یکی از رکوردهای DNS است که کار دریافت ایمیل دامنه را مشخص می‌کند. رکورد MX به ارسال‌کننده‌های ایمیل می‌گوید که نامه را باید به کدام سرور دامنه شما تحویل بدهند. تعیین مقصد پیش‌فرض نامه‌های بی‌صاحب هم مهم است و Default Address چیست این گزینه را توضیح می‌دهد.

زمانی که هاست سی پنل را از آنلاین سرور خریداری می‌کنید، این رکورد به‌صورت خودکار در Zone Editor ساخته شده است و با کلیک روی گزینه Manage مقابل دامنه موردنظر می‌توانید آن را ببینید.

نکته: این مورد مشروط به آن است که نیم‌سرورهای دامنه شما به سمت همین هاست هدایت شده باشند. اگر DNS Zone دامنه جای دیگری مدیریت می‌شود (مثلاً در پنل ثبت‌کننده دامنه یا سرویس ابری DNS)، تغییر رکوردها را باید از همان‌جا انجام دهید و ویرایش Zone Editor سی پنل هیچ تأثیری نخواهد داشت.

اگر به SSH یا خط فرمان دسترسی دارید، سریع‌ترین راه بررسی رکورد MX این دستور است (به‌جای example.com دامنه خودتان را بگذارید):

dig MX example.com +short

رکورد SPF

SPF مخفف Sender Policy Framework است. این رکورد برای افزایش امنیت در برابر هرزنامه، جعل نام دامنه و فیشینگ استفاده می‌شود. کار SPF ساده است: یک رکورد TXT روی دامنه می‌گوید کدام سرورها اجازه دارند به نام این دامنه ایمیل بفرستند؛ اگر نامه‌ای از سروری بیرون از این فهرست بیاید، سرور گیرنده می‌تواند آن را مشکوک تلقی کند یا رد کند.

مقدار رکورد SPF در سی پنل معمولاً شکلی شبیه نمونه زیر دارد (در این نمونه 203.0.113.10 فقط یک آی‌پی نمونه است). آی‌پی سرور و بخش‌های رکورد را دستی حدس نزنید و دقیقاً همان مقداری را که سی پنل در صفحه Email Deliverability نشان می‌دهد کپی کنید:

v=spf1 +mx +a +ip4:203.0.113.10 ~all

برای بررسی رکوردهای TXT دامنه:

dig TXT example.com +short

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

رکورد DKIM

DKIM مخفف DomainKeys Identified Mail است. این رکورد باید بعد از رکورد SPF ساخته شود. این مکانیزم از جعل آدرس ایمیل جلوگیری می‌کند و عملکرد آن بر پایه Public Key و Private Key است: سرور فرستنده هر نامه را با کلید خصوصی امضا می‌کند و سرور گیرنده امضا را با کلید عمومی که در DNS منتشر شده بررسی می‌کند. مراحل افزودن این رکوردها در اضافه کردن DKIM و SPF در سی پنل آمده است.

سی پنل کلید عمومی DKIM را روی سلکتور default منتشر می‌کند؛ یعنی برای بررسی آن باید این رکورد TXT را بخوانید:

dig TXT default._domainkey.example.com +short

رکورد DMARC

DMARC رکورد سومی است که SPF و DKIM را تکمیل می‌کند و به سرور گیرنده می‌گوید با نامه‌ای که این دو تست را رد کرد چه کند. این رکورد یک TXT روی نام _dmarc.example.com است و ساده‌ترین شکل امن آن برای شروع، حالت گزارش‌محور است:

v=DMARC1; p=none; rua=mailto:postmaster@example.com

با p=none هیچ نامه‌ای رد نمی‌شود و فقط گزارش دریافت می‌کنید؛ بعد از اینکه مطمئن شدید همه ارسال‌های قانونی شما SPF و DKIM را پاس می‌کنند، می‌توانید سیاست را سخت‌گیرانه‌تر کنید. شروع مستقیم با p=reject روی دامنه‌ای که هنوز تنظیماتش کامل نیست، باعث از دست رفتن ایمیل‌های واقعی می‌شود.

فعال‌سازی SPF و DKIM در سی پنل

برای فعال‌سازی SPF و DKIM ابتدا باید وارد هاست سی پنل خود شوید و از بخش Email روی گزینه Email Deliverability کلیک کنید.

بعد از باز شدن این صفحه، روی دکمه Manage مقابل دامنه موردنظر کلیک کنید.

در صفحه جدید، اگر مانند تصویر زیر اطلاعات مربوط به رکوردهای SPF و DKIM را دیدید یعنی این رکوردها فعال هستند. اما اگر به‌جای اطلاعات هرکدام از رکوردها دکمه آبی‌رنگ Generate Key را دیدید، یعنی آن کلید برای شما ساخته نشده است و باید روی همین دکمه کلیک کنید تا فعال شود.

اگر DNS دامنه جای دیگری مدیریت می‌شود، سی پنل نمی‌تواند رکوردها را خودش بنویسد و در همین صفحه مقدار رکوردهای پیشنهادی را نمایش می‌دهد تا آن‌ها را دستی در پنل DNS خودتان وارد کنید.

تست با آنالیزور mail-tester.com

ابتدا وارد سایت mail-tester.com شوید؛ مطابق تصویر زیر یک آدرس ایمیل یک‌بارمصرف برای آنالیز به شما نشان داده می‌شود که باید آن را کپی کنید.

سپس وارد یکی از اکانت‌های ایمیل خود شوید، آدرسی را که آنالیزور داده در بخش To (مقصد ایمیل) paste کنید، یک متن معمولی بنویسید و ایمیل را ارسال کنید.

دوباره به آنالیزور برگردید و روی Then check your score کلیک کنید. صفحه جدیدی باز می‌شود؛ اگر امتیاز مانند تصویر زیر باشد، تمام رکوردها درست تنظیم شده‌اند و اگر امتیازی کسر شده باشد، در منوی کشویی مقابل هر مورد دلیل آن ذکر شده است.

وقتی رکوردها درست‌اند اما ایمیل باز هم ارسال نمی‌شود

گاهی نیم‌سرور و MX و SPF و DKIM همگی سالم‌اند و نمره mail-tester هم خوب است، ولی هنگام ارسال، خود سرور مقابل نامه را نمی‌پذیرد و یک خطای SMTP برمی‌گرداند. در این حالت مشکل از DNS نیست، از محدودیت‌های سرویس ایمیل (Exim) است.

خطای ۴۵۱ The server has reached its limit

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

451-The server has reached its limit for processing requests from your host.
451 Please try again later.

عدد ۴۵۱ یک خطای موقت (۴xx) است، نه دائمی؛ یعنی سرور فرستنده معمولاً بعداً دوباره تلاش می‌کند. معنی پیام هم همان چیزی است که نوشته: سقف اتصال‌های همزمان SMTP پر شده است.

قبل از هر کاری این را روشن کنید: این پیام را سرور مقصد (سروری که دارید به آن نامه می‌فرستید) صادر می‌کند، نه سرور شما. بنابراین تنظیمی که باید تغییر کند، روی همان سرور مقصد است. اگر سرور مقصد در اختیار شما نیست (مثلاً Gmail یا سرور یک شرکت دیگر)، بالا بردن هیچ مقداری روی سرور خودتان مشکل را حل نمی‌کند و باید یا تعداد اتصال‌های همزمان ارسالی را کم کنید یا با مدیر سرور مقصد تماس بگیرید. سناریوی واقعیِ این راه‌حل جایی است که هر دو سرور مال خودتان است و از سرور اول به سرور دوم ایمیل می‌فرستید.

توجه: این تنظیم در سطح سرور و از WHM یا SSH انجام می‌شود و دسترسی root می‌خواهد. اگر روی هاست اشتراکی هستید و WHM ندارید، این تغییر کار مدیر سرور است و باید از پشتیبانی هاست درخواستش کنید.

افزایش سقف اتصال‌ها از WHM

ابتدا وارد WHM سرور مقصد شوید و دنبال Exim Configuration Editor بگردید. پس از پیدا کردن این گزینه، روی Advanced Editor کلیک کنید (مانند تصویر زیر).

در این مرحله دنبال خطی مانند زیر بگردید:

smtp_accept_max = 100

در پیکربندی cPanel مقدار این گزینه معمولاً ۱۰۰ است؛ می‌توانید آن را به مقدار دلخواه افزایش دهید، مثلاً روی ۲۰۰ بگذارید و روی Save کلیک کنید. توجه کنید که ذخیره‌کردن این صفحه، پیکربندی Exim را بازسازی و سرویس ایمیل را ری‌استارت می‌کند؛ برای چند ثانیه ارسال و دریافت ایمیل سرور قطع می‌شود، پس این کار را در ساعت کم‌ترافیک انجام دهید.

چون متن خطا می‌گوید «from your host» یعنی محدودیت به میزبان فرستنده مربوط است، حتماً گزینه smtp_accept_max_per_host را هم در همین ویرایشگر بررسی کنید. smtp_accept_max سقف کل اتصال‌های همزمان به سرور است و smtp_accept_max_per_host سقف اتصال‌های همزمان از یک آی‌پی مشخص؛ اگر سرور اولِ شما با چند اتصال همزمان به سرور دوم وصل می‌شود، معمولاً همین گزینه دوم است که باید بالا برود.

مقدار را بی‌حساب بالا نبرید. هر اتصال SMTP یک پروسه Exim و مقداری RAM مصرف می‌کند؛ عدد خیلی بزرگ روی سرور ضعیف، به‌جای حل مشکل باعث کندی یا از دسترس خارج شدن سرویس ایمیل می‌شود. مرحله‌به‌مرحله زیاد کنید و مصرف منابع را ببینید. مقدار صفر هم به‌معنای «بدون محدودیت» است و روی سرور در معرض اینترنت اصلاً پیشنهاد نمی‌شود.

اعمال تغییر از طریق SSH

اگر Exim Configuration Editor برایتان مخفی شده و از طریق WHM قادر به تغییر این مقدار نیستید، می‌توانید همین کار را با SSH و دسترسی root انجام دهید. اما یک نکته مهم که در راهنماهای قدیمی نادیده گرفته می‌شود: فایل /etc/exim.conf روی سرورهای cPanel یک فایل تولیدشده است و هر بار که پیکربندی Exim بازسازی شود، تغییرات دستی شما در آن پاک می‌شود. تغییرات سفارشی باید در فایل زیر نوشته شوند:

/etc/exim.conf.local

این فایل با نشانگرهای بخش تقسیم شده است و گزینه‌ای مانند smtp_accept_max باید داخل بخش @CONFIG@ نوشته شود، وگرنه در بازسازی نادیده گرفته می‌شود. پیش از دست‌زدن به فایل، حتماً یک نسخه پشتیبان بگیرید تا در صورت خرابی بتوانید برگردید:

cp -a /etc/exim.conf.local /etc/exim.conf.local.bak

پس از ویرایش، پیکربندی را بازسازی و سپس صحت آن را بررسی کنید. دستور exim -bV علاوه بر نمایش نسخه، فایل پیکربندی را می‌خواند و خطاهای آن را گزارش می‌کند؛ فقط وقتی خروجی آن بدون خطا بود سراغ ری‌استارت بروید تا سرویس ایمیل با تنظیمات غلط از کار نیفتد:

/scripts/buildeximconf
exim -bV

برای ری‌استارت روی سرور cPanel بهتر است از اسکریپت خود cPanel استفاده کنید، چون وضعیت سرویس را هم در WHM به‌درستی به‌روز می‌کند:

/scripts/restartsrv_exim

اگر سرور cPanel نیست، ری‌استارت با systemd انجام می‌شود؛ فقط دقت کنید نام سرویس در توزیع‌های خانواده RHEL (AlmaLinux، Rocky Linux، CentOS) exim است اما در دبیان و اوبونتو exim4 نام دارد و دستور زیر با نام اشتباه کار نمی‌کند:

systemctl restart exim
systemctl status exim

شکل قدیمی service exim restart یا /etc/init.d/exim restart مربوط به سیستم‌های init قدیمی مانند CentOS 6 بود و امروز منسوخ است.

چک‌لیست سریع رفع مشکل ارسال ایمیل

  • نیم‌سرورهای دامنه به سرور درست اشاره می‌کنند و در intodns.com یا mxtoolbox.com خطا ندارند.
  • رکورد MX وجود دارد و به همان سروری اشاره می‌کند که صندوق‌های ایمیل روی آن است.
  • دقیقاً یک رکورد SPF روی دامنه هست و آی‌پی سرور ارسال‌کننده داخل آن آمده است.
  • DKIM در بخش Email Deliverability فعال است و رکورد default._domainkey در DNS منتشر شده.
  • در صورت نیاز، DMARC با سیاست p=none اضافه شده است.
  • نمره mail-tester.com بررسی شده و دلیل کسر امتیازها برطرف شده است.
  • اگر خطای ۴۵۱ می‌گیرید، اول مشخص کنید کدام سرور آن را صادر کرده، سپس مقادیر smtp_accept_max و smtp_accept_max_per_host را روی همان سرور بازبینی کنید.
  • اگر همچنان پیام گم می‌شود، هدرهای ایمیل و لاگ Exim را برای پیدا کردن نقطه دقیق توقف بخوانید.

جمع‌بندی

مشکل ارسال و دریافت ایمیل در هاست سی پنل تقریباً همیشه در یکی از دو لایه است. لایه اول DNS است: نیم‌سرور، MX، SPF، DKIM و DMARC که با intodns.com و mail-tester.com قابل راستی‌آزمایی‌اند و تنظیم درست‌شان جلوی اسپم شدن و جعل ایمیل را می‌گیرد. لایه دوم خودِ سرویس Exim روی سرور است که با پیام‌هایی مانند خطای ۴۵۱ اعلام می‌کند به سقف اتصال‌های همزمان رسیده و با افزایش سنجیده smtp_accept_max و smtp_accept_max_per_host از WHM یا فایل /etc/exim.conf.local روی همان سروری که خطا را داده رفع می‌شود. با بررسی به‌ترتیب همین دو لایه، تقریباً همه موارد رایج عدم ارسال ایمیل در هاست سی پنل حل می‌شود.

ارسال نظر