ระบบเมล์ (Mail System)
บทนำ
ในอดีตเทคโนโลยียังไม่พัฒนามากนัก การติดต่อที่สะดวกก็คงเป็นโทรศัพท์ ถ้าพูดถึงเรื่องการส่งเอกสารก็คงมีเครื่องโทรสาร แต่เครื่องโทรสารคงไม่มีใช้กันตามบ้านทั่วไป ดังนั้นระบบไปรษณีย์จึงเป็นหนทางหนึ่งที่เราใช้ติดต่อกัน ไม่ว่าจะเป็นโทรเลข พัสดุภัณฑ์ ธนาณัติ และที่ขาดไม่ได้คงเป็นจดหมาย ซึ่งโดยปกติจดหมายที่ส่งแบบธรรมดาภายในจังหวัดก็คงจะวันเดียว แต่ถ้าเป็นต่างจังหวัด และยิ่งเป็นอำเภอที่ไกลจากตัวเมืองก็ยิ่งต้องใช้เวลามากขึ้นไปด้วย ถ้าให้เร็วขึ้นก็มีบริการ EMS ซึ่งราคาก็จะแพงตามน้ำหนัก
ในปัจจุบันเมื่ออินเตอร์เน็ตเข้ามามีบทบาทมากขึ้น การติดต่อกันจึงมีช่องทางมากขึ้นสะดวกขึ้น จากรูปของจดหมายที่เป็นแบบกระดาษ ก็ผันเปลี่ยนมาอยู่ในรูปของจดหมายอิเล็กทรอนิกส์ หรือที่รู้จักกันคือ E-mail เป็นการติดต่อที่เป็นที่นิยมกันมากขึ้น ขอเพียงมีไฟฟ้า โทรศัพท์ และคอมพิวเตอร์ เราก็สามารถติดต่อกันไม่ว่ามุมไหนของโลกเพียงไม่กี่นาทีเท่านั้น
ความเป็นมาของ E-mail
อีเมล์หรือจดหมายอิเล็กทรอนิกส์ ได้มีการใช้งานมานานแล้ว ตั้งแต่ยุคของเครื่องเมนเฟรมหรือมินิคอมพิวเตอร์ ซึ่งไอบีเอ็มได้พัฒนาระบบที่เรียกว่า PROFS (Professional Office System) ออกมาใช้งาน นอกจากนี้ก็มีบนระบบ UNIX ต่อมาหลายค่ายก็ได้พัฒนาระบบอีเมล์ของตนขึ้นมา โดยส่วนใหญ่จะเป็นองค์ประกอบในแอพพลิเคชั่นที่ทำงานบนระบบเครือข่ายเช่น Microsoft Mail ของไมโครซอร์ฟ, CC Mail ของโลตัส เป็นต้น ซึ่งต่างก็ได้ใช้เทคโนโลยีของตนเองและเป็นระบบปิด ดังนั้นการส่งเมล์ไปยังผู้ใช้ที่มีระบบเมล์คนละค่ายกันจึงเป็นเรื่องที่ยุ่งยาก ในยุคต่อมามีระบบเครือข่ายทั้ง LAN และ WAN ต่างมีมาตรฐานและเป็นระบบเปิด (Open System) มากขึ้น ก็ได้มีการปรับเปลี่ยนการทำงานของระบบเมล์มาเป็นแบบ Client-server ที่เป็นพี้นฐานแบบที่ใช้กันในระบบ Unix และมีการพัฒนา Email Server ได้ทั้งโดยการผ่านระบบ LAN หรือใช้โมเด็มเข้ามาจาก WAN ทำให้ผู้ใช้จะไม่เห็นไฟล์ในฮาร์ดดิสก์บนเซิร์ฟเวอร์เลย ดังนั้นความปลอดภัยของระบบจึงมีมากขึ้น จนในปัจจุบัน ได้พัฒนาขึ้นมาเป็นระบบ Workflow ที่ใช้อีเมล์เป็นพื้นฐาน
ลักษณะการทำงานของระบบรับส่งเมล์
จะว่าไปลักษณะการทำงานของระบบอีเมล์ ถ้าเทียบกับระบบไปรษณีย์แล้วก็คล้ายกันอยู่คือ เริ่มต้นด้วยเราอยากเขียนจดหมายขึ้นมา เมื่อเขียนเสร็จก็จะส่งที่ตู้จดหมาย แล้วบุรุษไปรษณีย์ก็จะนำจดหมายไปรวมไว้ที่ทำการไปรษณีย์ เพื่อส่งต่อไปยังที่ทำการไปรษณีย์ปลายทาง แล้วบุรุษไปรษณีย์ปลายทางก็จะนำส่งถึงผู้รับเป็นอันจบกระบวนการ
คราวนี้เมื่อเป็นอีเมล์จะเป็นดังรูปที่ 1 ผู้ส่งหรือ sender เริ่มเขียนจดหมาย เขียนเสร็จก็กดปุ่มส่งผ่านโปรโตคอลส่งไปยังเครื่องเมลเซิร์ฟเวอร์ต้นทาง ดังขั้นตอนที่ 1
จากนั้นเมล์เซิร์ฟเวอร์จะส่งไปยังเครื่องที่เป็นรีเลย์โฮสต์ต้นทาง เนื่องจากรีเลย์โฮสต์เป็นเครื่องที่สามารถติดต่อกับโลกภายนอกได้ ดังนั้นขั้นตอนที่ 2 (โดยทั่วไปเครื่องเมลเซิร์ฟเวอร์อาจทำหน้าที่เป็นรีเลย์โฮสต์ในเครื่องเดียวกันก็ได้ ดังนั้นก็จะไม่มีขั้นตอนที่ 2 เกิดขึ้น)
จากรีเลย์โฮสต์ต้นทางเมื่อได้รับเมลมาแล้ว จะติดต่อกับรีเลย์โฮสต์ปลายทางเพื่อส่งเมลฉบับนี้ไปดังขั้นตอนที่ 3 และในกรณีเดียวกัน ถ้าเครื่องรีเลย์โฮสต์ปลายทางกับเครื่องเมล์เซิร์ฟเวอร์ปลายทางเป็นเครื่องดียวกัน ขั้นตอนที่ 4 จะไม่เกิดขึ้น เมื่อเมลไปถึงเมลเซิร์ฟเวอร์ปลายทางเรียบร้อยแล้วถือเป็นอันจบกระบวนการส่งเมล
คราวนี้เมื่อผู้รับเช็คเมล์ ไม่ว่าจะใช้วิธีไหนก็ตามก็จะต้องติดต่อกับเครื่องเมลเซิร์ฟเวอร์ของตนเอง เพื่อนำเมลฉบับนั้นมาอ่าน ในที่นี้เครื่องเมล์เซิร์ฟเวอร์หรือเครื่องรีเลย์โฮสต์ก็จะทำหน้าที่เหมือนกับที่ทำการไปรษณีย์นั่นเอง
รูปที่ 1 ลักษณะการทำงานของระบบอีเมล์
สถาปัตยกรรมของระบบเมล์
ทีซีพี/ไอพีมีโปรโคคอลสนับสนุนการรับส่งเมล์หลายโปรโตคอล แต่โปรโตคอลที่นิยมใช้ในอินเตอร์เน็ตคือ SMTP (Simple Mail Transport Protocol) หน้าที่ของ SMTP คือกำหนดกรรมวิธีและแบบแผนการนำส่งข้อความระหว่างผู้รับและผู้ส่ง โดย SMTP อาศัยทีซีพีเพื่อลำเลียงจดหมายผ่านพอร์ต 25
ระบบเมล์ที่ใช่ใน TCP/IP มีองค์ประกอบสองส่วนคือ User Agent (UA) (อาจจะเรียกว่า Mail User Agent : MUA) และ MTA (Mail Transfer Agent) ทั้ง UA และ MTA เป็นชื่อที่นำมาจากระบบ X.400 ซึ่งเป็นมาตรฐานานาชาติกำหนดการนำส่งเมล์
รูปที่ 2 สถาปัตยกรรมในทีซีพี/ไอพี
• User Agent (UA) ทำหน้าที่ในการติดต่อกับผู้ใช้เพื่อรับและส่งเมล ซึ่งรูปแบบของการติดต่อเป็น 3 แบบ ดังนี้
1. การติดต่อโดยตรงหรือรันบนเครื่องที่เก็บ mailbox อยู่นั่นเองเลย ซึ่งโปรแกรมที่ใช้ในการับส่งเมล์ที่นิยมกันบน Linux/Unix ก็เช่น /bin/mail, mailx, pine, elm เป็นต้น โดยการใช้งานจริงอาจจะด้วยการ telnet จากเครื่อง PC เข้าไปยังเครื่องที่เป็น Mail Server แล้วใช้งานโปรแกรมดังกล่าวบน Mail Server
2. การทำงานแบบ Client-server โดยเครื่องที่เป็น Mail client จะติดต่อกับเครื่อง Mail Server โดยผ่านโปรโตคอลสำหรับการจัดการโดยเฉพาะ เช่น POP3 (Post Office Protocol version 3) หรือ IMAP 4 (Internet Mail Access Protocol version 4) เพื่อให้ดึงจดหมายจาก mailbox บนเซิร์ฟเวอร์ไปอ่านได้อย่างเรียบร้อย ซึ่งโปรแกรมที่นิยมใช้งานเป็น Mail Client เช่น Microsoft Outlook, Outlook Express , Endora, Netcape Mail เป็นต้น
3. การทำงานแบบ Web mail เป็นการติดต่อระหว่าง Web Server ที่มีโปรแกรม Web Mail ติดตั้งอยู่ กับ Mail Server ผ่านโปรโตคอลที่ยมใช้กันส่วนใหญ่จะเป็น IMAP ซึ่ง Web Server กับ Mail Server อาจจะเป็น Server ตัวเดียวกันหรือคนละตัวกันก็ได้ โดยโปรแกรมที่เป็น Web mail ก็เช่นโปรแกรมที่ติดตั้งอยู่บน Web Server ของ yahoo.com , hotmail.com เป็นต้น หรือถ้าเป็นโปรแกรมแบบฟรีก็เช่น Horde mail (www.horde.org), OpenWebmail (www.openwebmail.org) , SquirrelMail (www.squirrelmail.org ) เป็นต้น ซึ่ง Web Mail ตัวใหม่ของมหาวิทยาลัยสงขลานครินทร์ก็ใช้โปรแกรม Web Mail เป็น SquirrelMail
โดยโปรแกรมที่เป็น UA ในแบบนี้ก็จะหมายถึง Browser ที่รันอยู่บน PC ที่ใช้ติดติดต่อไปยัง Mail Server ผ่าน Web Server เพื่อดำเนินการในส่วนของการรับและส่งเมล์ UA แบบนี้จะต่างกับแบบที่ 2 คือไม่ต้องมีการใช้โปรโตคอล POP และ IMAP เพราะจะมีตัวกลางที่เป็น Web Server เป็นตัวใช้งานโปรโตคอลดังกล่าวแทน
รูปที่ 3 ตัวอย่าง Web Mail ที่ใช้โปรแกรม Free Web mail ที่ชื่อว่า Horde mail
อาจจะกล่าวได้ว่า UA เป็นโปรแกรมอำนวยความสะดวกให้ผู้ใช้เขียน แก้ไข และส่งจดหมาย รวมทั้งการเปิดอ่านจดหมายที่ได้รับ และจัดเก็บจดหมายเพื่อนำมาใช้ภายหลัง
รูปที่ 4 ตัวอย่าง Web Mail ที่ใช้โปรแกรม Free Web mail ที่ชื่อว่า OpenWebmail
รูปที่ 5 ตัวอย่าง Web Mail ที่ใช้โปรแกรม Free Web mail ที่ชื่อว่า SquirrelMail
• Mail Transport Agent (MTA) คือส่วนที่ทำหน้าที่ในการรับและส่งเมล โดยจะรับจาก User Agent แล้วตรวจสอบว่าผู้รับปลายทางอยู่ในเครื่องเดียวกันหรือไม่ หากอยู่ในเครื่องเดียวกันก็จะส่งเมลนั้นไว้ใน mailbox หรือโฟลเดอร์ที่เก็บเมลของผู้รับนั้น แต่หากอยู่กันคนละเครื่อง ก็จะส่งให้กับอีกโปรเซสหนึ่งเพื่อส่งต่อไปยังเครื่องนั้น ๆ ได้ต่อไป (โปรเซสที่ทำหน้าที่รับส่งเมลข้ามเครื่องนั้นอาจเป็น smtpd ที่ทำหน้าที่คอยแปลงเมลให้อยู่ในรูปของโปรโตคอล SMTP เพื่อให้สามารถส่งผ่านเครือข่าย TCP/P ได้) ในขณะเดียวกันก็ทำหน้าที่รับเมลที่ส่งเข้ามายังผู้รับในเครื่องนั้น แล้วทำการจัดส่งให้ผู้รับแต่ละคนอย่างถูกต้องด้วย ในส่วนนี้โปรแกรมที่นิยมกันก็เช่น Sendmail, Microsoft Mail, Microsoft Exchange
การจัดแบ่งออกแป็น UA และ MTA มีข้อดีคือ แยกงานของทั้งสองส่วนให้เป็นอิสระจากกัน หน้าที่ของ UA เน้นการทำงานกับผู้ใช้เพื่อให้ผู้ใช้อ่านเขียนจดหมายได้อย่าวสะดวกโดยไม่ต้องยุ่งเกี่ยวกับการทำงานระดับล่างของโปรโตคอล ส่วน MTA ทำงานตาม SMTP เช่นการตรวจสอบความถูกต้องของแอดเดรสผู้รับผู้ส่ง รวมทั้งการหาเส้นทางและนำส่งจดหมายไปยังปลายทาง
เมลรีเลย์
เมื่อผู้ใช้ส่งจดหมาย หน้าที่ของ UA คือส่งจดหมายไปยัง MTA เพื่อให้ MTA นำส่งต่อไป MTA ต้นทางอาจติดต่อกับ MTA ปลายทางโดยตรง หรือใช้วิธี รีเลย์ (relay) โดยส่งต่อเป็นทอด คือจาก MTA ต้นทางไปยัง MTA ระหว่างทางซึ่งจะเก็บเมล์ไว้และนำส่งต่อตามจังหวะเวลาที่เหมาะสมจนกระทั่งเมล์ไปถึงปลายทาง ระบบเมล์ที่ใช้วิธีส่งต่อเป็นทอด ๆ นี้เรียกว่า ระบบเก็บและส่งต่อ (store-and-forward systems) เมลรีเลย์ประจำโดเมนหนึ่ง ๆ เรียกว่า ตัวแลกเปลี่ยนเมล (mail exchange) ซึ่งกำหนดในดีเอ็นเอสด้วยเรคอร์ด MX การใช้เมลรีเลย์มีข้อดีหลายประการเช่น
• ผู้ใช้สถานีงานขนาดเล็กหรือพีซีที่ไม่มี MTA มักไม่ได้เปิดเครื่องใช้งานอยู่ตลอดเวลา เมื่อมีเมล์เข้ามาจำเป็นต้องอาศัยเมลรีเลย์เป็นตัวเก็บพักเมล์ไว้จนกว่าจะเปิดใช้พีซีเพื่อของถ่ายเมล์มาจากเมลรีเลย์
• เครือข่ายในหลายองค์กรใช้เมล์รีเลย์ทำหน้าที่ติดต่อกับเครือข่ายภายนอก เมลรีเลย์อาจเป็นจุดเดียวที่อนุญาตให้รับส่งเมล์โดยตรงกับภายนอกได้ โดยมีระบบไฟร์วอล์ห้ามเครื่องอื่นภายในเครือข่ายรับส่งเมล์โดยตรงเพื่อสร้างระบบเมล์ศูนย์กลางและไม่ให้ชื่อเครื่องอื่นในเครือข่ายแพร่ออกไปภายนอก
• การติดตั้ง MTA อย่างเช่น sendmail ใน UNIX/LINUX มีความซับซ้อน ผู้ดูแลระบบบางแห่งจะไม่ติดตั้ง MTA กระจายไปทั่วแต่ให้ใช้บริการผ่านเมลรีเลย์แทน
ยูนิกซ์/ลินุกซ์เมล
ยูนิกซ์/ลินุกซ์เมล์มีแบบการทำงานเช่นเดียวกับระบบเมล์ที่กล่าวมาแล้ว เมื่อ UA นำส่งเมล์ MTA อาจส่งเมล์ออกไปทันทีหรืออาจ เก็บพัก (spool) ไว้ในหน่วยความจำสำรองก่อนเพื่อรอการนำส่ง การเก็บพักช่วยให้ MTA จัดลำดับและบริการส่งเมล์ได้อย่างเป็นระบบ โดยปกติแล้ว MTA จะส่งเมล์ไปยังปลายทางทันทีแต่ถ้าการส่งล้มเหลว MTA จะจัดเก็บเมล์ไว้ในคิวเพื่อรอส่งใหม่และควรทดลองส่งซ้ำเป็นช่วงอย่างน้อยช่วงละ 30 นาทีจนกว่าจะส่งได้หรือยกเลิกการส่ง [RFC 1123] เพราะปัญหาปลายทางไม่สามารถรับเมล์ได้มักเกิดขึ้นเพียงช่วงสั้น ๆ กรณียกเลิกการส่งควรพยายามส่งมาแล้วไม่น้อยกว่า 4-5 วัน
รูปที่ 6 แสดงโครงสร้างของยูนิกซ์/ลินุกซ์เมล์ ผู้ส่งเรียกใช้เมลผ่านทาง UA เช่น pine หรือ mail และ MTA ฝ่ายส่งติดต่อกับ MTA ฝ่ายรับผ่านทาง TCP 25 จดหมายที่ไปถึงปลายทางจะถูกเก็บอยู่ในตู้ไปรษณีย์ประจำตัวผู้ใช้หรือ mailbox ในยูนิกซ์/ลินุกซ์เก็บเมล์บ็อกซ์ในรูปแฟ้มข้อมูล ผู้ใช้แต่ละรายจะมีแฟ้มนี้เป็นของตนเอง (มักอยู่ใน /var/mail หรือ /var/spool/mail)
รูปที่ 6 Unix/Linux Mail
โปรโตคอลที่สำคัญ
การที่เครื่องคอมพิวเตอร์ 2 เครื่องจะรับส่งเมล์กันได้ หรือผู้ใช้จะโหลดเมลไปอ่านที่เครื่องของตนเองนั้น จำเป็นต้องมีโปรโตคอลที่ใช้คุยกันระหว่างเครื่องทั้งสองดังนี้
รูปที่ 7
SMTP
SMTP หรือ Simple Mail Tranfer Protocol เป็นโปรโตคอลที่ติดต่อกันระหว่างเครื่องที่เป็น host กับ host โดย host ในที่นี้ทำหน้าที่เป็น Mail Server หรือผู้ให้บริการอีเมล์ ซึ่งจะมีโปรเซสที่ทำหน้าที่เป็น Mail transfer agent ทำงานอยู่บนทั้ง 2 ด้าน และรับส่งข้อมูลระหว่างกันโดยใช้ SMTP เมื่อได้รับเมลมาแล้วก็จะเก็บเมลเหล่านั้นไว้ในไดเร็คทอรี่ที่เป็น mailbox หรือตู้ไปรษณีย์ในเครื่องนั้น และรอจนกว่าผู้ใช้มาเปิดอ่าน ซึ่งมีได้ 3 วิธีด้วยกันคือ
• ผู่ใช้มี account บนเครื่อง mail server ก็สามารถเปิดอ่านได้โดยใช้คำสั่งต่าง ๆ ของ Linux/Unix เช่น mail, pine และเมลที่ถูกอ่านจะถูกย้ายไปเก็บไว้ใน mailbox ของผู้ใช้แทน mailbox ของระบบได้
• ผู้ใช้อยู่บนเครื่องลูกข่าย จะต้องโหลดเมลไปไว้ในเครื่องของตัวเองก่อน แล้วจึงเปิดอ่านได้
• ผู้ใช้รับส่งเมลผ่านตัวกลางที่เป็น Web Server ซึ่งเมลจะยังคงถูกเก็บไว้ที่เครื่อง Mail Server
การทำงานของ SMTP จะทำหน้าที่ในการกำหนดว่า MTA แต่ละตัวจะติดต่อกันได้อย่างไรผ่านทาง TCP/IP จดหมายที่ส่งไปนั้นอาจจะส่งตรงไปยัง MTA ปลายทางเลย หรือว่าผ่าน MTA หลายเครื่อง (หมายถึงผ่านรีเลย์โฮสต์หลายเครื่อง) โดยผ่านกระบวนการ Store and Forward ก็ได้เช่นกัน
โปรโตคอล SMTP จะไม่สนใจว่าข้อความในจดหมายเป็นอะไร แต่จำกัดว่า SMTP สามารถส่งได้แต่ข้อมูลที่เป็นข้อความ ASCII เท่านั้น ไม่สามารถส่งไฟล์ที่เป็นเพลง, หนัง, รูปภาพ หรืออื่น ๆ ได้ ซึ่งถ้าเราต้องการส่งไฟล์เหล่านั้นผ่านทาง SMTP จะต้องแปลงไฟล์เหล่านั้นให้อยู่ในรูปของข้อความเสียก่อน และเมื่อส่งไปถึงปลายทางแล้ว ค่อยทำการแปลงกลับอีกที
นอกจากการใช้ SMTP เพื่อรับส่งเมล์ระหว่าง mail server ด้วยกันแล้ว ยังใช้ในขณะที่เป็น client ส่งเมลไปยังเครื่องที่เป็น mail server ด้วย
POP
POP หรือ Post Office Protocol เป็นโปรโตคอลที่ออกแบบมาให้ใช้สำหรับการรับเมลจากเครื่องที่เป็น mail server มายังเครื่องของผู้ใช้ โดยทางฝั่ง Server จะมีโปรเซสที่เป็น POP Server ขณะทางฝั่งผู้ใช้มี POP Client ซึ่งในบางโปรแกรมที่ผู้ใช้อ่านและเขียนเมล์นั้นจะมี POP client ฝังอยู่ในตัวอยู่แล้ว ไม่ได้แยกออกมาเป็นโปรแกรมหนึ่ง เมื่อผู้ใช้เชื่อมต่อไปที่ POP Server อีเมล์ที่อยู่บน mail server จะถูกส่งมาเก็บไว้ในเครื่องของผู้ใช้เลย ดังนั้นเมื่อผู้ใช้จัดการกับเมล์ เช่น ลบเมล์หรือส่งต่อเมล์ก็จะทำกับเมล์ที่อยู่บนเครื่องของผู้ใช้เอง ส่วนเมล์บน Mail Server จะถูกลบทิ้งไปเมื่อมีการส่งให้ผู้ใช้เรียบร้อยแล้ว เว้นเสียแต่ว่าได้กำหนดเพิ่มเติมไว้ที่โปรแกรม mail client ว่าอย่าให้ลบเมล์ออกจาก Server (Leav