linux training in Thailand
| Home | Articles | Download | Free Linux Tips | Resources | Training | Web Link | Linux Training English|
| Courses | Schedule | Price & Promotion | Map | Customer Ref. | Instructors | Certification | FAQ | Registration Form |
สถาบันฯ ขอแจ้งปิดทำการระหว่างวันที่ 27 -31 กรกฏาคม 2558 และเปิดทำการปกติวันที่ 3 สิงหาคม 2558
We are on vacations 5 days in July 27-31, 2015 Please contract Line ID : nok_fly or e-mail : info@itdestination.com
ITDestination จะปิดปรับปรุงเว็บไซต์ ตั้งแต่วันที่ 7 - 9 มิถุนายน 2556
อาจจะทำให้ใช้งานไม่ได้ในบริการ Webboard Freetips และ E-Learning จึงขออภัยในความไม่สะดวกมา ณ ที่นี้
สถาบันฯ ขอแจ้งปิดทำการวันที่ 22-28 กุมภาพันธ์ 2560 และจะเปิดทำการปกติในวันที่ 1 มีนาคม 2560
กรณีติดต่อส่งข้อความมาที่ Facebook: LinuxITDestination หรือ e-mail: info@itdestination.com ซึ่งจะติดต่อกลับประมาณ 17.00 น.
ผู้ลงทะเบียนอบรมสามารถทำข้อสอบ online ในช่วงที่มาอบรมเพื่อทบทวนความรู้ ทำได้ไม่จำกัดจำนวนครั้ง มีข้อเฉลยที่ถูกต้องแนะนำ
สอบถามรายละเอียดโทร 089 890-5494 >>> อ่านรายละเอียด... คลิ๊ก

Postfix พิราบสื่อสารในโลกซอฟต์แวร์เสรี

โดย ธีรภัทร มนตรีศาสตร์ RHCE,LPIC-2
มานะ ศฤงคารรัตนะ RHCE,LPIC-2

"ด้วยวงจรแห่งการพัฒนาที่ไม่หยุดยั้ง Sendmail อาจจะกลายเป็นเพียงความทรงจำ เมื่อ Postfix ได้รับความนิยมมากขึ้นทุกขณะและเข้ามาครองบัลลังก์ Mail Server ที่ดีที่สุดบนระบบยูนิกซ์…"
พัฒนาการในโลกของซอฟต์แวร์เสรีที่เต็มไปด้วยอิสระแห่งความคิดสร้างสรรค์ มุ่งเน้นประสิทธิผลที่จะได้มาซึ่งซอฟต์แวร์ที่ตรงกับจุดประสงค์การใช้งานมากที่สุด และความลงตัวของทั้งสองสิ่งนี้เอง ส่งผลให้เกิดซอฟต์แวร์รุ่นใหม่ๆ ที่มีประสิทธิภาพ ได้รับการปรับปรุงด้านคุณสมบัติเพิ่มขึ้น ใช้งานง่ายขึ้น และปลอดภัยขึ้นกว่าเดิม Postfix เป็นโปรแกรมเมล์เซิร์ฟเวอร์ที่มีพื้นฐานการออกแบบมาจากแนวคิดที่ต้องการขจัดจุดด้อยของโปรแกรมเมล์เซิร์ฟเวอร์อื่นๆ ที่เกิดขึ้นและนิยมใช้กันมาก่อน ซึ่งในกลุ่มระบบปฏิบัติการตระกูลยูนิกซ์ คงหนีไม่พ้น Sendmail โดยเป็นที่ทราบกันดีว่า เป็นซอฟต์แวร์ยุคเริ่มแรกเริ่มที่ใช้งานค่อนข้างยาก โดยเฉพาะการปรับแต่งคอนฟิกต่างๆ ที่มีค่าตัวแปรมาโครที่ซับซ้อนและมีเงื่อนไขการใช้งานค่อนข้างจุกจิก แต่ถึงอย่างไรก็ถือว่า Sendmail เป็นเสมือนต้นแบบของเมล์เซิร์ฟเวอร์ในปัจจุบันที่รองรับมาตรฐานได้อย่างสมบูรณ์ถูกต้องมากที่สุด เมื่อคุณภาพของโปรแกรมเมล์เซิร์ฟเวอร์เป็นเป้าหมายสำคัญที่ทุกๆ องค์กรต้องการ Postfix จึงถูกพัฒนาขึ้นมาเพื่อตอบสนองโดยมุ่งเน้นเป้าหมายดังนี้ ความเชื่อถือได้ Postfix ถูกออกแบบให้สามารถรับมือกับสถานการณ์ที่มีแรงกดดันภายใต้สภาพแวดล้อมหรือเหตุการณ์ที่เหนือความคาดหมาย ไม่ใช่เขียนโปรแกรมขึ้นมาเพื่อใช้งานในสภาพทั่วๆไป เมื่อประสบปัญหาหรือข้อผิดพลาดขึ้นจึงค่อยหาทางแก้ไขปรับปรุงดังเช่นซอฟต์แวร์อื่นๆ ตัวอย่างเช่น ในสภาพที่หน่วยความจำหรือดิสก์ไม่เพียงพอ Postfix จะยังคงสามารถรักษาเสถียรภาพไว้ได้ต่อไป ความปลอดภัย Postfix ได้รับการออกแบบโดยนาย Wietse Venema ผู้ซึ่งเป็นที่รู้จักกันเป็นอย่างดีถึงผลงานด้าน Security Tools และผลงานด้านเอกสารเกี่ยวกับ Security อีกมากมาย จึงไม่ต้องสงสัยเลยว่า Postfix จะมีโครงสร้างที่แข็งแกร่งและมีภูมิคุ้มกันด้านความปลอดภัยอย่างยอดเยี่ยม ประสิทธิภาพ ด้วยความต้องการปรับปรุงประสิทธิภาพโดยมี Sendmail เป็นแม่แบบในการเปรียบเทียบ Postfix จึงใช้เทคนิคในการจำกัดการสร้างโปรเซสใหม่ขึ้น และลดอัตราการแอกเซสเข้าสู่ระบบไฟล์ในระหว่างกระบวนการทำงานลงให้มากที่สุด ความยืดหยุ่น Postfix มีโครงสร้างที่แยกส่วนโปรแกรมออกเป็นโมดูลและระบบย่อยหลายๆ ระบบ จึงทำให้ง่ายต่อการดัดแปลง และแต่ละส่วนยังสามารถปรับแต่งได้จากคอนฟิกที่กำหนดคุณสมบัติได้เฉพาะเจาะจงอีกด้วย ความง่ายต่อการใช้งาน เป็นโปรแกรมที่ใช้งานง่ายมากทั้งในด้านการติดตั้งและการบริหารระบบ โดยผ่านคอนฟิกไฟล์ที่เป็นข้อความที่อ่านและเข้าใจความหมายได้โดยตรง ต่างจากการคอนฟิกผ่านคำสั่งมาโครของ Sendmail และมีการจัดเก็บข้อมูลด้วย lookup table ธรรมดา ซึ่งง่ายต่อการบำรุงรักษาและปรับแก้ได้ตลอดเวลา ความเข้ากันได้กับ Sendmail ด้วยความเข้ากันได้กับโปรแกรม Sendmail นี้เองทำให้ Postfix สามารถนำไปใช้งานแทนที่ระบบเมล์เซิร์ฟเวอร์เดิมได้ทันที ไม่ว่าจะเป็นการจัดทำ Aliases หรือ .forward ที่เคยทำไว้ก็สามารถใช้งานต่อไปได้กับ Postfix แม้กระทั่งคำสั่งคอมมานด์ไลน์ต่างๆ รวมทั้งพารามิเตอร์ทั้งหลายของตัวโปรแกรมก็มีความเข้ากันได้ทั้งหมด จะหา Postfix ได้จากที่ไหน หลังจากติดตั้งลีนุกซ์ดิสทริบิวชั่นลงในเครื่องที่ออกแบบให้ทำหน้าที่เป็น MTA ( Mail Transfer Agent ) แล้ว ขั้นตอนถัดไปของการติดตั้งโปรแกรม Postfix นับว่าเป็นเรื่องไม่ยากจนเกินไปนัก สำหรับท่านที่ใช้ SuSE สามารถใช้คำสั่ง yast -i postfix เพื่อติดตั้ง ( -i หมายถึง install ) ได้ทันที หรือท่านที่ใช้ Debian สามารถใช้คำสั่ง apt-get install postfix ก็ได้ผลเช่นเดียวกัน ในกรณีของผู้ใช้งาน Fedora Linux สามารถเลือกแพคเกจของ Postfix ได้ในขั้นตอนการติดตั้ง หรืออาจใช้โปรแกรม Redhat-Package-Management เพื่อติดตั้งในภายหลังได้เช่นเดียวกับดิสโทรอื่นๆ ดังที่ได้กล่าวถึงไปแล้ว หากแพคเกจของ Postfix ได้รับการติดตั้งสมบูรณ์แล้ว จะสังเกตเห็นไฟล์ /etc/postfix/main.cf ซึ่งเป็นไฟล์คอนฟิกหลักของ Postfix ที่จะใช้ในการคอนฟิกให้ทำงานตามที่ต้องการต่อไป สำหรับ RedHat / Fedora โดยปรกติแล้วถ้าติดตั้งโดยไม่ได้กำหนดค่าใดๆ เป็นพิเศษ ผู้พัฒนาดิสทริบิวชั่นจะกำหนดใช้งาน Sendmail เป็นโปรแกรม MTA หลักของการทำงาน แต่เราสามารถเปลี่ยนไปใช้ Postfix ได้ด้วยโปรแกรม redhat-switch-mail ซึ่งมีตัวเลือกให้กำหนดว่าจะใช้ Sendmail หรือ Postfix เป็น MTA ได้ดังรูปที่ 1
  
รูปที่ 1 โปรแกรม redhat-switch-mail ใน Fedora Core 1
การเซ็ตอัพเบื้องต้น เมื่อได้เลือกให้ Postfix เป็นโปรแกรม MTA ของระบบแล้ว จะสามารถตรวจสอบการทำงานอย่างง่ายๆ ได้ด้วยการ telnet เข้าสู่พอร์ตหมายเลข 25 ซึ่งตัวโปรแกรม MTA ปัจจุบันจะตอบสนองโดยแสดง Banner ให้ทราบชื่อของโปรแกรม ดังรูปที่ 2

รูปที่ 2 การทดสอบการทำงานของ MTA ด้วยคำสั่ง telnet
ถึงแม้จะเห็นว่าโปรแกรม Postfix ได้เริ่มทำงานให้กับเราแล้ว แต่การคอนฟิกก็ยังเป็นสิ่งที่ต้องปรับแต่งค่าการทำงานอีก โดยเมื่อพิจารณาไฟล์ /etc/postfix/main.cf จะเห็นได้ว่าภายในไฟล์คอนฟิกนี้ มีข้อความบรรยายถึงคำสำคัญต่างๆ ไว้โดยละเอียด พร้อมทั้งค่าตัวอย่างที่เข้าใจได้ง่าย เสมือนเป็นเอกสารแนะนำการใช้งานที่สมบูรณ์มากทีเดียว บางดิสทริบิวชั่นจะให้ค่าปรกติที่เหมาะสมแก่การใช้งานไว้ให้แล้ว ซึ่งสะดวกต่อการปรับแก้ไขอย่างรวดเร็ว หรือบางดิสทริบิวชั่นจะแยกส่วนของการกำหนดค่าไปไว้ที่บรรทัดสุดท้ายของไฟล์นี้เพื่อให้สามารถดัดแปลงแก้ไขได้ง่ายเช่นกัน แต่ผู้ใช้จะต้องอาศัยการสังเกตในจุดนี้ให้ดีด้วย มิฉะนั้นการคอนฟิกค่าในบรรทัดต้นๆ จะไม่มีผลต่อค่าปรกติที่ทางดิสทริบิวชั่นได้กำหนดไว้ให้ที่บรรทัดสุดท้าย ซึ่งจะทำให้เสียเวลาค้นหาข้อบกพร่องได้ นอกจากการแก้ไขไฟล์คอนฟิกนี้โดยตรงแล้ว คำสั่ง postconf ยังเป็นอีกทางเลือกหนึ่งที่ใช้กำหนดค่าการทำงานของโปรแกรม Postfix ได้เช่นเดียวกัน โดยทั่วไปแล้วในการใช้งานเบื้องต้นคุณต้องการการกำหนดค่าเกี่ยวกับชื่อโฮสต์ ( hostname ) และอินเทอร์เฟส ( network interface ) เป็นอย่างน้อย ค่าพารามิเตอร์ที่สำคัญมีดังนี้
$myhostname
เป็นชื่อโฮสต์ของคุณที่สามารถ resolve ได้โดยสมบูรณ์ หรือ FQDN
$mydomain
โดยปรกติค่านี้จะไม่ได้เซ็ตไว้ ซึ่ง Postfix มักจะตรวจสอบได้เองจาก $myhostname
$mydestination
เป็นการแจ้งให้ Postfix รับรู้ว่าจะต้องทำหน้าที่เป็นปลายทางของอีเมล์แอดเดรสใด
$mynetwork
หมายถึง กลุ่มของหมายเลขไอพีที่ยินยอมให้ออกสู่ภายนอก หรือ Relaying นั่นเอง
$mynetwork_style
ระบุวิธีการแบ่งเซกเมนต์ของเครือข่าย มีค่าปรกติเป็น class หมายถึง IP class A/B/C
Postfix จะอ่านค่าคอนฟิกใหม่อีกครั้งจาก main.cf เมื่อคุณใช้คำสั่ง rcpostfix reload หรือ /etc/init.d/postfix reload เครื่องมือภายใน Postfix นอกจากโปรแกรม Postfix จะมีส่วนของโปรแกรมที่ทำหน้าที่เป็น MTA แล้ว ยังมีโปรแกรมที่เป็นเครื่องมือสนับสนุนการปฏิบัติงานของผู้ดูแลระบบให้มาอีกจำนวนหนึ่ง ในการทำงานทั่วๆไปพอสรุปให้เห็นภาพรวมได้ดังนี้ postfix flush : เป็นการเร่งรัดให้ Postfix จัดส่งอีเมล์ที่ตกค้างอยู่ภายในออกไปทันที
mailq : แสดงรายการเมสเสจที่ตกค้างอยู่ใน mail queue
postconf parameter : แสดงค่าปัจจุบันของพารามิเตอร์
postconf -e "parameter=value" : กำหนดค่าให้แก่พารามิเตอร์ในไฟล์ main.cf วิธีการเช่นนี้เหมาะแก่การคอนฟิก Postfix ผ่านเชล์สคริปต์หรือโปรแกรมแอปพลิเคชั่นอื่นๆ
postconf -n : แสดงค่าพารามิเตอร์ใน main.cf ที่ไม่ได้เป็นค่าปรกติ ( default ) มีประโยชน์ในการค้นหาข้อผิดพลาด
postsuper -r : กระทำการ "requeue" กับทุกๆ เมสเสจ ซึ่งจะนำเมสเสจกลับเข้าไปยัง queue ทำการ resolve DNS ใหม่อีกครั้ง และตรวจสอบเรื่องการ alias ใหม่ทั้งหมด
postmap file : ใช้แปลง lookup table ไปเป็นรูปแบบของ Database ของ Postfix
ทำงานร่วมกับระบบป้องกันสแปมและไวรัส เรื่องของสแปมและไวรัสล้วนเป็นสิ่งไม่พึงประสงค์ในระบบเมล์ของเรา โปรแกรม Postfix มีคุณสมบัติที่มีความยืดหยุ่นสูงจึงทำให้สามารถทำงานร่วมกับโปรแกรม SpamAssassin หรือโปรแกรมประเภท Anti-Virus ทั่วไปได้หลากหลายรูปแบบ เช่น หากทำงานร่วมกับโปรแกรมป้องกันไวรัส Amavis จะมีลักษณะการเชื่อมต่อกันดังรูปที่ 3

รูปที่ 3 แสดงการกรองอีเมล์ด้วยโปรแกรมภายนอก
หลังจากติดตั้งแพคเกจของ Amavis โปรแกรม daemon ของ Amavis จะทำงานในฉากหลังของระบบ และเปิดพอร์ตหมายเลข 10024 ขึ้นคล้ายกับเป็นโปรแกรมประเภท SMTP ขนาดเล็ก และจะคอยแสกนไวรัสและกรองสแปมจากอีเมล์ที่เข้ามาทางพอร์ตนี้ ถ้าหากไม่พบความผิดปรกติใดๆ ในอีเมล์ Amavis จะส่งอีเมล์นั้นกลับไปทางพอร์ตหมายเลข 10025 เพื่อส่งกลับไปยัง Postfix อีกครั้งหนึ่ง แต่ถ้ามีความผิดปรกติใดๆ ในอีเมล์ Amavis จะปฏิบัติตามเงื่อนไขที่กำหนดไว้ เช่น ส่งอีเมล์ไปแยกเก็บไว้ ( Quarantine ) หรือลบทิ้งไป หรือเพิ่มข้อความลงในอีเมล์ฉบับนั้นๆ เพื่อเตือนยูสเซอร์ ซึ่งคุณสามารถตรวจดูการทำงานได้จาก Log file ของ Amavis เช่น ที่ /var/spool/amavis เป็นต้น ในการที่จะให้ Postfix มีการทำงานดังกล่าวมานี้ จะประกอบไปด้วย 3 ขั้นตอน คือ
  1. กำหนดค่าใน main.cf เพื่อให้ Postfix ส่งอีเมล์ออกทางพอร์ต 10024 โดยใช้พารามิเตอร์
    content_filter=[127.0.0.1]:10024
  2. กำหนดค่าใน master.cf เพื่อให้ Postfix รับอีเมล์กลับเข้ามาทางพอร์ต 10025 โดยเมื่อรับกลับเข้ามาแล้วจะต้องไม่ส่งย้อนกลับไปยัง Amavis อีกครั้ง มิฉะนั้นจะเกิดอาการ mail loop ขึ้นได้ ค่าที่เพื่อขึ้นมีตัวอย่างดังนี้
    localhost:10025 inet n - n - - smtpd -o content_filter=
  3. สั่งให้ Postfix เริ่มต้นทำงานใหม่อีกครั้ง
เพิ่มความปลอดภัยด้วย SMTP Auth หากรูปแบบการเชื่อมต่อเมล์เซิร์ฟเวอร์ขององค์กรจำเป็นต้องสัมผัสกับเครือข่ายอินเตอร์เน็ตหรือเครือข่ายภายนอกโดยตรง และจะต้องจัดให้มีบริการ Relaying หรือรับส่งอีเมล์กับโดเมนอื่นๆ ย่อมทำให้มีความเสี่ยงต่อการถูกบุคคลภายนอกเข้ามาใช้เป็นฐานในการส่งสแปมเมล์ ในลักษณะเช่นนี้การตรวจสอบสิทธิ์ของผู้ใช้งานหรือ SMTP Authentication จะเป็นสิ่งที่ต้องการเพิ่มขึ้นในระบบ สำหรับ Postfix สามารถเปิดใช้คุณสมบัติเช่นนี้ได้ โดยสนับสนุนรหัสผ่านทั้งในแบบ Plain text และแบบเข้ารหัส DIGEST-MD5 ซึ่งอาจจะไม่จำเป็นก็ได้หากการล๊อกอินนี้กระทำบนระบบสื่อสารที่มีการเข้ารหัสไว้แล้วบนช่องทางสื่อสารที่ปลอดภัย เช่น SSL/TLS connection ส่วนระบบบัญชีรายชื่อผู้ใช้ หรือ User Management จะอาศัยการทำงานร่วมกับแพคเกจ Cyrus SASL ซึ่ง Postfix จะเข้าถึงรายชื่อเหล่านี้ผ่านไฟล์ /etc/sasldb2 คุณสามารถเพิ่มรายชื่อผู้ใช้ได้ด้วยโปรแกรมชื่อ saslpasswd2 และเรียกดูรายชื่อได้ด้วยคำสั่ง sasldblistusers2 ซึ่งระบบรายชื่อนี้ยังสามารถจัดการได้ในลักษณะ multiple hosts / multiple domains อีกด้วย นั่นหมายถึง สนับสนุนระบบ Virtual Domain อยู่ในตัวเองแล้ว จัดเก็บอีเมล์แบบ Mbox หรือ Maildir ก็ได้ การจัดเก็บอีเมล์แต่ละฉบับในเมล์เซิร์ฟเวอร์จะแบ่งออกได้ 2 ลักษณะคือ แบบ Mbox จะจัดเก็บอีเมล์ทุกฉบับสำหรับแต่ละยูสเซอร์ไว้ในไฟล์ขนาดใหญ่เพียงไฟล์เดียว เช่น ที่ /var/spool/mail/tuxpower หมายถึง ไฟล์ tuxpower เป็นกล่องจดหมายของยูสเซอร์ชื่อ tuxpower ถ้าหากในระบบมียูสเซอร์จำนวน 100 คน ก็จะมีไฟล์ภายในไดเร็คทอรี่ /var/spool/mail จำนวน 100 ไฟล์เช่นกัน โดยแต่ละไฟล์จะมีขนาดใหญ่หรือเล็กขึ้นอยู่กับจำนวนอีเมล์ที่ยูสเซอร์นั้นเก็บไว้ ลักษณะการจัดเก็บแบบ Mbox นี้ดูธรรมดาและทำงานได้ดีกับโปรแกรม MUA ( Mail User Agent ) ทั่วไป แต่จะใช้เวลาค่อนข้างมากกับการแยกแยะอีเมล์แต่ละฉบับและการลบอีเมล์ออกจากไฟล์ Mbox ขนาดใหญ่นี้ แบบ Maildir จะจัดเก็บอีเมล์แต่ละฉบับในไฟล์เพียงไฟล์เดียว และสร้างไดเร็คทอรี่ขึ้นสำหรับแต่ละยูสเซอร์ เช่น /var/mail/tuxpower/… ข้อดีของการจัดเก็บเช่นนี้คือโครงสร้างมีความยืดหยุ่นกว่า สามารถทำงานร่วมกับ IMAP Folder ได้เป็นอย่างดี โดยโครงสร้างของ IMAP Folder จะปรากฏอยู่ภายใต้ไดเร็คทอรี่ Maildir นี้ และสามารถจัดเรียงอีเมล์ได้ง่ายอีกด้วย

รูปที่ 4 เปรียบเทียบลักษณะการจัดเก็บอีเมล์
Postfix ใช้พารามิเตอร์ mail_spool_directory ในการกำหนดรูปแบบการจัดเก็บอีเมล์ทั้งสองลักษณะดังกล่าว โดยถ้าหากชื่อของพาธลงท้ายด้วยเครื่องหมายแสลช ( " / " ) จะหมายถึงใช้รูปแบบการจัดเก็บแบบ Maildir เช่น
mail_spool_directory = /var/mail/
ในทางตรงกันข้าม หากชื่อของพาธเป็นชื่อของไดเร็คทอรี่ที่ไม่ได้ลงท้ายด้วยเครื่องหมายแสลช จะหมายถึงใช้รูปแบบการจัดเก็บแบบ Mbox ซึ่งเป็นค่าปรกติของ Postfix และมีความเข้ากันได้กับโปรแกรม Sendmail
mail_spool_directory = /var/mail
หากต้องการใช้งานรูปแบบการจัดเก็บอีเมล์แบบ Maildir จะต้องคำนึงถึงการเข้าถึงอีเมล์โดยโปรแกรม MUA ต่างๆ ด้วย ซึ่งจะต้องใช้โปรแกรมประเภท POP/IMAP Server ที่สนับสนุนการทำงานในแบบ Maildir ด้วยเช่นกัน ใช้ Postfix ให้คุ้มค่า ความสามารถของ Postfix ที่ได้กล่าวมานี้เป็นเพียงส่วนน้อยเท่านั้นจากคุณสมบัติมากมายที่มีอยู่ นอกเหนือจากคุณสมบัติจากตัวซอฟต์แวร์แล้ว การจัดวางด้านเครือข่ายการเชื่อมต่อ การวางระบบ และการนำเครื่องมือต่างๆ มาใช้สนับสนุนล้วนเป็นปัจจัยที่ช่วยเสริมให้ระบบเมล์เซิร์ฟเวอร์มีความสมบูรณ์และปลอดภัยมากยิ่งขึ้น แต่เหนือสิ่งอื่นใดก็คือตัวผู้บริหารจัดการระบบนั่นเองที่จะต้องศึกษา เลือกสรร ออกแบบ และบำรุงรักษาระบบด้วยตนเอง คุณค่าของซอฟต์แวร์เหล่านี้จึงจะสามารถก่อให้เกิดคุณประโยชน์แก่องค์กรของเราได้เป็นผลสำเร็จตามที่วัตถุประสงค์ที่ตั้งไว้