ด้วยเหตุผลหลายประการ ไม่ว่าจะเป็นเรื่องการจัดการ การคอนฟิกง่าย ความเร็ว เรื่องความปลอดภัย ทำให้ผู้ใช้หลายคนเลือกที่จะติดตั้งและใช้งานโปรแกรม 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