如何在 Linux 上以 majordomo 1.93 架设一个电子讨论群
Wu Hsiao-Lung , [email protected]. 2000-11-03 14:35:56
From: Wu Hsiao-Lung , [email protected]
有关电子讨论群 (Mailing List)
如何在 Linux 上以 majordomo 1.93 架设一个电子讨论群 (Mailing list)?
1.Preliminaries:
(1) Sendmail version 8
(2) Perl 4.036 to 5.001a and its libraries
□□ (but will not work with Perl 5.001!!!)
(3) a C compiler
2.建立一个叫majordom的帐号:
adduser majordom
its group name is majordom too
home directory is /usr/local/majordomo
chmod 775 /usr/local/majordomo
3.获取Majordomo这个软体
su 成 majordom, 然後 get ftp://nctuccca.edu.tw/packages/
mail-server/majordomo/majordomo-1.93.tar.gz 到 /usr/local
majordomo, 然後解压
4.安装过程:
1). 修改 Makefile (usr/local/majordomo/majordomo-1.93/Makefile)
a). W_BIN=/usr/local/majordomo(This is where the source file is.)
b). Uncomment the POSIX section
2). make wrapper
(Notice : the wrapper 是用来set uid的, 所以在Makefile
中的W_UID 与 W_GID 务必要设对!!!)
3). make install
4). make install-archive2
5). make install-wrapper ( this step must be done by root)
6). ln -s /usr/local/majordomo/majordomo.cf /etc/majordomo.cf
7). 在$HOME(/usr/local/majordomo)下
mkdir archives, digests, lists;
chmod 775 archives,digests, lists;
touch Log
chmod 644 Log
8). ln -s /usr/bin/perl /usr/local/bin/perl
(This step is to avoid some Perl script pointing to
/usr/local/perl instead of /usr/bin/perl)
9). Modify some files to avoid some known bugs
a). request-answer
1). near the beginning of the request-answer
插入一行 require \"shlock.pl\";\
2). 将所有的do_exec_sendmail改成
do_exec_sendmail_in_request_answer
3). 第41行
exec(\"/usr/lib/sendmail\", \"-f$list-request\", \"-t\") ||
将-f$list-request 改成 -f$list-approval
b). resend 第348行
&bounce(\"Approval required\");改成
&bounce();
10).edit majordomo.cf
□范例如下:
# $whereami -- What machine am I running on?
# Need modified
$whereami = \"girl.ee.ntu.edu.tw\";
# $whoami -- Who do users send requests to me as?
$whoami = \"majordomo@$whereami\";
# $whoami_owner -- Who is the owner of the above, in case of problems?
$whoami_owner = \"owner-majordomo@$whereami\";
# $homedir -- Where can I find my extra .pl files, like majordomo.pl?
# the environment variable HOME is set by the wrapper
$homedir = \"/usr/local/majordomo\";
# $listdir -- Where are the mailing lists?
$listdir = \"/usr/local/majordomo/lists\";
# $digest_work_dir -- the parent directory for digest\s queue area
# Each list must have a subdirectory under this directory in order for
# digest to work. E.G. The bblisa list would use:
# /usr/local/mail/digest/bblisa
# as its directory.
$digest_work_dir = \/usr/local/majordomo/digests\;
# $log -- Where do I write my log?
$log = \"$homedir/Log\";
# $mailer -- What program and args do I use to send mail?
# The variable $to can be interpolated into this command line,
# however the $to variable is provided by the person sending mail,
# and much mischief can be had by playing with this variable.
# Use $to with care.
$mailer = \"/usr/lib/sendmail -f\\$sender -t\";
# Majordomo will look for \"get\" and \"index\" files related to $list in
# directory \"$filedir/$list$filedir_suffix\", so set $filedir and
# $filedir_suffix appropriately. For instance, to look in
# /usr/local/mail/files/$list, use:
# $filedir = \"/usr/local/mail/files\";
# $filedir_suffix = \"\"; # empty string
# or to look in $listdir/$list.archive, use:
# $filedir = \"$listdir\";
# $filedir_suffix = \".archive\";
$filedir = \"/usr/local/majordomo/archives\";
$filedir_suffix = \"\";
# What command should I use to process an \"index\" request?
$index_command = \"/bin/ls -lLG |/usr/bin/sed -e \s/^........................//\ -e \1s/.*/ SIZE DATE
NAME/\\";
#$index_command = \"/bin/ls -lL | /usr/bin/awk \{print $5, $6, $7, $8, $9}\\";
# If you want to use FTPMAIL, rather than local access, for file transfer
# and access, define the following:
# $ftpmail_address = \"[email protected]\";
# $ftpmail_location = \"FTP.$whereami\";
# if you want the subject of the request to be included as part of the
# subject of the reply (useful when automatically testing, or submitting
# multiple command sets), set $return_subject to 1.
$return_subject = 1;
# If you are using majordomo at the -request address, set the
# following variable to 1. This affects the welcome message that is
# sent to a new subscriber as well as the help text that is generated.
$majordomo_request = 0;
# Set the umask for the process. Used to set default file status for
# config file.
umask(007);
# Very Important!!!!!!!!!!!!!!!!!!
# the safe locations for archive directories. This should be defined as
# a series of root anchored directory paths as will be used as prefixes
# to the file names specified to the archive2.pl script.
@archive_dirs = ( \"/usr/local/majordomo/archives/sample\", \"/usr/spool/archive/firewalls\"
);
# Set this to 1 if you want to use the experimental mechanism for allowing
# / in user names. People with lots of X.400 addresses on their lists or
# HP mail whatever may want to set this. However use it at your own risk.
$analyze_slash_in_address = 0;
#
# these tune the experimental matching that is done for addresses with / in
# them. If you haven\t turned on the experimental analyze_slash_in_address
# they are ignored. See the source for full explanation of these variables.
#
# if set to 1 ignore the requirement that addresses have an @ sign in the
# address component after the last /.
$no_x400at=0;
# if set to 1 do not look for \"/c=\" and \"/ad=\" or \"/am=\" in the address.
# X.400 seems to require these components.
$no_true_x400=0;
1;
11).Edit /etc/aliases(after you edit the /etc/aliases
you should run newaliases to make it work)
owner-owner: postmaster
#
#Majordomo
#
owner-majordomo: long, nobody
majordomo: \"|/usr/local/majordomo/wrapper majordomo\"
majordom: owner-majordomo
#Needed \"just in case\" for Majordomo version 1.9x:
Majordomo-Owner: owner-majordomo
nobody: /dev/null
#
# Sample mailing list
#
# Adding \"nobody\" prevents expansion to \"long\" under sendmail v8:
owner-sample: long, nobody
sample-owner: long, nobody
#sample: \"|/usr/local/majordomo/wrapper resend -p bulk -M 10000 -R -l sample -f
sample-owner -h girl.ee.ntu.edu.tw -s sample-outgoing\"
sample: \"|/usr/local/majordomo/wrapper resend -l sample -h girl.ee.ntu.edu.tw
sample-outgoing\"
sample-approval: owner-sample
sample-outgoing: :include:/usr/local/majordomo/lists/sample, sample-archive,
\"|/usr/local/majordomo/wrapper digest -r -C -l sample-digest sample-digest-outgoing\"
#
# For digest version list
#
sample-digest: sample
sample-digest-outgoing: \"|/usr/local/majordomo/wrapper request-answer sample-digest\"
owner-sample-digest: owner-sample
owner-sample-digest-outgoing: owner-sample
owner-sample-digest-request: owner-sample
sample-digest-approval: sample-approval
#
# End of the digest version list
#
owner-sample-outgoing: owner-sample
sample-archive: \"|/usr/local/majordomo/wrapper archive -f
/usr/local/majordomo/archives/sample/sample -m -a\"
owner-sample-archive: owner-sample
#
# For someone who may use listname-request to ask questions
#sample-request: \"|/usr/local/majordomo/wrapper request-answer sample\"
sample-request: \"|/usr/local/majordomo/wrapper majordomo -l sample\"
owner-sample-request: owner-sample
#
# End of listname-request version
发布人:Crystal 来自:linux之家