วิธีติดตั้งระบบ Cyrus IMAP Cluster (Cyrus Murder)

ต่อจาก
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 )

  1. ติดตั้ง cyrus-murder ด้วยคำสั่ง
    sudo apt install cyrus-murder cyrus-common sasl2-bin

    ระบบจะติดตั้งตั้งโปรแกรมที่เกี่ยวข้อง รวมถึง postfix ด้วย ให้เลือกเป็น No configuration ไป

  2. แก้ไขไฟล์ /etc/cyrus.conf ใน Section “SERVICES” ประมาณบรรทัดที่ 62 ให้ uncomment เพื่อได้บรรทัดนี้
    mupdate       cmd="mupdate -m" listen=3905 prefork=1

    จุดสำคัญคือ mupdate -m คือ ตัวที่จะบอกว่า ทำหน้าที่เป็น MUPDATE Master

  3. แก้ไขไฟล์ /etc/imapd.conf เพื่อกำหนด admins ในที่นี้ให้ใช้ชื่อ cyrus โดยการ uncomment ประมาณบรรทัดที่ 55
    และแก้ sasl_pwcheck_method เป็น saslauthd

    sasl_pwcheck_method: saslauthd
    sasl_mech_list: PLAIN
    admins: cyrus
  4. จากนั้น start ระบบขึ้นมา จะพบว่ามีการเปิด port 3905 รออยู่
    sudo /etc/init.d/cyrus-imapd start
    netstat -nl | grep 3905
  5. แก้ไขไฟล์ /etc/default/saslauthd บรรทัดที่ 7
    START=yes

    แล้ว start saslauthd

    sudo /etc/init.d/saslauthd start

BACKEND ( backend01.example.com)

  1. ติดตั้ง
    sudo apt install cyrus-imapd cyrus-common cyrus-clients sasl2-bin
  2. แก้ไขไฟล์ /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>
    
  3. แก้ไข /etc/cyrus.conf
    ใน START section ให้ uncomment

    mupdatepush cmd="/usr/sbin/cyrus ctl_mboxlist -m"
  4. เพิ่มส่วนนี้ ท้ายไฟล์ /etc/services ด้วย
    #MUPDATE
    mupdate 3905/tcp # MUPDATE
    mupdate 3905/udp # MUPDATE
  5. *** ติดตั้ง 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
  6. แก้ไขไฟล์ /etc/default/saslauthd บรรทัดที่ 7
    START=yes

    แล้ว start saslauthd

    sudo /etc/init.d/saslauthd start

FRONTEND ( frontend01.example.com )

  1. ติดตั้ง
    sudo apt install cyrus-imapd cyrus-common cyrus-clients sasl2-bin
  2. แก้ไขไฟล์ /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
    
  3. แก้ไข /etc/cyrus.conf
    ใน SERVICE section ให้ uncomment

    mupdate cmd="mupdate" listen=3905 prefork=1
  4. เพิ่มส่วนนี้ ท้ายไฟล์ /etc/services ด้วย
    #MUPDATE
    mupdate 3905/tcp # MUPDATE
    mupdate 3905/udp # MUPDATE
  5. แก้ไขไฟล์ /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 ไปให้เหมือนกันทุกเครื่อง

หวังว่าจะเป็นประโยชน์