次のページ 前のページ 目次へ

2. majordomo と distribute

majordomo は CML(現鹿島 ML)等の ML 管理ソフトの一種です。distribute も ML 管理ソフトの一種ですが,最近では majordomo の機能拡張ソフトとして majordomo と一緒に使われることが多いようです。ここでも,majordomo を ML 管理ソフトとして扱い,distribute で機能拡張を行うことにします。

2.1 majordomo のインストール

(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.cfmajordomo.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

2.2 distributeのインストール

(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

2.3 majordomo と distribute の基本設定

(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 へのリ ンクを作成します。

2.4 新しい ML の作成

詳しくは 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 のための設定ファイルとディレクトリを作成します。以下に例 を示します。practicepractice-digest は登録メンバのリスト を保存するファイル,practice.archivepractice-digest.archive は古いメールを保存するディレクトリ, practice.infopractice-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.configpractice-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

これで終わりです。

2.5 distribute から sequencer への移行

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


次のページ 前のページ 目次へ