电子邮件环境的生成方法(5)
3.2 中规模邮件组管理软件Majordom
前一节中所介绍的方法虽然简单,但是却存在一些问题.
3.2.1 Majordomo
Majordomo为可以对多个邮件组进行自动处理的Perl程序包. 利用Majordomo可以 自动地管理用户登录,退出,用户查寻,和其他一些用户请求.并可以建立一些常用的 受控邮件组(moderated list), 对参加者,及参加者所投递的稿件等进行监控,由邮 件组管理员裁决是否接受用户请求. 系统管理员可以通过电子邮件对邮件组进行控 制.
Majordom的最大的有点在于它的简单性和易维护性. 与另一个大型邮件组管理软 件Listproc/ListServe相比,Majordomo比较容易为人们所理解, 便于邮件组的新手 管理员迅速建立邮件组.另外,由于Majordomo是用Perl程序所构成的,精通Perl程序 的管理员可以按照自己的需要改动程序,构筑适合于自己的邮件组系统.
利用Majordomo建立邮件组时,需要用到Perl程序环境. Perl程序的安装方法等说 明与本连载目的无关,这里予以省略.请各位读者参照相应文献自己准备好工作环境.
3.2.2 安装Majordomo服务器
(1) 准备工作
请从各大FTP服务器下载majordom的最新版.当前(1997年4月)的最新版为:
majoedomo-1.94.1.tar.gz
使用该版本时需要用到5.001以上的Perl.
为了运行majordomo需要为其决定用户ID(user id)和用户组ID(group id).
运行majordomo的用户名一般为majordom. 同时为了方便,组名也可以采用同
样的名称. 这里假定UID=1000,GID=1000,存放majordomo程序,及建立邮件组
的用户根目录为/home/majordomo.
用vipw命令编辑/etc/passwd文件添加用户名:
% vipw
majordom:*:1000:1000:Majordomo Server:/home/majordomo:
编辑/etc/group文件添加用户组名:
% vi /etc/group
majordom:*:1000:majordom
建立majordom的用户根目录:
% mkdir /home/majordomo
% chown majordom.majordom /home/majordomo
% chmod 755 /home/majordomo
(2) 展开源程序
这里假定展开在/pub/mail目录下.
% cd /home/mail
% gtar -zxvf majordomo-1.94.1.tar.gz
(注意,没有GNU tar 时: gzcat majordomo-1.94.1.tar.gz|tar xvf -)
% cd majordomo-1.94.1
(3) 针对所在环境修改Makefile文件
修改perl程序路径
PERL=/usr/local/bin/perl
指定编译命令
CC = gcc
(Solaris系统时请使用/opt/SUNWspro/bin/cc)
设定W_HOME参数,指定majordomo路径(邮件组根目录)
W_BIN= /home/majordomo
指定UID和GID
W_USER = 1000
W_GROUP = 1000
指定联机手册文件存放位置
MAN = /usr/local/man
对POSIX系统(Sun Solaris, SGI Irix 5 and 6, Dec Ultrix MIPS, # BSDI
or other 4.4-based BSD, Linux)指定以下参数:
WRAPPER_OWNER = root
WRAPPER_GROUP = $(W_GROUP)
WRAPPER_MODE = 4755
POSIX = -DPOSIX_UID=$(W_USER) -DPOSIX_GID=$(W_GROUP)
(4) 生成格式文件majordomo.cf
修改源程序中所附带的格式文件样本sample.cf来生成majordomo.cf.
% cp sample.cf majordomo.cf
修改以下参数:
$whereami = "mailserv.domain";
$homedir = "/home/majordomo";
$listdir = "/home/majordomo/lists";
$digest_work_dir = "/home/majordomo/digest";
$log = "$homedir/Majordomo.log";
$sendmail_command = "/usr/lib/sendmail";
(5) 编译源程序安装执行用代码
% make install
% make install-wrapper
如果出现编译错误请执行 make clean,然后再修改Makefile文件,重新编译. (请注意wrapper的用户属性为root权限值为4755).
生成邮件组存放用目录:
% mkdir /home/majordomo/lists
% chown majordom.majordom /home/majordomo/lists
(6) 测试安装结果及格式文件设定是否合适:
% cd /home/majordomo
% ./wrapper config-test
如果perl的版本过低时会出现一些错误信息,这时请更新perl版本.
修改/etc/aliases文件(Solaris时为/etc/mail/aliases),追加以下内容:
#
# majordomo 1.94.1
#
owner-owner: mlmaster (请填入管理者ID)
majordomo: "|/home/majordomo/wrapper majordomo"
majordom: majordomo
majordomo-owner: mlmaster (请填入管理者ID)
owner-majordomo: mlmaster (请填入管理者ID)
然后执行newaliases命令,使设定生效.
向majordom@mailserve.domain发送信件进行服务器动作测试,如果执行结果 如下,则可以认为安装工作正常:
% mail -v majordom@mailserve.domain
Subject:
lists
.
EOT
majordom... aliased to majordomo
majordomo... aliased to "|/home/majordomo/wrapper majordomo"
"|/home/majordomo/wrapper majordomo"... Connecting to prog...
"|/home/majordomo/wrapper majordomo"... Sent
这时,可以收到一封回执信件:
% mail
>N 6 Majordomo Sun Apr 13 13:32 19/678 "Majordomo results"
& (CR)
From Majordomo-Owner@mailserv.domain Sun Apr 13 13:24:18 1997
Date: Sun, 13 Apr 1997 13:24:18 +0900
To: Majordomo-Owner@mailserv.domain
From: Majordomo@mailserv.domain
Subject: Majordomo results
>>>> lists
Majordomo@mailserv.domain serves the following lists:
Use the 'info
&
由于尚未建立邮件组,因此这个结果是正常的.
至此为止,如果没有出现什么问题服务器的安装工作便告结束.接下来需要着手建
立邮件组.
3.2.3 建立邮件组
这里,让我们来建立一个名称为"majo"的邮件组.邮件组"majo"的实体将被安装到
/home/majordomo/lists目录下.
(1) 登录邮件组
假定"majo"的管理员为"mlmaster".
生成邮件组注册文件:
建立邮件组管理者通行字文件:
生成邮件组内容简介文件,填入邮件组"majo"的简单介绍:
生成邮件组的简单使用说明文件:
修改文件处理权限及属性:
修改/etc/aliases文件,追加以下内容(注意,因行幅所限,下例中加入了适当
地换行:
(2) 登录参加者
可以直接编辑/home/majordomo/lists/majo文件,在该文件中填入参加者地
址.也可以用Email来进行登录.
% mail majordom@mailserv.domain
如果登录成功,则可以收到一封来自majordom@mailserv.domain的信件.内容
如下:
user@host.domain has been added to majo.
同时, 在登录者(user@host.domain)处将会收到一封题为"Welcome to majo"的
信件.内容中将含有简单的参加与退出方法说明,及major.intro中的内容.
这里,也许读者会问:为什么登录手续这样繁杂?
3.2.4 邮件组的格式文件设定
这里扔以邮件组"majo"为例进行说明.
在所生成的各个邮件组的格式文件中主要含有以下设定参数,请根据所需加以设
定.
以上对Majordomo的主要格式控制参数进行了简单地介绍. Majordomo中还含有一
些有用的参数, 如:汇编式邮件组相关参数等等.有兴趣的读者请参阅Majordom所附
带的文本文件.
格式文件例:
当用户所参加的邮件组较多时,每天将会从各个邮件组传来许多信件. 这时,如果
各个邮件组所发送的标题栏(Subject:)中最好标有相应的邮件组名和序列号. 早期
的Majordomo 由于没有这项功能,需要用到distribute等其他软件. 新版Majordomo
已经可以提供这种功能. 例如,需要给邮件组"majo"的标题栏添加"[MAJO:序列号]"
时的具体设定方法如下.
(1) 用sequencer命令添加标题序列号
Subject: [MAJO:10]Re:[MAJO:9]Re:[MAJO:8]
这样看上去非常难看.为了解决这个问题,请用以下差分文件来修改sequencer
程序:
利用sequencer命令可以实现与distribute同等库存功能.设定例如下:
3.2.6 Majordomo的基本命令
需要了解Majordomo的基本命令之使用方法时, 可以向majordomo服务器发送一封
标题或正文为"help"的信件,系统将回送给您一份说明书. 参照这份说明书,相信各
位读者能够自己掌握majordom的基本使用方法.
3.2.7 Majordomo的问题点
Majordomo作为一个邮件组管理软件虽然有很多优点,但也存在着一些不容忽视的
问题.
(钱飞/fei@come.or.jp)' command to get more information
about a specific list.
% touch /home/majordomo/lists/majo
% vi /home/majordomo/lists/majo.passwd
major-pass (填入通行字)
% vi /home/majordomo/lists/majo.intro
!!欢迎您参加本邮件组!!
% vi /home/majordomo/lists/majo.info
!!欢迎您参加本邮件组!!
本邮件组内可以使用以下命令:
.......
% chown majordom.majordom /home/majordomo/lists/majo.*
#
majo:"|/home/majordomo/wrapper resend -l majo -h mailserv.domain
majo-going"
majo-going::include:/home/majordomo/lists/majo
owner-majo: mlmaster
majo-request:"|/home/majordomo/wrapper resend request-answer majo"
majo-approval:owner-majo
majo-owner: owner-majo
然后执行newaliases命令,使设定生效.
Subject:
subscribe major user@host.domain (填入登录地址)
.
>>>> subscribe majo user@host.domain
Your request to Majordomo@mailserv.domain
subscribe majo user@host.domain
has been forwarded to the owner of the "majo" list for approval.
This could be for any of several reasons:
You might have asked to subscribe to a "closed" list, where
all new additions must be approved by the list owner.
You might have asked to subscribe or unsubscribe an address
other than the one that appears in the headers of your mail
message.
When the list owner approves your request, you will be notified.
If you have any questions about the policy of the list owner,
please contact "majo-approval@mailserv.domain"
Thanks!
Majordomo@mailserv.domain
在邮件组管理员mlmaster处将会收到一封许可信件,内容如下:
user@host.domain
如果管理员同意这项登录,则可以给majordom回信,在信中写入以下一行内容:
approve majo.pass subscribe majo user@host.domain
^^^^^^^^^
这里为/home/majordomo/lists/majo.passwd中所登录的内容.
许可成功时, 管理员(mlmaster)将收到一封题(Subject)为"SUBSCRIBE majo"的
信件.内容如下:
要回答这一问题请参阅下一节"邮件组的格式文件设定".
(注意,在初始生成时,该格式文件,例如上例中的majo.config并不存在. 当用户
向Majordomo服务器发送请求信件时,系统将会自动生成一个省缺格式文件,读者
可以对该文件稍作改动, 即可生成自己的邮件组的格式文件,以便对邮件组加以
控制.)
date_info = yes
date_intro = yes
description = 中国问题讨论组
get_access = list
index_access = list
info_access = list
intro_access = list
which_access = list
who_access = list
maxlength = 60000
precedence = bulk
reply_to = majo@mailserv.domain
restrict_post = accept
subscribe_policy = open
unsubscribe_policy = open
3.2.5 邮件组的题名辅助及信件库
这样,即可实现上述功能.
但是,这里仍然存在一个问题.利用Majordom-1.94-1中所附带的sequencer时,
回送信件的标题栏会出现以下情形:
------------------------------------------------------------------
*** Tools/sequencer Wed Jan 29 20:26:33 1997
--- sequencer Sun Feb 2 16:49:02 1997
***************
*** 153,158 ****
--- 153,163 ----
&abort("sequencer: Can't open /tmp/sequencer.$$.in: $!");
while (<STDIN>) {
+ if (/^Subject:/) {
+ # s/[\(\[].*[\]\)]//g;
+ s/R[eE]\: [\(\[].*[\]\)]/Re\:/g;
+ s/R[eE]\:.*R[eE]\:/Re\:/g;
+ }
+ #
print IN $_;
}
------------------------------------------------------------------
(2) 用sequencer命令实现信件库功能
这样,当用户向majo@mailserv.domain发送信件时, 信件将会自动的保存在信
件库/home/majordom/lists/majo.archive中,相同将为其建立一个名为INDEX
的索引文件.索引文件可以用index命令来获取.
Majordomo并没有因为这些问题的存在,而影响它在网络中的名声. 作为一个中型
邮件组管理软件赢得了越来越多的用户.