メーリング・リスト(2003年4月から以下のメーリングリスト方式を廃止 しました。現在稼働中のメーリングリストの使用法については、山登 iyamato@rs.noda.tus.ac.jpにお尋ね下さい。)

このメーリング・リストの存在を、最近、東大の大島 先生に教わりました。そこで、そのソースファイル fml Ver.2.1をInternet Initiative Japan Inc.札幌の開発者(ftp://ftp.iij.ad.jp/pub/IIJ/dist/fukachan/fml/) より戴き、研究室のHPにインストールしました。以下に記述するコマンドとメーリング・リストの概要は 大島先生のものに若干変更を加えたものです。
メーリング・リストとは、複数の e-mail addressesをまとめて、一つの特定の e-mail addressが当てられたもの、 と考えると分かりやすいでしょう。その特定の address(すなわち、メーリング・リストのアドレス)に e-mailを出 すと、まとめて登録されている e-mail addressesすべてにそれが転送されます。

実際には、

などの機能を備えているものが多いです。 ここで行っているメーリング・リストは、fml Ver.2.1を使っていて、上記のような機能を備えています。

例えば、その複数の e-mail addresses をまとめて yamato@yl05hp.tb.noda.sut.ac.jp としたとします。その時、 メーリング・リストに対して何らかの操作を行わせるには、文の先頭を#で始め、そのような操作を依頼するコマ ンドをその次に入れたメールをyamato-ctl@yl05hp.tb.noda.sut.ac.jp 宛に送信します。つまり、名前に -ctl を付け足した宛名に送ります。以下に、そのようなコマンドのリストを挙げます。


コマンド一覧

オリジナルのヘルプファイルを若干改変したものです。

# helpと#helpを同一視します。またCase Insensitiveです。つまり # help = # Help =…= # HELP。 [] はオプショナルを意味しています

# help             コマンドのヘルプ
# objective        メーリング・リストの目的、約束事を読む
# guide           (非)メンバが案内を得る
# msg              管理者へメールを送る
# members          メンバのリストを得る
# actives          アクティブなメンバのリストを得る
# summary  [引数]  過去の記事一覧を得る(Summary全体を送る)
                   引数: 特定の過去をしめすキーワード
                   例:# summary          summary ファイル全体
                       # summary last:10  最近の10個の記事のサマリー
                       # summary 100-200  記事100〜200 のサマリーだけをみる
# get  ID           過去の記事を得る(ひとつずつ plain text で送り返す)
# send ID           同上
# status 引数
# stat   引数      現在の設定について知らせる(OFFとか)
                   デフォールト(# stat(us))は自分自身の状態
# exit             コマンド終り(Signature あっても大丈夫)
# end              コマンド終り
# quit             コマンド終り

                 まとめてget:-)(tar.gz でまとめてある)
# mget 正規表現 送り返されるメールの時間間隔(sec)
# mget 1-10,5みたいなsyntax 送り返されるメールの時間間隔(sec)

                  例外的に mh的な # mget last:10 も使えます。
                  last:\d+だけ:-)

   e.g. 
   # mget * 10          基本系だが、次のようなものでは      
   # mget 1-10          これらのコマンドシンタックスでは自動的に    
   # mget 1-10,12,15-100     mget2に切替えてサーバが送り返します。
   # mget 1,2,10                

        [補足]
        さらにその後に、オプションとして
        unpack, ish, 数字(複数になった時に送り返す間隔)
        を指定できます

                オプションなしは tar+gzip で spool.tar.gz
        tgz     同上
        rfc934  RFC934 format   PLAINTEXT
        ish     lha + ish 
        unpack  PLAINTEXT(UNIX FROM)
        uf      PLAINTEXT(UNIX FROM)
        gz      GZIP(UNIX FROM)
        rfc1153 RFC1153 format  PLAINTEXT

   e.g.
   # mget 1-10 unpack   PLAINTEXT(UNIX FROM)
   # mget 1-10 uf       PLAINTEXT(UNIX FROM)
   # mget 1-10 gz       GZIP(UNIX FROM)
   # mget 1-10 mp       MIME/Multipart
   # mget 1-10 rfc934   RFC934 format
   # mget 1-10 rfc1153  RFC1153 format
   # mget 1-10 ish      lha + ish 

# skip             From:のアドレス をそこから投稿はできるが、配送
                   はされないものと設定する
# noskip           上の逆。配送するようにする。
# off              MLを一時的に離脱する
# on               一時的離脱をやめてMLに再参加する
# bye              MLをやめる
# unsubscribe      MLをやめる

特殊目的:

        まんがいち複数マッチをしてしまっても サーバは自動的にアドレス
        チェックの精度をあげてトライをするのでたぶん必要ないとおもます
        が↓

# addr aoi@chan.panic
                 複数の配送先を持つ人はOFFコマンド等で
                 サーバの設定によっては複数マッチしてしまう
                 e.g. aoi@chan.panic と aoi@hayakawa.chan.panic
                 も両方マッチしてしまう時、
                 今は aoi@chan.panic についてのコマンドを行ないたい時
                 に使うと、このコマンド以降の他のコマンドを 
                 aoi@chan.panic に対してのみ行なうようにする
−−−−−−−−−−−−−−−−−−−−−−−−
どうやって過去のメールを取り寄せるかを説明します。

取り寄せ方:
%を以下shellのpromptとします。

==========例==========
#以下では mail と書きますが(昔は /usr/ucb/mailのことのつもりだった…)
#Mail (SUN)か, mailx (SVR3/4)コマンドだとおもってください。
#4.4BSD なら /usr/bin/Mail or /usr/bin/mail のことですね

1番めのメールが欲しい
        % echo "# get 1" | mail MLのアドレス
        % echo "#get 1"  | mail MLのアドレス

100番め〜200番めのメールが欲しい
        % echo "# mget 100-200"    | mail MLのアドレス

100番め〜200番めのメールが欲しいが複数のメールになって送り返さ
れる時に30秒に一通づつ送って欲しい
        % echo "# mget 100-200 30" | mail MLのアドレス

100番め〜200番めのメールをPLAIN TEXTで欲しい
        % echo "# mget 100-200 unpack"    | mail MLのアドレス

100番め〜200番めのメールをlha + ishで欲しい
        % echo "# mget 100-200 ish"    | mail MLのアドレス

100番め〜200番めのメールをPLAIN TEXTで欲しい(30秒間隔で)
        % echo "# mget 100-200 30 unpack" | mail MLのアドレス

?でマッチするファイル、つまり1〜9番めのメール
        % echo "# mget ?" | mail MLのアドレス

*でマッチするファイル、つまりMLのメール全部
        % echo "# mget *" | mail MLのアドレス


==========説明==========
1.
X-Mail-Count:1のメール“だけ”を取り寄せたい

要注意!
『必ず宛名に -ctl をつけた宛名に送ること』
#もしもとの宛名に出した場合はそのまま配送されます。

間違いのないよう、このように
% echo "# get 1" | mail MLのアドレス

とすることをお勧めします。

もし1〜3のメールなら
% cat > foo
# get 1
# get 2
# get 3
^D
% cat foo
# get 1
# get 2
# get 3
% cat foo | mail MLのアドレス
とすると
1、2、3ばらばらにメールが返ってきます。

問題はこうするとそれぞれについてsendmailが起動します。
#これくらいならどうでもいいんですがまちがえて1〜100までこのやりか
たで取り寄せようとするとこちらのマシンの大変な負荷になります。

そこで

2.
X-Mail-Count:1〜9を取り寄せたい
% echo "# mget ? 30" | mail MLのアドレス

つまりftpのコマンドと(ほぼ)同じです。正規表現を用いて下さい。
今の場合?は任意の一文字だからスプールの中の?に対応する
1〜9までのファイルがマッチします。
*なら全メールだし、??なら10〜99までです。

そして第4番目はあってもなくてもよいのですが、メールは1000行を目安
に切ってバラバラに送られるので、送り返されてくるメールとメールの時間間
隔を指定してください。ここでは30なので30秒間隔で送り返します。
#主にこのパラメータはuucpのポーリング時間あたり2、3通になるよう
に各ユーザがコマンドを指示したいようなケースで使うべきです。
#IPであなたのマシンが一辺にたくさんメールがきても受けとる自信がある
ならあまり関係ないです。

ちなみにデフォールトは5分です。

これらのファイルはtarでまとめられgzipされuuencodeされて
送り返されます。

1000行を越える場合は複数のメールに分けますので
自分でつなげて(^^;)たとえばbarというファイルにしたとします。
#uumerge.plなども便利ですね。

% uudecode bar
% ls 
spool.tar.Z
% zcat spool.tar.Z | tar xf - 
% ls 
spool.tar.Z spool
% ls -l
 rw-r--r-- .......................... spool.tar.Z
drwxr-xr-x .......................... spool

という具合にspoolディレクトリというのが出来ます。
これの中に取り寄せたメールがしまわれています。

山登研ホームページ