Return to Home Page

メーリング・リスト


メーリング・リストとは、複数の e-mail addresses をまとめて、一つの 特定の e-mail address が当てられたもの、と考えると分かりやすいでし ょう。その特定の address(すなわち、メーリング・リストのアドレス) に e-mail を出すと、まとめて登録されている e-mail addresses すべて にそれが転送されます。

実際には、

などの機能を備えているものが多いです。

ここで行っているメーリング・リスト は、fml Ver.4.0 を使っていて、上記のような機能を備えています。 中身の各行の先頭が#で始まるメールは、メーリング・リストに対して、 何らかの操作を依頼するメールと解釈します。以下に、そのコマンドの リストを挙げます。


コマンド一覧

オリジナルのヘルプファイルを oshima@ms.u-tokyo.ac.jp が、若干改変 し、ここで行なわれているメーリング・リストにとって無意味なものを 省略したものです。
# 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のメール“だけ”を取り寄せたい

要注意!
『必ず本文の先頭が # で始まるコマンドを用いる』
#もし間違えたコマンドを送るとこのファイルが送り返されます。

間違いのないよう、このように
% 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ディレクトリというのが出来ます。
これの中に取り寄せたメールがしまわれています。

Return to Home Page