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

ด้วยเหตุผลหลายประการ ไม่ว่าจะเป็นเรื่องการจัดการ การคอนฟิกง่าย ความเร็ว เรื่องความปลอดภัย ทำให้ผู้ใช้หลายคนเลือกที่จะติดตั้งและใช้งานโปรแกรม Mail Server ที่ชื่อ Postfix ทั้งที่ดีฟอลต์ของ Linux หรือ UNIX ส่วนใหญ่จะติดตั้งโปรแกรม sendmail มาให้แล้ว

บทความนี้จะเป็นตอนแรก แสดงวิธีการติดตั้ง postfix บน Fedora 14 (x86_64) เพื่อนำไปคอนฟิกและใช้งานเป็น Mail Server ตอนต่อไป

ติดตั้งไฟล์ rpm ของ Postfix

ไฟล์ rpm สำหรับติดตั้งโปรแกรม postfix ไม่มีอยู่ในแผ่นติดตั้ง Fedora 14 ต้องดาวน์โหลดไฟล์เพิ่มเติมเองจาก Fedora 14 Everything (ดูในข้อมูลอ้างอิง)

[root@fc14-64a everything]# rpm -ivh postfix-2.7.1-1.fc14.x86_64.rpm
error: Failed dependencies:
        libmysqlclient.so.16()(64bit) is needed by postfix-2:2.7.1-1.fc14.x86_64
        libmysqlclient.so.16(libmysqlclient_16)(64bit) is needed by postfix-2:2.7.1-1.fc14.x86_64

หากพบ error แบบนี้ ต้องติดตั้ง mysql-libs ก่อน ซึ่งหาได้จากในแผ่นติดตั้ง Fedora 14

[root@fc14-64a Packages]# rpm -ivh mysql-libs-5.1.51-2.fc14.x86_64.rpm
Preparing...                ########################################### [100%]
   1:mysql-libs             ########################################### [100%]

แล้วลองติดตั้ง postfix อีกครั้ง

[root@fc14-64a everything]# rpm -ivh postfix-2.7.1-1.fc14.x86_64.rpm
Preparing...                ########################################### [100%]
   1:postfix                ########################################### [100%]

เปลี่ยนคอนฟิก alternatives

โปรแกรม Mail Server ที่ติดตั้งมาโดยดีฟอลต์กับ Fedora คือ sendmail ต้องปิดเซอร์วิสของ sendmail ก่อน ด้วยคำสั่ง service

[root@fc14-64a ~]# service sendmail stop
Shutting down sm-client:                                   [  OK  ]
Shutting down sendmail:                                    [  OK  ]

ใช้คำสั่ง chkconfig เพื่อปิดไม่ให้รันเซอร์วิส sendmail ตอนบู๊ตเครื่อง

[root@fc14-64a ~]# chkconfig sendmail off

คุณสมบัติ alternative ช่วยอำนวยความสะดวกผู้ใช้งาน เมื่อมีการเปลี่ยนโปรแกรมประเภท Mail Server คือจะมีการสร้าง soft link จำลองไปยังโปรแกรมที่เปลี่ยนไป โดยที่ผู้ใช้งานยังเรียกคำสั่ง หรือ path หรือกระทั่ง man page ในการเรียกยังเหมือนเดิม เช่นยังคงใช้คำสั่ง mailq เหมือนเดิมแม้ว่าจะเปลี่ยนจาก sendmail ไปเป็น postfix แล้ว

[root@fc14-64a ~]# ls -l /usr/bin/mailq
lrwxrwxrwx 1 root root 27 Dec 11 18:18 /usr/bin/mailq -> /etc/alternatives/mta-mailq

ก่อนเปลี่ยน soft link ต่างๆ จะถูกโยงไปยังโปรแกรมของ sendmail

[root@fc14-64a ~]# cd /etc/alternatives/
[root@fc14-64a alternatives]# ls -l
total 0
lrwxrwxrwx. 1 root root 15 Nov  4 22:51 ld -> /usr/bin/ld.bfd
lrwxrwxrwx  1 root root 27 Dec 11 18:09 mta -> /usr/sbin/sendmail.sendmail
lrwxrwxrwx  1 root root 41 Dec 11 18:09 mta-aliasesman -> /usr/share/man/man5/aliases.sendmail.5.gz
lrwxrwxrwx  1 root root 23 Dec 11 18:09 mta-mailq -> /usr/bin/mailq.sendmail
lrwxrwxrwx  1 root root 39 Dec 11 18:09 mta-mailqman -> /usr/share/man/man1/mailq.sendmail.1.gz
lrwxrwxrwx  1 root root 28 Dec 11 18:09 mta-newaliases -> /usr/bin/newaliases.sendmail
lrwxrwxrwx  1 root root 44 Dec 11 18:09 mta-newaliasesman -> /usr/share/man/man1/newaliases.sendmail.1.gz
lrwxrwxrwx  1 root root 24 Dec 11 18:09 mta-pam -> /etc/pam.d/smtp.sendmail
lrwxrwxrwx  1 root root 23 Dec 11 18:09 mta-rmail -> /usr/bin/rmail.sendmail
lrwxrwxrwx  1 root root 26 Dec 11 18:09 mta-sendmail -> /usr/lib/sendmail.sendmail
lrwxrwxrwx  1 root root 42 Dec 11 18:09 mta-sendmailman -> /usr/share/man/man8/sendmail.sendmail.8.gz
lrwxrwxrwx. 1 root root 33 Nov  4 22:53 xinputrc -> /etc/X11/xinit/xinput.d/ibus.conf

ใช้คำสั่ง alternatives เพื่อเปลี่ยน soft link ของคำสั่งเกี่ยวกับ Mail Server

[root@fc14-64a alternatives]# alternatives --config mta
There are 2 programs which provide 'mta'.
  Selection    Command
-----------------------------------------------
*+ 1           /usr/sbin/sendmail.sendmail
   2           /usr/sbin/sendmail.postfix
Enter to keep the current selection[+], or type selection number: 2

ใส่ค่าเลข 2 เพื่อเปลี่ยนจาก sendmail เป็น postfix

ตรวจสอบ soft link อีกครั้ง จะเห็นว่า soft link ต่างๆ ถูกโยงใหม่ไปยังโปรแกรม postfix แล้ว

[root@fc14-64a alternatives]# ls -l
total 0
lrwxrwxrwx. 1 root root 15 Nov  4 22:51 ld -> /usr/bin/ld.bfd
lrwxrwxrwx  1 root root 26 Dec 11 18:18 mta -> /usr/sbin/sendmail.postfix
lrwxrwxrwx  1 root root 40 Dec 11 18:18 mta-aliasesman -> /usr/share/man/man5/aliases.postfix.5.gz
lrwxrwxrwx  1 root root 22 Dec 11 18:18 mta-mailq -> /usr/bin/mailq.postfix
lrwxrwxrwx  1 root root 38 Dec 11 18:18 mta-mailqman -> /usr/share/man/man1/mailq.postfix.1.gz
lrwxrwxrwx  1 root root 27 Dec 11 18:18 mta-newaliases -> /usr/bin/newaliases.postfix
lrwxrwxrwx  1 root root 43 Dec 11 18:18 mta-newaliasesman -> /usr/share/man/man1/newaliases.postfix.1.gz
lrwxrwxrwx  1 root root 23 Dec 11 18:18 mta-pam -> /etc/pam.d/smtp.postfix
lrwxrwxrwx  1 root root 22 Dec 11 18:18 mta-rmail -> /usr/bin/rmail.postfix
lrwxrwxrwx  1 root root 25 Dec 11 18:18 mta-sendmail -> /usr/lib/sendmail.postfix
lrwxrwxrwx  1 root root 41 Dec 11 18:18 mta-sendmailman -> /usr/share/man/man1/sendmail.postfix.1.gz
lrwxrwxrwx. 1 root root 33 Nov  4 22:53 xinputrc -> /etc/X11/xinit/xinput.d/ibus.conf

รันเซอร์วิส postfix

[root@fc14-64a ~]# service postfix start
Starting postfix:                                          [  OK  ]

หากรันได้สำเร็จ ใช้คำสั่ง ps เพื่อดูโปรเซสของ postfix จะขึ้นตามนี้

[root@fc14-64a ~]# ps -ef | grep postfix
root      1784     1  0 18:22 ?        00:00:00 /usr/libexec/postfix/master
postfix   1786  1784  0 18:22 ?        00:00:00 pickup -l -t fifo -u
postfix   1787  1784  0 18:22 ?        00:00:00 qmgr -l -t fifo -u

ใช้คำสั่ง chkconfig เพื่อให้รันเซอร์วิส postfix ตอนบู๊ตเครื่อง

[root@fc14-64a ~]# chkconfig postfix on

ทดสอบส่ง mail ในเครื่องเซิร์ฟเวอร์เอง

ในการทดสอบ ใช้คำสั่ง useradd เพื่อเพิ่ม user1 และ user2

[root@fc14-64a ~]# useradd user1
[root@fc14-64a ~]# id user1
uid=501(user1) gid=501(user1) groups=501(user1)
[root@fc14-64a ~]# useradd user2
[root@fc14-64a ~]# id user2
uid=502(user2) gid=502(user2) groups=502(user2)

สามารถใช้คำสั่ง mail เพื่อทดลองส่ง mail และอ่าน mail แบบง่ายๆ ได้ หากต้องการส่งก็พิมพ์คำสั่ง mail แล้วตามด้วย email address ปลายทาง หรือถ้าอยู่บนเครื่องเดียวกันก็ตามด้วยชื่อ username อย่างเดียวก็ได้

หลังจากพิมพ์คำสั่ง mail แล้วกด [enter] หน้าจอจะขึ้น Subject: เพื่อให้ใส่ข้อความสำหรับใช้เป็น Subject ของ mail แล้วกด [enter] จากนั้นจะเป็นเนื้อหาของ mail ที่พิมพ์ไปได้เรื่อยๆ

หากต้องการจบในส่วนเนื้อหาของ mail ให้กด [enter] ครั้งนึง แล้วพิมพ์เครื่องหมายจุด “.” ตัวเดียวแล้ว [enter] อีกครั้ง จะเป็นการสิ้นสุดการใช้คำสั่งเพื่อส่ง mail

ล็อกอินด้วย user1 เพื่อส่ง mail ไปหา user2

[root@fc14-64a ~]# su - user1
[user1@fc14-64a ~]$ mail user2
Subject: test send mail using postfix #1
testing
.
EOT
[user1@fc14-64a ~]$

ล็อกอินด้วย user2 เพื่ออ่าน mail

พิมพ์คำสั่ง mail โดยไม่ต้องตามด้วยอะไร เพื่ออ่าน mail ของ user ที่พิมพ์คำสั่ง หน้าจอจะขึ้นรายการ mail ขึ้นมา พร้อมตัวเลขกำกับ พิมพ์ตัวเลขของ mail ที่ต้องการอ่าน ก็จะขึ้น

เนื้อหาของ mail ฉบับนั้นๆ พร้อมด้วย mail header

พิมพ์อักษร “q” เพื่อออกจากคำสั่ง mail ในโหมดการอ่าน

[root@fc14-64a ~]# su - 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  Sat Dec 11 18:30  18/629   "test send mail using postfix #1"
& 1
Message  1:
From user1@fc14-64a.spalinux.com  Sat Dec 11 18:30:28 2010
Return-Path: <user1@fc14-64a.spalinux.com>
X-Original-To: user2
Delivered-To: user2@fc14-64a.spalinux.com
Date: Sat, 11 Dec 2010 18:30:28 +0700
To: user2@fc14-64a.spalinux.com
Subject: test send mail using postfix #1
User-Agent: Heirloom mailx 12.4 7/29/08
Content-Type: text/plain; charset=us-ascii
From: user1@fc14-64a.spalinux.com
Status: R
testing
& q
Held 1 message in /var/spool/mail/user2
[user2@fc14-64a ~]$

รายละเอียดการส่ง mail พร้อม error ที่เกิดขึ้นกับโปรแกรมประเภท Mail Server จะถูกเก็บไว้ในไฟล์ /var/log/maillog ซึ่งสามารถนำมาใช้ในการแก้ปัญหาได้

ตัวอย่างของไฟล์ /var/log/maillog ที่เกิดขึ้น สำหรับการส่ง mail จาก user1 ไปยัง user2

[root@fc14-64a ~]# tail /var/log/maillog
Dec 11 18:30:28 fc14-64a postfix/pickup[1786]: 3F5237385: uid=501 from=<user1>
Dec 11 18:30:28 fc14-64a postfix/cleanup[1839]: 3F5237385: message-id=<20101211113028.3F5237385@fc14-64a.spalinux.com>
Dec 11 18:30:28 fc14-64a postfix/qmgr[1787]: 3F5237385: from=<user1@fc14-64a.spalinux.com>, size=476, nrcpt=1 (queue active)
Dec 11 18:30:28 fc14-64a postfix/local[1841]: 3F5237385: to=<user2@fc14-64a.spalinux.com>, orig_to=<user2>, relay=local, delay=0.09, delays=0.04/0.05/0/0, dsn=2.0.0,status=sent (delivered to mailbox)
Dec 11 18:30:28 fc14-64a postfix/qmgr[1787]: 3F5237385: removed

ข้อมูลอ้างอิง

Leave a Reply

Your email address will not be published.