majordomo は CML(現鹿島 ML)等の ML 管理ソフトの一種です。distribute も ML 管理ソフトの一種ですが,最近では majordomo の機能拡張ソフトとして majordomo と一緒に使われることが多いようです。ここでも,majordomo を ML 管理ソフトとして扱い,distribute で機能拡張を行うことにします。
(1) majordomo の user id と group id を決めます。ここでは,user を
majordomo(7797) に,group を daemon(2) にすることにします。
/etc/passwd
と /etc/group
を修正してください。
(2) majordomo をインストールするディレクトリを決めます。ここでは,
/home/mail/majordomo
にインストールすることにします。
(3) Makefile
を必要に応じて修正します。この例で修正した箇所を以下
に示します。
W_HOME = /home/mail/majordomo W_USER = 7797 W_GROUP = 2
(4) sample.cf
を majordomo.cf
に cp し,このファイルを必要に
応じて修正します。この例で修正した箇所を以下に示します。
$whereami = "relay.ec.tmit.ac.jp"; $digest_work_dir = "/home/mail/majordomo/spool";
(5) 以下のコマンドを実行します。
# make wrapper
# make install
# make install-wrapper
# cd /path/to/majordomo; ./wrapper config-test
(1) distribute-2.1-pl19.tgz
を展開し,patch-20.gz
を当てます。
(2) 詳しくは INSTALL.JP
を参照してください。distribute のディレク
トリは /home/mail/distribute
にしました。
(3) 必要に応じて Mailefile
を修正します。この例で修正した箇所を以
下に示します。
DEFAULTCONFIG=\ -DDEF_DOMAINNAME=\"relay.ec.tmit.ac.jp\" \ -DDEF_ALIAS_CHAR_OPTION=\"b\" \ -DDEF_SEQ_PATH=\"/home/mail/distribute\" \ -DDEF_RECIPIENT_PATH=\"/home/mail/distribute\" \ -DDEF_MAJORDOMO_RECIPIENT_PATH=\"/home/mail/majordomo/lists\" \ -DDEF_ARCHIVE_PATH=\"/home/mail/distribute/archive\" WHERE= /home/mail/distribute/bin
(4) longstr.c
を修正します。
#ifdef linux #include <bsd/bsd.h> #endif
(5) 以下のコマンドを実行します。
# mkdir /home/mail/distribute
# mkdir /home/mail/distribute/bin
# mkdir /home/mail/distribute/archive
# make
# make install
# chown -R majordomo.daemon /home/mail/distribute
# chown 4755 /home/mail/distribute/bin/*
(6) /etc/syslog.conf
を設定し,syslogd を kill -HUP
しま
す。
local4.info /usr/adm/distribute.log
(1) majordomo と distribute のための alias を設定します。qmail ですか
ら,alias の設定は ~alias/.qmail-*
ファイルで行います。以下に
設定例を示します。
-- ~alias/.qmail-majordomo -- |condredirect postmaster /usr/bin/egrep -i (折り返し) '^(From|Sender|Reply-To):.*(majordomo|listproc|listserv|(折り返し) postmaster|postmstr|admin|root|pmdf|mailer|-request)@' |/home/mail/majordomo/wrapper majordomo -- ~alias/.qmail-majordomo-owner -- -- ~alias/.qmail-owner-majordomo -- ----
(2) ~majordomo.qmail
から ~alias/.qmail-majordomo
へのリ
ンクを作成します。
詳しくは NEWLIST
ファイルを参照してください。ここでは,実験 ML
practice@relay.ec.tmit.ac.jp
と実験 ML のダイジェスト版
practice-digest@relay.ec.tmit.ac.jp
を作成する例を示します。
(1) 新しい ML のための alias を設定します。以下に設定例を示します。
-- ~alias/.qmail-owner-practice -- &koyama@ec.tmit.ac.jp -- ~alias/.qmail-practice-approval -- &koyama@ec.tmit.ac.jp -- ~alias/.qmail-practice-request -- | /home/mail/majordomo/wrapper majordomo -l practice -- ~alias/.qmail-practice-digest-request -- | /home/mail/majordomo/wrapper majordomo -l practice-digest -- ~alias/.qmail-practice -- | /home/mail/distribute/bin/distribute -j -R -B A -P bulk (折り返し) -M practice -x practice-outgoing -- ~alias/.qmail-practice-outgoing -- | /home/mail/majordomo/wrapper digest -r -C (折り返し) -l practice-digest practice-digest-outgoing | /home/mail/distribute/bin/archive -M practice ----
以下のリンクを作成します。
# ln -s ~alias/.qmail-practice ~alias/.qmail-practice-digest
# ln -s /home/mail/majordomo/lists/practice-digest (折り返し)
~alias/.qmail-practice-digest-outgoing
# ln -s ~alias/.qmail-owner-practice ~alias/.qmail-owner-practice-arhive
# ln -s ~alias/.qmail-owner-practice ~alias/.qmail-owner-practice-digest
# ln -s ~alias/.qmail-practice-approval ~alias/.qmail-practice-digest-approval
(2) 新しい ML のための設定ファイルとディレクトリを作成します。以下に例
を示します。practice
と practice-digest
は登録メンバのリスト
を保存するファイル,practice.archive
と
practice-digest.archive
は古いメールを保存するディレクトリ,
practice.info
と practice-digest.info
は ML の紹介を書くファ
イルです(適当に書いてください)。
# cd ~majordomo/lists
# touch practice practice-digest
# mkdir practice-digest.archive
# mkdir /home/mail/distribute/archive/practice
# ln -s /home/mail/distribute/archive/practice practice.archive
# touch practice-digest.info practice-digest.info
# mkdir ~majordomo/spool
# mkdir ~majordomo/spool/practice-digest
# chown -R majordomo.daemon ~majordomo/lists
# chown -R majordomo.daemon ~majordomo/spool
# chown -R majordomo.daemon /home/mail/distribute/archive/practice
(3) majordomo@relay.ec.tmit.ac.jp
に lists コマンドを出してください。
% echo 'lists' | mail majordomo@relay.ec.tmit.ac.jp
すべて正しく行われていれば,majordomo@relay.ec.tmit.ac.jp
から
practice と practice-digest という ML が存在するという内容の返事が戻っ
てきます。
(4) lists コマンドを実行すると,~majordomo/lists
ディレクトリ
に,practice.config
と practice-digest.config
というファイル
が作成されます。このファイルで ML の動作を設定しますので,必要に応じて
修正してください。
(5) ダイジェスト版MLのために,crontab
の設定をします。
/usr/spool/cron/crontabs/foo
に以下の行を書き込みます。foo は,
root で無ければ,誰でもかまいません。root にすると,
~alias/.qmail-majordomo
の設定によって postmaster へのメール
として処理されてしまいます。
0 0,10,14,18 * * * /home/mail/majordomo/mkdigest >/dev/null 2>&1
/home/mail/majordomo/mkdigest
の内容は以下の通りです。
(echo To: majordomo@relay.ec.tmit.ac.jp; echo mkdigest practice-digest PASSWORD) | /var/qmail/bin/qmail-inject
これは 0 時と 10 時と 14 時と 18 時にダイジェスト版を作成するという指
示です。最後に,この crontab
を登録します。
# crontab /usr/spool/cron/crontabs/foo -u foo
これで終わりです。
(1) 以下のコマンドを実行します。
# cd ~majordomo
# cp Tools/sequencer .
# chown majordomo.daemon sequencer
# cd lists
# echo "1" > practice.seq
# touch practice.aliases
# chown majordomo.daemon practice.seq practice.aliases
# cd ~alias
# ln -s /home/mail/majordomo/lists/practice .qmail-practice-outgoing-list
(2) ~alias/.qmail-*
を修正します。
-- ~alias/.qmail-practice -- | /home/mail/majordomo/wrapper sequencer -l practice -N (折り返し) -h relay.ec.tmit.ac.jp practice-outgoing -- ~alias/.qmail-practice-outgoing -- &practice-outgoing-list | /home/mail/majordomo/wrapper digest -r -C (折り返し) -l practice-digest practice-digest-outgoing ----
(3) ~majordomo/lists/practice.config
を修正します。修正箇所は
以下の通りです。
# listsコマンドで,このMLを非表示にする。 noadvertise << END /.*/ END # メールヘッダーのreceived行を削除する。 purge_received = yes # Reply-To:行を設定する。 reply_to = practice # 投稿者を制限する(投稿を許可するファイル名を指定)。 restrict_post = practice:practice-digest:practice.aliases # Subject行の変更を指示する。 subject_prefix = [Practice $SEQNUM]
(4) 必要であれば,~majordomo/lists/practice.aliases
に,投稿
を許可するメールアドレスを登録します。
(5) ~majordomo/majordomo.cf
を修正します。以下に修正箇所を示
します。これは Majordomo の index
コマンドの変更です。
$index_command = "sed -e 's/.* [[]/[/g' INDEX | /bin/nkf -m";
(6) ~majordomo/sequencer
を修正します。以下に diff を示します。
これは,Subject
行で [Practice *]
が重複するのを修
正するための変更です。
*** Tools/sequencer Tue Mar 18 11:54:02 1997 --- sequencer Wed Mar 19 23:41:09 1997 *************** *** 153,158 **** --- 153,168 ---- &abort("sequencer: Can't open /tmp/sequencer.$$.in: $!"); while (<STDIN>) { + # modified by nob@makioka.y-min.or.jp 961130 + # to delete [****] or (****) from Subject: + # update by hiro@dp.fcs.ts.fujitsu.co.jp 970202 + # to delete Re: [****] or Re: (****) + # RE: [****] or RE: (****) from Subject: + if (/^Subject:/) { + s/R[eE].*\: [\(\[].*[\]\)]/Re\:/g; + s/R[eE].*\:.*R[eE].*\:/Re\:/g; + } + # print IN $_; } *************** *** 196,202 **** } } $subject = $foo . "Message for " . $opt_l; ! print OUT $subject, "\n"; } print OUT "Sender: $sender\n"; --- 206,214 ---- } } $subject = $foo . "Message for " . $opt_l; ! # modified by hiro@dp.fcs.ts.fujitsu.co.jp 970202 ! # no Subject Mail addon Subject: ! print OUT "Subject: $subject\n"; } print OUT "Sender: $sender\n";