Majorcool 是用 Perl 写的 cgi 脚本,提供了 Majordomo 的易用接口。
网络资源:
Majordomo/Majorcool Howto
http://www.tldp.org/HOWTO/Majordomo-MajorCool-HOWTO/index.html
下载 Majorcool
ftp://140.113.17.209/pub/ports/distfiles/majorcool-1.3.2.tar.gz
我在 Linux 上安装 Majorcool,基本上没有费多大周折。按照前面的 Howto 一步步执行即可。在后面的运行维护阶段,曾经遇到过“Majorcool 不能更新列表的问题”:
Majordomo 创建的新的邮件列表,Majorcool 不能显示出来。即 Majorcool 不能更新列表。我的第一个反应是查看 Majorcool 的源代码,看看它是如何获取当前已有的邮件列表。
首先定位到函数 get_lists:
#-----------------------------------------------
# Find all lists matching a certain criteria.
#-----------------------------------------------
sub get_lists {
local($address,$pattern,$criteria,$list_match) = @_;
local(@lists);
#
# all lists
if ($criteria eq "available") {
@lists = sort(keys(%cached_descr));
}
#
发现邮件列表初始化自哈希表 %cached_descr,查找 %cached_descr 初始化的代码,自然定位到函数 load_cache:
#-----------------------------------------------
# Create a table of cached keys for each list.
#-----------------------------------------------
sub load_cache {
&send_error("Cannot Open File <$cache> -- $!")
unless open(CACHE, "$cache");
while (<CACHE>) {
chop; # remove the trailing \n
next if /^\s*$/; # remove blank lines
local($list,$owner,$spolicy,$upolicy,$descr,$adv,$noadv)
= split(/\007/);
# only add good lists to the cache
if (&valid_list($listdir,$list)) {
$cached_owner{$list} = $owner;
$cached_spolicy{$list} = $spolicy;
$cached_upolicy{$list} = $upolicy;
$cached_descr{$list} = &html_encode($descr);
$cached_adv{$list} = $adv;
$cached_noadv{$list} = $noadv;
}
}
close(CACHE);
}
原来是从文件 $cache 初始化的邮件列表。查找 $cache 的定义,找到在文件 majorcool_default.cf 中:
$cache = "/usr/local/majordomo/.majordomo_keys";
剩下的事情就简单多了,打开并编辑文件 /usr/local/majordomo/.majordomo_keys,发现 Majorcool 的邮件列表清单有了变化。
再到 Google 上搜一搜,找到了.majordomo_keys 文件初始化的命令。即在安装 Majorcool 过程中,使用了如下命令初始化该文件:
/usr/local/majordomo/wrapper mj_key_cache -v -K /usr/local/majordomo/.majordomo_keys -C /usr/local/majordomo/majordomo.cf
打开文件 /usr/local/majordomo/mj_key_cache,看到文件头中的注释,告诉应该将该命令设置为在 crontab 中自动执行。于是...
Copyright © 2006 WorldHello 开放文档之源 计划 |