ย้ายอีเมลข้ามผู้ให้บริการด้วย imapsync
เมื่อย้ายระบบอีเมลขององค์กร สิ่งที่ผู้ใช้กังวลที่สุดคืออีเมลเก่าหลายปีจะหายไปหรือไม่ imapsync เป็นเครื่องมือที่คัดลอกอีเมลจากเซิร์ฟเวอร์หนึ่งไปอีกเซิร์ฟเวอร์หนึ่งผ่าน IMAP โดยรักษาโครงสร้างโฟลเดอร์ สถานะอ่านแล้ว การติดดาว และวันที่เดิมไว้ครบ
จุดเด่นที่ทำให้ใช้ได้จริงคือมันทำงานซ้ำได้ ครั้งที่สองจะคัดลอกเฉพาะอีเมลใหม่ ทำให้ย้ายล่วงหน้าได้แล้วค่อยซิงก์รอบสุดท้ายในวันเปลี่ยนระบบ
สิ่งที่ต้องเตรียม
- เครื่อง Linux สำหรับรันคำสั่ง ไม่จำเป็นต้องเป็นเซิร์ฟเวอร์อีเมล
- ชื่อผู้ใช้และรหัสผ่านของทั้งสองฝั่ง ทุกบัญชีที่จะย้าย
- ที่อยู่เซิร์ฟเวอร์ IMAP ของทั้งสองฝั่ง
- บัญชีปลายทางที่สร้างไว้เรียบร้อยแล้ว
ขั้นตอนที่ 1: ติดตั้ง
# Ubuntu / Debian
sudo apt update
sudo apt install -y imapsync
# AlmaLinux / Rocky Linux
sudo dnf install -y epel-release
sudo dnf install -y imapsync
imapsync --version
ขั้นตอนที่ 2: ทดสอบการเชื่อมต่อทั้งสองฝั่งก่อน
# ทดสอบว่าเข้าถึงเซิร์ฟเวอร์ได้
openssl s_client -connect imap.old-provider.com:993 -crlf </dev/null 2>/dev/null | head -3
openssl s_client -connect imap.example.com:993 -crlf </dev/null 2>/dev/null | head -3
ทดสอบรหัสผ่านด้วย imapsync โดยไม่คัดลอกอะไร
imapsync \
--host1 imap.old-provider.com --user1 [email protected] --password1 'รหัสเก่า' --ssl1 \
--host2 imap.example.com --user2 [email protected] --password2 'รหัสใหม่' --ssl2 \
--justlogin
หากผ่านจะแสดง Success login on both sides หากไม่ผ่าน อ่านข้อความผิดพลาดซึ่งมักบอกชัดว่าฝั่งไหนมีปัญหา
ขั้นตอนที่ 3: ดูโครงสร้างโฟลเดอร์ก่อน
imapsync \
--host1 imap.old-provider.com --user1 [email protected] --password1 'รหัสเก่า' --ssl1 \
--host2 imap.example.com --user2 [email protected] --password2 'รหัสใหม่' --ssl2 \
--justfolders --dry
ดูว่าชื่อโฟลเดอร์ทั้งสองฝั่งตรงกันหรือไม่ ผู้ให้บริการแต่ละรายตั้งชื่อโฟลเดอร์มาตรฐานต่างกัน เช่น Sent Items กับ Sent ซึ่งต้องจับคู่ให้ถูก
ขั้นตอนที่ 4: ซ้อมก่อนย้ายจริง
imapsync \
--host1 imap.old-provider.com --user1 [email protected] --password1 'รหัสเก่า' --ssl1 \
--host2 imap.example.com --user2 [email protected] --password2 'รหัสใหม่' --ssl2 \
--dry --nofoldersizes
โหมด --dry แสดงว่าจะคัดลอกอะไรบ้างโดยไม่เขียนจริง อ่านผลสรุปท้ายสุดว่าจะย้ายกี่ฉบับและขนาดเท่าไร
ขั้นตอนที่ 5: ย้ายจริง
imapsync \
--host1 imap.old-provider.com --user1 [email protected] --password1 'รหัสเก่า' --ssl1 \
--host2 imap.example.com --user2 [email protected] --password2 'รหัสใหม่' --ssl2 \
--automap \
--skipsize \
--useheader 'Message-Id' --useheader 'Date' \
--addheader \
--logfile /var/log/imapsync/somchai.log
ความหมายของตัวเลือกสำคัญ
--automapจับคู่โฟลเดอร์มาตรฐานให้อัตโนมัติ เช่น Sent กับ Sent Items--useheaderใช้ส่วนหัวระบุว่าอีเมลฉบับไหนซ้ำ ทำให้รันซ้ำได้โดยไม่คัดลอกซ้ำ--skipsizeไม่เทียบขนาด ซึ่งจำเป็นเมื่อสองฝั่งเก็บอีเมลด้วยรูปแบบต่างกันเล็กน้อย--addheaderเพิ่มส่วนหัวบอกว่าอีเมลนี้ถูกย้ายมา ช่วยตรวจสอบภายหลัง
ย้ายเฉพาะบางโฟลเดอร์เมื่อจำเป็น
--folder 'INBOX' --folder 'Sent'
--exclude 'Trash|Junk|Spam'
การข้ามถังขยะและสแปมประหยัดเวลาได้มากและมักไม่มีใครต้องการข้อมูลนั้น
ขั้นตอนที่ 6: ย้ายหลายบัญชีพร้อมกัน
sudo mkdir -p /root/migration /var/log/imapsync
sudo nano /root/migration/accounts.csv
[email protected];รหัสเก่า1;[email protected];รหัสใหม่1
[email protected];รหัสเก่า2;[email protected];รหัสใหม่2
[email protected];รหัสเก่า3;[email protected];รหัสใหม่3
sudo chmod 600 /root/migration/accounts.csv
sudo nano /root/migration/run.sh
#!/bin/bash
set -uo pipefail
CSV=/root/migration/accounts.csv
LOG=/var/log/imapsync
H1=imap.old-provider.com
H2=imap.example.com
mkdir -p "$LOG"
while IFS=';' read -r u1 p1 u2 p2; do
[ -z "${u1:-}" ] && continue
echo "=== กำลังย้าย $u1 -> $u2 ($(date +%H:%M:%S))"
imapsync \
--host1 "$H1" --user1 "$u1" --password1 "$p1" --ssl1 \
--host2 "$H2" --user2 "$u2" --password2 "$p2" --ssl2 \
--automap --skipsize --addheader \
--useheader 'Message-Id' --useheader 'Date' \
--exclude 'Trash|Junk|Spam' \
--logfile "$LOG/${u1//@/_}.log" \
--nofoldersizes
echo " เสร็จ $u1 (exit=$?)"
done < "$CSV"
echo "ย้ายครบทุกบัญชีแล้ว"
sudo chmod 700 /root/migration/run.sh
sudo /root/migration/run.sh 2>&1 | tee /var/log/imapsync/summary.log
รันในหน้าต่าง tmux หรือ screen เพราะงานอาจใช้เวลาหลายชั่วโมงและจะหยุดหาก SSH หลุด
tmux new -s migration
sudo /root/migration/run.sh
ขั้นตอนที่ 7: ซิงก์รอบสุดท้ายและเปลี่ยน MX
ลำดับที่ทำให้ไม่มีอีเมลหาย
- ย้ายข้อมูลรอบแรกล่วงหน้าหลายวัน ซึ่งใช้เวลานานที่สุด
- เปลี่ยนระเบียน MX ไปยังระบบใหม่
- รอ 24-48 ชั่วโมงให้ DNS เผยแพร่ทั่วถึง
- รันซิงก์รอบสุดท้าย เพื่อดึงอีเมลที่ยังเข้าระบบเก่าระหว่างช่วงเปลี่ยนผ่าน
- เฝ้าดูระบบเก่าอีกหนึ่งสัปดาห์ว่ายังมีอีเมลเข้าหรือไม่
# รอบสุดท้าย รันคำสั่งเดิมซ้ำ จะคัดลอกเฉพาะที่ยังไม่มี
sudo /root/migration/run.sh
ขั้นตอนที่ 8: ตรวจสอบความครบถ้วน
# ดูสรุปจาก Log
grep -E 'Total bytes transferred|Messages transferred|Messages skipped' \
/var/log/imapsync/somchai_example.com.log | tail -5
# ตรวจว่ามีข้อผิดพลาดหรือไม่
grep -i 'err\|fail' /var/log/imapsync/*.log | head -20
# นับจำนวนอีเมลทั้งสองฝั่ง
imapsync --host1 ... --host2 ... --justfoldersizes
ให้ผู้ใช้ตรวจสอบเองด้วย โดยขอให้เปิดโฟลเดอร์สำคัญและค้นหาอีเมลเก่าที่จำได้ ก่อนที่จะปิดระบบเดิม
ปัญหาที่พบบ่อย
ล็อกอินฝั่งต้นทางไม่ได้
ผู้ให้บริการหลายรายบังคับให้ใช้รหัสผ่านเฉพาะแอปแทนรหัสผ่านปกติเมื่อเปิดการยืนยันตัวตนสองขั้นตอน สร้างรหัสผ่านเฉพาะแอปก่อนแล้วใช้รหัสนั้น
ถูกจำกัดอัตราจนหยุดกลางคัน
ผู้ให้บริการบางรายจำกัดจำนวนการเชื่อมต่อและอัตราการดึงข้อมูล เพิ่มการหน่วงเวลา
--maxsleep 3 --maxbytespersecond 500000
และรันทีละบัญชี ไม่ใช่หลายบัญชีพร้อมกัน
ชื่อโฟลเดอร์ภาษาไทยเพี้ยน
เกิดจากการเข้ารหัสชื่อโฟลเดอร์ต่างกัน ลองใช้ตัวเลือกจับคู่ด้วยมือ
--folder 'INBOX.งานเก่า' --f1f2 'INBOX.งานเก่า=INBOX/งานเก่า'
อีเมลถูกคัดลอกซ้ำเมื่อรันรอบสอง
ส่วนหัวที่ใช้ระบุความซ้ำไม่เหมือนกันทั้งสองฝั่ง ลองเพิ่ม --useheader 'Subject' ร่วมด้วย หรือใช้ --delete2duplicates เพื่อลบตัวซ้ำที่ปลายทาง
งานใช้เวลานานมาก
กล่องจดหมายขนาดหลายสิบกิกะไบต์อาจใช้เวลาข้ามคืน รันในช่วงกลางคืนและใช้ tmux เสมอ พิจารณาข้ามโฟลเดอร์ถังขยะและสแปมเพื่อลดเวลา
ต้องการให้ทีมงานช่วยย้ายระบบอีเมลขององค์กรโดยไม่มีอีเมลสูญหาย ติดต่อ THAI DATA CLOUD ได้ที่ https://thaidata.cloud/contact/
- Categories:
- Cloud
- Tags:
- Cloud
- Cloud Server
Related Posts
หมวดหมู่ที่น่าสนใจ
- Account Settings
- AD Server
- AI
- Alibaba Cloud
- Anti-Spam Gateway
- AWS Amazon Web Services
- Campaign
- CentOS/AlmaLinux
- Cloud
- Cloud Backup
- Cloud Communication
- Cloud Migration
- Cloud Security
- Cloud Server Management
- Cloud Solution
- Cloud Solution for Government
- Cloud Solutions by Industry
- Cloud Storage
- Cloud VPS App Plus +
- Cloud VPS DirectAdmin
- Cloud VPS Plesk
- CSR
- Cyber Security
- Cybersecurity
- Data Sovereignty
- Database Server
- DDoS
- Digital Tranformation
- Digital Transformation
- Direct Mail
- Directadmin
- Domainname
- Ecommerce
- ERP
- Generative AI
- Getting Started
- Google Cloud
- Google G Suite
- Huawei Cloud
- IT News
- Linux Server
- Managed Cloud Services
- Managed Service Provider
- Manual
- Microsoft
- Microsoft 365
- Microsoft Azure
- News
- On-premise
- Private Mail Server
- Promotion
- Recommend Solution (Enterprise)
- Server
- Sovereign Cloud
- THAI DATA CLOUD Platform
- Ubuntu
- Ubuntu
- Uncategorized
- VMware
- VPS Server
- Web Design
- Web Hosting
- Web Hosting (DirectAdmin)
- Web Hosting (Plesk)
- Web Technologies
- Windows Server
- Wordpress
- Zimbra
- เรื่องราวความประทับใจ
- โซลูชันสำหรับธุรกิจการผลิตและยานยนต์
- โซลูชันสำหรับธุรกิจการศึกษา
- โซลูชันสำหรับธุรกิจการเงิน
- โซลูชันสำหรับธุรกิจขนส่งและกระจายสินค้า
- โซลูชันสำหรับธุรกิจค้าปลีก
- โซลูชันสำหรับธุรกิจท่องเที่ยว
- โซลูชันสำหรับธุรกิจบริการสุขภาพและโรงพยาบาล
- โซลูชันสำหรับธุรกิจประกันภัย
- โซลูชันสำหรับธุรกิจพลังงานและสาธารณูปโภค
- โซลูชันสำหรับธุรกิจสื่อสารมวลชนและเอ็นเตอร์เทนเมนท์
- โซลูชันสำหรับธุรกิจอสังหาริมทรัพย์
- โซลูชันสำหรับธุรกิจเทคโนโลยี








