คู่มือการพัฒนา EAI Mail Server บน CentOS 8

จาก Wiki_EAI
ไปยังการนำทาง ไปยังการค้นหา


EAI Email Server

คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ในรูปแบบรองรับภาษาไทย (EAI) โดยใช้ Software Opensource ในการทดสอบเพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ ซึ่งค่า configure ที่ผู้จัดทำใช้นั้น

Software ที่นำมาทดสอบ:

  1. CentOS8 for Virtualbox [CentOS for VirtualBox]
    • user: root
    • pass: rooteai
  2. VirtualBox [Win] [Mac]
  3. VirtualBox Extension Pack [ดาวน์โหลด]
  4. Filezilla [Win] [Mac]
  5. putty [Win] (เฉพาะเครื่อง windows)
  6. Postfix 3.x [ดาวน์โหลด]
  7. Dovecot 2.x [ดาวน์โหลด]
  8. MariaDB 10.x [ดาวน์โหลด]
  9. Roundcube 1.4.x [ดาวน์โหลด] [tar]
  • ข้อ 1, 2, 3, 4, 5 แนะนำให้ติดตั้งเตรียมไว้ก่อนอบรม

ขั้นตอนการติดตั้ง CentOS8 for Virtualbox

  1. ดาวน์โหลดและติดตั้ง VirtualBox และ VirtualBox Extension Pack
  2. ดาวน์โหลดไฟล์ CentOS8 for Virtualbox (centos-eai-wokshop.ova) ที่จัดเตรียมไว้ให้ตามลิงค์ด้านบน
  3. ดับเบิ้ลคลิ๊กที่ไฟล์ centos-eai-wokshop.ova เพื่อ import เข้าโปรแกรม Virtualbox [1]
  4. หลังจาก import เสร็จเรียบร้อยแล้ว ที่โปรแกรม VirtualBox ให้ดับเบิ้ลคลิ๊กที่ centos-eai-wokshop ด้านซ้ายมือ เพื่อเปิด server
  5. ถ้าพบข้อผิดพลาด "ไม่สามารถเริ่มการทำงานเครื่อง centos-eai-workshop เนื่องจากไม่พบแผงวงจรเครือข่าย"
  6. ให้กด "เปลี่ยนการติดตั้งเครือข่าย" จะขึ้นหน้าเปลี่ยนเครือข่าย ให้กด "ตกลง" [2]
  7. เมื่อเปิดเครื่องได้แล้ว ให้ login ด้วย user, pass ที่เตรียมไว้ให้ข้างต้น และใช้คำสั่ง "ifconfig" เพื่อตรวจสอบ IP ของเครื่อง [3]
  8. ให้จด IP นี้ไว้ใช้สำหรับ ssh เข้าเครื่อง Server ของเราในการทำงาน workshop (*แต่ละเครื่องจะได้ IP แตกต่างกัน)

(สำหรับเครื่อง mac ต้อง allow ให้ virtualbox ทำงานได้ตามนี้ [4])

หมายเหตุ

คู่มือนี้ไม่ได้อธิบายถึงการติดตั้ง Centos 8
Postfix ต้องเป็น Version 3.x.x ขึ้นไป จะรองรับ EAI
หากจะนำไปใช้งานจริงจะต้องจดทะเบียนโดเมน และมี dns server ด้วย

การติดตั้ง EAI Email Server

ตั้งค่า hostname

1. อัพเดตแพคเกจของ mail serverให้เป็นเวอร์ชั่นล่าสุด ด้วยคำสั่ง

# yum -y update

2. กำหนดชื่อ hostname ในตัวอย่างนี้กำหนดชื่อว่า mail.eai.in.th ด้วยคำสั่ง

# hostnamectl set-hostname mail.eai.in.th

3. เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts

# vi /etc/hosts

ตัวอย่างไฟล์ hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 mail.eai.in.th
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 mail.eai.in.th

*ระวัง envelopment ของทาง partner ว่าติดตั้ง centos ในรูปแบบใดมาให้ (อาจจะต้องติดตั้ง service เพิ่ม หากติดตั้งมาแบบ minimal เช่นใช้คำสั่ง vi ไม่ได้)

4. ติดตั้ง wget เพื่อใช้ดาวน์โหลดซอฟแวร์ที่จำเป็นต้องใช้งานเพิ่ม

# yum -y install wget

5. ติดตั้ง telnet เพื่อทดสอบการทำงานของ email server

# yum -y install telnet

ตั้งค่า firewall

1. ตรวจสอบสถานะ firewalld service บน mail server

  • ต้องมีสถานะ active (running)
# systemctl status firewalld

ตัวอย่าง

Active: active (running) since Mon 2019-11-18 14:12:03 +07; 1h 13min ago

2. ตรวจสอบ firewall zone และ network interface ที่เปิดอยู่

# firewall-cmd --get-active-zones

ตัวอย่าง

public
interfaces: ens32

3. ตรวจสอบรายการ services ของ firewall ที่เปิดอยู่ที่ zone public

# firewall-cmd --zone=public --list-services

ตัวอย่าง

 cockpit dhcpv6-client ssh 

4. เปิด firewall services ที่ zone public ของ mail server (สามารถเปิดเท่าต้องการได้)

# firewall-cmd --permanent --zone=public --add-service={http,https,mysql,smtp,smtps,imap,imaps}
# firewall-cmd --reload

5. ตรวจสอบรายการ services ของ firewall ที่เปิดอยู่ที่ zone public อีกครั้ง จะพบ services เปิดเพิ่มขึ้นมา

*ref: configure firewall services for mail server (https://spalinux.com/2015/06/centos-7-basic-configure-firewall-by-firewall-cmd)

# firewall-cmd --zone=public --list-services

ตัวอย่าง

 cockpit dhcpv6-client http https imap imaps mysql smtp smtps ssh  

6. ในตัวอย่างนี้เราแนะนำให้ปิดการทำงานของ SELinux เพื่อความสะดวกในการตั้งค่า (ไม่แนะนำให้ทำกับเครื่อง production)

  • เปลี่ยน SELinux=enforcing เป็น SELinux=disabled
# vi /etc/selinux/config

ตัวอย่าง

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#       targeted - Targeted processes are protected,
#       mls - Multi Level Security protection.
SELINUXTYPE=targeted

7. ตรวจสอบสถานะ SELinux อีกครั้ง

  • สั่ง restart server และทำการตรวจสอบ
# reboot
# sestatus

ตัวอย่าง

 disabled