วันพุธที่ 27 กุมภาพันธ์ พ.ศ. 2551

รายงานบทที่7

อีเมล์ และโปรโตคอลของอีเมล์
อีเมล์(Email) หรือจดหมายอิเล็กทรอนิกส์ได้เริ่มใช้งานกันมานานแล้ว ตั้งแต่ยุคของเครื่องของเมนเฟรม หรือมินิคอมพิวเตอร์ ซึ่งไอบีเอ็มได้พัฒนาระบบอีเมล์ที่เรียกว่า PROFS(Professional Office System) ออกมาใช้งาน นอกจากนี้ก็ยังมีระบบ UNIX ต่อมาหลายๆค่ายก็ได้พัฒนาระบบอีเมล์ของตนขึ้นมา โดยส่วนใหญ่จะเป็นองค์ประกอบในแอพพลิเคชั่นที่ทำงานในระบบเครือข่าย เช่น Microsoft Mail ของไมโครซอฟท์ และcc:Mail ของโลตัส เป็นต้นซึ่งต่างก็ใช้เทคโนโลยีของตนเองและเป็นระบบปิด ดังนั้นการส่งอีเมล์ไปยังอีกผู้ใช้ที่ใช้ระบบเมล์คนละค่ายกันจึงเป็นเรื่องที่ยุ่งยาก
ในยุคต่อมาที่ระบบเครือข่ายทั้ง LAN และ WAN ต่างมีมาตรฐาน และเป็นระบบเปิด (Open System)มากขึ้น ก็ได้ปรับเปลี่ยนการทำงานของอีเมล์มาเป็นระบบไคลเอนต์เซิร์ฟเวอร์ที่เป็นมาตรฐานแบบที่ใช้กันในระบบ UNIX และมีการพัฒนาอีเมล์เซิร์ฟเวอร์ขึ้นมาโดยเฉพาะ เช่น Exchange Server หรือไมโครซอฟท์ หรือ Note Server ของโลตัส เป็นต้น ซึ่งผู้ใช้จะติดต่ออีเมล์เซิร์ฟเวอร์ได้ทั้งโดยผ่านระบบ LAN หรือใช้โมเด็มเข้ามาจาก WANทำให้ผู้ใช้จะไม่เห็นไฟล์ในฮาร์ดดิสก์บนเซิร์ฟเวอร์เลย ดั้งนั้นความปลอดภัยนของระบบจึงมีมากขึ้น จนปัจจุบันได้พัฒนาขึ้นมาเป็นระบบ Workflow ที่ใช้อีเมล์เป็นพื้นฐาน การทำงานของอีเมล์ไคลเอนต์และอีเมล์เซิร์ฟเวอร์มีส่วนประกอบดังนี้
User Agent เป็นโปรแกรมคอมพิวเตอร์ด้านผู้ใช้งาน แบ่งเป็น2ส่วนคือ ส่วนของผู้ส่งและส่วนของผู้รับ โดย User Agent นี้จะติดต่อเข้าสู่เซิร์ฟเวอร์ของตนโดยผ่านระบบLANหรือ Dial- upซึ่งในส่วนของ User Agent นี้จะเป็นส่วนที่ผู้ใช้ติดตั้งโปรแกรมไคลเอนต์ของอีเมล์เพื่อเรียกใช้บริการของอีเมล์ เช่น Out look Expressหรือ Eudora เป็นต้น
MTA(mail Transfer Agent) เป็นโปรมแกรมคอมพิวเตอร์ที่จะส่งอีเมล์จากต้นทางไปยังผู้รับปลายทาง ซึ่งจะต้องส่งผ่านเครื่องทีจำนวนมากที่เชื่อมต่อกันในเครือข่าย โดยโปรแกรมเหล่านี้จะช่วยกันส่งอีเมล์เป็นทอดจนไปถึงยังทำเครื่องที่มีaccout หรือเมล์บ็อกซ์ของผู้รับ และหากไม่สามารถส่งเมล์ถึงผู้รับได้ (เพราะใส่ชื่อผิด)ยังทำหน้าที่ส่ง Error mail กลับมาส่งผู้ส่งได้อีกซึ่งเครื่องที่มีMTAทำงานอยู่มักจะมีเมล์บ็อกช์ของผู้ใช้อยู่ด้วย ซึ่งเป็น primary mailbox และเรียกเครื่องนั้นว่าMail Serverโปรโตคอลและประเภทการใช้งาน
การทำงานทั่วๆไปของอีเมล์โดยสรุปมีเพียง2ประเภทคือ การส่งอีเมล์ และการรับอีเมล์ โดยโปรโตคอล SMTPหรือ Simple mail transfer protocol จะใช้ในขณะที่ User Agent ส่งอีเมล์มาที่ MTA(เฉพาะแบบ Offline) และในขณะรับส่งอีเมล์ระหว่าง MTA ด้วยกัน สำหรับการใช้เมล์แบบ Offline คือเครื่องที่ผู้ใช้อ่านเมล์ไม่ได้ต่อกับเครื่องที่มีเมล์บ็อกซ์ตลอดเวลา อาจเลือกดาวน์โหลดเมล์มาเก็บไว้ที่เครื่องของตัวเองนั้น จะต้องมีโปรโตคอลสำหรับอีเมล์ที่เกี่ยวข้องอีก ที่ใช้งานกันอย่างแพร่หลายมีอยู่ 2 แบบคือ โปรโตคอล POP หรือ Post Office Protocol และ IMAP หรือ Internet Message Access Protocol ซึ่งจะทำหน้าที่ดาวน์โหลดอีเมล์จากเครื่องของผู้ใช้ไปยังเครื่องที่มี MTA
รูปแบบข้อมูลที่ใช้ในโปรโตคอลต่าง ๆ ของอีเมล์นี้ถูกกำหนดไว้ใน RFC 822 ซึ่งแบ่งส่วนประกอบภายในอีเมล์เป็น 2 ส่วน คือ ส่วนที่เป็นจ่าหน้าอีเมล์ และข้อมูลของอีเมล์ ในส่วนของจ่าหน้าอีเมล์นี้มีไว้เป็นข้อมูลเพื่อส่งไปให้ผู้รับ รูปแบบของข้อมูลจะเป็นข้อความหรือเท็กซ์ นำหน้าด้วยคำสำคัญ (keyword) เช่น From หมายถึงชื่อผู้ส่ง ส่วน To หมายถึง ผู้รับ เป็นต้น ซึ่งคล้ายกับการที่ต้องกำหนดเมื่อบันทึกอีเมล์ ถัดจากคำสำคัญก็จะเป็นคำของข้อมูลในชุดนั้นๆ เช่น From ก็จะต่อด้วยซื่อของผู้ส่ง และ Reply To ก็จะต่อด้วยชื่อของผู้รับ เป็นต้น โดยแต่ละบรรทัดจะปิดท้ายด้วย Carriage Return และ/หรือ line feed (ขึ้นอยู่ระบบปฏิบัติการที่ใช้ เช่น Windows จะปิดท้ายด้วย Carriage Return และ Line feed ส่วนระบบปฏิบัติการอื่น เช่น Unix ก็อาจจะใช้เพียง Carriage Return เท่านั้น )เป็นเครื่องหมายของการสิ้นสุดบรรทัด จะเห็นได้ว่าในส่วนของจ่าหน้าอีเมล์นี้มีข้อความที่จำเป็นคือรายละเอียดของผู้ส่งและผู้รับ ส่วนรายละเอียดอื่นๆ เช่น รายชื่อผู้รับสำเนา (CC) จะมีหรือไม่ก็ได้จากองค์ประกอบของโปรโตคอลและวีการส่งอีเมล์ที่กล่าวผ่านมา ทำให้การใช้อีเมล์ในปัจจุบันซึ่งทำงานแบบไคลเอ็นเซิร์ฟเวอร์สามรถทำงานได้ 3แบบคือ
แบบOffline หรือเรียกว่า Download and Delete ซึ่งเป็นรูปแบบมาตรฐาน ทั่วไปในการใช้งานของอีเมล์อินเตอร์เน็ต ซึ่งใช้โปรโตคอล POP หรือ IMAP โดย User agent ของผู้รับจะดาวน์โหลดอีเมล์ทั้งหมดมาจากเมล์เซิร์ฟเวอร์ และลบอีเมล์เหล่านั้นออกไป (ในโปรแกรมไคลเอนต์ของอีเมล์บางโปรแกรม สามารถให้เลือกได้ว่าต้องการลบอีเมล์ที่ดาวน์โหลดมา แล้วฝังเซิร์ฟเวอร์นั้นทิ้งหรือไม่) ทำให้ผู้ใช้นั้นอ่านอีเมล์นั้นได้ตลอดเวลาโดยไม่จำเป็นติดตั้งเมล์เซิร์ฟเวอร์นั้นอีก แต่ User agent จะไม่รู้ว่าอีเมล์เข้ามาใหม่ จนกว่าจะติดเข้าไปยังเมล์เซิร์ฟเวอร์และดาวน์โหลดอีเมล์เข้ามาใหม่ แบบ Online เป็นแบบที่เมล์ด้าน User agent ของผู้รับจะติดต่อกับ เมล์เซิร์ฟเวอร์ของผู้รับเองตลอดเวลาที่ใช้อีเมล์ ซึ่งระบบที่ให้บริการอีเมล์แบบนี้จะสามารถเปิดแชร์เมล์บ็อกซ์ที่เซิร์ฟเวอร์ได้ตลอดเวลา เช่น NFS (Network File System) หรือ CIFS(Common Internet File System) เป็นต้น (ดูรายละเอียดของ NFSหรือ CIFS ในบทที่ 8 เรื่อง”การรับส่งไฟล์และระบบไฟล์” ) นอกจากนี้โปรโตคอลแบบ IMAP ยังสามารถใช้งานแบบ Onlineนี้ได้อีกด้วย ซึ่งจะกล่าวถึงรายละเอียดในภายหลัง
แบบ Disconnected เป็นแบบผสมผสานระหว่างOffline และแบบ Online โดยอาศัยเมล์เซิร์ฟเวอร์ของผู้รับเป็นที่หลักในการจัดเก็บข้อมูลของอีเมล์ และในส่วนเนื้อที่ User agent นี้จะเป็นที่เก็บอีเมล์สำรองโดยเมื่อมีการดาวน์โหลดอีเมล์มาก็จะทำงานในแบบของ Offline เพื่อลดภาระที่ต้องติดต่อกับเมล์เซิร์ฟเวอร์ตลอดเวลา แต่ข้อมูลอีเมล์จะไม่ถูกลบออกจากเมล์เซิร์ฟเวอร์ ผู้ใช้สามารถโหลดอีเมล์ที่แก้ไขแล้วกลับไปยังเมล์เซิร์ฟเวอร์ในภายหลังได้ เช่น การแก้ไขหรือตอบกลับอีเมล์ (Reply to) ที่ส่งมา เป็นต้น ซึ่งโปรโตคอลที่สามารถตอบสนองการใช้งานในแบบนี้ได้ก็คือ IMAP
สถานะขออนุมัติ (Authorization State) เมื่อเริ่มต้นติดต่อกับเซิร์ฟเวอร์จะเป็นการเข้าสู่สถานะการขออนุมัติ โดยไคลเอนต์ จะต้องแจ้งชื่อผู้ใช้และรหัสผ่าน (Password) เพื่อขออนุมัติจากเซิร์ฟเวอร์ก่อน โดยไคลเอนต์จะใช้คำสั่ง USER เพื่อระบุชื่อผู้ใช้ หรือคำสั่ง PASS เพื่อกำหนด Password แต่ในกรณีที่ชื่อและ Password ถูกเข้ารหัสไว้ และไม่ได้เป็นค่า ASCII ทั่วไปไคลเอนต์จะใช้คำสั่ง APOPทำงานแทน USER และPASS
สถานะรับส่งรายการ (Transaction State)หลังจากที่ได้อนุมัติจากเซิร์ฟเวอร์แล้ว ก็จะเข้าสู่สถานะที่ใช้คำสั่งในการทำงานต่างๆ
สถานะปรับปรุงข้อมูล (Update State)เมื่อ User agent เลิกใช้งานด้วยคำสั่งQUIT ของPOP3 เซิร์ฟเวอร์ก็จะเข้าสู่สถานะปรับปรุงข้อมูล เพื่อลบอีเมล์ที่ดาวน์โหลดเรียบร้อยแล้วออกไป จากนั้นก็จะเข้าสู่สถานะอนุมัติใหม่โดยอัตโนมัติ เพื่อรองรับการทำงานต่อไป การทำงานของ IMAP นี้จะเหมือนกับโปรโตคอลอื่น ๆ โดยทำงานร่วมกัน TCP ใช้พอร์ต หมายเลข 143 และจะแบ่งเป็นสถานะต่าง ๆ ออกเป็น 4 สถานะ โดยในแต่ละสถานะจะมีวัตถุประสงค์และคำสั่งที่ใช้งานแตกต่างกัน โดยมีรายละเอียดต่าง ๆ ดังนี้
-สถานะก่อนอนุมัติ (Non-authenticated State) เป็นสถานะที่กำลังรอให้ไคลเอนต์ติดต่อเข้ามาเพื่อขออนุมัติใช้ ดังนั้นในด้านไคลเอนต์จะต้องแจ้งชื่อ Login ของ Mail Server นั้นและ password ด้วยคำสั่ง LOGIN หรือ AUTHENTICATE ก่อนจึงจะเริ่มใช้งานได้ จาก นั้นจึงเปลี่ยนไปเป็นสถานะไดรับอนุมัติ
- สถานะได้รับการอนุมัติ (Authenticated State) เป็นสถานะที่สามารถใช้ คำสั่งต่างๆที่เกี่ยวกับการเลือกและการใช้เมล์บ็อกซ์เช่นคำสั่ง SELECT หรือเลือกเมล์บ็อกซ์หรือคำสั่ง CRETATE เพื่อสร้างเมล์บ็อกซ์เป็นต้น ในการเลือกเมล์บ็อกซ์ด้วยคำสั่ง SELECT หรือ EXAMINE นี้จะเป็นการเปลี่ยนไป เป็นสถานการณ์เลือกเมล์บ็อกซ์
- สถานะเลือกเมล์บ็อกซ์ (Selected State) เป็นสถานะที่เข้าไปใช้งานอีเมล์ ในแต่ละเมล์ บ็อกซ์ หลังจากที่เลือกเมล์บ็อกซ์ไว้แล้วในสถานะก่อนหน้านี้
- สถานะเลิกใช้งาน (Logout State) เมื่อต้องการเลิกใช้งาน หรือสิ้นสุดการทำงาน ของ IMAP จะเข้าสู่สถานะเลิกใช้งาน โดยใช้คำสั่ง LOGOUT จากสถานะทั้ง 4 ไปจำเป็นต้องทำงานเรียงต่อกันเสมอไป บางครั้งอาจมีการทำงานข้ามจากสถานะหนึ่งไปอีกสถานะหนึ่งได้ ตัวอย่างเช่น เมื่อเข้าสู่สถานะที่ได้รับอนุมัติ(Authenticated State) และลบอีเมล์ที่ไม่ต้องการใช้งานทิ้งไปด้วยคำสั่ง DELETE แล้ว และไม่ต้องการทำงานอื่นๆต่อ ก็สามารถใช้คำสั่งLOGOUT เพื่อเปลี่ยนสถานะเป็นการเลิกใช้งาน (Logout State) ได้โดยไม่จำเป็นต้องเข้าสู่สถานการณ์เลือกเมล์บ็อกซ์ การเข้ารหัสและ MIME (RFC 1341)
ในการรับส่งอีเมล์ผ่านเครือข่ายนั้น คอมพิวเตอร์ที่เชื่อมต่ออยู่ในเครือข่ายมักจะมีหลากหลายชนิด ดังนั้นข้อมูลที่ส่งผ่านจึงต้องเป็นข้อมูลที่อยู่ในรูปแบบกลางๆ ซึ่งคอมพิวเตอร์จะรับรู้และเข้าใจได้เหมือนกัน เพื่อไม่ให้ข้อมูลที่รับหรือส่งเหล่านั้นผิดเพี้ยนไปจากความเป็นจริง และสามารถส่งข้อมูลทั้งที่เป็นข้อความและไม่เป็นข้อความ (เช่น ข้อมูลที่เป็นรูปและเสียง ) รวมกันไปในอีเมล์ฉบับเดียวกันได้ ดั้งนั้นจึงได้นำเทคนิคการเข้ารหัสที่เรียกว่า MIME มาใช้เพื่อเข้ารหัสและถอดรหัสในการรับส่งอีเมล์โดยทั่วไป
การรักษาความปลอดภัยและการเข้ารหัสอีเมล์ การที่ต้องให้อีเมล์มีความปลอดภัยในการรับส่งข้อมูลมากขึ้น ก็เพื่อป้องกันไม่ให้ผู้อื่นลักลอบอ่านข้อความได้ และในการแปลงรหัสตามวิธีของ MIME นั้นได้มีข้อกำหนดเพิ่มเติมเรียกว่า S/MIMหรือ Secure,Vluitipurpose Internet Mail Extensions ซึ่งพัฒนาขึ้นโดย RSA Data Security Inc. โดยในส่วนของระบบรักษาความปลอดภัยขึ้นจากมาตรฐานของ MIME แบบเดิม (รายละเอียดจะกล่าวถึงบทที่ 12 ) กระบวนการของ S/MIME ที่ได้เพิ่มในส่วนทำหน้าที่เข้ารหัสข้อมูล (Encryption) และการลงส่งลายเซ็นดิจิตอล (Digital Signature) เข้าไปในข้อมูลอีเมล์ การเข้ารหัสข้อมูลนั้นS/MIME จะใช้วิธีการ Public-key โดยใช้คีย์ที่มีความยาวได้สูงสุด 2,048 บิต และวิธีการเข้ารหัสข้อมูลนั้นมีทั้งวิธีของ DES (Data Encryption Standard) และ Triple DES (รายละเอียดจะกล่าวถึงในบทที่ 12) ในกรณีการเข้ารหัสของลายเซ็นดิจิตอลนั้น RSA ได้พัฒนาไลบรารีภาษา C ที่เรียกว่า TIPEM เพื่อให้ผู้พัฒนาซอฟต์แวร์ต่างๆ นำไปพัฒนาตามมาตรฐานของ S/MIME ในปัจจุบันถึงแม้ว่า S/MIME จะยังมากำหนดให้เป็นโปรโตคอลมาตรในการรักษาความปลอดภัยของอีเมล์ แต่ก็ถือได้รับการยอมรับเป็นมาตรฐานไปโดยปริยายเพราะมีการใช้งานมาก (De facto standard) เนื่องจากบริษัทพัฒนาซอฟแวร์ชั้นนำหลายแห่ง ไม่ว่าจะเป็นไมโครซอฟท์ , เน็ตสเคป, โลตัส, Verisign หรือ โนเวลล์ก็ตาม ได้นำเอาโปรโตคอล S/MIME นี้ไปใช้งานแล้วNewsgroups ( NNTP : RFC 977)
นอกจากบริการอีเมล์แล้ว Newsgroups ก็เป็นอีกบริการหนึ่งที่ใกล้เคียงกับอีเมล์อย่างมากการทำงานของ Newsgroups จะเป็นเสมือนเนื้อที่สาธารณะให้ผู้สนใจในเรื่องต่างๆ ส่งความเห็นหรือภามปัญหาได้ตามหัวเรื่องที่สนใจ โดยผู้ใช้ต้องสมัคเป็นสมาชิกในหัวเรื่อง (Article) ที่สนใจนั้นเสียก่อนจากนั้นจึงสามารถอ่านหรือดูข้อความที่สมาชิกคนอื่นส่งมาได้ โดยอาจจะรับเป็นอีเมล์เข้ามาในเมล์บ็อกซ์ หรือส่งความคิดเห็นของตนเองไปได้คล้ายกันการส่งอีเมล์ ซึ่งโปรโตคอลที่ใช้ใน Newsgroups นี้เรียกว่า NNTP หรือ Network News Transfer Protocol กลไกการทำงานของ Newsgroups นั้นจะมีหัวข้อทำหน้าที่สื่อให้ผู้ใช้ทราบว่าเป็นเนื้อหาเกี่ยวกับเรื่องอะไร ซึ่งหัวข้อจะประกอบด้วยส่วนประกอบหลายๆส่วนเรียงต่อกันและคั่นแต่ละจุดด้วยจุด (.) โดยส่วนแรกของหัวข้อจะเป็นชื่อกลุ่มของ Newsgroups เช่น soc หมายถึงเนื้อหาที่เกี่ยวกับวัฒนธรรมหรือสังคม ถ้าเป็น soc.culture.dia ก็จะเป็นหัวข้อของเนื้อหาที่เกี่ยวกับวัฒนธรรมของอินเดีย เป็นต้น
การทำงานโปรโตคอล NNTP จะต่างจากอีเมล์ทั่วไปเนื่องจากอีเมล์จะแยกโปรโตคอลที่ทำหน้าที่รับและส่งออกจากกัน แต่ในเรื่องของ Newsgroups นั้น NNTP จะทำทุกหน้าที่ไปพร้อมกัน คือ

-ไคลเอนต์ส่งข้อความไปยังเซิร์ฟเวอร์
- ไคลเอนต์รับและอ่านข้อความจากเซิร์ฟเวอร์
- แลกเปลี่ยนหัวข้อกันระหว่างเซิร์ฟเวอร์