pop-logo

SMTP คืออะไร

Simple Mail Transfer Protocol หรือ SMTP คืออะไร ? มันคือ มาตราฐานบน Internet สำหรับการรับส่ง Email นั้นเอง หรือจะเรียกว่า protocol ส่ง mail ก็ว่าได้ ปัจจุบัน mail server และ ระบบส่งเมลล์ทั่วโลก ต่างใช้ SMTP ในการรับและส่งข้อมูลเมลล์กันหมดแล้ว ซึ่งสำหรับฝั่ง client เองแล้ว ตัว program mail จะใช้ SMTP สำหรับขาส่งไปหา mail server เท่านั้น สำหรับขารับ client program จะใช่ IMAP หรือ POP3

SMTP จะสื่อสารกันระหว่าง mail server ด้วย port 25 ในทางกลับกัน ฝั่ง mail client จะส่ง mail ไปยัง mail server ที่ port 587 แต่บางครั้งก็อาจจะไปใช้ port 456 แทนด้วยเหตุผลบางประการ และสำหรับ SSL connection เราจะเรียก protocol ว่า SMTPS

ส่วนสำหรับระบบที่เป็น proprietary หรือ เขียนด้วยภาษาเฉพาะเช่น IBM Lotus Notes, Microsoft Exchange รวมถึง webmail เช่น Outlook, Gmail, Yahoo! พวกนี้จะใช้มาตราฐานของภายในบริษัทเองในการเข้าถึงข้อมูลภายในบัญชี mail box ของแต่ละ mail server แต่ทั้งหมดจะยังคงใช้ SMTP ในการรับส่งเมลล์อยู่ดี

 

ประวัติของ SMTP

ช่วง 1960 คือช่วงที่การส่ง electronic message แบบ 1-1 เกิดขึ้นหลากหลายแบบ ต่างคนต่างพัฒนาระบบการสือสารของตน จนกระทั้งได้มีการพัฒนามาตราฐานที่สามารถให้ระบบต่างชนิดกันสามารถส่ง email หากันได้ SMTP ได้เติบโตขึ้นในช่วง 1970 ขึ้นมา

SMTP ถูกพัฒนาขึ้นมาในช่วงเดียวกับ Usenet (ระบบแลกเปลี่ยนความคิดเห็นอย่างหนึ่ง) เป็นการสื่อสารแบบ one-to-many  ซึ่งมีรูปแบบเดียวกัน และ SMTP ได้ขยายออกไปอย่างรวดเร็วในช่วง 1980 และเป็นช่วงที่มาเติมเต็ม UUCP mail (Unix to Unix Copy Program) ที่งคู่ทำหน้าที่ส่งและรับ mail ภายใน network ทำงานโดย store and forward แต่สุดท้าย UUCP ก็ค่อยๆหายไป เหลือแต่เพียง SMTP ที่ใช้กันในปัจจุบัน

 

 

การทำงานของ SMTP

SMTP มีชุดคำสั่งที่ค่อนข้างง่ายสำหรับใช้สือสารหรือส่ง email ระหว่าง mail server ทำงานโดยการให้ server แยกส่วนของข้อมูลออกมาเป็นหมวดหมู่ ที่ server ปลายทางสามารถเข้าใจได้ และเมื่อส่ง mail ออกไป ข้อมูลในรูป string หรือ text จะถูกแยกออกมาเป็นส่วนเพื่อวิเคราะห์หาสิ่งที่ต้องทำในและส่วนนั้นๆ

SMTP ช่วยในเรื่อง code ในการจำแนกข้อมูล message ใน mail ส่วน mail server ออกแบบมาให้ทำความเข้าใจความหมายของข้อมูลเหล่านั้น ขณะที่ message ถูกส่งผ่านไปยังปลายทาง บางครั้งอาจจะต้องผ่าน computer จำนวนมาก ซึ่งทำงานโดยการ stored and forward ไปยัง computer ลำดับต่อไปในเส้นทางนั้นเรื่อยๆ มองง่ายๆว่าเหมือนจดหมายนั้นถูกส่งต่อผ่านมือแต่ละคนระหว่างทางไปจนถึง mailbox

smtp flow

 

ตัวอย่าง SMTP Transport

โดยปกติตัวอย่างการส่ง message ผ่าน SMTP ไปยัง 2 mailbox คือ alice กับ theboss ซึ่งที่งคู่อยู่ใน domain เดียวกัน คือ .com ขั้นตอนการทำงานจะเป็นดังนี้

  • สร้าง connection จาก sender ไปยัง SMTP server ซึ่งหลังจาก establish connection แล้วจะได้รับ greeting message จากฝั่ง server
  • ฝั่ง client จะต้องส่ง command HELO เพื่อยืนยันตัวตน และฝั่ง server ก็จะตอบรับกลับมาถ้า ข้อมูลถูกต้อง (250 Ok)
  • ส่งข้อมูล MAIL FROM ว่าส่งจากใคร
  • ส่งข้อมูล RCPT TO ว่าส่งถึงใคร ซึ่งในที่นี้มี 2 mailbox ก็คือ 2 command
  • ส่งข้อมูบ body ของ mail โดยเริ่มต้นด้วย DATA command  และจบด้วย Dot (.)
  • หลังจากส่ง body mail แล้ว ปิด connection ด้วยการส่ง QUIT command หรือถ้าไม่ส่ง ก็จะมี timeout อยู่ 10 นาที
S: 220 smtp.example.com ESMTP Postfix
C: HELO relay.example.org 
S: 250 Hello relay.example.org, I am glad to meet you
C: MAIL FROM:<bob@example.org>
S: 250 Ok
C: RCPT TO:<alice@example.com>
S: 250 Ok
C: RCPT TO:<theboss@example.com>
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: From: "Bob Example" <bob@example.org>
C: To: Alice Example <alice@example.com>
C: Cc: theboss@example.com
C: Date: Tue, 15 January 2008 16:02:43 -0500
C: Subject: Test message
C: 
C: Hello Alice.
C: This is a test message with 5 header fields and 4 lines in the message body.
C: Your friend,
C: Bob
C: .
S: 250 Ok: queued as 12345
C: QUIT
S: 221 Bye
{The server closes the connection}

 

 

Author: Suphakit Annoppornchai

Credit: https://saixiii.com, https://en.wikipedia.org

 

Leave a Reply