การติดตั้ง mail + imap/pop3 server ด้วยโปรแกรม Postfix + Dovecot


เป็นคำแนะนำติดตั้งโปรแกรม postfix เพื่อทำเป็น mail server
ต้นแบบทดสอบด้วย linux fedora core 4,3,2,1 ใช้งานภายในมหาวิทยาลัยสงขลานครินทร์

วิธีติดตั้ง postfix

  1. เลือกใช้ postfix แทน sendmail เนื่องจาก
    • สามารถทำความเข้าใจแฟ้ม configuration ได้ง่ายกว่า sendmail ที่อ่านไม่รู้เรื่อง แล้วต้อง compile ด้วย
    • ติดตั้งง่าย และใช้คำสั่งทำงานทดแทน sendmail ได้
    • เร็วกว่า sendmail

  2. ข้อกำหนดสภาพแวดล้อมของระบบ
    • ถ้าเป็น fedora core 1,2,3 ต้องติดตั้งโปรแกรม apt-get แล้ว
    • ทดสอบกับลินุกซ์ fedora core 1
    • ติดตั้งบน host ชื่อ myhost.domain หมายเลข IP 192.168.7.19
    • ต้องเป็น host ที่มีชื่อปรากฎอยู่ใน DNS แล้วจึงจะรับอีเมล์ได้
    • หากยังไม่ใช้ apt-get สามารถติดตั้งด้วย rpm มีขั้นตอนใกล้เคียงกัน

  3. ตรวจสอบว่าเคยติดตั้ง sendmail แล้วหรือไม่ด้วยคำสั่ง rpm -qa | grep sendmail
    ถ้ามีโปรแกรม sendmail ติดตั้งอยู่ให้หยุดการทำงานของ sendmail ด้วยคำสั่ง
    /etc/init.d/sendmail stop

  4. ติดตั้ง postfix ด้วยคำสั่ง
    apt-get install postfix

    ถ้ามีโปรแกรม sendmail ในถอนออก
    ด้วยคำสั่ง apt-get remove sendmail

    ในกรณีที่ใช้ yum ให้เปลี่ยนคำว่า apt-get เป็น yum ดังตัวอย่าง
    yum install postfix
    ถ้ามีโปรแกรม sendmail ในถอนออก
    ด้วยคำสั่ง yum remove sendmail

  5. แฟ้มสำคัญสำหรับการปรับแต่งระบบคือ
    1. /etc/postfix/main.cf
    2. /etc/postfix/master.cf
    3. /etc/postfix/alias.cf
    4. /etc/postfix/virtual.cf

  6. คำสั่งต่างๆที่ควบคุมการทำงานของ postfix
    • ทำงานด้วยเริ่มคำสั่ง /etc/init.d/postfix start
    • ยกเลิกการทำงานด้วยคำสั่ง /etc/init.d/postfix stop
    • ตรวจสอบสถานะการทำงานด้วยคำสั่ง /etc/init.d/postfix status
    • สั่งให้อ่าน configuration หลังปรับแต่งแฟ้ม /etc/postfix/main.cf ด้วยคำสั่ง /etc/init.d/postfix reload
    • สั่งให้เริ่มทำงานระบบซ้ำใหม่ด้วยคำสั่ง /etc/init.d/postfix restart

  7. สั่งให้ postfix ทำงานด้วยคำสั่ง /etc/init.d/postfix start ได้ผลตัวอย่าง
    Starting postfix:                                           [  OK  ]

    แล้วตรวจสอบสถานะการทำงานด้วยคำสั่ง /etc/init.d/postfix status ได้ผลตัวอย่าง
    master (pid 4537) is running...

  8. แก้ไขให้ทำงานทุกครั้งที่บูทเครื่อง
    chkconfig postfix on

  9. ทดสอบการส่งอีเมล์บน mail server ตัวนี้โดยป้อนคำสั่งคุยกับ mail server โดยตรงดังนี้
    ป้อนคำสั่ง telnet localhost 25 ได้ผลตัวอย่าง
    Trying 127.0.0.1...
    Connected to localhost.
    Escape character is '^]'.
    220 rd9.psu.ac.th ESMTP Postfix
    ให้ป้อนคำว่า quit ได้ผลคืนกลับมาที่ prompt
    quit
    221 Bye
    Connection closed by foreign host.

  10. ทดสอบส่งอีเมล์ด้วยคำสั่งตัวอย่าง
    echo "hello" | mail -s test2 [email protected]
    ตรวจสอบผลงานว่าได้รับอีเมล์ฉบับที่ส่งคือ
    ถึง [email protected] หัวข้อ test2 ข้อความว่า hello

  11. ถ้าไม่มีการแก้ไขข้อมูล default จะส่งอีเมล์ได้แต่รับอีเมล์ไม่ได้ ลองดูได้ดังนี้
    ทดสอบการส่งอีเมล์บน mail server ตัวนี้โดยป้อนคำสั่งคุยกับ mail server โดยตรงดังนี้
    ป้อนคำสั่ง telnet myhost.domain 25 ได้ผลตัวอย่าง
    Trying 192.168.7.19...
    telnet: connect to address 192.168.7.19: Connection refused
    ไม่ต้องตกใจ เพราะไม่ได้ตั้งค่าไว้ให้รับ mail

  12. หากต้องการให้รับ mail ได้ ต้องเป็น host ที่มีชื่อปรากฎอยู่ใน DNS เท่านั้น
    แล้วให้แก้ไขแฟ้ม /etc/postfix/main.cf ที่บรรทัดข้อความว่า
    inet_interfaces = localhost เปลี่ยนให้เป็นว่า inet_interfaces = all
    แล้วสั่งให้ postfix ทำงานระบบใหม่ด้วยคำสั่ง /etc/init.d/postfix restart
    ทดสอบการส่งอีเมล์บน mail server ตัวนี้โดยป้อนคำสั่งคุยกับ mail server โดยตรงดังนี้
    ป้อนคำสั่ง telnet myhost.domain 25 ได้ผลตัวอย่าง
    Connected to myhost.domain.
    Escape character is '^]'.
    220 myhost.domain ESMTP Postfix
    ให้ป้อนคำว่า quit ได้ผลคืนกลับมาที่ prompt
    quit
    221 Bye
    Connection closed by foreign host.
    แสดงว่าใช้ได้ ให้ลองทดสอบส่งอีเมล์มาจากเครื่องอื่นมาให้ [email protected]
    ตรวจสอบว่าระบบได้รับอีเมล์ฉบับที่ส่ง
    ดูจากข้อความด้านท้ายของแฟ้ม /var/spool/mail/postfix
    จะมีข้อมูลของอีเมล์ฉบับที่ส่งมาให้
    การที่อีเมล์ไปอยู่ที่แฟ้ม /var/spool/mail/postfix
    เนื่องจาก default ของระบบกำหนดให้อีเมล์ของ root ถูกส่งไปที่ postfix แทน

  13. ถ้าต้องการดูข้อมูลที่ตั้งค่าไว้ในแฟ้ม /etc/main.cf ให้ใช้คำสั่งดังนี้
    postconf -n
    หากไม่ได้มีการแสดงค่าที่ต้องการไว้ สามารถดูค่า default ด้วยคำสั่ง
    postconf -d

  14. หากต้องการให้ relay mail ที่ต้องการส่งไปยัง smtp server/gateway อื่น
    ให้แก้ไขแฟ้ม /etc/postfix/main.cf ที่ตัวแปร relayhost
    ตัวอย่างเช่น relayhost = gateway.my.domain

  15. การสร้างอีเมล์แบบ  virtual  host  โดยอีเมล์นั้นไม่จำเป็นต้องมี account อยู่บนเครื่องนั้น
    ตัวอย่างคือต้องการอีเมล์ทุกฉบับที่ส่งถึงชื่อ [email protected]
    ให้ถูกส่งต่อไปยังอีเมล์ปลายทางชื่อ [email protected]
    โดยใช้กับ postfix mail server เดิมที่มีอยู่แล้วคือ yourhost.domain
    ให้ทำดังนี้คือ

    • แก้ไขให้ DNS มีข้อมูล myvirtual.domain ให้มี A record ที่มี ip address เดียวกับ yourhost.domain

    • แก้ไขแฟ้ม /etc/postfix/main.cf ให้มีบรรทัดว่า
      virtual_alias_domains = myvirtual.domain
      virtual_alias_maps = hash:/etc/postfix/virtual

      แล้วสั่งให้ postfix ทำการ reload ข้อมูลใหม่
      /etc/init.d/postfix reload

    • แก้ไขแฟ้ม /etc/postfix/virtual ให้ข้อมูลการ forward อีเมล์ตามต้องการ ตัวอย่างนี้ให้มีบรรทัดว่า
      [email protected]            [email protected]

      แล้วสั่งให้ postfix ปรับปรุงฐานข้อมูลใหม่
      /usr/sbin/postmap /etc/postfix/virtual

  16. ระบบ mail server ที่แนะนำไว้ข้างบน เป็นการจัด mailbox แบบ unix ดั้งเดิม
    โดย mailbox ของแต่ละ user ถูกแยกเก็บเป็นแฟ้มข้อมูลแบบข้อความที่ /var/spool/mail
    เหมาะสมกับระบบที่มี user จำนวนไม่มากประมาณไม่เกิน 1,000 ราย

  17. หากต้องการอ่าน mailbox ด้วยโปรโตคอลแบบ imap หรือ pop3
    ต้องติดตั้งโปรแกรม imap server เพิ่มเติมเช่นโปรแกรม uw-imap หรือ dovecot หรือ cyrus-imapd เป็นต้น
    ขอแนะนำให้ใช้ dovecot เพราะสะดวกในการใช้ และ dovecot สามารถทดแทน uw-imap ได้
    fedora core 1 มีโปรแกรม uw-imap แต่ไม่มี dovecot ติดมา
    fedora core 2,3,4 มีโปรแกรม dovecot แต่ไม่มี uw-imap ติดมา
    ส่วนโปรแกรม cyrus-imapd ใช้งานยาก
    ควรใช้กับผู้ใช้ขนาดจำนวนหลักเกิน 1 หมื่นคน
    ซึ่งมีโปรแกรมติดมากับ fedora core 2 อยู่แล้ว

  18. การติดตั้ง imap แบบของ dovecot ให้ทำดังนี้
    apt-get install dovecot

    ในกรณีที่ใช้ yum ให้เปลี่ยนคำว่า apt-get เป็น yum ดังตัวอย่าง
    yum install dovecot

    แก้ไขให้ทำงานทุกครั้งที่บูทเครื่อง
    chkconfig dovecot on

    แก้ไขแฟ้ม /etc/dovecot.conf เพื่อเปิดการทำงานของ imap และ pop3
    ที่บรรทัดข้อความจากเดิม protocol = imap impas  ให้เป็น
    protocol = imap imaps pop3 pop3s

    สั่งให้ dovecot ทำงานใหม่ด้วยคำสั่ง
    /etc/init.d/dovecot reload

    ทดสอบการทำงานด้วยคำสั่ง  telnet 192.168.7.19 imap ถ้าได้ผลทำนองนี้แสดงว่าใช้งานได้
    Trying 192.168.7.19...
    Connected to 192.168.7.19.
    Escape character is '^]'.
    * OK dovecot ready.
    ถ้าไม่มีบรรทัดข้อความว่า OK แสดงว่าเกิดข้อผิดพลาดในการติดตั้ง

  19. การติดตั้ง imap แบบของ uw-imap ให้ทำดังนี้
    apt-get install imap
    ... ได้ผล ....
    Preparing...                ########################################### [100%]
       1:imap                   ########################################### [100%]
    Done.
    แก้ไขแฟ้ม /etc/xinetd.d/imap เพื่อเปิดการทำงานของ imap
    ที่บรรทัดข้อความจากเดิม disable = yes ให้เป็น disable = no
    สั่งให้ xinetd ทำงานใหม่ด้วยคำสั่ง
    /etc/init.d/xinetd reload
    ทดสอบการทำงานด้วยคำสั่ง  telnet 192.168.7.19 imap ถ้าได้ผลทำนองนี้แสดงว่าใช้งานได้
    Trying 192.168.7.19...
    Connected to 192.168.7.19.
    Escape character is '^]'.
    * OK [CAPABILITY IMAP4REV1 LOGIN-REFERRALS STARTTLS AUTH=LOGIN] 192.168.7.19 IMAP4rev1 2003.338rh at Sun, 11 Jul 2004 20:50:42 +0700 (ICT)
    ถ้าไม่มีบรรทัดข้อความว่า OK แสดงว่าเกิดข้อผิดพลาดในการติดตั้ง

  20. การติดตั้ง imap แบบของ cyrus-imap ให้ทำดังนี้
    apt-get install cyrus-imapd
    ... ได้ผล ....
     1:cyrus-imapd            ########################################### [100%]
    Done
    ให้ปรับปรุงระบบดังต่อไปนี้
    • แก้ไขแฟ้ม /etc/sysconfig/saslauthd ให้เลือกใช้ PAM ที่บรรทัดข้อความ
      MECH=pam
    • กำหนดให้ saslauthd ทำงานทุกครั้งที่บูทเครื่อง ด้วยคำสั่ง
      chkconfig saslauthd on
    • แก้ไขแฟ้ม /etc/postfix/main.cf ให้เลือกใช้ mailbox แบบ lmtp (cyrus) ทีบรรทัดข้อความ
      mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp
    • แก้ไขแฟ้ม /etc/imap.conf ให้เพิ่มข้อมูลดังนี้
      munge8bit: no
      autocreatequota: 10000
      lmtp_overquota_perm_failure: yes
      createonpost: no
      altnamespace: yes
      unixhierarchysep: yes
    • กำหนดให้ cyrus-imapd ทำงานทุกครั้งที่บูทเครื่อง ด้วยคำสั่ง
      chkconfig cyrus-imapd on
    • สั่งให้ระบบเริ่มทำงานดังนี้
      service saslauthd start
      service cyrus-imapd start
      service postfix restart
    • ทดสอบใช้งานได้เลย

      By... วิภัทร ศรุติพรหม [email protected]

คำสำคัญ (Tags): #imap#mail#pop3
หมายเลขบันทึก: 204854เขียนเมื่อ 1 กันยายน 2008 17:33 น. ()แก้ไขเมื่อ 18 มิถุนายน 2012 13:42 น. ()สัญญาอนุญาต: จำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (1)

ถ้าเป็นระบบ mail dir ต้องทำงัยบ้างครับ คืออยากได้ข้อมูลเกี่ยวกับการทำ maildir (postfix)ครับ

พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท