ในการใช้ mailman เพื่อการให้บริการ Mailing List หรือ Group Mail นั้น การเปลี่ยนชื่อกลุ่มนั้น ค่อนข้างยุ่งยาก แต่สามารถทำได้ง่ายกว่า โดยการสร้าง List ใหม่แล้ว เอา Config และ Member เดิมมาใส่

ขอยกตัวอย่าง กรณี จะเปลี่ยน group name ของกลุ่มคณะ วจก. ซึ่งเดิมจะขึ้นต้นด้วย mgt-* ให้ไปเป็น fms-*
ก็จะใช้ Shell Script ตามนี้

oldname="mgt"
newname="fms"
owner="admin.name@psx.ac.th"
password="xxxxxx"

for line in $( /usr/lib/mailman/bin/list_lists | grep -i "$oldname-"|awk '{print $1}') ; do
   /usr/lib/mailman/bin/config_list -o $line.txt $line
   /usr/lib/mailman/bin/list_members $line > $line-member.txt
   newgroupname=$newname-$(echo $line | sed -e "s/$oldname-\(.*\)*/\1/i")
   sed -e "s/$oldname-/$newname-/i" $line.txt > $newgroupname.txt
   /usr/lib/mailman/bin/newlist $newgroupname $owner $password
   /usr/lib/mailman/bin/config_list -i $newgroupname.txt $newgroupname
   /usr/lib/mailman/bin/add_members -w n -a n -r $line-member.txt $newgroupname
done

1. เมื่อต้องการทราบว่า ในระบบของ mailman มี List ใดบ้างที่ชื่อขึ้นต้นด้วย “mgt-” บ้าง
ใช้คำสั่ง

/usr/lib/mailman/bin/list_lists | grep -i "mgt-"

2. ซึ่งจะพบว่ามีหลายกลุ่ม ที่มีชื่อขึ้นต้นด้วย “mgt-“, ก็สามารถใช้ Shell Script เพื่อ เอาผลลัพธ์ จากคำสั่งดังกล่าว มาทำงานร่วมกับคำสั่ง ต่อไปนี้ เพื่อเก็บ Config ของกลุ่มนั้นๆ ออกมาเป็นไฟล์ (สมมุติว่า ชื่อกลุ่มคือ mgt-xxx ก็นำออกมาเป็นไฟล์ชื่อ mtg-xxx.txt)

/usr/lib/mailman/bin/config_list -o mgt-xxxx.txt mgt-xxx

3.ต่อไป วิธีการดูว่า แต่ละกลุ่ม มีใครเป็นสมาชิกบ้าง แล้วนำออกมาเป็นไฟล์ (สมมุติว่า ชื่อกลุ่มคือ mgt-xxx ก็นำออกมาเป็นไฟล์ชื่อ mtg-xxx-member.txt)

/usr/lib/mailman/bin/list_members mgt-xxx > mgt-xxx-member.txt

จะได้ไฟล์ชื่อเดียวกับชื่อกลุ่ม แต่จะลงท้ายด้วยคำว่า -member.txt

4, ในการเปลี่ยนชื่อกลุ่ม จะเปลี่ยนจาก mgt-xxxx มาเป็น fms-xxxx วิธีการที่จะได้คำว่า xxxx ที่ต่อท้าย mgt-xxxx นั้น ใช้คำสั่งต่อไปนี้

echo "mgt-xxxx" | sed -e "s/mgt-\(.*\)*/\1/i"

คำสั่ง sed นั้นมี option “-e” คือการสั่งให้ execute คำสั่งที่ตามมา
ส่วน  “s/mgt-\(.*\)*/\1/i” นั้น จะมีโครงสร้างคือ

s/pattern/replace/i

s : หมายถึง substitute คือ แทนที
pattern: ที่เขียนว่า mgt-\(.*\)* หมายความว่า เมื่อเจอรูปแบบ mgt-xxxx ก็จะเอา xxxx มาเก็บไว้ในตัวแปร
replace: ที่เขียนว่า \1 ก็คือเอาค่าจากตัวแปรใน pattern \(.*\) นั่นก็คือ xxxx
i: ตัวสุดท้ายหมายถึง Case-Insensitive หรือ ไม่สนใจตัวเลขตัวใหญ่

5. ต่อไป เป็นสร้าง List ใหม่ ใช่คำสั่งว่า

/usr/lib/mailman/bin/newlist fms-xxxx admin.name@psx.ac.th xxxxxx

คือ สร้างกลุ่มใหม่ชื่อ fms-xxxx โดยให้ owner เป็น admin.name@psx.ac.th และใช้พาสเวิร์ดเป็น xxxxxx

6. ปรับ config ของกลุ่มใหม่นี้ ให้เป็นตามกลุ่มเดิม

 /usr/lib/mailman/bin/config_list -i fms-xxxx.txt fms-xxxx

โดยนำ config จากไฟล์ fms-xxxx.txt มาปรับใช้กับกลุ่มชื่อ fms-xxxx

7. สุดท้าย นำสมาชิกจากกลุ่มเดิม เข้าสู่กลุ่มใหม่

/usr/lib/mailman/bin/add_members -w n -a n -r mgt-xxxx-member.txt fms-xxxx

โดย option แต่ละตัวหมายถึง
-w n : ไม่ต้องแจ้งผู้ใช้ว่าถูกเพิ่มเข้ากลุ่ม
-a n : ไม่ต้องแจ้ง owner

และนำข้อมูลสมาชิกจากไฟล์ mgt-xxxx-member.txt เข้ากลุ่ม fms-xxxx

Share the Post:

Related Posts

ทำความรู้จักกับ Outlook บนเว็บ

Post Views: 5 Outlook เป็นเครื่องมือจัดการอีเมลและปฏิทินที่ทรงพลัง ซึ่งช่วยให้คุณมีระเบียบและเพิ่มความสามารถในการทำงาน ด้วยอินเทอร์เฟซที่ใช้งานง่าย คุณสามารถจัดการกล่องขาเข้าของคุณ นัดหมาย และทำงานร่วมกับเพื่อนร่วมงานได้อย่างง่ายดาย ฟีเจอร์ที่แข็งแกร่งของ Outlook รวมถึงแม่แบบอีเมลที่ปรับแต่งได้ ความสามารถในการค้นหาขั้นสูง และการผสานรวมที่ไร้รอยต่อกับแอปพลิเคชัน Microsoft Office อื่นๆ ไม่ว่าคุณจะเป็นมืออาชีพที่ยุ่งอยู่หรือเป็นนักเรียนที่ต้องจัดการกับภารกิจหลายอย่าง Outlook

Read More

[บันทึกกันลืม] JupyterHub Authenticated with OIDC

Post Views: 36 ต่อจากตอนที่แล้ว [บันทึกกันลืม] JupyterHub ด้วย Docker คราวนี้ ถ้าต้องการให้ ยืนยันตัวตนด้วย OpenID เช่น PSU Passport เป็นต้น ก็ให้ทำดังนี้ ในไฟล์ jupyterhub_config.py ใส่

Read More