ติดตั้ง postfix บน Fedora 14 ตอนที่ 2

จากเนื้อหาตอนที่แล้ว ติดตั้ง 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”

Leave a Reply

Your email address will not be published.