จากเนื้อหาตอนที่แล้ว ติดตั้ง postfix บน Fedora 14 ตอนที่ 1 ในตอนที่ 2 นี้ จะแนะนำคอนฟิกพื้นฐานของ postfix ที่น่าจะเปลี่ยนเป็นอย่างน้อย เพื่อให้สามารถรันเป็นเมล์เซิร์ฟเวอร์ได้ โดยจะแสดงให้เห็นถึงความแตกต่างก่อนการเปลี่ยน และหลังการเปลี่ยนคอนฟิก
ไฟล์คอนฟิกหลักของ postfix คือไฟล์ /etc/postfix/main.cf ในแต่ละส่วนจะบอกถึงออปชั่นในการแก้ไขคอนฟิกให้ได้ตามต้องการ
การแก้ไขไฟล์คอนฟิกทุกครั้ง ต้องมีการรีโหลด (reload) เซอร์วิส เพื่อให้คอนฟิกใหม่มีผล ยกเว้นบางคอนฟิกต้อง รีสตาร์ต (restart) เซอร์วิส postfix หลังจากการเปลี่ยน
ตัวอย่างการใช้คำสั่ง service เพื่อรีโหลดเซอร์วิส postfix
[root@fc14-64a ~]# service postfix reload Shutting down postfix: [ OK ] Starting postfix: [ OK ]
คอนฟิก inet_interfaces
เนื่องด้วยความปลอดภัย ดีฟอลต์คอนฟิกจากการติดตั้ง จะอนุญาตให้เฉพาะตัวเครื่องเซิร์ฟเวอร์เอง (localhost) เท่านั้นที่สามารถส่งเมล์ได้ (SMTP)
คอนฟิกก่อนเปลี่ยน
inet_interfaces = localhost
ใช้คำสั่ง netstat เพื่อแสดงการเปิดพอร์ต TCP 25 (SMTP)
[root@fc14-64a ~]# netstat -an | grep 25 tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
จะเห็นว่าพอร์ต 25 รองรับจาก 127.0.0.1 (localhost) เท่านั้น
ใช้คำสั่ง telnet เพื่อทดสอบ TCP connection เข้าพอร์ค 25 ทาง localhost
[root@fc14-64a ~]# telnet 127.0.0.1 25 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 fc14-64a.spalinux.com ESMTP Postfix QUIT 221 2.0.0 Bye Connection closed by foreign host.
หมายเหตุ ใช้คำสั่ง QUIT เพื่อออกจากการ telnet เข้าพอร์ต
แต่ถ้าใช้คำสั่ง telnet จากเครื่องอื่น เข้าพอร์ต 25
[root@client ~]$ telnet 192.168.1.1 25 Trying 192.168.1.1... telnet: connect to address 192.168.1.1: Connection refused
หากต้องการให้เครื่องอื่นสามารถส่งเมล์โดยใช้เครื่องเซิร์ฟเวอร์นี้เป็น SMTP ต้องเปลี่ยนคอนฟิก
เปลี่ยนคอนฟิก “inet_interfaces” เป็น “all”
inet_interfaces = all
หลังจากเปลี่ยนคอนฟิก ลองรีโหลดเซอร์วิส
[root@fc14-64a ~]# service postfix reload Reloading postfix: [ OK ]
ใช้คำสั่ง netstat เพื่อตรวจสอบพอร์ต 25 ที่เปิดอีกครั้ง ยังเหมือนเดิม
[root@fc14-64a ~]# netstat -an | grep 25 tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
สำหรับคอนฟิก inet_interfaces ต้องรีสตาร์ต service เท่านั้น
[root@fc14-64a ~]# service postfix restart Shutting down postfix: [ OK ] Starting postfix: [ OK ]
[root@fc14-64a ~]# netstat -an | grep 25 tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
คอนฟิก mynetworks
หลังจากแก้คอนฟิก “inet_interfaces” แล้ว โดยดีฟอลต์ จะอนุญาตให้ส่ง mail จากเครื่องที่อยู่ subnet เดียวกับเซิร์ฟเวอร์เท่านั้น เช่น สมมติว่าเซิรฟ์เวอร์ IP คือ 192.168.1.1/24
เครื่องที่สามารถส่งเมล์เข้าเซิร์ฟเวอร์นี้ได้นอกจากเครื่องเซิร์ฟเวอร์เองคือ เครื่องที่มี IP อยู่ใน subnet 192.168.1.0/24
แนะนำให้เซ็ทค่าคอนฟิก “mynetworks_style” เป็น “subnet” แล้วระบุ “mynetworks” ที่อนุญาตเพิ่มเติมให้สามารถส่งเมล์ได้ เช่น อนุญาตให้จากเครื่อง 192.168.2.0/24 และ 192.168.3.0/24
mynetworks_style = subnet mynetworks = 192.168.2.0/24, 192.168.3.0/24
คอนฟิก mydestination
โดยดีฟอลต์ postfix จะรับเมล์ที่ส่งมาโดยระบุโดเมนเป็นชื่อ localhost หรือชื่อเครื่อง (hostname) เท่านั้น
[root@fc14-64a ~]# hostname fc14-64a.spalinux.com
คอนฟิกดีฟอลต์
mydestination = $myhostname, localhost.$mydomain, localhost
หากต้องการให้รับเมล์ที่ส่งมาเป็นโดเมนอื่นด้วยเช่น เป็นแบบ MX record ต้องแก้ไขคอนฟิกเป็น
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
รีโหลดเซอร์วิสหลังจากแก้ไขคอนฟิก
[root@fc14-64a ~]# service postfix reload Reloading postfix: [ OK ]
ทดสอบส่งเมล์โดยระบุอีเมล์เป็นโดเมน
[user1@fc14-64a ~]$ mail user2@spalinux.com Subject: test sending to mx domain test . EOT
ล็อกด้วย user2 แล้วอ่านเมล์
[user2@fc14-64a ~]$ mail
Heirloom Mail version 12.4 7/29/08. Type ? for help.
"/var/spool/mail/user2": 1 message 1 new
>N 1 user1@fc14-64a.spali Fri Dec 31 14:20 18/617 "test sending to mx domain"
& 1
Message 1:
From user1@fc14-64a.spalinux.com Fri Dec 31 14:20:10 2010
Return-Path: <user1@fc14-64a.spalinux.com>
X-Original-To: user2@spalinux.com
Delivered-To: user2@spalinux.com
Date: Fri, 31 Dec 2010 14:20:10 +0700
To: user2@spalinux.com
Subject: test sending to mx domain
User-Agent: Heirloom mailx 12.4 7/29/08
Content-Type: text/plain; charset=us-ascii
From: user1@fc14-64a.spalinux.com
Status: R
test
& exit
คอนฟิก myorigin
โดยดีฟอลต์หากไม่ได้ตั้งค่าอีเมล์แอดเดรสของผู้ส่ง โปรแกรม postfix จะสร้างชื่ออีเมล์แอดเดรสให้โดยอัตโนมัติ คือนำชื่อ user มาต่อท้ายด้วยชื่อ hostname ของเครื่อง ถ้าต้องการตั้งค่าดีฟอลต์เป็นแบบอื่น เช่นที่นิยมกันคือตามด้วยชื่อโดเมน MX record สามาถทำได้โดยแก้ไขคอนฟิก myorigin
คอนฟิกก่อนการเปลี่ยน
#myorigin = $myhostname
หลังการเปลี่ยน
myorigin = $mydomain
หลังการแก้ไข ทดสอบส่งเมล์จาก user1
[user1@fc14-64a ~]$ mail user2@spalinux.com Subject: test config myorigin test . EOT
ล็อกเป็น user2 แล้วอ่านเมล์
[user2@fc14-64a ~]$ mail Heirloom Mail version 12.4 7/29/08. Type ? for help. "/var/spool/mail/user2": 1 message 1 unread >U 1 user1@spalinux.com Fri Dec 31 14:28 19/595 "test config myorigin" & 1 Message 1: From user1@spalinux.com Fri Dec 31 14:28:19 2010 Return-Path: <user1@spalinux.com> X-Original-To: user2@spalinux.com Delivered-To: user2@spalinux.com Date: Fri, 31 Dec 2010 14:28:19 +0700 To: user2@spalinux.com Subject: test config myorigin User-Agent: Heirloom mailx 12.4 7/29/08 Content-Type: text/plain; charset=us-ascii From: user1@spalinux.com Status: RO
test
& exit
สังเกตว่า เมล์แอดเดรสที่ขึ้นใน From จะเปลี่ยนจาก hostname “fc14-64a.spalinux.com” เป็น domain “spalinux.com”