วิธีการลบ mailman archives

เมื่อต้องการลบ archives ของ mailing list (mailman) ให้ทำดังนี้

cat /dev/null > archives/private/listname.mbox/listname.mbox
bin/arch --wipe listname

ควรทำการ backup listname.mbox ไว้ป้องกันความผิดพลาดด้วยครับ 😉

การย้าย Mailman: ติดตั้งโดยใช้ rpm package(ภาค 2)

สืบต่อจากเรื่อง การย้าย Mailman และปรับแต่งให้รองรับภาษาไทย ก่อนหน้านี้  วันนี้ระบบ mailing list มีปัญหาหลังจากการ upgrade OS โดยอีเมลอะไรก็ตามที่ส่งเข้า mailing list จะหายสาบสูญไปเลย โดยไม่มีอีเมลแจ้งบอกทั้งผู้ส่งและ moderator

ผมตรวจสอบดูแล้วก็หาสาเหตุไม่พบ และได้ลองทำการติดตั้งใหม่อีกครั้ง ปัญหาก็ยังไม่หายไป  ก็เลยตัดสินใจใช้ rpm package ติดตั้ง ด้วยคำสั่ง

# yum install mailman

หลังจากติดตั้งแล้วพบว่า โครงสร้างไดเรกทอรีของ mailman กระจายอยู่ตามที่ต่างๆ ได้แก่

  • /usr/lib/mailman เก็บตัวโปรแกรมหลักและไฟล์ที่ใช้ปรับแต่งระบบ
  • /var/lib/mailman เก็บข้อมูลของ mailing list ต่างๆ
  • /etc/mailman เก็บไฟล์ aliases ของ mailing list ต่างๆ
เมื่อโครงสร้างเปลี่ยนไปทำให้ต้องมีการตามปรับค่า config ต่างๆ ใหม่ไปด้วย
สำหรับวิธีการเพิ่มภาษาไทยนั้น ก็ยังจำเป็นจะต้องแก้ไขไฟล์ /usr/lib/mailman/Mailman/Defaults.py เช่นเดิม โดยให้เพิ่มบรรทัดต่อไปนี้ ที่กลุ่มคำสั่งเพิ่มภาษาต่างๆ  ซึ่งจะอยู่ที่บริเวณท้ายสุดของไฟล์
add_language('th',    _('Thai'),    'tis-620')
หลังจากนั้นแก้ไขไฟล์ /usr/lib/mailman/Mailman/mm_cfg.py ดังนี้
DEFAULT_URL_HOST   = 'list.domain.com' //ปรับแก้ไขค่าเดิม
DEFAULT_EMAIL_HOST = 'list.domain.com' //ปรับแก้ไขค่าเดิม
DEFAULT_CHARSET = 'tis-620' //พิมพ์เพิ่มเติม VERBATIM_ENCODING = ['tis-620'] //พิมพ์เพิ่มเติม DEFAULT_SERVER_LANGUAGE = 'th' //พิมพ์เพิ่มเติม

และเนื่องจาก alias ไฟล์ของ mailman อยู่ที่ /etc/mailman/aliases และ /etc/mailman/aliases จึงต้องแก้ไขไฟล์ /etc/postfix/main.cf ด้วย

alias_maps = hash:/etc/aliases, hash:/etc/mailman/aliases alias_database = hash:/etc/aliases, hash:/etc/mailman/aliases

หลังจากนั้นก็ทำการย้ายข้อมูลเดิมไปไว้ที่ /var/lib/mailman/archives, /var/lib/mailman/data และ /var/lib/mailman/lists ตามลำดับ แล้วก็ต้องตรวจสอบค่า permission โดยใช้คำสั่ง

/usr/lib/mailman/bin/check_perm -f

สิ่งที่สำคัญอีกประการหนึ่งคืออย่าลืมตรวจสอบว่า  mailman service  ได้ทำงานแล้วหรือไม่  และควรกำหนดให้เริ่มทำงานโดยอัตโนมัติทุกครั้งด้วย

ท้ายที่สุดก็จะต้องปรับแต่งค่าในไฟล์ /etc/httpd/conf.d/mailman.conf ให้เหมาะสมด้วยครับ

การย้าย Mailman และปรับแต่งให้รองรับภาษาไทย

Mailman เป็น mailing list ที่มีระบบบริหารจัดการสมาชิกผ่านทางเว็บเพจ  ระบบตรวจสอบอีเมลเข้ามาใน list  ระบบ archive และอื่นๆ อีกมากมาย  (อ่านเพิ่มเติมที่นี่)  

วิธีการติดตั้งเองมีความยุ่งยากในระดับหนึ่ง เพราะต้องวุ่นวายกับสิทธิ์การเข้าถึงไฟล์ต่างๆ  แต่ผู้พัฒนาได้เขียนวิธีการติดตั้งไว้ค่อนข้างละเอียด  เพียงทำตามไปทีละขั้นตอนก็สามารถติดตั้งใช้งานได้

สำหรับเรื่องภาษาไทยนั้น  ก่อนหน้านี้ในเวอร์ชัน 2.1.x จะไม่สามารถส่งภาษาไทยได้  เพราะเมื่อส่งอีเมลที่มีภาษาไทยปนอยู่ด้วยแล้ว  อีเมลนั้นจะหายเงียบไปเลย  แต่ในเวอร์ชัน 2.1.9 ขณะที่เขียนเรื่องนี้สามารถส่งอีเมลเป็นภาษาไทยได้แล้ว

สำหรับโจทย์ที่ผมเจอก็คือ ผมจำเป็นต้องย้าย mailig list ไปไว้ที่เซิร์ฟเวอร์เครื่องใหม่  ซึ่งวิธีการที่ผมดำเนินการมีดังนี้

  1. ติดตั้ง Mailman ในเซิร์ฟเวอร์ใหม่ตามปกติ  พร้อมทดสอบว่าใช้งานได้จริง
    ผมใช้คำสั่ง configuration ดังนี้

    ./configure --prefix=/home/mailman 
    --with-mail-gid=mailman 
    --with-cgi-gid=apache 
    --with-mailhost=hostname.com 
    --with-urlhost=hostname.com
  2. ทำการคัดลอกไฟล์และไดเรอทอรีทั้งหมด ที่อยู่ในไดเรกทอรี archives, data และ list จากเซิร์ฟเวอร์เก่า มายังเซิร์ฟเวอร์เครื่องใหม่
  3. คัดลอก custom configuration ภายในไฟล์ mm_cfg.py มาไว้ที่เครื่องใหม่
  4. ทดสอบเรียกใช้งาน mailman 

สำหรับวิธีการเพิ่มภาษาไทยนั้น จำเป็นจะต้องแก้ไขไฟล์ Defaults.py  โดยให้เพิ่มบรรทัดต่อไปนี้ ที่กลุ่มคำสั่งเพิ่มภาษาต่างๆ  ซึ่งจะอยู่ที่บริเวณท้ายสุดของไฟล์

add_language('th',    _('Thai'),    'tis-620')

หรือจะใช้ utf-8 แทน tis-620 ก็น่าจะได้เช่นกัน  และในไฟล์ mm_cfg.py ให้เพิ่มบรรทัดต่อไปนี้ด้วย

DEFAULT_CHARSET = 'tis-620'
VERBATIM_ENCODING = ['tis-620']
DEFAULT_SERVER_LANGUAGE = 'th'

เท่านี้ก็จะมี option ภาษาไทยให้เลือกใช้ในส่วนของ Language option ครับ