imapsync — sign in

imapsync — Mailbox Migration

imapsync.blaxkatt.com

New migration job

Source (host1)

Destination (host2)

Options

สแกนโฟลเดอร์จากต้นทาง (Source) ?

Each line becomes exactly one CLI argument to imapsync — never split on spaces, never passed through a shell.

Live log — job #

Job history

IDSourceDestinationStatusStartedFinishedExit

คู่มือการใช้งาน imapsync Web UI

เครื่องมือนี้เป็นหน้าเว็บสำหรับสั่งรัน imapsync เพื่อย้าย/ซิงก์กล่องเมล (mailbox) ระหว่างเซิร์ฟเวอร์ IMAP สองฝั่ง โดยไม่ต้องพิมพ์คำสั่งเองใน terminal

1. เข้าสู่ระบบ

ต้อง login ด้วย username/password ที่ผู้ดูแลระบบตั้งให้ก่อนจึงจะใช้งานได้ ระบบจะจำ session ไว้ประมาณ 8 ชั่วโมง หลังจากนั้นต้อง login ใหม่ กด "Sign out" มุมขวาบนเพื่อออกจากระบบได้ทุกเมื่อ

2. สร้างงาน migration ใหม่ (New migration job)

กรอกข้อมูลเซิร์ฟเวอร์ต้นทาง (Source) และปลายทาง (Destination) ให้ครบทั้งสองฝั่ง:

  • Host — ที่อยู่เซิร์ฟเวอร์ IMAP เช่น imap.gmail.com
  • Port — พอร์ตที่ใช้เชื่อมต่อ ถ้าเว้นว่าง imapsync จะเลือกพอร์ตมาตรฐานให้อัตโนมัติตามชนิดการเข้ารหัสที่เลือก (ปกติ 993 สำหรับ SSL, 143 สำหรับ STARTTLS/plain)
  • Encryption — เลือกรูปแบบการเข้ารหัสการเชื่อมต่อ: SSL/TLS (เข้ารหัสตั้งแต่ต้น แนะนำ), STARTTLS (เริ่มแบบ plain แล้วอัปเกรดเป็นเข้ารหัส), หรือ None (ไม่เข้ารหัส — ใช้เฉพาะกรณีจำเป็นจริงๆ เช่น เซิร์ฟเวอร์ภายในที่ไม่รองรับ SSL)
  • User / Password — บัญชีผู้ใช้ที่จะใช้ล็อกอินเข้ากล่องเมลนั้นๆ ระบบไม่เก็บรหัสผ่านลงฐานข้อมูล — ใช้แค่ตอนสั่งรันงานเท่านั้น

3. ตัวเลือก (Options)

ค่าที่เลือกจะถูกแปลงเป็น flag ของ imapsync โดยตรง (ไม่มีการต่อ string ผ่าน shell จึงปลอดภัยจาก command injection):

  • --dry — โหมดทดสอบ ทำทุกอย่างเหมือนจริงแต่ไม่เขียนข้อมูลจริงที่ปลายทาง ใช้เช็คก่อนรันจริงเสมอเพื่อดูว่าค่าที่ตั้งถูกต้องหรือไม่
  • --syncflags — ซิงก์สถานะของอีเมล (เช่น อ่านแล้ว/ยังไม่อ่าน/ตอบกลับแล้ว) จากต้นทางไปปลายทางด้วย ไม่ใช่แค่เนื้อหาอีเมล
  • --syncflagsaftercopy — ซิงก์สถานะอีเมลอีกรอบ "หลัง" จากคัดลอกเสร็จ ใช้แก้ปัญหาบางเซิร์ฟเวอร์ปลายทางที่ auto-mark อีเมลใหม่เป็น "อ่านแล้ว" ทันทีที่รับเข้า
  • --automap — จับคู่โฟลเดอร์มาตรฐาน (Sent, Trash, Drafts, Junk ฯลฯ) ระหว่างสองระบบให้อัตโนมัติ แม้ชื่อโฟลเดอร์จะเรียกไม่เหมือนกันทุกตัวอักษร
  • --subscribeall — subscribe ทุกโฟลเดอร์ที่ถูกสร้างขึ้นใหม่ที่ฝั่งปลายทางให้อัตโนมัติ (ปกติโฟลเดอร์ใหม่จะไม่ถูก subscribe ให้เอง ผู้ใช้จะมองไม่เห็นในบาง mail client)
  • --skipcrossduplicates — ข้ามอีเมลที่มีเนื้อหาเดียวกันซ้ำกันในหลายโฟลเดอร์ ไม่คัดลอกซ้ำซ้อน
  • --maxage / --minage — จำกัดช่วงอายุของอีเมล (หน่วยเป็นวัน) ที่จะซิงก์ เช่น ใส่ --minage 30 จะซิงก์เฉพาะอีเมลที่เก่ากว่า 30 วัน (มีประโยชน์เวลาต้องการย้ายเฉพาะเมลเก่าไป archive ก่อน)
  • --maxbytespersecond — จำกัดความเร็วในการโอนข้อมูล (bytes/วินาที) เพื่อไม่ให้กิน bandwidth เซิร์ฟเวอร์ทั้งหมดระหว่างรันงาน
  • --exclude — ใส่ regular expression ของชื่อโฟลเดอร์ที่ต้องการข้าม ไม่ซิงก์ (พิมพ์ได้หลายบรรทัด บรรทัดละ 1 รูปแบบ)
  • --folder — ระบุเฉพาะโฟลเดอร์ที่ต้องการซิงก์ (ถ้าปล่อยว่างไว้ = ซิงก์ทุกโฟลเดอร์) พิมพ์ได้หลายบรรทัด บรรทัดละ 1 โฟลเดอร์
  • Advanced raw args — ช่องสำหรับใส่ flag อื่นๆ ของ imapsync ที่ไม่มีตัวเลือกให้ในหน้านี้ พิมพ์ 1 อาร์กิวเมนต์ต่อ 1 บรรทัดเท่านั้น (ห้ามพิมพ์รวมกันในบรรทัดเดียวคั่นด้วยช่องว่าง เพราะระบบจะไม่แยกคำให้ แต่ละบรรทัดจะถูกส่งเป็น argument เดี่ยวๆ ตรงๆ ไปยัง imapsync)
ดูรายละเอียด flag ทั้งหมดของ imapsync เพิ่มเติมได้จาก imapsync --help หรือเอกสารทางการของโปรเจกต์ แล้วนำมาใส่ในช่อง Advanced raw args ได้เลย

4. คิวงาน (Job queue)

ระบบรันงานพร้อมกันได้สูงสุด 2 งานในเวลาเดียวกัน หากกดสร้างงานเกินกว่านั้น งานที่เกินจะขึ้นสถานะ queued รอคิวโดยอัตโนมัติ ไม่ต้องกดสั่งซ้ำ

5. ดู log สด (Live log)

หลังกด "Start job" ระบบจะเปิดหน้าต่าง log แบบเรียลไทม์ให้ทันที เห็นผลลัพธ์ของ imapsync ขณะกำลังรันเหมือนดูหน้าจอ terminal สด สถานะงานจะแสดงเป็น queuedrunningsuccess หรือ error หากต้องการหยุดงานที่กำลังรันอยู่กะทันหัน กดปุ่ม Cancel ได้

6. ประวัติงาน (Job history)

ตารางด้านล่างเก็บประวัติงานทั้งหมดที่เคยรัน พร้อมสถานะ, เวลาที่เริ่ม/จบ และ exit code ของ imapsync (exit code 0 คือสำเร็จ)

  • View log — เปิดดู log แบบเต็มของงานนั้นย้อนหลังได้ แม้งานจะรันจบไปแล้ว
  • Re-run — ดึงค่า host/user ของงานเดิมมาเติมในฟอร์มให้อัตโนมัติ แต่ต้องกรอกรหัสผ่านใหม่ทุกครั้ง เพราะระบบไม่เก็บรหัสผ่านไว้ เมื่อรันซ้ำ imapsync จะข้ามอีเมลที่เคยซิงก์ไปแล้วโดยอัตโนมัติ (ตรวจสอบจาก header ของอีเมลที่ปลายทาง) ทำให้ใช้ฟีเจอร์นี้เป็นกลไก "รันต่อ" งานที่ค้างหรือหลุดกลางทางได้โดยไม่ต้องเริ่มใหม่ทั้งหมด

7. เรื่องความปลอดภัย

หน้าเว็บนี้บังคับใช้ HTTPS เท่านั้น, รหัสผ่านกล่องเมลที่กรอกในฟอร์มจะถูกใช้แค่ตอนสั่งรัน imapsync และไม่ถูกบันทึกลงฐานข้อมูลหรือ log ใดๆ (ถูก mask เป็น *** ก่อนบันทึกเสมอ) และทุกคำสั่งถูกส่งไปยัง imapsync แบบ argument array โดยตรง ไม่ผ่าน shell จึงไม่มีช่องโหว่ command injection จากช่องกรอกข้อมูลใดๆ

ถึงอย่างนั้น ควรใช้บัญชีที่มีสิทธิ์เท่าที่จำเป็นสำหรับงาน migration และเปลี่ยนรหัสผ่านของบัญชีเมลหลังย้ายเสร็จหากมีความเสี่ยง