ต่อจาก
Mail Clustering with Cyrus Murder และ How Cyrus Murder (Mail Clustering) work?
คราวนี้ มาลง รายละเอียดทีละขั้นตอน
ระบบ Cyrus IMAP Cluster หรือ Cyrus Murder นี้ ประกอบด้วยเครื่องคอมพิวเตอร์ ขั้นต่ำ 3 เครื่อง คือ frontend, backend, mupdate ต่อไปนี้ จะเป็นวิธีการทำ แต่ละเครื่อง
Prerequisite
ทั้งหมดเป็น Ubuntu 16.04 Server, ทำการ update และ upgrade แล้ว และ เข้า SSH ด้วย user ที่สามารถ sudo ได้ และรุ่นของ cyrus-imapd, cyrus-murder ที่ใช้เป็น 2.4.18
ทุกเครื่อง มี user ชื่อ ‘cyrus’ และ ทำการตั้งรหัสผ่านไว้เรียบร้อย
เฉพาะเครื่องที่เป็น Backend จะต้องมี uesr ชื่อ ‘mailproxy’ และทำการตั้งรหัสผ่านไว้เรียบร้อย ด้วยอีก 1 คน
ในที่นี้ จะใช้ pam-ldap ติดตั้งใน Backend ทุกเครื่อง
MUPDATE ( mupdate1.example.com )
- ติดตั้ง cyrus-murder ด้วยคำสั่ง
sudo apt install cyrus-murder cyrus-common sasl2-bin
ระบบจะติดตั้งตั้งโปรแกรมที่เกี่ยวข้อง รวมถึง postfix ด้วย ให้เลือกเป็น No configuration ไป
- แก้ไขไฟล์ /etc/cyrus.conf ใน Section “SERVICES” ประมาณบรรทัดที่ 62 ให้ uncomment เพื่อได้บรรทัดนี้
mupdate cmd="mupdate -m" listen=3905 prefork=1
จุดสำคัญคือ mupdate -m คือ ตัวที่จะบอกว่า ทำหน้าที่เป็น MUPDATE Master
- แก้ไขไฟล์ /etc/imapd.conf เพื่อกำหนด admins ในที่นี้ให้ใช้ชื่อ cyrus โดยการ uncomment ประมาณบรรทัดที่ 55
และแก้ sasl_pwcheck_method เป็น saslauthdsasl_pwcheck_method: saslauthd sasl_mech_list: PLAIN admins: cyrus
- จากนั้น start ระบบขึ้นมา จะพบว่ามีการเปิด port 3905 รออยู่
sudo /etc/init.d/cyrus-imapd start netstat -nl | grep 3905
- แก้ไขไฟล์ /etc/default/saslauthd บรรทัดที่ 7
START=yes
แล้ว start saslauthd
sudo /etc/init.d/saslauthd start
BACKEND ( backend01.example.com)
- ติดตั้ง
sudo apt install cyrus-imapd cyrus-common cyrus-clients sasl2-bin
- แก้ไขไฟล์ /etc/imapd.conf โดยเพิ่มบรรทัดต่อไปนี้ไว้ท้ายไฟล์
#SASL sasl_pwcheck_method: saslauthd sasl_mech_list: PLAIN # MUPDATE servername: backend01.example.com admins: cyrus proxyservers: mailproxy lmtp_admins: mailproxy mupdate_server: mupdate.example.com mupdate_port: 3905 mupdate_username: cyrus mupdate_authname: cyrus mupdate_password: <secret>
- แก้ไข /etc/cyrus.conf
ใน START section ให้ uncommentmupdatepush cmd="/usr/sbin/cyrus ctl_mboxlist -m"
- เพิ่มส่วนนี้ ท้ายไฟล์ /etc/services ด้วย
#MUPDATE mupdate 3905/tcp # MUPDATE mupdate 3905/udp # MUPDATE
- *** ติดตั้ง PAM LDAP
sudo apt-get install ldap-auth-client nscd
ตั้งค่าต่อไปนี้
LDAP server Uniform Resource Identifier: ldap://ldap.your.domain/ Distinguished name of the search base: dc=example,dc=com LDAP version to use: 3 Make local root Database admin: No Does the LDAP database require login? No
ต่อไป สั่งให้ระบบแก้ไขเงื่อนไขการ authen เป็น LDAP
sudo auth-client-config -t nss -p lac_ldap
จากนั้นใช้คำสั่งต่อไปนี้ เพื่อเริ่มใช้งาน PAM LDAP
sudo pam-auth-update
จะมีคำถามว่า
PAM profiles to enable:
ให้เลือกทั้ง
Unix authentication และ
LDAP Authenticationสุดท้าย
sudo /etc/init.d/nscd restart
- แก้ไขไฟล์ /etc/default/saslauthd บรรทัดที่ 7
START=yes
แล้ว start saslauthd
sudo /etc/init.d/saslauthd start
FRONTEND ( frontend01.example.com )
- ติดตั้ง
sudo apt install cyrus-imapd cyrus-common cyrus-clients sasl2-bin
- แก้ไขไฟล์ /etc/imapd.conf โดยเพิ่มบรรทัดต่อไปนี้ไว้ท้ายไฟล์
#SASL sasl_pwcheck_method: saslauthd sasl_mech_list: PLAIN # MUPDATE mupdate_server: mupdate.example.com mupdate_port: 3905 mupdate_username: cyrus mupdate_authname: cyrus mupdate_password: <secret> #PROXY serverlist: backend01.example.com backend01_password: mailproxy proxy_authname: mailproxy
- แก้ไข /etc/cyrus.conf
ใน SERVICE section ให้ uncommentmupdate cmd="mupdate" listen=3905 prefork=1
- เพิ่มส่วนนี้ ท้ายไฟล์ /etc/services ด้วย
#MUPDATE mupdate 3905/tcp # MUPDATE mupdate 3905/udp # MUPDATE
- แก้ไขไฟล์ /etc/default/saslauthd บรรทัดที่ 7
START=yes
แล้ว start saslauthd
sudo /etc/init.d/saslauthd start
และ เมื่อทุกอย่างพร้อม ทุกเครื่องก็
sudo /etc/init.d/cyrus-imapd restart
เมื่อจะเพิ่มเครื่อง Backend ก็ทำตามขั้นตอน แล้ว เพิ่มใน /etc/imapd.conf ของเครื่อง Frontend ในส่วนของ serverlist และ password เช่น
จะเพิ่มเครื่อง backend02.example.com ก็ต้องเพิ่มดังนี้
#PROXY
serverlist: backend01.example.com backend02.example.com
backend01_password: <secret>
backend02_password: <secret>
proxy_authname: mailproxy
เมื่อต้องการเพิ่ม Frontend ก็ให้ Sync ตัวไฟล์ /etc/imapd.conf ไปให้เหมือนกันทุกเครื่อง
หวังว่าจะเป็นประโยชน์