Postfix-Fedora
วิธีติดตั้ง Postfix Mail Server บน Linux Fedora Core 3.
เลือกใช้ postfix แทน sendmail เนื่องจาก
สามารถทำความเข้าใจแฟ้ม configuration ได้ง่ายกว่า sendmail ที่อ่านไม่รู้เรื่อง แล้วต้อง compile ด้วย
ติดตั้งง่าย และใช้คำสั่งทำงานทดแทน sendmail ได้
เร็วกว่า sendmail
ข้อกำหนดสภาพแวดล้อมของระบบ
ติดตั้งโปรแกรม apt-get แล้ว
ทดสอบกับลินุกซ์ fedora core 1
ติดตั้งบน host ชื่อ myhost.domain หมายเลข IP 192.168.7.19
ต้องเป็น host ที่มีชื่อปรากฎอยู่ใน DNS แล้วจึงจะรับอีเมล์ได้
หากยังไม่ใช้ apt-get สามารถติดตั้งด้วย rpm มีขั้นตอนใกล้เคียงกัน
ตรวจสอบว่าเคยติดตั้ง sendmail แล้วหรือไม่ด้วยคำสั่ง rpm -qa | grep sendmail
ถ้ามีโปรแกรม sendmail ติดตั้งอยู่ให้หยุดการทำงานของ sendmail ด้วยคำสั่ง
/etc/init.d/sendmail stop
ติดตั้ง postfix ด้วยคำสั่ง apt-get install postfix
......ได้ผล....
Preparing... ########################################### [100%]
1:postfix ########################################### [100%]
Done.
ถ้ามีโปรแกรม sendmail ในถอนออกด้วยคำสั่ง apt-get remove sendmail
แฟ้มสำคัญสำหรับการปรับแต่งระบบคือ
/etc/postfix/main.cf
/etc/postfix/master.cf
/etc/postfix/alias.cf
/etc/postfix/virtual.cf
คำสั่งต่างๆที่ควบคุมการทำงานของ postfix
ทำงานด้วยเริ่มคำสั่ง /etc/init.d/postfix start
ยกเลิกการทำงานด้วยคำสั่ง /etc/init.d/postfix stop
ตรวจสอบสถานะการทำงานด้วยคำสั่ง /etc/init.d/postfix status
สั่งให้อ่าน configuration หลังปรับแต่งแฟ้ม /etc/postfix/main.cf ด้วยคำสั่ง /etc/init.d/postfix reload
สั่งให้เริ่มทำงานระบบซ้ำใหม่ด้วยคำสั่ง /etc/init.d/postfix restart
สั่งให้ postfix ทำงานด้วยคำสั่ง /etc/init.d/postfix start ได้ผลตัวอย่าง
Starting postfix: [ OK ]
แล้วตรวจสอบสถานะการทำงานด้วยคำสั่ง /etc/init.d/postfix status ได้ผลตัวอย่าง
master (pid 4537) is running...
ทดสอบการส่งอีเมล์บน mail server ตัวนี้โดยป้อนคำสั่งคุยกับ mail server โดยตรงดังนี้
ป้อนคำสั่ง telnet localhost 25 ได้ผลตัวอย่าง
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 rd9.psu.ac.th ESMTP Postfix
ให้ป้อนคำว่า quit ได้ผลคืนกลับมาที่ prompt
quit
221 Bye
Connection closed by foreign host.
ทดสอบส่งอีเมล์ด้วยคำสั่งตัวอย่าง
echo "hello" | mail -s test2 your_email_address@yourhost.domain
ตรวจสอบผลงานว่าได้รับอีเมล์ฉบับที่ส่งคือ
ถึง your_email_address@yourhost.domain หัวข้อ test2 ข้อความว่า hello
ถ้าไม่มีการแก้ไขข้อมูล default จะส่งอีเมล์ได้แต่รับอีเมล์ไม่ได้ ลองดูได้ดังนี้
ทดสอบการส่งอีเมล์บน mail server ตัวนี้โดยป้อนคำสั่งคุยกับ mail server โดยตรงดังนี้
ป้อนคำสั่ง telnet myhost.domain 25 ได้ผลตัวอย่าง
Trying 192.168.7.19...
telnet: connect to address 192.168.7.19: Connection refused
ไม่ต้องตกใจ เพราะไม่ได้ตั้งค่าไว้ให้รับ mail
หากต้องการให้รับ mail ได้ ต้องเป็น host ที่มีชื่อปรากฎอยู่ใน DNS เท่านั้น
แล้วให้แก้ไขแฟ้ม /etc/postfix/main.cf ที่บรรทัดข้อความว่า
inet_interfaces = localhost เปลี่ยนให้เป็นว่า inet_interfaces = all
แล้วสั่งให้ postfix ทำงานระบบใหม่ด้วยคำสั่ง /etc/init.d/postfix restart
ทดสอบการส่งอีเมล์บน mail server ตัวนี้โดยป้อนคำสั่งคุยกับ mail server โดยตรงดังนี้
ป้อนคำสั่ง telnet myhost.domain 25 ได้ผลตัวอย่าง
Connected to myhost.domain.
Escape character is '^]'.
220 myhost.domain ESMTP Postfix
ให้ป้อนคำว่า quit ได้ผลคืนกลับมาที่ prompt
quit
221 Bye
Connection closed by foreign host.
แสดงว่าใช้ได้ ให้ลองทดสอบส่งอีเมล์มาจากเครื่องอื่นมาให้ root@myhost.domain
ตรวจสอบว่าระบบได้รับอีเมล์ฉบับที่ส่ง
ดูจากข้อความด้านท้ายของแฟ้ม /var/spool/mail/postfix
จะมีข้อมูลของอีเมล์ฉบับที่ส่งมาให้
การที่อีเมล์ไปอยู่ที่แฟ้ม /var/spool/mail/postfix
เนื่องจาก default ของระบบกำหนดให้อีเมล์ของ root ถูกส่งไปที่ postfix แทน
ถ้าต้องการดูข้อมูลที่ตั้งค่าไว้ในแฟ้ม /etc/main.cf ให้ใช้คำสั่งดังนี้
postconf -n
หากไม่ได้มีการแสดงค่าที่ต้องการไว้ สามารถดูค่า default ด้วยคำสั่ง
postconf -d
ระบบ mail server ที่แนะนำไว้ข้างบน เป็นการจัด mailbox แบบ unix ดั้งเดิม
โดย mailbox ของแต่ละ user ถูกแยกเก็บเป็นแฟ้มข้อมูลแบบข้อความที่ /var/spool/mail
เหมาะสมกับระบบที่มี user จำนวนไม่มากประมาณไม่เกิน 1,000 ราย
หากต้องการอ่าน mailbox ด้วยโปรโตคอลแบบ imap หรือ pop3
ต้องติดตั้งโปรแกรม imap server เพิ่มเติมเช่นโปรแกรม uw-imap หรือ dovecot หรือ cyrus-imapd เป็นต้น
ขอแนะนำให้ใช้ dovecot เพราะสะดวกในการใช้ และ dovecot สามารถทดแทน uw-imap ได้
fedora core 1 มีโปรแกรม uw-imap แต่ไม่มี dovecot ติดมา
fedora core 2 มีโปรแกรม dovecot แต่ไม่มี uw-imap ติดมา
ส่วนโปรแกรม cyrus-imapd ใช้งานยาก
ควรใช้กับผู้ใช้ขนาดจำนวนหลักเกิน 1 หมื่นคน
ซึ่งมีโปรแกรมติดมากับ fedora core 2 อยู่แล้ว
การติดตั้ง imap แบบของ dovecot ให้ทำดังนี้
apt-get install dovecot
... ได้ผล ....
Preparing... ########################################### [100%]
1:dovecot ########################################### [100%]
Done.
แก้ไขแฟ้ม /etc/dovecot.conf เพื่อเปิดการทำงานของ imap และ pop3
ที่บรรทัดข้อความจากเดิม protocol = imap impas ให้เป็น
protocol = imap imaps pop3 pop3s
สั่งให้ dovecot ทำงานใหม่ด้วยคำสั่ง
/etc/init.d/dovecot reload
ทดสอบการทำงานด้วยคำสั่ง telnet 192.168.7.19 imap ถ้าได้ผลทำนองนี้แสดงว่าใช้งานได้
Trying 192.168.7.19...
Connected to 192.168.7.19.
Escape character is '^]'.
* OK dovecot ready.
ถ้าไม่มีบรรทัดข้อความว่า OK แสดงว่าเกิดข้อผิดพลาดในการติดตั้ง
การ switch ระหว่าง sendmail ให้ใช้คำสั่งดังนี้
system-switch-mail หรือ
redhat-switch-mail
แล้วเลือก postfix
การคอนฟิกเพื่อจำกัดการ relay mail ให้ดูในหัวข้อ "TRUST AND RELAY CONTROL" ของไฟล์คอนฟิก /etc/postfix/main.cf
โดยให้กำหนดพารามิเตอร์ของ mynetworks_style ว่ามีค่าเป็น class, subnet หรือ host
โดย ค่า default จะเป็น subnet หมายถึงว่า postfix จะ "trust" SMTP client ที่มี IP อยู่ในเครือข่ายเดียวกับ subnetwork ที่เป็น local machine ซึ่งบน Linux จะทำงานได้ถูกต้องเฉพาะ interfaces ที่ถูกระบุด้วยคำสั่ง ifconfig
การกำหนดค่าเป็น class หมายถึง postfix จะ "trust" SMTP client ที่มี IP อยู่ใน class เดียวกันกับเครือข่ายที่เป็น Local machine
การกำหนดค่าเป็น host หมายถึง postfix จะ "trust" เฉพาะ local machine
การติดตั้ง imap แบบของ uw-imap ให้ทำดังนี้
apt-get install imap
... ได้ผล ....
Preparing... ########################################### [100%]
1:imap ########################################### [100%]
Done.
แก้ไขแฟ้ม /etc/xinetd.d/imap เพื่อเปิดการทำงานของ imap
ที่บรรทัดข้อความจากเดิม disable = yes ให้เป็น disable = no
สั่งให้ xinetd ทำงานใหม่ด้วยคำสั่ง
/etc/init.d/xinetd reload
ทดสอบการทำงานด้วยคำสั่ง telnet 192.168.7.19 imap ถ้าได้ผลทำนองนี้แสดงว่าใช้งานได้
Trying 192.168.7.19...
Connected to 192.168.7.19.
Escape character is '^]'.
* OK [CAPABILITY IMAP4REV1 LOGIN-REFERRALS STARTTLS AUTH=LOGIN] 192.168.7.19 IMAP4rev1 2003.338rh at Sun, 11 Jul 2004 20:50:42 +0700 (ICT)
ถ้าไม่มีบรรทัดข้อความว่า OK แสดงว่าเกิดข้อผิดพลาดในการติดตั้ง
การติดตั้ง imap แบบของ cyrus-imap ให้ทำดังนี้
apt-get install cyrus-imapd
... ได้ผล ....
1:cyrus-imapd ########################################### [100%]
Done
ให้ปรับปรุงระบบดังต่อไปนี้
แก้ไขแฟ้ม /etc/sysconfig/saslauthd ให้เลือกใช้ PAM ที่บรรทัดข้อความ
MECH=pamกำหนดให้ saslauthd ทำงานทุกครั้งที่บูทเครื่อง ด้วยคำสั่ง
chkconfig saslauthd onแก้ไขแฟ้ม /etc/postfix/main.cf ให้เลือกใช้ mailbox แบบ lmtp (cyrus) ทีบรรทัดข้อความ
mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtpแก้ไขแฟ้ม /etc/imap.conf ให้เพิ่มข้อมูลดังนี้
munge8bit: no
autocreatequota: 10000
lmtp_overquota_perm_failure: yes
createonpost: no
altnamespace: yes
unixhierarchysep: yesกำหนดให้ cyrus-imapd ทำงานทุกครั้งที่บูทเครื่อง ด้วยคำสั่ง
chkconfig cyrus-imapd on
สั่งให้ระบบเริ่มทำงานดังนี้
service saslauthd start
service cyrus-imapd start
service postfix restart
ทดสอบใช้งานได้เลย
ที่มา : โดย.. วิภัทร ศรุติพรหม wipats@psu.ac.th

SUSE Linux Enterprise Cool Solutions
|












