คำตอบสั้น ๆ: ตั้ง SMTP AUTH ให้เครื่องสแกนและแอปส่งอีเมลผ่าน smtp.office365.com พอร์ต 587 เทียบกับ connector และ Direct Send อ่านรหัสข้อผิดพลาด และเตรียมรับการปิด Basic auth
คู่มือนี้อธิบาย SMTP AUTH ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
SMTP AUTH (หรือ Client SMTP submission) คือวิธีให้เครื่องพิมพ์ เครื่องสแกน โปรแกรมบัญชี หรือเว็บไซต์ส่งอีเมลผ่าน Microsoft 365 โดยล็อกอินเข้า smtp.office365.com พอร์ต 587 ด้วยบัญชีกล่องจดหมายหนึ่งบัญชี อีเมลที่ส่งด้วย SMTP AUTH ส่งถึงผู้รับทั้งในและนอกองค์กรได้ และเก็บสำเนาไว้ใน Sent Items ของกล่องนั้น แต่ไม่ใช่วิธีเดียว Microsoft 365 ยังมี SMTP relay ผ่าน connector และ Direct Send ซึ่งเหมาะกับงานต่างกัน
คู่มือนี้เขียนให้ผู้ดูแลระบบหรือเจ้าหน้าที่ที่ต้องทำให้ "เครื่องสแกนส่งไฟล์เข้าอีเมลได้" หรือ "ระบบ ERP ส่งใบแจ้งหนี้ได้" เมื่อทำครบ คุณจะเลือกวิธีส่งที่เหมาะ เปิด SMTP AUTH เฉพาะกล่องที่จำเป็น ตั้งค่าที่อุปกรณ์ถูกต้อง ทดสอบและอ่านรหัสข้อผิดพลาดได้ และวางแผนรับมือการปิด Basic authentication ของ SMTP AUTH ที่ Microsoft ประกาศไว้
สิ่งที่ต้องเตรียม
- กล่องจดหมายเฉพาะสำหรับอุปกรณ์ ที่มีไลเซนส์ Exchange Online เช่น
[email protected]อย่าใช้บัญชีของพนักงาน เพราะเมื่อพนักงานเปลี่ยนรหัสผ่านหรือลาออก อุปกรณ์จะส่งไม่ได้ทันที Shared mailbox ใช้กับ SMTP AUTH ไม่ได้เพราะไม่มีรหัสผ่านของตัวเอง - สิทธิ์: บทบาท Exchange Administrator หรือ Global Administrator
- อุปกรณ์รองรับ TLS 1.2 ขึ้นไปและ STARTTLS บนพอร์ต 587 ถ้าอุปกรณ์มีให้เลือกแค่พอร์ต 465 แปลว่ารองรับ TLS ไม่ตรงกับที่ Microsoft 365 ต้องการ ให้อัปเดต firmware หรือใช้วิธีอื่น
- ไฟร์วอลล์เปิดขาออกพอร์ต 587 ไปยัง
smtp.office365.comใช้ชื่อโดเมนเสมอ ห้ามใส่ IP ของ Microsoft - ตรวจ Security defaults: ถ้าองค์กรเปิด Security defaults ไว้ SMTP AUTH แบบชื่อผู้ใช้และรหัสผ่านจะถูกปิดอยู่แล้ว ต้องเลือกวิธีอื่นหรือย้ายไปใช้ Conditional Access ก่อน
ขั้นตอนที่ 1: เลือกวิธีส่งอีเมลให้เหมาะกับอุปกรณ์
- SMTP AUTH: ส่งได้ทั้งภายในและภายนอก ส่งจากที่ไหนก็ได้ ต้องมีกล่องที่มีไลเซนส์ เพดาน 10,000 ผู้รับต่อวันและ 30 ฉบับต่อนาทีเหมือนผู้ใช้ทั่วไป เหมาะกับเครื่องสแกนในสำนักงานและแอปขนาดเล็ก
- SMTP relay ผ่าน connector: อุปกรณ์ส่งไปที่ MX endpoint ของโดเมน เช่น
example-com.mail.protection.outlook.comพอร์ต 25 Microsoft 365 ยืนยันตัวตนจาก IP สาธารณะคงที่หรือใบรับรอง ใช้ที่อยู่ผู้ส่งอะไรก็ได้ในโดเมน ไม่ต้องมีกล่องจดหมาย และไม่ต้องใช้รหัสผ่าน ดูวิธีตั้งที่ Exchange Online Connector: ส่งอีเมลจากเซิร์ฟเวอร์ด้วย IP ของบริษัท - Direct Send: ส่งไปที่ MX endpoint พอร์ต 25 โดยไม่ยืนยันตัวตน ส่งได้เฉพาะผู้รับในองค์กร ถ้าองค์กรเปิด
Set-OrganizationConfig -RejectDirectSend $trueไว้ อีเมลแบบนี้จะถูกปฏิเสธจนกว่าจะมี connector Microsoft เองระบุว่าลูกค้าส่วนใหญ่ไม่จำเป็นต้องใช้วิธีนี้
ถ้าอุปกรณ์อยู่ในสำนักงานที่มี IP คงที่และต้องส่งออกนอกองค์กรจำนวนมาก connector มักดีกว่าในระยะยาว เพราะไม่ผูกกับรหัสผ่านและไม่ได้รับผลจากการปิด Basic authentication ถ้าแอปอยู่บนเซิร์ฟเวอร์ Linux ของคุณเอง การตั้ง Postfix บนเซิร์ฟเวอร์นั้นให้เป็นตัวกลางส่งต่อ ช่วยรวมการส่งไว้ที่จุดเดียวและเก็บ log ได้เอง
ขั้นตอนที่ 2: เปิด SMTP AUTH เฉพาะกล่องที่ต้องใช้
Microsoft แนะนำให้ปิด SMTP AUTH ระดับองค์กร แล้วเปิดเฉพาะกล่องที่จำเป็น องค์กรที่สร้างหลังเดือนมกราคม 2020 ถูกปิดระดับองค์กรไว้แล้ว ค่าระดับกล่องจะชนะค่าระดับองค์กรเสมอ
- ตรวจค่าระดับองค์กรใน Exchange admin center ที่ Settings > Mail flow ตัวเลือก Turn off SMTP AUTH protocol for your organization ควรติ๊กไว้
- ใน Microsoft 365 admin center ไปที่ Users > Active users เลือกบัญชี
[email protected] - ใน flyout เลือกแท็บ Mail แล้วในส่วน Email apps คลิก Manage email apps
- ติ๊ก Authenticated SMTP แล้วคลิก Save changes
หรือใช้ Exchange Online PowerShell ซึ่งตรวจผลได้ทันที
Connect-ExchangeOnline -UserPrincipalName [email protected]
Set-CASMailbox -Identity [email protected] -SmtpClientAuthenticationDisabled $false
Get-CASMailbox -Identity [email protected] | Format-List SmtpClientAuthenticationDisabled
Get-TransportConfig | Format-List SmtpClientAuthenticationDisabled
ค่า False ในกล่องคือเปิด True คือปิด และค่าว่างคือใช้ตามองค์กร ถ้าองค์กรใช้ Conditional Access บล็อก Legacy authentication ต้องยกเว้นบัญชีนี้ และควรสร้างนโยบายให้บัญชีนี้ล็อกอินได้จาก IP สำนักงานเท่านั้น ตาม Conditional Access: จำกัดล็อกอินอีเมลตามประเทศและอุปกรณ์ ตั้งรหัสผ่านยาวแบบสุ่มและเก็บไว้ในที่เก็บรหัสผ่านของทีม
ขั้นตอนที่ 3: ตั้งค่า SMTP AUTH ที่เครื่องพิมพ์หรือแอป
ชื่อเมนูต่างกันตามยี่ห้อ แต่ค่าที่ต้องใส่มีเท่านี้
- SMTP server:
smtp.office365.com - Port:
587(พอร์ต 25 ก็รองรับ แต่ ISP หลายรายบล็อก) - Encryption: STARTTLS หรือ TLS ห้ามเลือก SSL/TLS บนพอร์ต 465
- Authentication: เปิด ใช้ชื่อผู้ใช้เป็นอีเมลเต็ม
[email protected]และรหัสผ่านของบัญชีนั้น ถ้าอุปกรณ์รองรับ OAuth 2.0 (XOAUTH2) ให้เลือกแบบนั้น - From address: ใช้ที่อยู่เดียวกับบัญชีที่ล็อกอิน ถ้าต้องส่งในนามที่อยู่อื่น บัญชีที่ล็อกอินต้องมีสิทธิ์ Send As ในกล่องนั้น ไม่เช่นนั้นจะได้ข้อผิดพลาด 5.7.60
ตั้งเวลาของอุปกรณ์ให้ตรงด้วย NTP เครื่องที่เวลาเพี้ยนมากมักเจรจา TLS ไม่สำเร็จโดยไม่มีข้อความบอกสาเหตุ