เชิงเทคนิค · คำตอบพร้อมแหล่งอ้างอิง
เซิร์ฟเวอร์ SMTP คืออะไร: ความหมายและภาพรวมทางเทคนิค
เซิร์ฟเวอร์ SMTP คือแอปพลิเคชันที่ใช้ Simple Mail Transfer Protocol เพื่อส่ง รับ และ relay ข้อความอีเมลขาออกระหว่างไคลเอนต์กับเซิร์ฟเวอร์อื่น ทำหน้าที่เหมือนที่ทำการไปรษณีย์ดิจิทัล คือรับข้อความจากผู้ส่งแล้วกำหนดเส้นทางผ่านอินเทอร์เน็ตไปยังเมลเซิร์ฟเวอร์ของผู้รับ
กลไกการทำงาน
กระบวนการเริ่มเมื่อ Mail User Agent ส่งคำขอไปยังเซิร์ฟเวอร์ SMTP เซิร์ฟเวอร์ใช้ชุดคำสั่งอย่าง HELO หรือ EHLO เพื่อสร้างการเชื่อมต่อ MAIL FROM เพื่อระบุผู้ส่ง และ RCPT TO เพื่อระบุผู้รับ เมื่อออกคำสั่ง DATA เซิร์ฟเวอร์จะส่งเนื้อหาและเฮดเดอร์ของข้อความ หากผู้รับอยู่ต่างโดเมน เซิร์ฟเวอร์จะสอบถาม DNS เพื่อหาเรคคอร์ด MX ของเซิร์ฟเวอร์ปลายทาง แล้ว relay ข้อความไปตามนั้น
ความสำคัญต่อผู้ส่ง
เซิร์ฟเวอร์ SMTP สำคัญต่อการทำให้อีเมลถูกกำหนดเส้นทางอย่างถูกต้องและระบบปลายทางยอมรับ การตั้งค่าเซิร์ฟเวอร์ที่เหมาะสมร่วมกับเรคคอร์ดการยืนยันตัวตนอย่าง SPF และ DKIM ช่วยป้องกันไม่ให้ข้อความถูกทำเครื่องหมายเป็นสแปม การใช้บริการ SMTP relay เฉพาะทางช่วยให้นักพัฒนารองรับอีเมล transactional ปริมาณมากได้โดยไม่เสี่ยงต่อชื่อเสียงของเมลเซิร์ฟเวอร์หลักขององค์กร
ข้อผิดพลาดที่พบบ่อยในการใช้งานจริง
ข้อผิดพลาดที่พบบ่อยคือใช้พอร์ตผิดสำหรับประเภทการเชื่อมต่อนั้น พอร์ต 25 มักถูก ISP บล็อกเพื่อป้องกันสแปม ขณะที่พอร์ต 587 เป็นมาตรฐานสำหรับการส่ง อีกความล้มเหลวที่พบบ่อยคือละเลย STARTTLS หรือ implicit TLS ทำให้ข้อมูลรับรองและเนื้อหาข้อความเปิดเผยเป็น cleartext นักพัฒนาควรเก็บข้อมูลรับรอง SMTP ไว้ในตัวแปรสภาพแวดล้อม แทนที่จะฮาร์ดโค้ดในซอร์สโค้ดของแอปพลิเคชัน
ตัวอย่างการนำไปใช้จริง
ในสภาพแวดล้อม Node.js นักพัฒนาอาจใช้ไลบรารีอย่าง Nodemailer เชื่อมต่อกับเซิร์ฟเวอร์ SMTP โดยระบุที่อยู่โฮสต์ เช่น smtp.sendgrid.net พอร์ต 587 และโทเค็นยืนยันตัวตนที่ปลอดภัย จากนั้นแอปพลิเคชันจะส่งอ็อบเจกต์อีเมลไปยังเซิร์ฟเวอร์ ซึ่งจัดการการกำหนดเส้นทางที่ซับซ้อนและการส่งไปยังปลายทางสุดท้าย SendHQ มีเครื่องมือฟรีที่ https://sendhq.cc/tools เพื่อช่วยจัดการโครงสร้างพื้นฐานอีเมล
Relay กับ Submission
เซิร์ฟเวอร์ SMTP มักทำงานสองโหมด เซิร์ฟเวอร์ submission รับเมลจากผู้ใช้ปลายทางและยืนยันตัวตนเพื่อตรวจสอบตัวตนผู้ส่ง ส่วนเซิร์ฟเวอร์ relay ย้ายเมลระหว่างเซิร์ฟเวอร์ SMTP ต่าง ๆ ข้ามเครือข่าย เซิร์ฟเวอร์ relay ที่รับเมลจากแหล่งใดก็ได้โดยไม่ยืนยันตัวตนเรียกว่า open relay ซึ่งเป็นความเสี่ยงด้านความปลอดภัยที่ร้ายแรงและเกือบทุกครั้งถูกตัวกรองเมลสมัยใหม่บล็อก
คำถามที่ทีมมักถาม
SMTP กับ IMAP ต่างกันอย่างไร
SMTP ใช้เฉพาะสำหรับส่งหรือ relay เมลขาออก ส่วน IMAP และ POP3 ใช้ดึงและจัดการข้อความจากกล่องจดหมายบนเซิร์ฟเวอร์
ควรใช้พอร์ต SMTP ใดสำหรับการส่งที่ปลอดภัย
พอร์ต 587 เป็นมาตรฐานอุตสาหกรรมสำหรับการส่งเมลโดยใช้ STARTTLS พอร์ต 465 ใช้สำหรับ implicit TLS ส่วนพอร์ต 25 ใช้เป็นหลักสำหรับ relay ระหว่างเซิร์ฟเวอร์
ทำไมเซิร์ฟเวอร์ SMTP ของฉันจึงปฏิเสธอีเมล
การปฏิเสธมักเกิดจากการยืนยันตัวตนล้มเหลว ที่อยู่ IP ที่อยู่ใน blacklist หรือเรคคอร์ด DNS อย่าง SPF และ DKIM ที่ยืนยันผู้ส่งขาดหาย
ฉันรันเซิร์ฟเวอร์ SMTP ของตัวเองได้หรือไม่
ได้ แต่ต้องดูแลชื่อเสียงของ IP และการตั้งค่า DNS อย่างมาก เพื่อหลีกเลี่ยงไม่ให้ผู้ให้บริการรายใหญ่ทำเครื่องหมายเป็นสแปม