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";