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 开放文档之源 计划 |