SMTP Reply Codes ( ตัวเลขแสดงสถานะของคำสั่ง )
211 System status, or system help reply
214 Help message
220
Service ready
221
Service closing transmission channel
250 Requested mail action okay ,completed
251 User not local ; will forward to
354 Start mail input ; end with
.
421
Service not available, closing transmission channel
450 Request mail action not taken : mailbox unavailable
451 Request action aborted : local error in processing
452 Requested action not taken : insufficient system storage
500 Syntax error in parameters or arguments
501 Syntax error in parameters or arguments
502 Command not implemented
503 Bad sequence of commands
504 Command parameter not implemented
550 Requested action not taken : mailbox unavailable
551 User not local ; please try
552 Requested mail action aborted : exceeded storage allocation
553 Requested action not taken : mailbox name not allowed
554 Transaction failed
อีกโปรโตคอลหนึ่งที่ใช้ส่งอีเมล์ ซึ่งมีประสิทธิภาพและสามารถใช้งานได้หลากหลายแบบมากกว่า POP คือโปรโตคอล IMAP ซึ่งถูกพัฒนาโดยมหาวิทยาลัย Standford เมื่อปี ค.ศ. 1986 IMAP ได้รับการพัฒนามาหลายเวอร์ชัน จนถึงปัจจุบันเป็นเวอร์ชัน 4 หรือเรียกกันทั่วไปว่า IMAP 4 จุดเด่นของโปรโตคอล IMAP ก็คือ ผู้ใช้สามารถเลือกดาวน์โหลดเฉพาะอีเมล์ที่ต้องการได้ โดยไม่จำเป็นต้องโหลดมาทั้งหมดเหมือนโปรโตคอล POP3 นอกจากนี้ IMAP ยังสามารถรองรับการทำงานได้ทั้งแบบ Offline, Online และแบบ Disconnected อีกด้วย ดังนั้นประโยชน์ที่ได้จาก IMAP ก็คือ หากผู้ใช้มีอีเมล์แอดเดรสเพียงชื่อเดียว แต่มีเครื่องที่ใช้งานอยู่หลายเครื่องก็จะสามารถเลือกดาวน์โหลดเฉพาะอีเมล์ที่ต้องการมาเก็บไว้ที่เครื่องใดก็ได้ แต่ถ้าเป็น POP3 การดาวน์โหลดจะต้องทำพร้อมกันหมดทุกอีเมล์ ดังนั้น IMAP จึงเป็นโปรโตคอลที่สามารถทำงานกับสายสื่อสารที่มีความเร็วต่ำได้เป็นอย่างดี
การทำงานของ IMAP นี้เหมือนกับโปรโตคอลอื่น ๆ โดยทำงานร่วมกับ TCP ใช้พอร์ตหมายเลข 143 และแบ่งเป็นสถานะต่าง ๆ ออกเป็น 4 สถานะ โดยในแต่ละสถานะมีวัตถุประสงค์และคำสั่งที่ใช้งานแตกต่างกัน มีรายละเอียดต่าง ๆ ดังนี้
1. สถานะก่อนอนุมัติ (Non-authenticated State) เป็นสถานะที่กำลังรอให้ไคลเอนต์ติดต่อเข้ามาเพื่อขออนุมัติใช้ ดังนั้นในด้านไคล์เอนต์จะต้องแจ้งชื่อ Login ของ Mail Server นั้นและ password ด้วยคำสั่ง LOGIN หรือ AUTHENTICATE ก่อนจึงจะเริ่มใช้งานได้ จากนั้นจึงเปลี่ยนไปเป็นสถานะได้รับการอนุมัติ
2. สถานะได้รับการอนุมัติ (Authenticated State) เป็นสถานะที่สามารถใช้คำสั่งต่าง ๆ ที่เกี่ยวกับการเลือกและใช้งานเมล์บอกซ์ เช่น คำสั่ง SELECT เพื่อเลือกเมล์บอกซ์ หรือคำสั่ง CREATE เพื่อสร้างเมล์บอกซ์ เป็นต้น ในการเลือกเมล์บอกซ์ด้วยคำสั่ง SELECT หรือ EXAMINE นี้จะเปลี่ยนไปเป็นสถานะการเลือกเมล์บอกซ์
3. สถานะการเลือกเมล์บอกซ์ (Selected State) เป็นสถานะที่จะเข้าใช้งานอีเมล์ในแต่ละเมล์บอกซ์ หลังจากที่เลือกเมล์บอกซ์ไว้แล้วในสถานะก่อนหน้านี้
4. สถานะเลิกใช้งาน (Logout State) เมื่อต้องการเลิกใช้งาน หรือสิ้นสุดการทำงานของ IMAP จะเข้าสู่สถานะเลิกใช้งานโดยใช้คำสั่ง LOGOUT
จากสถานะทั้ง 4 นี้ไม่จำเป็นต้องทำงานเรียงต่อกันเสมอไปบางครั้งอาจจะมีการทำงาน ข้ามจากสถานะหนึ่งไปยังอีกสถานะหนึ่งได้ ตัวอย่างเช่น เมื่อเข้าสู่สถานะที่ได้รับการอนุมัติ (Authenticate State) และลบอีเมล์ที่ไม่ต้องการใช้งานทิ้งไปด้วยคำสั่ง DELETE แล้วและไม่ต้องการทำงานอื่น ๆ ต่อก็สามารถใช้คำสั่ง LOGOUT เพื่อเปลี่ยนสถานะเป็นเลิกการใช้งาน (Logout State) ได้โดยไม่จำเป็นต้องเข้าสู่สถานะการเลือกเมล์บอกซ์ (Selected State) ก่อน ซึ่งจะเรียกว่า Untagged response หรือ Asterisk tag (*) ส่วนคำตอบของเซิร์ฟเวอร์ที่เป็นผลการทำงานตามคำสั่งต่าง ๆ ของไคลเอนต์นั้น จะประกอบด้วยคำสั่งทั้งหมด 5 แบบ คือ
OK แสดงว่าผลการทำงานของคำสั่งนั้น ๆสำเร็จและเรียบร้อยแล้ว
NO แสดงว่าการทำงานตามคำสั่งนั้นไม่สำเร็จ
BAD แสดงว่าคำสั่งที่ส่งไปไม่ถูกต้อง หรือมีพารามิเตอร์ไม่ถูกต้อง
PREAUTH แสดงว่าไม่จำเป็นต้องใช้คำสั่ง LOGIN เพราะเคยมีการสถานะที่ได้รับการอนุมัติ(Authenticated State) แล้ว
BYE แสดงว่าเซิร์ฟเวอร์ได้จบการทำงานไปแล้ว
MIME
การเข้ารหัสและ MIME ( Multipurpost InternetMail Extension )
การรับส่ง E-mail ผ่านเครือข่ายนั้น คอมพิวเตอร์ที่เชื่อต่ออยู่ในเครือข่ายมักจะมีหลากหลายชนิด ดังนั้น ข้อมูลที่ส่งผ่านจึงจะต้องเป็นข้อมูลที่อยู่ในรูปแบบกลาง ๆ ซึ่ง คอมพิวเตอร์จะรับรู้และเข้าใจได้เหมือนกัน เพื่อไม่ให้ข้อมูลที่รับหรือส่งเหล่านั้นผิดเพี้ยนไปจากความเป็นจริงและสามารถส่งข้อมูลทั้งที่เป็นข้อความและไม่เป็นข้อความ (เช่น ข้อมูลที่เป็นรูปภาพและเสียง ) รวมกันไปในอีเมล์ฉบับเดียวกันได้ ดังนั้นจึงได้นำเทคนิคการเข้ารหัสที่เรียกว่า MIME มาใช้เพื่อเข้ารหัสและถอดรหัสในการรับส่งอีเมล์โดยทั่วไป
เทคนิคของ MIME ( Multipurpose Internet Mail Extensions ) นี้เป็นเทคนิคที่แปลงรหัสแอสกี้ทั่วไปซึ่งมี 8 บิตให้เป็นค่า 7 บิต(ให้บิตที่ 0 มีค่าเป็น 0 เสมอ) โดยที่เทคนิคของ MIME นี้จะสามารถใช้รับส่งข้อมูลได้ทุก ๆ รูปแบบ ไม่ว่าจะเป็นข้อมูลของอีเมล์หรือ ไฟล์ประเภทต่างๆ ที่แนบไปกับอีเมล์ ซึ่งอีเมล์บนอินเตอร์เน็ตในยุคแรก ๆ ในกรณีที่ต้องการรับส่งข้อมูลที่มีรูปแบบไฟล์แตกต่างไปจากค่าแอสกี โดยทั่วไปผู้ส่งจะต้องแปลงรหัสข้อมูลก่อนส่งด้วยคำสั่ง UUENCODE เพื่อแปลงข้อมูลให้อยู่ในรูปแบบของ MIME ในด้านผู้รับก็จะต้องถอดรหัสข้อมูลกลับมาอยู่ในรูปแบบเดิมโดยใช้คำสั่ง UUDECOCE ซึ่งทั้ง 2 คำสั่งนี้เริ่มพัฒนาขึ้นมาพร้อมกับระบบปฏิบัติการ UNIX และภายหลังจึงมีการให้ใช้แพร่หลาย ในระบบปฏิบัติการอื่น ๆ แต่ในปัจจุบัน โปรแกรมที่ทำหน้าที่รับส่งอีเมล์จะทำหน้าที่แปลงและถอดรหัสข้อมูลให้อัตโนมัติ โดยไม่จำเป็นต้องอาศัยคำสั่ง UUENCODE และ UUDECODE อีกต่อไปแล้ว
ลักษณะข้อมูลของ MIME ประกอบด้วย 2 ส่วน คือ ส่วนหัว หรือเรียกว่า Content Transfer Encode ซึ่งจะเก็บรายละเอียดของไฟล์ที่เข้ารหัสไว้ เช่น ประเภทของไฟล์เป็นต้น ส่วนที่ 2 เป็นส่วนของข้อมูลที่เข้ารหัสแล้ว การเข้ารหัสและการถอดรหัสของ MIME นี้จะถูกระบุ ไว้ในส่วนหัว เพื่อให้ผู้รับและผู้ส่งเข้าใจตรงกันว่า อีเมล์นี้เข้ารหัสและถอดรหัสด้วยวิธีใด ซึ่งมีอยู่ด้วยกัน 6 วิธี คือ
ในปัจจุบันถึงแม้ว่าS/MIMEจะยังไม่ถูกกำหนดให้เป็นโปรโตคอลมาตรฐานในการรักษาความปลอดภัยของอีเมล์ แต่ก็ถือว่าได้รับการยอมรับเป็นมาตรฐานไปโดยปริยายเพราะมีการใช้งานมาก (De facto Standard) เนื่องจากบริษัทพัฒนา Software ชั้นนำหลายแห่ง ไม่ว่าจะเป็น Microsoft,Nescape.Lotus,Verisgnหรือ Novell ก็ตาม ได้นำเอาโปรโตคอล S/MIME นี้ไปใช้งานแล้ว ในขณะที่โปรโตคอล S/MIME กำลังรอการรับรองมาตรฐานอยู่นี้ การเข้ารหัสแบบ MOSS หรือ MIME Object Security Services หรือที่เรียกอีกอย่างหนึ่งว่า PEM-MIME (Privacy Enhanced Mail MIME) ก็กำลังมีการพัฒนาตาม RFC 1848 อยู่ โดย MOSS ได้พยายามแก้ไขจุดอ่อนของ S/MIME จากการที่โปรโตคอล S/MIME จะใช้มาตรฐานการเข้ารหัสแบบเดียวในทุก ๆ ส่วนของอีเมล์ แต่ MOSS จะแบ่งอีเมล์ออกเป็นส่วน ๆ แต่ละส่วนจะใช้วิธีการเข้ารหัสและคีย์ที่แตกต่างกันไป ซึ่งจะช่วยให้อีเมล์มีความปลอดภัยมากยิ่งขึ้น แต่อย่างไรก็ดี ความซับซ้อนของโปรโตคอล MOSS ก็ทำให้การกำหนดมาตรฐานและการพัฒนาผลิตภัณฑ์ออกมามีความยุ่งยากมากขึ้นตามไปด้วย
โปรโตคอลที่คู่กับ
POP3 คือ
SMTP เพราะเป็นโปรโตคอลที่ใช้ส่งอีเมล์จาก User agent ของผู้ส่งไปยัง MTA ของผู้ส่ง และส่งต่อไปยัง MTA เครื่องอื่น ๆ ที่เป็นจุดผ่านในการเชื่อมต่อไปยังเครื่องของผู้รับ โปรโตคอล SMTP จะทำงานร่วมกับโปรโตคอล TCP โดยใช้พอร์ต 25 ซึ่งคำสั่งต่าง ๆ ของ SMTP จะเป็นลักษณะเดียวกับ POP3 คือเป็น ASCII ลงท้ายด้วย Carrige Return และ Line Feed ส่วนข้อความที่ตอบกลับมาจะนำหน้าด้วยเลข 3 หลัก เป็นสัญลักษณ์แสดงลักษณะการทำงานของคำสั่งที่ได้รับ
เมื่อเริ่มต้นการติดต่อ SMTP จะกำหนดให้ User Agent ของผู้ส่งต้องส่งคำสั่ง HELLO พร้อมกับรายละเอียดด้านผู้ส่งออกไป จากนั้นจะส่งคำสั่ง MAIL เพื่อแจ้งให้เซิร์ฟเวอร์เตรียมรับอีเมล์ ในส่วนของเซิร์ฟเวอร์เมื่อพร้อมที่จะรับอีเมล์ก็ตอบรับอีเมล์ก็รับอีเมล์ก็ตอบรับกลับมาด้วย คำสั่ง OK จากนั้นที่ด้านส่งก็จะเริ่มส่งโดยใช้คำสั่ง RCPT เพื่อกำหนดอีเมล์แต่ละฉบับไปที่ส่งไป ซึ่งการส่งข้อมูลของอีเมล์ก็จะระบุด้วยคำสั่ง DATA
การส่งอีเมล์ของโปรโตคอล SMTP ได้จัดเตรียมคำสั่งอื่น ๆ ไว้เพื่ออำนวยความสะดวกและคล่องตัวในการทำงาน ซึ่งประกอบด้วย คำสั่ง VRFY เพื่อให้ด้านที่ส่งตรวจสอบรายชื่อว่าผู้ใช้รายนี้มีสิทธิ์ใช้งาน E-mailbox นั้น ๆ หรือไม่ , คำสั่ง EXPN ใช้จัดการและตรวจสอบรายชื่อจากลิสต์รายชื่อ และคำสั่ง TURN ใช้สลับให้ Client ของผู้ส่งทำหน้าที่รับข้อมูลจากเซิร์ฟเวอร์แทน
เมื่อได้รับคำสั่งต่างๆ ของผู้ส่งแล้ว เซิร์ฟเวอร์จะมีหน้าที่ตรวจสอบความถูกต้องของคำสั่ง จากนั้นจึงทำงานตามคำสั่งแล้วส่งผลตอบกลับมา ส่วนลักษณะของข้อมูลที่ตอบกลับ ( Reply Message ) นั้นจะเป็นข้อมูลที่อยู่ในรูปของ Text ที่เป็น ASCII โดยจะประกอบด้วยตัวเลข นำหน้าข้อความสามหลัก ทำหน้าที่แสดงสถานะการทำงานของเซิร์ฟเวอร์ และเปลี่ยนสถานะการทำงานของโปรโตคอล SMTP ด้วย ถัดจากตัวเลขจะคั่นด้วยช่องว่างแล้วตามด้วยเครื่องหมาย Carriage Return และ Line Feed ตัวอย่างเช่น 500 Syntax error, command unreconized หมายถึงคำสั่งที่ส่งไปไม่ถูกต้อง หรือ 503 Bad sequence of commands หมายถึง ลำดับการส่งคำสั่งไม่ถูกต้อง เหล่านี้เป็นต้น
ในการส่งอีเมล์ของโปรโตคอล SMTP นั้น จะใช้วิธีอ้างถึงเซิร์ฟเวอร์อื่น ๆ ตามแบบ DNS (Domain Name System) เช่นเดียวกับระบบอื่น ๆ ในอินเทอร์เนต และยังสามารถส่งอีเมล์ๆไปยังผู้รับคนเดียวหรือหลาย ๆ คนพร้อมกันได้ด้วย
ระบบอีเมลล์ ตอนที่ 2 >>