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

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

۷ دقیقه به‌روزرسانی ۲۶ شهریور ۱۴۰۵

چرا انتقال ایمیل با IMAP سخت‌تر از چیزی است که فکر می‌کنید؟

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

بسیاری از افراد تصور می‌کنند که با تغییر رکوردهای DNS و ساخت دوباره صندوق‌ها روی سرور جدید، همه چیز خودکار منتقل می‌شود. این تصور اشتباه است. DNS فقط مسیر ارسال و دریافت ایمیل‌های جدید را تغییر می‌دهد؛ هیچ‌کدام از پیام‌های قدیمی را جابه‌جا نمی‌کند. برای یک انتقال ایمیل موفق، باید داده‌ها را به‌صورت مستقیم از سرور مبدأ به مقصد منتقل کنید.

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

پیش از هر اقدامی، یک چک‌لیست دقیق تهیه کنید. عجله در این مرحله شایع‌ترین دلیل از دست رفتن داده‌هاست.

۱. شناسایی پروتکل و تنظیمات سرور مبدأ

ابتدا مطمئن شوید که صندوق‌های شما واقعاً از IMAP استفاده می‌کنند، نه POP3. در POP3، پیام‌ها معمولاً به کلاینت محلی دانلود می‌شوند و سرور فقط یک کپی موقت دارد. اگر از POP3 استفاده می‌کنید، انتقال ایمیل باید از طریق فایل‌های محلی انجام شود، نه از طریق پروتکل.

برای بررسی، به تنظیمات کلاینت ایمیل خود (مثل Outlook یا Thunderbird) نگاه کنید. اگر پورت ۱۴۳ یا ۹۹۳ (SSL) را می‌بینید، IMAP است. پورت ۱۱۰ یا ۹۹۵ نشان‌دهنده POP3 است.

همچنین این اطلاعات را از هاست مبدأ دریافت کنید:

  • آدرس سرور IMAP (مثلاً mail.example.com)
  • پورت و نوع رمزنگاری (SSL/TLS یا STARTTLS)
  • نام کاربری و رمز عبور هر صندوق
  • لیست کامل صندوق‌ها و آدرس‌های ایمیل

۲. بررسی فضای مصرفی و محدودیت‌های سرور مقصد

قبل از شروع، حجم کل داده‌ها را اندازه بگیرید. می‌توانید از دستور زیر روی سرور مبدأ استفاده کنید:

du -sh /home/*/mail/*

این دستور در هاست‌های cPanel معمولاً حجم هر صندوق را نشان می‌دهد. اگر حجم کل از سهمیه فضای هاست مقصد بیشتر است، باید یا فضای بیشتری خریداری کنید یا ایمیل‌های قدیمی را آرشیو کنید. در غیر این صورت، انتقال ایمیل ناقص انجام می‌شود و پیام‌های اضافی در صف می‌مانند.

۳. تهیه بکاپ کامل از صندوق‌ها

هرگز بدون بکاپ، انتقال ایمیل را شروع نکنید. ساده‌ترین روش، استفاده از قابلیت بکاپ خود هاست است. در cPanel، از بخش Backup گزینه Download a Full Website Backup را انتخاب کنید و تیک بخش ایمیل را فعال کنید. این فایل شامل همه صندوق‌ها با ساختار پوشه‌بندی است.

اگر به SSH دسترسی دارید، می‌توانید مستقیماً پوشه میل را بکاپ بگیرید:

tar -czf mail_backup.tar.gz /home/username/mail/

این بکاپ را روی سیستم محلی یا یک فضای ابری نگه دارید. اگر در حین انتقال مشکلی پیش بیاید، می‌توانید به حالت قبل برگردید.

روش‌های اصلی انتقال ایمیل با IMAP

سه روش رایج برای انتقال ایمیل بین دو سرور IMAP وجود دارد. انتخاب روش به تعداد صندوق‌ها، حجم داده و سطح دسترسی شما بستگی دارد.

روش اول: استفاده از ابزار imapsync (توصیه‌شده)

imapsync محبوب‌ترین ابزار متن‌باز برای این کار است. این ابزار پوشه‌ها، پیام‌ها، پرچم‌ها و حتی تقویم را بین دو سرور IMAP همگام‌سازی می‌کند. نصب آن روی لینوکس ساده است:

sudo apt-get install imapsync  # برای اوبونتو/دبیان
sudo yum install imapsync      # برای CentOS/RHEL

سپس برای هر صندوق، دستور زیر را اجرا کنید:

imapsync --host1 mail.oldserver.com --user1 info@example.com --password1 'OldPass123' \
         --host2 mail.newserver.com --user2 info@example.com --password2 'NewPass456' \
         --ssl1 --ssl2 --syncinternaldates

توضیح پارامترها:

  • --host1 و --host2: آدرس سرورهای مبدأ و مقصد
  • --user1 و --user2: آدرس ایمیل کامل
  • --ssl1 و --ssl2: فعال‌سازی رمزنگاری SSL
  • --syncinternaldates: حفظ تاریخ اصلی دریافت پیام‌ها

اگر تعداد صندوق‌ها زیاد است، یک اسکریپت حلقه‌ای بنویسید:

#!/bin/bash
while IFS=',' read -r email pass; do
  imapsync --host1 mail.oldserver.com --user1 "$email" --password1 "$pass" \
           --host2 mail.newserver.com --user2 "$email" --password2 "$pass" \
           --ssl1 --ssl2 --syncinternaldates
done < accounts.txt

فایل accounts.txt را با فرمت email,password در هر خط بسازید.

خطای رایج: اگر خطای SSL certificate verify failed دریافت کردید، احتمالاً گواهی SSL سرور مبدأ معتبر نیست. برای تست می‌توانید از پارامتر --ssl1 --sslargs1 SSL_verify_mode=0 استفاده کنید، اما این کار را فقط موقت انجام دهید و بعد از انتقال، گواهی را اصلاح کنید.

روش دوم: انتقال دستی با کلاینت ایمیل (برای حجم کم)

اگر فقط چند صندوق با حجم کم دارید (مثلاً کمتر از ۲ گیگابایت)، می‌توانید از Thunderbird استفاده کنید. مراحل:

  1. حساب ایمیل قدیمی را به Thunderbird اضافه کنید (IMAP).
  2. صبر کنید تا همه پیام‌ها دانلود شوند (ممکن است چند ساعت طول بکشد).
  3. حساب جدید را هم اضافه کنید.
  4. پوشه‌ها را از حساب قدیمی به حساب جدید بکشید و رها کنید.

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

روش سوم: انتقال مستقیم فایل‌ها (فقط برای هاست‌های مشابه)

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

tar -czf mail_transfer.tar.gz /home/username/mail/

سپس فایل را به سرور مقصد منتقل کنید (مثلاً با scp):

scp mail_transfer.tar.gz user@newserver.com:/home/username/

روی سرور مقصد، فایل را از حالت فشرده خارج کنید:

cd /home/username/
tar -xzf mail_transfer.tar.gz

سپس مالکیت فایل‌ها را اصلاح کنید:

chown -R username:mail /home/username/mail/

هشدار: این روش فقط زمانی جواب می‌دهد که فرمت ذخیره‌سازی میل (مثل Maildir یا mbox) و نسخه کنترل پنل یکسان باشد. در غیر این صورت، پیام‌ها خراب یا غیرقابل‌خواندن می‌شوند.

بعد از انتقال ایمیل: بررسی و تغییر DNS

پس از اتمام انتقال، قبل از تغییر DNS، صحت داده‌ها را بررسی کنید.

بررسی تعداد پیام‌ها و پوشه‌ها

در کلاینت ایمیل، تعداد پیام‌های هر پوشه را در سرور قدیم و جدید مقایسه کنید. می‌توانید از دستور زیر روی هر دو سرور استفاده کنید:

find /home/username/mail/ -type f -name "cur/*" | wc -l

این دستور تعداد فایل‌های پیام در پوشه cur (پیام‌های خوانده‌شده) را نشان می‌دهد. عددها باید یکسان باشند.

تغییر رکوردهای DNS

وقتی مطمئن شدید همه داده‌ها منتقل شده‌اند، رکوردهای MX و A مربوط به ایمیل را تغییر دهید. در DNS خود، رکورد MX را به آدرس سرور جدید اشاره دهید:

example.com.  MX  10  mail.newserver.com.

همچنین رکورد A برای mail.example.com را به IP سرور جدید تغییر دهید. بعد از تغییر، بین ۱ تا ۲۴ ساعت طول می‌کشد تا DNS در سراسر اینترنت به‌روزرسانی شود.

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

نکات تکمیلی برای انتقال ایمیل بدون دردسر

مدیریت صف ارسال و دریافت

بهتر است انتقال را در ساعات کم‌ترافیک انجام دهید. اگر ایمیل‌های جدید در حین انتقال به صندوق‌ها اضافه شوند، ممکن است از قلم بیفتند. می‌توانید برای چند ساعت، ارسال ایمیل به سرور قدیمی را متوقف کنید یا از ابزارهایی مثل imapsync با پارامتر --regextrans2 استفاده کنید که فقط پیام‌های جدید را همگام می‌کند.

تست کامل بعد از تغییر DNS

بعد از تغییر DNS، این موارد را تست کنید:

  • ارسال و دریافت ایمیل به آدرس‌های داخلی و خارجی
  • ورود به وب‌میل با رمز عبور جدید
  • اتصال کلاینت‌های دسکتاپ و موبایل
  • بررسی پوشه‌های Spam و Drafts

نگه‌داشتن سرور قدیمی برای چند روز

حداقل ۷۲ ساعت سرور قدیمی را خاموش نکنید. اگر کاربری متوجه شد ایمیل‌هایش ناقص است، می‌توانید دوباره از سرور قدیمی انتقال بگیرید. بعد از اطمینان کامل، می‌توانید صندوق‌ها را روی سرور قدیمی حذف کنید.

جمع‌بندی

انتقال ایمیل با IMAP اگر با ابزار مناسب و برنامه‌ریزی دقیق انجام شود، فرایندی قابل‌مدیریت است. نکته کلیدی این است که هرگز به DNS به‌عنوان ابزار انتقال نگاه نکنید؛ DNS فقط مسیر را تغییر می‌دهد، داده‌ها را جابه‌جا نمی‌کند. با استفاده از imapsync، تهیه بکاپ کامل و بررسی دقیق بعد از انتقال، می‌توانید مطمئن باشید که هیچ پیامی از دست نمی‌رود.

اگر به دنبال یک هاست با زیرساخت مناسب برای میزبانی ایمیل هستید، سرورنت (ServerNet) خدمات میزبانی وب و سرور ابری ارائه می‌دهد که می‌تواند گزینه مناسبی برای مقصد انتقال شما باشد. اما در هر صورت، مراحل فنی این مقاله را دنبال کنید تا انتقالی امن و بدون خطا داشته باشید.

آیا این مطلب برایتان مفید بود؟