บทความนี้ผมขออธิบายการคอนฟิก postfix เบื้องต้นบน CentOS 6 โดยเริ่มจากคอนฟิกหลังจากการติดตั้ง CentOS 6 เสร็จใหม่ๆ ยังไม่มีการ update โปรแกรมใดๆ ทั้งสิ้น
ทดสอบบน CentOS 6.3 (x86_64) ที่ติดตั้งแบบ Minimal + Base
โดยดีฟอลต์ CentOS 6 จะติดตั้ง postfix เป็นเมล์เซิร์ฟเวอร์
[root@cent6 ~]# rpm -qa | grep postfix postfix-2.6.6-2.2.el6_1.x86_64
แก้ไขคอนฟิกพื้นฐานของ postfix
ไฟล์คอนฟิกหลักของ postfix คือไฟล์ /etc/postfix/main.cf
หลังจากการแก้ไขคอนฟิก ต้องรีสตาร์ตเซอร์วิส postfix เพื่อให้คอนฟิกใหม่มีผล
[root@cent6 ~]# service postfix restart Shutting down postfix: [ OK ] Starting postfix: [ OK ]
ใช้คำสั่ง netstat -an เพื่อดูการเปิดพอร์ต SMTP (TCP 25) ของ postfix จะเห็นว่า ดีฟอลต์คอนฟิกจากการติดตั้ง รับเมล์เฉพาะจากเครื่องเซิร์ฟเวอร์เองเท่านั้น (localhost) ไม่สามารถรับเมล์จากเครื่องอื่น หรือเครื่องอื่นไม่สามารถส่งเมล์เข้าเซิร์ฟเวอร์เครื่องนี้ได้
[root@cent6 ~]# netstat -an | grep 25 tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 ::1:25 :::* LISTEN
แก้ไขคอนฟิกเพื่อรองรับเมล์จากเครื่องอื่นที่ไม่ใช่ localhost (127.0.0.1) ได้
[root@cent6 ~]# cd /etc/postfix/ [root@cent6 postfix]# vi main.cf ... #inet_interfaces = localhost inet_interfaces = all
เมื่อเปิดให้ส่งเมล์เข้ามาจากเครื่องอื่นแล้ว โดยดีฟอลต์ postfix จะสามารถรับเมล์ที่ส่งจากเครื่องที่อยู่ใน subnet เดียวกันกับ ip ของเซิร์ฟเวอร์เท่านั้น
หากต้องแก้ไขคอนฟิกว่าสามารถรับเมล์ที่ส่งมาจากเครื่องที่อยู่ใน subnet ไหนได้บ้าง เช่นอนุญาตให้รับเมล์จาก subnet 192.168.2.0/24 และ 192.168.3.0/24 เพิ่มเติม
#mynetworks_style = class #mynetworks_style = subnet #mynetworks_style = host mynetworks_style = subnet
#mynetworks = 168.100.189.0/28, 127.0.0.0/8 #mynetworks = $config_directory/mynetworks #mynetworks = hash:/etc/postfix/network_table mynetworks = 192.168.2.0/24, 192.168.3.0/24, 127.0.0.0/8
คอนฟิกชื่อโดเมนของเมล์ที่จะรับว่าเป็นของเครื่องเอง ไม่ต้องส่งต่อไปยัง เมล์เซิร์ฟเวอร์เครื่องอื่นต่อไป
#mydestination = $myhostname, localhost.$mydomain, localhost #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, # mail.$mydomain, www.$mydomain, ftp.$mydomain mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
กำหนดว่าเมล์ที่ส่งออกจากเครื่องนี้ จะมีอีเมล์โดเมนเป็นชื่ออะไร
#myorigin = $myhostname #myorigin = $mydomain myorigin = $mydomain
หากต้องการแก้ไขคอนฟิกให้เก็บเมล์ไว้แบบ Maildir ใน home ของ user ต้องคอนฟิกให้สอดคล้องกับโปรแกรมอ่านเมล์ ที่เราจะคอนฟิกต่อไปเช่น dovecot
คอนฟิกดีฟอลต์ คือ Mailbox หมายถึงเก็บไฟล์ mailbox ของ user ในรูปแบบ /var/spool/mail/<username>
แนะนำให้คอนฟิกเป็นแบบ Maildir/
#home_mailbox = Mailbox #home_mailbox = Maildir/ home_mailbox = Maildir/
รีสตาร์ตเซอร์วิส postfix หลังการแก้ไขคอนฟิก
[root@cent6 ~]# service postfix restart Shutting down postfix: [ OK ] Starting postfix: [ OK ]
ใช้คำสั่ง netstat -an ดูพอร์ต 25 หลังแก้ไขคอนฟิก inet_interfaces
root@cent6 ~]# netstat -an | grep 25 tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN tcp 0 0 :::25 :::* LISTEN