Saturday, November 05, 2005

Mailman site administration tips

GNU Mailman là phần mềm quản lý mailing list mạnh được sử dụng khá rộng rãi trên Internet. Mailman đi kèm giao diện quản trị qua web và dòng lệnh được viết bằng ngôn ngữ Python. Nếu bạn là site admin của hàng trăm mailing list và muốn thay đổi một option trên tất cả các list, sử dụng giao diện web là điều không tưởng. Script "withlist" đi kèm trong Mailman có thể giúp admin thực hiện các thao tác quản trị bằng dòng lệnh hàng loạt. Để sử dụng cần có một chút xíu kiến thức về Python.

Nội dung sau trích từ phần hướng dẫn của withlist:

Here's an example of how to use the -r option. Say you have a file in the
Mailman installation directory called `listaddr.py', with the following
two functions:

def listaddr(mlist):
print mlist.GetListEmail()

def requestaddr(mlist):
print mlist.GetRequestEmail()

Now, from the command line you can print the list's posting address by running
the following from the command line:

% bin/withlist -r listaddr mylist
Loading list: mylist (unlocked)
Importing listaddr ...
Running listaddr.listaddr() ...
mylist@myhost.com

And you can print the list's request address by running:

% bin/withlist -r listaddr.requestaddr mylist
Loading list: mylist (unlocked)
Importing listaddr ...
Running listaddr.requestaddr() ...
mylist-request@myhost.com


Ví dụ trên là cơ sở để viết các module thực hiện các thao tác theo ý muốn. Để xem trợ giúp các hàm/biến của module Mailman:

$ (MAILMAN_DIR)/bin/withlist listname
Loading list (unlocked)
The variable `m' is the listname MailList instance
>>> help()
help> modules Mailman


Script sau dùng là một ví dụ dùng để đặt option khi tạo member mới cho một list:


---mmtool.py---
from Mailman import mm_cfg

# setting the default new member options
def set_new_member_options(mList):
mList.Lock()
mList.new_member_options=258
mList.Save()
mList.Unlock()

# resetting option notmetoo for all exist members
def reset_notmetoo_options(mList):
mList.Lock()
for member in mList.getMembers():
mList.setMemberOption(member, mm_cfg.DontReceiveOwnPosts, 1)

mList.Save()
mList.Unlock()
---mmtool.py---


Sử dụng:
- Đặt new_member_options cho một list

$ (MAILMAN_DIR)/bin/withlist -r mmtool.set_new_member_options listname

- Reset notmetoo option cho tất cả các list

$ (MAILMAN_DIR)/bin/withlist -a -r mmtool.reset_notmetoo_options


Happy Pythoning!

No comments: