Split Delivery: ใช้ Microsoft 365 คู่กับเมลเซิร์ฟเวอร์เดิม

ตั้ง Split Delivery ให้โดเมนเดียวใช้ทั้ง Microsoft 365 และ Mail Server เดิม: เลือกฝั่ง MX, ตั้ง Internal relay, สร้าง Connector, รวม SPF และทดสอบทุกเส้นทาง

โดย ทีมงาน THAI DATA CLOUD อ่าน 15 นาที

แชร์FacebookXLINELinkedIn
Split Delivery — Split Delivery: ใช้ Microsoft 365 คู่กับเมลเซิร์ฟเวอร์เดิม
Split Delivery: ใช้ Microsoft 365 คู่กับเมลเซิร์ฟเวอร์เดิม

คำตอบสั้น ๆ: ตั้ง Split Delivery ให้โดเมนเดียวใช้ทั้ง Microsoft 365 และ Mail Server เดิม: เลือกฝั่ง MX, ตั้ง Internal relay, สร้าง Connector, รวม SPF และทดสอบทุกเส้นทาง

คู่มือนี้อธิบาย Split Delivery ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย

Split Delivery คือการให้อีเมลของโดเมนเดียวกัน เช่น @example.com ส่งถึงกล่องจดหมายที่อยู่คนละระบบ บางคนอยู่บน Microsoft 365 บางคนยังอยู่บน Mail Server เดิมของบริษัท เช่น Zimbra หรือ Postfix บน Cloud Server โดยผู้ส่งภายนอกไม่ต้องรู้ว่าใครอยู่ระบบไหน รูปแบบนี้ใช้ได้ทั้งช่วงย้ายระบบทีละแผนก และแบบถาวรเมื่อบริษัทให้ผู้บริหารใช้ Microsoft 365 แต่พนักงานส่วนใหญ่อยู่บนเมลเซิร์ฟเวอร์เดิม

คู่มือนี้เหมาะกับผู้ดูแลระบบที่ต้องตั้งค่า Split Delivery ทั้งสองฝั่งเอง เมื่อทำครบ คุณจะเลือกได้ว่า MX ควรชี้ไปที่ระบบไหน ตั้งโดเมนใน Exchange Online เป็น Internal relay สร้าง Connector ส่งอีเมลไปเซิร์ฟเวอร์เดิม ตั้งเส้นทางย้อนกลับฝั่งเซิร์ฟเวอร์เดิม รวม SPF ของสองระบบไว้ในระเบียนเดียว และทดสอบครบทุกทิศทางก่อนใช้งานจริง ถ้าองค์กรใช้ Google Workspace แทน ให้ดู Dual Delivery บน Gmail ซึ่งใช้หลักการคล้ายกัน

สิ่งที่ต้องเตรียม

  • บทบาท Exchange Administrator หรือ Global Administrator ใน Microsoft 365 และโดเมนที่ยืนยันแล้วใน Microsoft 365 admin center
  • สิทธิ์ root หรือผู้ดูแลบน Mail Server เดิม ชื่อโฮสต์ที่รับอีเมลจากภายนอกได้ เช่น mail.example.com (IP 203.0.113.10) พร้อมใบรับรอง TLS ที่ออกโดย CA ไม่ใช่ self-signed
  • สิทธิ์แก้ DNS ของโดเมน ทั้ง MX, TXT (SPF) และ CNAME (Autodiscover)
  • รายชื่อผู้ใช้ทั้งหมดที่ระบุว่าใครอยู่ระบบไหน รวม alias, Shared Mailbox และ Distribution list เพราะระบบหลักต้องรู้ที่อยู่ทุกตัวของโดเมน
  • ไฟร์วอลล์ของเซิร์ฟเวอร์เดิมเปิดพอร์ต 25 ให้ช่วง IP ของ Exchange Online ตามที่ Microsoft ประกาศในหน้า Microsoft 365 URLs and IP address ranges

ขั้นตอนที่ 1: เลือกระบบหลักที่รับ MX ของ Split Delivery

ในการทำ Split Delivery จะมีระบบเดียวที่รับอีเมลจากอินเทอร์เน็ต (ระบบที่ MX ชี้ไป) เรียกว่าระบบหลัก ระบบหลักต้องรู้จักทุกที่อยู่ของโดเมนและส่งต่ออีเมลของผู้ใช้ที่อยู่อีกฝั่งไปให้ ส่วนระบบรองรู้จักเฉพาะผู้ใช้ของตัวเอง

  • MX ชี้ Microsoft 365: เหมาะเมื่อผู้ใช้ส่วนใหญ่ย้ายแล้วหรือกำลังจะย้าย อีเมลทุกฉบับผ่าน Exchange Online Protection ก่อน ส่วนอีเมลถึงผู้ใช้บนเซิร์ฟเวอร์เดิมจะผ่าน Microsoft 365 หนึ่งทอด
  • MX ชี้ Mail Server เดิม: เหมาะเมื่อมีผู้ใช้ Microsoft 365 ไม่กี่คน เช่น เฉพาะผู้บริหาร ไม่ต้องแตะ MX แต่ระบบกรองของเซิร์ฟเวอร์เดิมเป็นด่านแรก และต้องตั้งเส้นทางรายคนทุกครั้งที่ย้ายผู้ใช้

ไม่ว่าเลือกแบบไหน Split Delivery มีกฎข้อเดียวที่ห้ามพลาด คือที่อยู่ที่ไม่มีอยู่จริงต้องถูกปฏิเสธที่ระบบปลายทางสุดท้าย ห้ามตั้งให้ทั้งสองฝั่งส่งต่อ "ผู้รับที่ไม่รู้จัก" ไปหากัน เพราะอีเมลที่พิมพ์ที่อยู่ผิดจะวนไปมาจนเกิด loop และกินคิวทั้งสองระบบ ตัวอย่างในคู่มือนี้ใช้ MX ชี้ Microsoft 365 และให้เซิร์ฟเวอร์เดิมเป็นฝั่งที่ปฏิเสธที่อยู่ที่ไม่มีจริง

แผนภาพ Split Delivery อีเมลภายนอกเข้า Microsoft 365 ก่อน ผู้รับที่รู้จักเข้ากล่องในระบบ ผู้รับอื่นส่งผ่าน Connector ไป Mail Server เดิม
Microsoft 365 ส่งต่อเฉพาะผู้รับที่ไม่รู้จัก และเซิร์ฟเวอร์เดิมเป็นฝั่งที่ปฏิเสธที่อยู่ที่ไม่มีจริง

ขั้นตอนที่ 2: ตั้งโดเมนเป็น Internal relay ใน Exchange Online

ค่าเริ่มต้นของโดเมนใน Exchange Online คือ Authoritative ซึ่งปฏิเสธผู้รับที่ไม่มีกล่องจดหมายใน Microsoft 365 ตั้งแต่ขอบเครือข่าย (Directory-Based Edge Blocking) ถ้าจะทำ Split Delivery ต้องเปลี่ยนเป็น Internal relay เพื่อให้อีเมลของผู้รับที่ Exchange Online ไม่รู้จักถูกส่งต่อไปเซิร์ฟเวอร์เดิม

  1. เปิด Exchange admin center ที่ https://admin.exchange.microsoft.com
  2. ไปที่ Mail flow > Accepted domains แล้วคลิกชื่อโดเมน
  3. ในส่วน This accepted domain is เลือก Internal relay แล้วคลิก Save

ทำขั้นตอนนี้กับขั้นตอนที่ 3 ในรอบเดียวกัน เพราะถ้าโดเมนเป็น Internal relay แต่ยังไม่มี Connector อีเมลถึงผู้ใช้บนเซิร์ฟเวอร์เดิมจะไม่มีเส้นทางส่งต่อ และ Microsoft ระบุชัดว่าไม่ควรใช้ Internal relay เมื่อผู้ใช้ทุกคนอยู่บน Microsoft 365 แล้ว ให้เปลี่ยนกลับเป็น Authoritative ทันทีที่ย้ายครบ รายละเอียดอยู่ในเอกสาร Manage accepted domains in Exchange Online

หน้าจอจำลอง Accepted domains ใน Exchange admin center เลือกประเภทโดเมนเป็น Internal relay สำหรับ Split Delivery
เปลี่ยนเป็น Internal relay พร้อมกับสร้าง Connector ในรอบเดียวกัน (ภาพจำลอง)

ขั้นตอนที่ 3: สร้าง Connector สำหรับ Split Delivery ไปเซิร์ฟเวอร์เดิม

  1. ใน Exchange admin center ไปที่ Mail flow > Connectors แล้วคลิก + Add a connector
  2. ช่อง Connection from เลือก Office 365 และช่อง Connection to เลือก Your organization's email server
  3. ตั้งชื่อที่บอกว่าเป็น Connector ของ Split Delivery เช่น To legacy mail server ที่หน้า Use of connector เลือก Only when email messages are sent to these domains แล้วใส่ example.com
  4. หน้า Routing ใส่ mail.example.com แล้วคลิก + ก่อนคลิก Next
  5. หน้า Security restrictions เลือก Always use Transport Layer Security (TLS) to secure the connection (recommended) และ Issued by a trusted certificate authority (CA)
  6. หน้า Validation email ใส่ที่อยู่ของผู้ใช้ที่อยู่บนเซิร์ฟเวอร์เดิม คลิก + แล้วคลิก Validate เมื่อผ่านแล้วคลิก Create connector

อีเมลถึงผู้รับที่มีกล่องจดหมายใน Microsoft 365 ยังส่งภายในระบบตามปกติ Connector นี้ถูกใช้กับผู้รับที่ Exchange Online ไม่รู้จักเท่านั้น ฝั่งเซิร์ฟเวอร์เดิมต้องยอมรับการเชื่อมต่อจากช่วง IP ของ Exchange Online ถ้ามีกฎกันอีเมลที่อ้างว่ามาจากโดเมนตัวเองแต่เข้ามาจาก IP ภายนอก (anti-spoofing) หรือกฎตรวจ SPF ของผู้ส่งต้นทาง ให้ยกเว้นช่วง IP นี้ ไม่เช่นนั้นการ Validate จะผ่าน แต่อีเมลจริงจากคนนอกที่ถูกส่งต่อผ่าน Microsoft 365 จะโดนปฏิเสธหรือเข้า Spam

ผู้ที่ถนัด PowerShell ทำขั้นตอนที่ 2 และ 3 ได้ด้วยคำสั่งด้านล่าง

Connect-ExchangeOnline -UserPrincipalName [email protected]
Set-AcceptedDomain -Identity example.com -DomainType InternalRelay
New-OutboundConnector -Name "To legacy mail server" -ConnectorType OnPremises `
  -RecipientDomains example.com -SmartHosts mail.example.com -UseMXRecord $false `
  -TlsSettings CertificateValidation
Get-OutboundConnector "To legacy mail server" | Format-List RecipientDomains,SmartHosts,TlsSettings,Enabled
คำสั่ง PowerShell ตั้งโดเมนเป็น Internal relay สร้าง Outbound Connector ไป mail.example.com และตรวจผลการตั้งค่า Split Delivery
ตรวจว่า RecipientDomains เป็นโดเมนของคุณ และ TlsSettings ไม่ว่างก่อนเปลี่ยน MX

ขั้นตอนที่ 4: ตั้งเส้นทาง Split Delivery ฝั่ง Mail Server เดิม

เซิร์ฟเวอร์เดิมยังถือว่าตัวเองเป็นเจ้าของ example.com เมื่อพนักงานบนเซิร์ฟเวอร์เดิมส่งอีเมลถึงเพื่อนที่ย้ายไป Microsoft 365 แล้ว เซิร์ฟเวอร์จะหาผู้รับในเครื่องไม่เจอและตีกลับ หัวใจของ Split Delivery ฝั่งนี้คือเก็บบัญชีของผู้ใช้ที่ย้ายไว้เป็นตัวแทน (ไม่ลบ) แล้วตั้งเส้นทางส่งของบัญชีนั้นไป Microsoft 365 แบบรายคน ไม่ใช้ catch-all เพื่อไม่ให้เกิด loop ตามขั้นตอนที่ 1 ปลายทางคือค่า MX ที่ Microsoft 365 กำหนดให้โดเมน ซึ่งคัดลอกได้จาก Settings > Domains ใน Microsoft 365 admin center เช่น example-com.mail.protection.outlook.com

Zimbra

su - zimbra
zmprov ca [email protected] "$(openssl rand -base64 24)"
zmprov ma [email protected] zimbraMailTransport smtp:example-com.mail.protection.outlook.com:25
zmprov ga [email protected] zimbraMailTransport

ถ้าบัญชีมีอยู่แล้วและย้ายข้อมูลเสร็จแล้ว ใช้เฉพาะคำสั่ง zmprov ma ถ้าต้องการย้ายกลับ ให้ตั้ง zimbraMailTransport กลับเป็นค่า lmtp: เดิมของเซิร์ฟเวอร์ (ดูจากบัญชีอื่นด้วย zmprov ga ก่อนแก้)

Postfix ทั่วไป

# /etc/postfix/transport
[email protected]    smtp:[example-com.mail.protection.outlook.com]:25
[email protected]      smtp:[example-com.mail.protection.outlook.com]:25

postmap /etc/postfix/transport
postconf -e 'transport_maps = hash:/etc/postfix/transport'
systemctl reload postfix

ผู้ใช้ต้องยังอยู่ในตารางผู้รับของ Postfix (เช่น virtual_mailbox_maps) เพื่อให้ผ่านการตรวจผู้รับ ส่วนที่อยู่ที่ไม่มีในตารางจะถูกปฏิเสธเหมือนเดิม ซึ่งเป็นสิ่งที่ต้องการ

ขั้นตอนที่ 5: รวม SPF และตั้ง DKIM ของทั้งสองระบบใน Split Delivery

เมื่อใช้ Split Delivery ทั้งสองระบบส่งอีเมลออกในชื่อ @example.com จึงต้องอยู่ในระเบียน SPF เดียวกัน โดเมนหนึ่งมีระเบียน SPF ได้เพียงระเบียนเดียว ถ้ามีสองระเบียน ผลตรวจจะเป็น PermError

example.com.  3600  IN  TXT  "v=spf1 ip4:203.0.113.10 include:spf.protection.outlook.com -all"

DKIM แยกกันได้เพราะใช้ selector ต่างกัน Microsoft 365 ใช้ selector1 และ selector2 ส่วนเซิร์ฟเวอร์เดิมใช้ selector ของตัวเอง เปิด DKIM ฝั่ง Microsoft 365 ใน Microsoft Defender portal และตรวจภาพรวมตาม คู่มือตั้งค่า SPF, DKIM และ DMARC

Autodiscover ชี้ได้ที่เดียว ให้ตั้ง autodiscover.example.com เป็น CNAME ไป autodiscover.outlook.com สำหรับผู้ใช้ Microsoft 365 ส่วนผู้ใช้บนเซิร์ฟเวอร์เดิมตั้งค่า Outlook แบบ IMAP ด้วยมือ

ขั้นตอนที่ 6: เปลี่ยน MX และทดสอบ Split Delivery ทุกทิศทาง

ลด TTL ของ MX ล่วงหน้าตาม คู่มือ TTL และการวางแผนย้าย DNS แล้วเปลี่ยน MX เป็นค่าที่ Microsoft 365 กำหนด จากนั้นทดสอบ 6 เส้นทางนี้ทุกครั้งที่แก้การตั้งค่า Split Delivery

  1. คนนอก (เช่น Gmail ส่วนตัว) ส่งถึงผู้ใช้ Microsoft 365
  2. คนนอกส่งถึงผู้ใช้บนเซิร์ฟเวอร์เดิม
  3. ผู้ใช้ Microsoft 365 ส่งถึงผู้ใช้บนเซิร์ฟเวอร์เดิม
  4. ผู้ใช้บนเซิร์ฟเวอร์เดิมส่งถึงผู้ใช้ Microsoft 365
  5. ทั้งสองฝั่งส่งออกไปภายนอก แล้วเปิด header ดูว่า SPF, DKIM และ DMARC ผ่าน
  6. คนนอกส่งถึงที่อยู่ที่ไม่มีจริง ต้องได้อีเมลตีกลับภายในไม่กี่นาที ไม่ค้างหรือวน

เครื่องมือหลักในการตรวจ Split Delivery คือ Mail flow > Message trace ใน Exchange admin center ใช้ดูว่าอีเมลออกทาง Connector ใด และดู log ฝั่งเซิร์ฟเวอร์เดิม (/var/log/zimbra.log สำหรับ Zimbra หรือ /var/log/mail.log สำหรับ Postfix บน Ubuntu) ว่ารับจาก IP ของ Microsoft 365 สำเร็จ ถ้าอีเมลตีกลับ ให้อ่านรหัส SMTP ในข้อความตีกลับเพื่อดูว่าติดที่ฝั่งใด

ตารางเปรียบเทียบ Split Delivery สองแบบ ระหว่าง MX ชี้ Microsoft 365 กับ MX ชี้ Mail Server เดิม ในเรื่องการกรองสแปมและงานดูแล
เลือกฝั่งที่มีผู้ใช้มากกว่าเป็นระบบหลัก และให้ฝั่งเดียวเป็นผู้ปฏิเสธที่อยู่ที่ไม่มีจริง

ข้อจำกัดของ Split Delivery ที่ควรแจ้งผู้ใช้

  • สมุดรายชื่อของแต่ละฝั่งใน Split Delivery เห็นเฉพาะผู้ใช้ของตัวเอง ผู้ใช้ต้องพิมพ์ที่อยู่เต็มเมื่อส่งข้ามระบบ
  • ปฏิทินและสถานะว่างหรือไม่ว่าง (Free/Busy) ไม่เห็นข้ามระบบ การนัดประชุมระหว่างสองฝั่งเป็นการส่งคำเชิญทางอีเมลธรรมดา
  • Shared Mailbox และ Distribution list ต้องอยู่ฝั่งใดฝั่งหนึ่ง และอีกฝั่งต้องมีเส้นทางส่งไปถึง
  • Split Delivery มีสองระบบให้ดูแลทั้งรหัสผ่าน การสำรองข้อมูล และนโยบายความปลอดภัย ค่าใช้จ่ายรวมจึงไม่ได้ต่ำเท่าที่คิดเสมอไป

ปัญหาที่พบบ่อยเกี่ยวกับ Split Delivery

อีเมลถึงผู้ใช้บนเซิร์ฟเวอร์เดิมตีกลับด้วย 550 5.4.1 Recipient address rejected: Access denied เกิดจากอะไร?

ข้อความนี้มาจาก Directory-Based Edge Blocking แปลว่าโดเมนยังเป็น Authoritative ตรวจด้วย Get-AcceptedDomain | Format-Table DomainName,DomainType ถ้าเพิ่งเปลี่ยนเป็น Internal relay เพื่อทำ Split Delivery ให้รอสักพักแล้วทดสอบใหม่ เพราะการเปลี่ยนแปลงต้องใช้เวลากระจายในระบบของ Microsoft

อีเมลที่ส่งถึงที่อยู่พิมพ์ผิดวนไปมาจนได้ข้อความ Hop count exceeded แก้อย่างไร?

เป็นอาการของ loop ที่พบบ่อยที่สุดใน Split Delivery เกิดเพราะเซิร์ฟเวอร์เดิมส่งต่อผู้รับที่ไม่รู้จักกลับไป Microsoft 365 ตรวจว่าไม่มี catch-all, domain-level transport หรือ relay host ที่ส่งทั้งโดเมนกลับไป และให้เซิร์ฟเวอร์เดิมปฏิเสธที่อยู่ที่ไม่มีในระบบ

ย้ายผู้ใช้เพิ่มจากเซิร์ฟเวอร์เดิมไป Microsoft 365 ต้องทำอะไรบ้าง?

การย้ายผู้ใช้เพิ่มใน Split Delivery ทำเป็นรายคน สร้างผู้ใช้และกำหนดไลเซนส์ใน Microsoft 365 ย้ายข้อมูลด้วย imapsync หรือ IMAP Migration Batch แล้วตั้ง zimbraMailTransport หรือบรรทัดใน transport ของผู้ใช้นั้นให้ชี้ไป Microsoft 365 ในวันเดียวกัน จากนั้นซิงก์รอบสุดท้ายเพื่อเก็บอีเมลที่เข้ามาระหว่างนั้น

Split Delivery ใช้แบบถาวรได้หรือไม่?

ใช้ได้ หลายบริษัทใช้ Split Delivery ถาวร โดยเปิด Microsoft 365 ให้เฉพาะผู้ที่ต้องใช้ Teams และ Office ส่วนพนักงานที่ใช้อีเมลอย่างเดียวอยู่บนเมลเซิร์ฟเวอร์ที่ค่าใช้จ่ายต่ำกว่า แต่ต้องยอมรับข้อจำกัดเรื่องสมุดรายชื่อและปฏิทิน และต้องมีคนดูแลทั้งสองระบบต่อเนื่อง

ถ้าต้องการให้ช่วยออกแบบ Split Delivery ระหว่าง Microsoft 365 กับเมลเซิร์ฟเวอร์เดิม หรือทดสอบเส้นทางอีเมลก่อนเปลี่ยน MX ติดต่อทีมงาน THAI DATA CLOUD ได้ องค์กรที่ต้องการเมลเซิร์ฟเวอร์ฝั่งที่ไม่ใช่ Microsoft 365 ดูรายละเอียดได้ที่ Cloud Mail Server

อ่านเพิ่มเติมเกี่ยวกับ Split Delivery

แชร์FacebookXLINELinkedIn

มีคำถามเรื่องบริการ? ติดต่อทีมงาน