คำตอบสั้น ๆ: ตั้ง Exchange Online Connector ให้เซิร์ฟเวอร์และเครื่องสแกนของบริษัทส่งอีเมลผ่าน Microsoft 365 ด้วย IP คงที่หรือใบรับรอง TLS แก้ SPF และทดสอบผ่านพอร์ต 25
คู่มือนี้อธิบาย Exchange Online Connector ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
Exchange Online Connector ในคู่มือนี้คือ inbound connector ชนิด Your organization's email server ใน Exchange admin center ซึ่งบอก Microsoft 365 ว่าอีเมลที่มาจาก IP สาธารณะหรือใบรับรอง TLS ที่ระบุไว้เป็นของบริษัทจริง เมื่อเซิร์ฟเวอร์ ERP เว็บแอป หรือเครื่องสแกนส่งอีเมลผ่าน Exchange Online Connector ระบบจะ relay ถึงผู้รับทั้งในและนอกองค์กร โดยไม่ต้องใช้รหัสผ่านของกล่องจดหมายใด และที่อยู่ผู้ส่งอย่าง [email protected] ไม่ต้องมีไลเซนส์
คู่มือนี้เหมาะกับผู้ดูแลระบบที่มีเซิร์ฟเวอร์หรืออุปกรณ์ในบริษัทซึ่งต้องส่งอีเมลแจ้งเตือนหรือไฟล์สแกน เมื่อทำครบ คุณจะสร้าง connector ได้ทั้งจากหน้าเว็บและ PowerShell ตั้งเซิร์ฟเวอร์ให้ส่งไปที่ MX endpoint ทางพอร์ต 25 แก้ระเบียน SPF และทดสอบจนเห็นผลใน Message Trace
สิ่งที่ต้องเตรียม
- บัญชีที่มีบทบาท Exchange Administrator ขึ้นไป
- IP สาธารณะแบบคงที่ (IPv4) ที่บริษัทใช้คนเดียว Microsoft ไม่รองรับ IP แบบ dynamic หรือใบรับรอง TLS จากผู้ออกใบรับรองสาธารณะที่ช่อง Subject หรือ SAN มีโดเมนของบริษัท ซึ่ง Microsoft แนะนำมากกว่าการใช้ IP
- โดเมนที่ verify แล้วใน Microsoft 365 (accepted domain) ที่อยู่ผู้ส่งทุกฉบับต้องอยู่ในโดเมนนี้
- พอร์ต TCP 25 ขาออกจากเซิร์ฟเวอร์ต้องเปิด และมีสิทธิ์แก้ DNS ของโดเมนเพื่อแก้ SPF
ข้อจำกัดที่ต้องรู้: Microsoft ระบุว่า SMTP relay ผ่าน Exchange Online Connector ไม่รองรับการส่งจากบริการที่โฮสต์โดยผู้ให้บริการภายนอก โดยยกตัวอย่าง Microsoft Azure วิธีนี้จึงเหมาะกับเซิร์ฟเวอร์ที่บริษัทควบคุมเองบน IP ของบริษัท เช่น เซิร์ฟเวอร์ในสำนักงาน ถ้าแอปอยู่บนคลาวด์ ให้พิจารณา SMTP AUTH สำหรับแอปและอุปกรณ์ ก่อน
ขั้นตอนที่ 1: เลือกวิธีที่ Exchange Online Connector ใช้ยืนยันเซิร์ฟเวอร์
- ใบรับรอง TLS (แนะนำ): Exchange Online Connector ตรวจชื่อในใบรับรองที่เซิร์ฟเวอร์ส่งมาตอน STARTTLS ย้าย IP ได้โดยไม่ต้องแก้ค่า แต่ต้องต่ออายุใบรับรองให้ทัน และซอฟต์แวร์ต้องส่ง client certificate ได้ ซึ่ง Postfix และ Exchange Server ทำได้ แต่เครื่องสแกนส่วนใหญ่ทำไม่ได้
- IP สาธารณะ: ตั้งง่ายและใช้กับอุปกรณ์รุ่นเก่าได้ แต่ถ้าคนอื่นได้ IP เดียวกันไปใช้ เขาจะส่งอีเมลในนามโดเมนของคุณผ่าน Exchange Online Connector ได้ทันที
ถ้าเลือกแบบ IP ให้รันคำสั่งนี้บนเซิร์ฟเวอร์ที่จะส่งอีเมลจริง ค่าที่ได้ต้องตรงกับ IP คงที่ที่ผู้ให้บริการอินเทอร์เน็ตแจ้งไว้ ถ้าสำนักงานมีอินเทอร์เน็ตหลายเส้นแบบ load balance ให้ตรวจทุกเส้น ไม่เช่นนั้นอีเมลบางฉบับจะถูกปฏิเสธเป็นช่วง ๆ
dig +short myip.opendns.com @resolver1.opendns.com
ขั้นตอนที่ 2: หา MX endpoint และทดสอบพอร์ต 25
อุปกรณ์ต้องส่งไปที่ MX endpoint ของโดเมน ไม่ใช่ smtp.office365.com ซึ่งเป็นปลายทางของ SMTP AUTH เปิด Microsoft 365 admin center ไปที่ Settings > Domains ตรวจว่าโดเมนมีสถานะ Healthy คลิกชื่อโดเมน เลือกแท็บ DNS records ในส่วน Microsoft Exchange คลิกระเบียน MX แล้วคัดลอก Points to address or value ซึ่งส่วนใหญ่อยู่ในรูป example-com.mail.protection.outlook.com ใช้ค่าจากหน้านี้เสมอ เพราะถ้า MX ชี้ไประบบกรองอีเมลรายอื่น ค่าใน DNS จะไม่ใช่ของ Microsoft
dig +short MX example.com
nc -vz example-com.mail.protection.outlook.com 25
nc ควรแจ้งว่าเชื่อมต่อสำเร็จ (คำว่า succeeded หรือ Connected แล้วแต่รุ่นของ nc) ถ้าขึ้น timed out แปลว่าพอร์ต 25 ขาออกถูกปิดที่ไฟร์วอลล์หรือที่ผู้ให้บริการเครือข่าย ให้แก้จุดนี้ก่อน
ขั้นตอนที่ 3: สร้าง Exchange Online Connector ใน Exchange admin center
- เปิด
https://admin.cloud.microsoft/exchange#/connectors(เมนู Mail flow > Connectors) แล้วคลิก Add a connector - ที่ Connection from เลือก Your organization's email server ช่อง Connection to จะเป็น Office 365 เอง คลิก Next
- ตั้งชื่อที่บอกที่มา เช่น
Relay from web-01 203.0.113.10ให้ Turn it on ถูกเลือก และ Retain internal Exchange email headers ไม่ถูกเลือก คลิก Next - หน้า Authenticating sent email: แบบใบรับรอง เลือกตัวเลือกแรก (By verifying that the subject name on the certificate…) แล้วใส่โดเมนที่ตรงกับใบรับรอง เช่น
*.example.comแบบ IP เลือก By verifying that the IP address of the sending server matches one of the following IP addresses which belong exclusively to your organization แล้วเพิ่ม IP - ตรวจหน้า Review connector แล้วคลิก Create connector
ถ้ามี Exchange Online Connector ที่สร้างโดย Hybrid Configuration Wizard อยู่แล้ว ให้ตรวจว่าครอบคลุมเซิร์ฟเวอร์นี้หรือไม่ก่อนสร้างใหม่ การมีหลาย connector ที่ครอบคลุม IP เดียวกันทำให้หาสาเหตุยากเวลาอีเมลถูกปฏิเสธ
สร้างด้วย Exchange Online PowerShell
Exchange Online Connector แบบ IP สร้างด้วย PowerShell ได้ ค่า -ConnectorType OnPremises ตรงกับ Your organization's email server ส่วน -SenderIPAddresses รับ IPv4 หรือช่วง CIDR ตั้งแต่ /24 ถึง /32
Connect-ExchangeOnline -UserPrincipalName [email protected]
New-InboundConnector -Name "Relay from web-01 203.0.113.10" -ConnectorType OnPremises `
-SenderDomains "*" -SenderIPAddresses 203.0.113.10
Get-InboundConnector | Format-List Name,ConnectorType,SenderIPAddresses,Enabled
ขั้นตอนที่ 4: ตั้งเซิร์ฟเวอร์ให้ส่งผ่าน Exchange Online Connector
- Smart host: MX endpoint จากขั้นตอนที่ 2 ห้ามใส่เป็นเลข IP
- Port: 25 เท่านั้น
- STARTTLS: เปิด (TLS 1.2 ขึ้นไป) แบบใบรับรองต้องเปิด แบบ IP ควรเปิด
- Authentication: ไม่ใส่ username และ password
- From: ที่อยู่ใดก็ได้ใน accepted domain เช่น [email protected]
ตัวอย่างสำหรับ Postfix ให้สำรองไฟล์ก่อนด้วย cp /etc/postfix/main.cf /etc/postfix/main.cf.bak แล้วเพิ่มค่าต่อไปนี้ใน /etc/postfix/main.cf สองบรรทัดสุดท้ายใช้เฉพาะ connector แบบใบรับรอง
relayhost = [example-com.mail.protection.outlook.com]:25
smtp_tls_security_level = encrypt
smtp_tls_cert_file = /etc/ssl/certs/mail.example.com.fullchain.pem
smtp_tls_key_file = /etc/ssl/private/mail.example.com.key
จากนั้นรัน postfix check && systemctl reload postfix ขั้นตอนติดตั้ง Postfix แบบส่งอย่างเดียวอยู่ใน Postfix: ส่งอีเมลแจ้งเตือนจากเซิร์ฟเวอร์ผ่าน SMTP Relay