  qmail と majordomo と distribute のインストールと設定
  こやま (koyama@ec.tmit.ac.jp)
  1997 年 5 月 20 日

  この文書は，Slackware 3.2(Linux 2.0.29) への qmail と majordomo と
  distribute のインストールと設定をまとめたものです。qmail は MTA(Mail
  Transfer Agent) で，majordomo と distribute が ML(Mailing List) のソフ
  トです。以下では，133.10.32.20(ecpxb.tmit.ac.jp)を relay.ec.tmit.ac.jp
  として，practice@relay.ec.tmit.ac.jp という ML を作成するという例を解
  説しています。

       [編集者(松本庄司(shom@i.h.kyoto-u.ac.jp)より：著者のこやまさ
       んが LaTeX でメモされていたものを提供して下さり、私が linux-
       doc-sgml に変換しました]

  1.  qmail

  qmail は，sendmail 等に代表される MTA の一種で，sendmail の代替物とし
  て機能します。500 名規模の ML の処理に sendmail では 3〜10 時間程度か
  かりますが，qmail はこれを10〜30 分程度で行うことができます。

  1.1.  インストール

  詳しくは INSTALL ファイル参照。

  (1) qmail のディレクトリを決めます。qmail は，このディレクトリにすべて
  のメールを queue します。このディレクトリは自マシンのディスクにする必
  要があるようです。NFS 等による遠隔マシンのディスクを使うことはできませ
  ん。本当の理由はわかりませんが，たぶん，速度が落ちるからでしょう。デ
  フォルトは /var/qmail です。このディレクトリを変更するには， conf-
  home.h ファイルを編集してください。以下では，デフォルトの/var/qmail
  ディレクトリで話を行います。このディレクトリを作成してください。

       # mkdir /var/qmail; chmod 755 /var/qmail

  (2) qmail が使う user と group を登録します。詳しくは INSTALL.ids ファ
  イル参照。以下の group を /etc/group に登録し，

  ______________________________________________________________________
  qmail:*:2107:
  nofiles:*:2108:
  ______________________________________________________________________

  以下の user を /etc/passwd に登録します。

  ______________________________________________________________________
  alias:*:7790:2108::/var/qmail/alias:/bin/true
  qmaild:*:7791:2108::/var/qmail:/bin/true
  qmaill:*:7792:2108::/var/qmail:/bin/true
  qmailp:*:7793:2108::/var/qmail:/bin/true
  qmailq:*:7794:2107::/var/qmail:/bin/true
  qmailr:*:7795:2107::/var/qmail:/bin/true
  qmails:*:7796:2107::/var/qmail:/bin/true
  ______________________________________________________________________

  qmail は，root 権限での実行をできるだけ避けるために，これらの user と
  group を使います。これらの user と group 名を変更するには， conf-
  user.h ファイルを編集してください。

  (3) 以下のコマンドを実行します。

       # make
       # make man
       # make setup
       # make check

  (4) qmail の各種設定は，先に設定した qmail のディレクトリ，user，group
  の変更を除き，/var/qmail/control/ 以下のファイルで行います(詳しくは
  INSTALL.ctl ファイルを参照してください)。この際に，qmail の再コンパイ
  ルは必要ありません。通常は，control/me ファイルを除き，デフォルト値の
  ままでよいので，特に設定する必要はありません。 control/me ファイルに
  は，自マシンの FQDN を指定します。このほかのファイルは必要に応じて設定
  してください。

  付属の qmail-makectl スクリプトを実行すれば，control 以下のファイルを
  簡単に設定することができます。

       # ./qmail-makectl

  このスクリプトは自マシンの FQDN を DNS 経由で推定し，この値を
  control/me に書き込み，さらに control/locals 等の関連するファイルに値
  を書き込みます。

  以下に設定例を示します。

  ______________________________________________________________________
  -- control/me --
  relay.ec.tmit.ac.jp
  -- control/defaultdomain --
  ec.tmit.ac.jp
  -- control/plusdomain --
  tmit.ac.jp
  -- control/locals --
  localhost
  ecpxb.tmit.ac.jp
  ecpxb.ec.tmit.ac.jp
  relay.ec.tmit.ac.jp
  -- control/rcpthosts --
  localhost
  ecpxb.ec.tmit.ac.jp
  relay.ec.tmit.ac.jp
  ----
  ______________________________________________________________________

  control/me は自マシンの FQDN，control/defaultdomain はホスト名だけ指定
  されたときに付加されるドメイン名， control/plusdomain はホスト名と
  ``+'' が指定されたときに付加されるドメイン名です。

  control/locals に登録されたドメインへのメールは自マシンへのメールとし
  て処理されます。control/rcpthosts には自マシンへのメールとして受け取る
  メールのドメインを登録します。

  また，concurrencylocal と concurrencyremote には，自マシンと遠隔マシン
  との間で同時に処理するメール数(SMTP 接続数)を設定します。デフォルト値
  は concurrencylocal が10，concurrencyremote が20で
  す。control/concurrencyremote の上限に関してはFAQファイルを参照してく
  ださい。

  (5) qmail は alias 関連の設定を /etc/aliases ではなく， ~alias ディレ
  クトリと ~user ディレクトリ以下の .qmail-* ファイルで行います(詳しくは
  INSTALL.alias ファイルを参照してください)。

  (6) 基本の alias の設定は ~alias/.qmail-* ファイルで行います。例え
  ば，root の alias は ~alias/.qmail-root ファイルに設定します。以下のコ
  マンドを実行すれば，postmaster，mailer-daemon，root の各 alias を設定
  することができます。この設定で，これらのアドレスへのメールは
  ~alias/Mailbox へ保存されます。

       ■qmail は，/usr/spool/mail ではなく，~user/Mailbox にメール
       を保存します。詳しくは INSTALL.mbox ファイルを参照してくださ
       い。□

       # (cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root)
       # chmod 644 ~alias/.qmail*

  各利用者独自の alias の設定は ~user/.qmail-* ファイルで行います。qmail
  では，各利用者が独自に複数の alias を設定することができます。例えば，
  利用者 foo は，foo-group というアドレスの alias は ~foo/.qmail-group
  ファイルで設定することができます。

  ■qsmhook を使うことで，alias の指定を /etc/aliases で行った
  り，/usr/spool/mail にメールを保存したりという sendmail 互換
  の動作を qmail に指示することができますが，これは止めたほう
  がよいらしいです。詳しくは INSTALL.qsmhook ファイルを参照し
  てください。□

       ■一般の利用者が sendmail から qmail へ移行するときのこと
       は， qmail-upgrade.* ファイルにまとめられています。□

  1.2.  移行前のテスト

  (1) qmail の動作を確認します。以下のコマンドを実行して，qmail を起動し
  てください。

       # env - PATH="/var/qmail/bin:$PATH" qmail-start splogger qmail &

  /usr/adm/messages ファイルに保存されたログから qmail の起動を確認して
  ください。以下に例を示します。``running'' であれば成功， ``cannot
  start'' であれば失敗です。

       Apr 28 02:17:00 ecpxb qmail: 862161420.691666 running

  ps コマンドでも起動を確認してください。

       # ps aux | grep qmail
       qmails    1635  0.0  1.7   876   268  p0 S   02:17   0:00 qmail-send
       qmaill    1636  0.0  1.9   844   292  p0 S   02:17   0:00 splogger qmail
       root      1637  0.0  1.4   840   212  p0 S   02:17   0:00 qmail-lspawn
       qmailq    1639  0.0  1.5   836   224  p0 S   02:17   0:00 qmail-clean
       qmailr    1638  0.0  1.3   836   208  p0 S   02:17   0:00 qmail-rspawn
       root      1659  0.0  2.2   932   328  p1 S   02:23   0:00 grep qmail
       #

  4 つの qmail (qmail-send が qmails で，qmail-lspawn が root で，
  qmail-rspawn が qmailr で，qmail-clean が qmailq) と，splogger が動い
  ていれば成功です。

  (2) 自マシンから自マシンへのメールのテストを行います (me は正しい利用
  者名を使ってください)。

       % echo to: me | /var/qmail/bin/qmail-inject

  この結果，即座に ~foo/Mailbox にメールが届いていることと，
  /usr/adm/messages のログを確認してください。以下にログの例を示します
  (53 と 20345 は実行するたびに変わります)。

       qmail: new msg 53
       qmail: info msg 53: bytes 246 from <me@relay.ec.tmit.ac.jp> qp 20345 uid 666
       qmail: starting delivery 1: msg 53 to local me@relay.ec.tmit.ac.jp
       qmail: delivery 1: success: did_1+0+0/
       qmail: end msg 53

  (3) 自マシンでのエラーメールのテストを行います。

       % echo to: nonexistent | /var/qmail/bin/qmail-inject

  以下にログの例を示します。また，エラーメールが ~/Mailbox に戻ってきて
  いることを確認してください。

       qmail: new msg 53
       qmail: info msg 53: bytes 246 from <me@relay.ec.tmit.ac.jp> qp 20351 uid 666
       qmail: starting delivery 2: msg 53 to local nonexistent@relay.ec.tmit.ac.jp
       qmail: delivery 2: failure: No_such_address.__#5.1.1_/
       qmail: bounce msg 53 qp 20357
       qmail: end msg 53
       qmail: new msg 54
       qmail: info msg 54: bytes 743 from <> qp 20357 uid 666
       qmail: starting delivery 3: msg 54 to local me@relay.ec.tmit.ac.jp
       qmail: delivery 3: success: did_1+0+0/
       qmail: end msg 54

  (4) 自マシンから遠隔マシンへのメールのテストを行います。

       % echo to: koyama@ec.tmit.ac.jp | /var/qmail/bin/qmail-inject

  以下にログの例を示します。また，メールが遠隔マシンに届いていることを確
  認してください。

       qmail: new msg 53
       qmail: info msg 53: bytes 246 from <me@relay.ec.tmit.ac.jp> qp 20372 uid 666
       qmail: starting delivery 4: msg 53 to remote koyama@ec.tmit.ac.jp
       qmail: delivery 4: success: 1.2.3.4_accepted_message./...
       qmail: end msg 53

  (5) 自マシンの postmaster へのメールのテストを行います。メールが
  ~alias/Mailbox に届いていることを確認してください。

       % echo to: POSTmaster | /var/qmail/bin/qmail-inject

  (6) 自マシンの postmaster へのメールのテストを行います。メールが
  ~alias/Mailbox に届いていることを確認してください。

  (7) バウンドメールのテストを行います。メールの終わりは ``.'' ではな
  く， CTRL-D で指定してください。バウンドメールに関するエラーメールが
  ~alias/Mailbox に届いていることを確認してください。

       % /var/qmail/bin/qmail-inject -f nonexistent
       To: unknownuser
       Subject: testing

       This is a test. This is only a test.
       (CTRL-D)
       %

  (8) 利用者の ~/.qmail-* ファイルによる alias のテストを行います。例と
  して，~me/.qmail-groups を作成します。

       % cat > ~me/.qmail-groups
       |groups >> MYGROUPS; exit 0
       (CTRL-D)

  ここで，me-groups にメールして，~me/MYGROUPS ファイルに group id が保
  存されているかどうかを確認してください。

       % /var/qmail/bin/qmail-inject me-groups < /dev/null

  1.3.  sendmailからqmailへの移行

  (1) マシンの起動時に，sendmail ではなく，qmail を起動するように設定し
  ます。詳しくは INSTALL.boot ファイルを参照してください。この例では，起
  動時に実行されるスクリプト(/etc/rc.d/rc.M)で sendmail が起動されている
  とします。

  ______________________________________________________________________
  # Start the sendmail daemon:
  if [ -x /usr/sbin/sendmail ]; then
    echo "Starting sendmail daemon (/usr/sbin/sendmail -bd -q 15m)..."
    /usr/sbin/sendmail -bd -q 15m
  fi
  ______________________________________________________________________

  この部分を以下のものに置換することにします。

  ______________________________________________________________________
  env - PATH=''/var/qmail/bin:$PATH'' csh -cf 'qmail-start splogger qmail &'
  ______________________________________________________________________

  (2) 実行中の sendmail を止めます。以下に sendmail を止める手順を示しま
  す。

  1. 現在のsendmail daemon を kill -STOP する。

  2. ここで，sendmail の子供が存在するときは，「kill -CONT し，すこし
     待って，再度 kill -STOP する」という作業を子供がいる間繰り返す。

  3. 子供がすべて止まったら，kill -TERM し，kill -CONT してsendmailを止
     める。

  (3) qmail の sendmail 版 wrapper(sendmail のインターフェイス付き
  qmail)で，現在の sendmail を置換します。

       # mv /usr/lib/sendmail /usr/lib/sendmail.bak
       # ln -s /var/qmail/bin/sendmail /usr/lib/sendmail

  (4) /etc/inetd.conf を修正します。以下の行を /etc/inetd.conf に書き込
  み(これはすべて 1 行で書くこと)， comsat に関する行をコメントアウトし
  ます。

  ______________________________________________________________________
  smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env
  /var/qmail/bin/qmail-smtpd
  ______________________________________________________________________

  (5) マシンを再起動します。あるいは inetd を kill-HUP し，qmail が正し
  く動作していることを確認してもかまいません。

  (6) sendmail で未処理のまま queue に残っているメールの処理を行います
  (この処理は省略してもかまいません)。qmail の実行中であっても，
  sendmail.bak -q (あるいは sendmail.bak -q15m) を実行してもかまいませ
  ん。queue に残っているメールがすべて処理されるまで，これを行ってくださ
  い(数日かかることもあります)。

       # /usr/lib/sendmail.bak -q

  (7) sendmail と binmail 等の実行許可を取り除きます(この処理は省略して
  もかまいません)。ここでは，chmod 0 を実行することにします。

       # chmod 0 /usr/sbin/sendmail /usr/lib/sendmail.bak /usr/lib/sendmail.mx
       # chmod 0 /bin/mail
        ...

  (8) mail が正しいメイラーを起動することを確認します(意味不明)。SVR4 の
  処理は省略してもかまいません)。SVR4 では，mail から mailx へリンクを作
  成すればよいでしょう(意味不明)。

  1.4.  移行後のテスト

  (1) SMTP のテストを行います。SMTP 経由で自マシンにメールを出すテストを
  行います。自マシンの ~me/Mailbox にメールが届いていることを確認してく
  ださい。

       % telnet 127.0.0.1 25
       Trying 127.0.0.1...
       Connected to 127.0.0.1.
       Escape character is '^]'.
       220 relay.ec.tmit.ac.jp ESMTP
       helo dude
       250-relay.ec.tmit.ac.jp
       250-PIPELINING
       250 8BITMIME
       mail <me@relay.ec.tmit.ac.jp>
       250 ok
       rcpt <me@relay.ec.tmit.ac.jp>
       250 ok
       data
       354 go ahead
       Subject: testing

       This is a test.
       .
       250 ok 812345679 qp 12345
       quit
       221 relay.ec.tmit.ac.jp
       Connection closed by foreign host.
       %

  (2) 遠隔マシンから自マシンのメールのテストを行います。ほかのマシンから
  自マシンのアカウントへメールを出してみてください。

  (3) 遠隔マシンからのテストメールのテストを行います。

  (4) MUA のテストを行います。mh-e 等を使って，最初は自マシンのアカウン
  ト，次に遠隔マシンのアカウントにメールを出してください。

  (5) 遠隔マシンから自マシンの postmaster へのメールのテストを行います。
  遠隔マシンから PoStMaStEr@relay.ec.tmit.ac.jp へメールを出し，
  ~alias/Mailbox にメールが届いていることを確認してください。

  1.5.  qmail の管理ツール

     /var/qmail/bin/qmail-qread
        queue の内容をリストにして表示します。

  1.6.  qmailanalog のインストールと設定

  (1) qmailanalog のディレクトリを決めます。デフォルトは
  /usr/local/bin/qmailanalog です。これを変更するには， conf-bin.h を編
  集してください。

  (2) 以下のコマンドを実行します。

       # make
       # make setup
       # ln -s /usr/bin/awk /usr/bin/nawk

  (3) qmail のログがマイクロ秒単位であることを確認します。

       849347513.939860 running
       849347523.531129 new msg 19326
       849347523.532347 info msg 19326: bytes 266 ...

  (4) qmail のログを qmailanalog/matchup に処理してもらいます。

       % awk '{$1=";$2=";$3=";$4=";$5=";print}' < /usr/adm/message \
            | /usr/local/bin/qmailanalog/matchup > out

  (5) matchup の出力を qmailanalog/z* スクリプトで処理します。

       % /usr/local/bin/qmailanalog/zddist < out      # メールの遅れの統計
       % /usr/local/bin/qmailanalog/zfailures < out   # 失敗メールのチェック
       % /usr/local/bin/qmailanalog/zrecipients < out # 受け取り先の統計
       % /usr/local/bin/qmailanalog/zrxdelay < out    # 受け取り先の統計(遅れでソート)
       % /usr/local/bin/qmailanalog/zsuccesses < out  # 成功時に理由の統計(意味無し)
       % /usr/local/bin/qmailanalog/zdeferrals < out  # deferral時の理由の統計
       % /usr/local/bin/qmailanalog/zoverall < out    # 基本統計
       % /usr/local/bin/qmailanalog/zrhosts < out     # 相手のホストの統計
       % /usr/local/bin/qmailanalog/zsenders < out    # 差し出し元の統計
       % /usr/local/bin/qmailanalog/zsuids < out      # 差し出し元のuidの統計

  1.7.  qmail の qlist による簡易 ML の作成

  以下のコマンドを実行し，

       % touch .qmail-ifweb .qmail-ifweb-owner

  .qmail-ifweb-request ファイルに以下の内容を書き込みます。

  ______________________________________________________________________
  | qlist2 ifweb relay.ec.tmit.ac.jp
  ______________________________________________________________________

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

  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 のための設定ファイルとディレクトリを作成します。以下に例
  を示します。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

  これで終わりです。

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

