เวบ/อินเตอร์เน็ตเทคโนโลยี ระบบปฏฺบัติการและซอฟท์แวร์ ซอร์สโค๊ด/โอเพนซอร์ส เทคโนโลยีฐานข้อมูล ระบบเครือข่ายและความมั่นคง เอ็มไอเอส/อีบิสสิเนส อื่น ๆ เกี่ยวกับไอ.ที. อื่น ๆ ไม่เกี่ยวกับไอ.ที.

เวบ/อินเตอร์เน็ตเทคโนโลยี

ระบบอีเมล(e-mail) แบบลึก ๆ ตอนที่ 2

เบื้องลึกเบื้องหลัง หลักการทำงาน ของระบบอีเมลล์
อัปเดท ( 21 มีนาคม 2547 ) , แสดง (45,472) , ความคิดเห็น (4) , พิมพ์  
 
เวบ/อินเตอร์เน็ตเทคโนโลยี
การเข้ารหัส VB Script (ASP) การเข้ารหัสเพื่อป้องกันข้อมูล VB
การบันทึกไฟล์ Macromedia Flash จากเวบเพจ การ Save ไฟล์ Macromedia Flash
ASP.net กับ Visual Studio .NET(2002) ปัญหาคือ VS.net จะไม่สามารถ New Project(Asp.net) ได้
ทำไมต้องมี Unicode ? เบื้องลึกของ ตัวอักษรภาษาไทย, ตัวอักษรภาษาญี่ปุ่น และภาษาอื่นๆ
รู้จัก JSP และ JavaBeans เหมือนหรือต่างกันอย่างไร concept เดียวกัน ชื่อต่างกันเพราะ ค่ายต่างกันแค่นั้นเหรอ..
คุกกี้ (Cookies) เกี่ยวอะไรกับเวบ เมื่อ เว็บเซอร์ฟเวอร์ เกิดหลงๆลืมเหมือนคนแก่
รู้จัก Streaming Media Technology แนวโน้มของเวบไซต์และเทคโนโลยีอนาคตเมื่ออินเตอร์เน็ตความเร็วสูงขึ้น
ระบบอีเมล(e-mail) แบบลึก ๆ ตอนที่ 1 เบื้องลึกเบื้องหลัง หลักการทำงาน ของระบบอีเมลล์
ระบบอีเมล(e-mail) แบบลึก ๆ ตอนที่ 2 เบื้องลึกเบื้องหลัง หลักการทำงาน ของระบบอีเมลล์
เรื่องเล็กๆ แต่ยิ่งใหญ่ ของ Database กับ Text Box อีกช่องโหว่ ที่ควรระวังเมื่อต้องเขียนโปรแกรมกับ textbox

คำสั่ง POP3 ข้างต้นเป็นเพียงคำสั่งพื้นฐานทั่วไปที่ใช้งานอย่างง่ายเท่านั้นคำสั่งข้างล่างนี้จะอธิบายเกี่ยวกับการอนุญาตให้ POP3 Client มีอิสระในการจัดการข้อความขณะที่ใช้ POP3 Server ทั่ว ๆ ไป คำสั่งเหล่านี้จะสนับสนุนการนำไปใช้จะถูกนำไปใช้ในตำแหน่งของ Drop Listing และ Scan Listing ที่มีการพัฒนาเพิ่มขึ้น ซึ่งจะถูกใส่ลงไปในส่วนของ POP3 Client ไม่ใช่ส่วนของ POP3 Server เช่น

Arguments: ต้องมีหมายเลข Message ซึ่งไม่ใช่ข้อความที่ถูก mark ให้ทำการลบและมีหมายเลข Non-negative
Restrictions:ใช้เฉพาะในช่วง Transections State เท่านั้น
Discussions: ถ้า POP3 แสดงสถานะเป็นเครื่องหมาย + และมีการตอบรับเป็นแบบ Multiline หลังจากขึ้นว่า +OK แล้ว POP3 Server ก็จะส่ง Header ของข้อความและช่องว่างที่แยก Header ออกจาก Body ซึ่งหมายเลขบรรทัดจะเป็นตัวบ่งชี้ Body ของ Message และมีการใส่ Byte Stuff บอกจุดสิ้นสุดของตัวอักษร
หมายเหตุ 
ถ้าจำนวนบรรทัดที่มีการร้องขอจาก POP3 Client มีค่ามากกว่าจำนวนบรรทัดในส่วนของ Body แล้ว POP3 Server ก็จะทำการส่ง message ทั้งหมดไปให้
Possible Responses:
+OK top of message follows
-ERR no such message

Examples:
C: TOP 1 10
S: +OK
S: (the POP3 server sends the headers o
message, a blank line, and the first 10 lines
of the body of the message)
S: .
...
C: TOP 100 3
S: -ERR no such message

UIDL (msg)
Arguments: หมายเลขข้อความ (สามารถเลือกหมายเลขได้) ถ้ามีการกำหนดหมายเลข message จะไม่ใช่หมายเลขที่ถูก mark ว่าให้ลบ
Restrictions: ใช้เฉพาะในช่วง Transactions State
Discussions: ถ้ามีการกำหนด Argument และ POP3 Server มีการแสดงสถานะเป็นเครื่องหมาย + พร้อมด้วยบรรทัดที่บรรจุข้อมูลสำหรับ ข้อความนั้นบรรทัดนี้จะเรียกว่า "unique-id listing" ถ้าไม่มี Argument ที่กำหนดให้และ POP3 Server ไม่แสดงสถานะเป็นเครื่องหมาย + ซึ่งการตอบรับก็จะเป็น multiline 
  
 

หลังจากขึ้น + OK ในแต่ละ Message ใน maildrop POP3 Server ก็จะตอบรับด้วยบรรทัดที่บรรจุข้อมูลสำหรับข้อความซึ่งบรรทัด นี้เรียกว่า "unique-id listing" POP3 Server ต้องใช้รูปแบบสำหรับ unique-id listing ซึ่ง unique-id listing จะประกอบด้วย หมายเลขข้อความตามด้วยช่องว่างและ unique-id listing ซึ่ง message จะไม่มีข้อมูลตาม unique-id ของ unique-id listing 

unique-id ของ message เป็นตัวพิจารณา String ซึ่งประกอบด้วยตัวอักษรในช่วง 0x21-0x7e และระบุข้อความภายใน maildrop ที่ต่างกันไปและจะข้ามไป session ต่อไป Server จะไม่นำเอา unique-id ที่ให้ใน maildrop มาใช้อีกจนกว่าจะมีการยกเลิก
หมายเหตุ message ที่ถูก mark ว่าจะ delete

APOP name digest
Arguments:ต้องมีการใช้ String เพื่อระบุ mailbox และมี MD5 เป็นตัวแยก String
Restrictions : ใช้ในช่วง AUtolization State หลังจากมีการตอบรับแบบ POP3
Discussions : โดยปกติแต่ละ POP3 Session จะเริ่มต้นด้วยการใส่ User/Password ผลก็คือ ใน Server หรือ Password ของ User id ที่แน่นอนจะถูกส่งไปในแต่ละช่วงที่ใช้ POP3 ซึ่งไม่ขอแนะนำให้ใช้เนื่องจากมีอัตราความเสี่ยงสูง อย่างไรก็ตาม การใช้ POP3 Client หลายๆเครื่องในการติดต่อกับ POP3 Server ก็เป็นกฎมาตรฐานในการเช็ค mail ใหม่ระหว่างที่เป็นช่วงเริ่มต้นจะใช้เวลาประมาณ 5 นาที ดังนั้นความเสี่ยงในการจับ Password ก็จะเพิ่มขึ้นวิธีหนึ่งที่เชื่อถือได้จะต้องมีการจัดหาที่มาที่เชื่อถือได้และมีระบบ การป้องกันแต่ไม่ได้เกี่ยวกับการส่ง Password ซึ่งคำสั่ง APOP ก็จะมีหน้าที่นี้ 

POP3 Server ซึ่งใช้คำสั่ง APOP ซึ่งมีการใช้ Syntax ของ Timestamp โต้ตอบเรียกว่า msg-id และต้องและจะต้องแตกต่างกัน ตัวอย่างเช่น ในการใช้บน UNIX จะแยก UNIX Process ที่ถูกใช้ในแต่ละ Instance ใน POP3 Server
Syntax ของ Timestamp มีดังนี้

(process-ID.clock@hostname)
Process-id เป็นค่าเลขฐาน 10 ของ PID Process
Clock เป็นค่าเลขฐาน 10 ของระบบ Clock
Hostname เป็น Domain name ไปยัง Host ที่ POP3 Server Run อยู่ POP3 Client จะทำ Note ใน Timestamp นี้ เมื่อใช้คำสั่ง APOP แล้ว name ซึ่งเป็น Parameter ของคำสั่ง USER Digest Parameter ซึ่งถูกคำนวณโดยการใช้ MD5 Algorithm String จะประกอบ Timestamp ตามด้วย Share secret ซึ่ง Share secret จะเป็น String ที่รู้จักเฉพาะใน POP3 Server และ Client ควรมีการดูแลเพื่อป้องกันความปลอดภัยของข้อมูลที่เป็นความลับเพราะข้อมูลนี้จะเข้าไปใน Entity ใดก็ได้โดยใช้ชื่อ User name คนใดก็ได้ Digest Parameter เป็นเลขฐาน 16 และส่งข้อมูลในรูปเลขฐาน 16 และใช้รหัส ASCII 

เมื่อ POP3 ได้รับคำสั่ง APOP มันจะตรวจสอบความถูกต้องที่ Digest Provided ถ้า Digest ถูกต้อง POP3 Server ก็จะแสดงเครื่องหมาย + และ POP3 Session ก็จะเข้าสู่ช่วง Transaction State ดังนั้นถ้าเป็นเครื่องหมาย - ก็แสดงว่าอยู่ในช่วง Autherization state
หมายเหตุ 

ความยาวของ Share secret ที่เพิ่มขึ้นยากที่จะลดลงมาเช่น Share secret ควรจะเป็น Long String (ควรมีความยาวมากกว่า 8 character)

Possible Responses:
+OK maildrop locked and ready
-ERR permission denied

Examples:
S: +OK POP3 server ready <1896.697170952@dbc.mtview.ca.us>
C: APOP mrose c4c9334bac560ecc979e58001b3e22fb
S: +OK maildrop has 1 message (369 octets)

( สรุปคำสั่งในโปรโตคอล POP3) POP3 Command Summary

Minimal POP3 Commands:
USER name       valid in the AUTHORIZATION state
PASS string
QUIT
STAT                   valid in the TRANSACTION state
LIST [msg]
RETR msg
DELE msg
NOOP
RSET
QUIT -ERR        valid in the UPDATE state

Optional POP3 Commands:
APOP name digest        valid in the AUTHORIZATION state
TOP msg n         valid in the TRANSACTION state
UIDL [msg]

POP3 Replies:
+OK
-ERR

Example POP3 Session
S: (wait for connection on TCP port 110 )
C: (open connection)
S: +OK POP3 server ready <1896.697170952@dbc.mtview.ca.us>
C: APOP mrose c4c9334bac560ecc979e58001b3e22fb
S: +OK mrose's maildrop has 2 messages (320 octets)
C: STAT
S: +OK 2 320
C: LIST
S: +OK 2 messages (320 octets)
S: 1 120
S: 2 200
S: .
C: RETR 1
S: +OK 120 octets
S: (the POP3 server sends message 1)
S: .
C: DELE 1
S: +OK message 1 deleted
C: RETR 2
S: +OK 200 octets
S: (the POP3 server sends message 2)
S: .
C: DELE 2
S: +OK message 2 deleted
C: QUIT
S: +OK dewey POP3 server signing off (maildrop empty)
C: (close connection)
S: (wait for next connection)

สรุปรายละเอียดของคำสั่งต่างๆใน POP3
คำสั่ง
พารามิเตอร ์
สถานะ
รายละเอียด
USER
ชื่อผู้ใช้งาน
ขออนุมัติ
แจ้งชื่อผู้ใช้และระบุ Mailbox ที่จะใช้
PASS
Password
ขออนุมัติ
เป็นคำสั่งที่ใช้ระบุ Password โดยจะใช้ต่อจากคำสั่ง USER
APOP
ชื่อ, Password
ขออนุมัติ
ทำหน้าที่เหมือนคำสั่ง USER และ PASS รวมกันแต่ข้อมูลจะถูกเข้ารหัสก่อนส่งไป
STAT
ไม่ระบ ุ
รับส่งรายการ
เป็นคำสั่งตรวจสอบสภาพเซิร์ฟเวอร์,ขนาดของอีเมล์ที่จะดาวน์โหลด
UIDL
หมายเลขข้อความ
รับส่งรายการ
ใช้ตรวจสอบหมายเลขประจำของอีเมล์
LIST
หมายเลขข้อความ
รับส่งรายการ
ใช้ตรวจสอบหมายเลขของอีเมล์ และขนาดของอีเมล์
RETR
ข้อความ
รับส่งรายการ
เป็นคำสั่งทีใช้ส่งข้อมูลของอีเมล์
DELE
ข้อความ
รับส่งรายการ
เป็นการระบุเครื่องหมายการลบลงในอีเมล์ที่จะลบ และอีเมล์เหล่านั้นจะถูกลบออกจากเมล์บ็อกซ์เมื่อใช้คำสั่ง QUIT เมื่อสิ้นสุดการทำงาน
RSET
ไม่ระบุ
รับส่งรายการ
คำสั่งนี้จะยกเลิกเครื่องหมายการลบอีเมล์ ที่เคยกำหนดไว้ด้วยคำสั่ง DELE ออกไปทุก ๆ อีเมล์
TOP
หมายเลขข้อความ,จำนวนบรรทัด
รับส่งรายการ
เซิร์ฟเวอร์จะส่งข้อมูลย้อนกลับไปเท่ากับจำนวนบรรทัดที่ระบุ
NOOP
ไม่ระบ ุ
รับส่งรายการ
เป็นคำสั่ง No Operation
QUIT
ไม่ระบุ
รับส่งรายการและขออนุมัต
ใช้เมื่อจบการทำงาน หากมีอีเมล์ซึ่งทำเครื่องหมายว่าจะลบไว้ อีเมล์เหล่านั้นจะถูกลบจากเมล์บ็อกซ์ในขั้นตอนนี้

SMTP
ตารางแสดงรายละเอียดในคำสั่งต่าง ๆ ของ SMTP ที่ใช้งานอยู่

คำสั่ง
รายละเอียด
HELLO
ใช้เมื่อไคลเอนต์ของอีเมล์ต้องการเริ่มติดต่อกับเซิร์ฟเวอร์
MAIL
เริ่มเข้าสู่สถานะการส่งอีเมล์
RCPT
เป็นคำสั่งเพื่อระบุอีเมล์ที่จะส่งทีละฉบับ โดยเป็นคำสั่งที่ใช้ต่อจาก MAIL
DATA
จะเป็นคำสั่งที่ใช้ต่อจาก RCPT เพื่อส่งข้อมูลของอีเมล์
SEND
ทำหน้าที่เหมือนคำสั่ง DATA แต่ไม่ค่อยมีผู้ใช้งาน
SOML
ทำหน้าที่เหมือนคำสั่ง DATA แต่ไม่ค่อยมีผู้ใช้งาน
SAML
ทำหน้าที่เหมือนคำสั่ง DATA แต่ไม่ค่อยมีผู้ใช้งาน
VRFY
เป็นคำสั่งที่ใช้เพื่อตรวจสอบความถูกต้องของชื่อและเมล์บ็อกซ์
EXPN
เป็นคำสั่งเพื่อตรวจสอบรายละเอียดของลิสต์รายชื่อ
HELP
ใช้ตรวจสอบคำสั่งที่สามารถใช้งานได้กับเซิร์ฟเวอร์
NOOP
เป็นคำสั่ง No Operation เมื่อเซิร์ฟเวอร์ได้รับคำสั่งนี้จะตอบ OK กลับมา
QUIT
สิ้นสุดการติดต่อ
RSET
ยกเลิกการส่งข้อมูลในขณะนี้
TURN
เป็นคำสั่งที่สลับหน้าที่ของผู้ส่งข้อมูลมาทำหน้าที่รับข้อมูลแทน

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 วิธี คือ
วิธีเข้ารหัสแบบ Quoted-Printable
เทคนิคการเข้ารหัสวิธีนี้จะแปลงข้อมูลให้อยู่ในลักษณะที่อ่านได้เสมอ ซึ่งหากข้อมูลเป็น ASCII 7 bit อยู่แล้วก็จะไม่มีการแปลงข้อมูล แต่ถ้าเป็นค่าบิตที่ศูนย์มีค่าเป็น 1 จะถูกแปลงให้มาอยู่ในรูปค่าของเลขฐาน 16 (01234567890ABCDEF) และนำหน้าด้วยเครื่องหมายเท่ากับ (=) ตัวอย่างเช่น ข้อมูลที่เขารหัสแล้วมีค่าเป็น =A1 หมายถึงข้อมูลที่ค่า ASCII เป็น 161 (ในภาษาไทยคือ ค่า 'ก') หรือค่า Hex เป็น A1 เป็นต้น
วิธีเข้ารหัสแบบ Base64
เป็นเทคนิคการเข้ารหัสโดยจะแปลงข้อมูลจำนวน 24 bit (ข้อมูล 8 บิตจำนวน 3 ไบต์ ) ออกเป็นข้อมูล 6 บิตจำนวน 4 ชุด โดยหลังจากที่เข้ารหัสแล้ว ข้อมูลจะถูกแปลงให้อยู่ในรูปของตัวอักษร 64 ตัว มีค่าตามตาราง Base64 Alphabet แต่ข้อมูลดังกล่าวจะไม่เปลี่ยนแปลงค่าของ Carriage Return และ Line Feed และปิดท้ายข้อมูลด้วยเครื่องหมาย = ซึ่งเรียกว่า PAD Binary เป็นข้อมูลที่ต่อเนื่องกันเป็นค่าไบนารี ไม่แบ่งออกเป็นบรรทัด ซึ่งข้อมูลประเภทนี้จะส่งโดยไม่มีการเข้ารหัสข้อมูล
วิธีเข้ารหัสแบบ Seven-Bit
เป็นข้อมูลที่มีค่า ASCII 7 บิต ซึ่งข้อมูลประเภทนี้จะส่งโดยไม่มีการเข้ารหัสข้อมูล
วิธีเข้ารหัสแบบ Eight-Bit
เป็นข้อมูลที่มีค่า ASCII 8 บิต ซึ่งข้อมูลประเภทนี้จะส่งโดยไม่มีการเข้ารหัสข้อมูล
วิธีเข้ารหัสแบบ X-Token
เป็นเทคนิคการเข้ารหัสที่ต้องมีการติดต่อและตกลงกันระหว่างด้านผู้ส่งและผู้รับของ SMTP Server ก่อนเป็นเทคนิคการเข้ารหัสที่ต้องมีการติดต่อและตกลงกันระหว่างด้านผู้ส่งและผู้รับของ SMTP Server ก่อน
การรักษาความปลอดภัยและการเข้ารหัสอีเมล์ 

การที่ต้องให้อีเมล์มีความปลอดภัยในการรับส่งข้อมูลมากขึ้น ก็เพื่อป้องกันไม่ให้ผู้อื่นลักลอบอ่านข้อความได้ และในการแปลงรหัสตามวิธีของ MIME เน้นได้มีข้อกำหนดเพิ่มเติมเรียกว่า S/MIME ซึ่งพัฒนาขึ้นโดย RSA Data Security Inc. โดยเพิ่มเติมในส่วนของระบบรักษาความ ปลอดภัยขึ้นจากมาตรฐานของ MIME แบบเดิม กระบวนการของ S/MIME ที่ได้เพิ่มในส่วนการทำหน้าที่เข้ารหัสข้อมูล (Encryption) และการส่งลายเซ็นดิจิตอล (Digital Signature) เข้าไปในข้อมูลอีเมล์ การเข้ารหัสข้อมูลนั้น S/MIME จะใช้วิธีการ Public-Key โดยใช้คีย์ที่มีความยาวได้สูงสุด 2,048 บิต และวิธีการเข้ารหัสข้อมูลนั้นมีใช้ทั้งวิธีการเข้ารหัสข้อมูลนั้นมีใช้ทั้งวิธีของ DES (Data Encryption Standard) และ Triple DES ในกรณีการเข้ารหัสของลายเซ็นดิจิตอล นั้น RSA ได้พัฒนาไลบรารีภาษา C ที่เรียกว่า TIPEM เพื่อให้ผู้พัฒนา Software ต่าง ๆ นำไปพัฒนาตามมาตรฐานของ S/MIME
ในปัจจุบันถึงแม้ว่า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 >>


เขียนโดย : จักรกฤษณ์ แร่ทอง

air
21 Mar 2005 , 04:04 PM
อยากถามว่า จะมีวิธีแยกe-mailยังไงว่าe-mailนี้ควรส่งไปหาคนนี้ e-mail นี้ส่งไปหาคนนั้นได้โดยไม่ระบุปลายทาง ถ้าทราบส่งกลับ air_ki11@hotmail.com

จักรกฤษณ์ แร่ทอง
10 Apr 2005 , 06:51 PM
ตามที่คุณ air ถาม "ถ้าไม่ระบุปลายทาง" ผมงงอยู่ว่าคุณกำลังถามอ่ะไร ที่อยู่ปลายทางคือ e-mail address ถ้าไม่ได้ระบุก็ไม่รู้จะส่งไปยังงัยอ่ะครับ เหมือนเขียนจดหมายต่อให้ติดแสตมป์เรียบร้อยแต่ไม่ได้จ่าหน้าผู้รับ มันก็ส่งไปไม่ได้ ทำได้อย่างดีก็ส่ง Respone กลับหรือจดหมายตีกลับ แค่นั้นอ่ะครับ

กร
18 ก.ย. 2549 , 12:33 PM
ขอโทษครับผมกำลังทำรายงานเรื่อง โปรโตคอล POP3 ใครรู้เรื่องเกี่ยวกัน POP3 บางช่วยส่งขอมูลมาบอกทีสิคับจะเป็นพระคุณอย่างยิ่ง

นายบัญชา แหละกุบ
18 ธ.ค. 2549 , 04:16 PM
อยากจะถามเรื่อง โปรโตคอล MIME กับ YENC รู้หรือว่ามีข้อมูลช่วยชี้แนะหน่อยครับ ถือเป็นพระคุณครับ ขอบคุณครับ
1

ความคิดเห็น/แนะนำ/ติชม/อื่นๆ เกี่ยวกับบทความนี้
ชื่อของคุณ  : *     อีเมล : *    
ความคิดเห็น : *    
      อีเมลล์จะไม่ถูกเปิดเผย (นโยบายข้อมูลส่วนบุคคล)

Copyright © 2002 - 2017 by www.NEXTPROJECT.net All rights reserved. Policy