会話伝達重視型動的ML CatchUp
Program
catchup.rb
何するものぞ
3人以上で携帯電話で密なメイル連絡を取るときに便利な簡易MLドライバ。
個々が宛先を気にしなくても常に全員に返事が行く。
要Ruby。要qmail(または同等のアドレス処理機能)。
- 携帯電話の人もちゃんと返事できる
Reply-toが処理できない携帯電話でも必ず全員に返すよう
From:を書き換える。
- 紹介制メンバー登録
MLのアドレスとその他の宛先に同時に送ると
「その他の宛先」の人もMLに登録される。
QuickMLと似ているが
微妙に違う。次第に合流しながら旅行するときとかに便利。
一定期間が過ぎるとあとから足された人は自動的に解除される。
なお、紹介制でなく、希望者誰でも入れるオープン制にすることも可能。
- ニックネーム管理
呪文のような携帯電話アドレスでも,誰か(本人を含む)が
To:のコメントに名前を付けて送信すればその人にMLネームがつき,
次のメイルから名前つきで配信される。
- サブジェクト温存機能
パケット代節約のためSubjectを削って送る人(**)がいても
直近のSubjectを覚えておいて自動的にもう一度付け直す。
(**)本当に結構いるのだ。おかげでフォルダが ** no subject **
だらけで悲しい。
最近のemail事情
携帯電話からemailに入った若者はemailの作法を知らんのが多くて泣ける。
そんな昨今、こんなイライラはありませぬか。
「みんなに返せ」
「こりゃ急ぎの方がいいな。A君とB君に、明日打ち合せできないか
聞いてみよう。この時間だと帰宅中かな、携帯のアドレスに送ろう」
To: A君のアドレス, B君のアドレス
Subject: 臨時打ち合せ
--
Yです。明日(水曜) 打合せできませんか。
どうも先方でトラブル発生したみたいです。
私は何時でもOKですので2人の都合で決めて下さい。
「ぽちっとな、お、もう返事来た、早いね最近の若者は。」
From: A君
To: Yさん
Subject: Re:臨時打ち合せ
--
明日午前中なら何時でもOKですよ。
「おお、すばらしい、あ、B君からも来た」
From: B君
To: Yさん
Subject:
--
明日は9時〜11時か、17時以降なら空いてます。
どちらがいいですか。
「あれま、そうかじゃあ、9時からにするかー、ってか、
おめーらわしだけに送り返すな!
2人とも全員に返してりゃそれで完了してるだろ!
携帯電話付属のメイルリーダはタコなのが多いので、送信者だけに
送るのは簡単でもそれ以外がややこしかったりする。かといって、
Reply-toヘッダを付けても効いたり効かなかったり様々(トホホ)。
また後輩や学生が多くなって来るとこんなことが多い。
「ちみだれ」
「お,メイルが来た,なんじゃらほい」
To: Yさん
From: d8a8d328a..--.--xx8787daib...@docomo.ne.jp
Subject: 連絡
--
今日は熱が出たので休みます。
「そうかうつされると困るからなあお大事に,って,おぬし誰じゃ,名を名乗れ!
spam避けとかでながーいアドレスにするのは勝手だが,みんながそんなんだから
誰か分かるわけないわいボケ」と毒づきつつ登録アドレスを調べるのであった。
関係ないがSubjectが「連絡」っちゅーのもどうだろう。情報量ゼロ。
その他にも、
「仲間外れの恐怖」
最初 X, Y さんの2人でドライブに出た。高速道路の
休憩場所とかの連絡を携帯メイルでやってた。ああ便利な時代だねぇ。
途中Zさんが合流。Zさんにもメイル送らなきゃね。
Wさんも合流。Wさんにも送らなきゃね。あれ、
4人全員にメイル送るはずが、古いメイルに
リプライしたらWさんに途中から行かなくなってた!
うわーん、仲間外れ (;_;) ーん、ってか、3〜4人を越えると
ちまちまアドレスを確認するのが面倒くせえYO!
なんてなときにも威力を発揮する。一般的なMLドライバを使えば良さそうだが、
実際のところMLの挙動は「端末がReply-toヘッダにちゃんと従うこと」に
依存している。でも携帯メイルなんてそんなのお構いなしなので
ちっとも返事がMLに返って来ない。
かくなる上は……From:ヘッダ偽造という
禁断の技で解決を謀るしかない。どくいりきけん(うそ)。
つかいかた
固定メンバーのMLとして
たとえばちみのメイルアドレスが taro@example.com だとする。
そしたら拡張アドレス taro-kerai@example.com を作って、
inu kiji saru の3人全員と連絡を取るためのアドレスにしよう、という
ストーリーを考える。inu kiji saru はみーんな携帯電話のアドレス。
そしたら、だまって taro-kerai@example.com に送るだけ。
登録メンバー全員に届く。するとどんなタコな機種で返事を
書いても必ず taro-kerai@example.com に返って来る。めでたし。
From:に名前を
携帯電話付属のMUAにまともなヘッダを付けることは期待できない。
ならばサーバ側で付けてやろう。MLメンバーの登録アドレスを
nickname <real-email@example.com>
のようにしておけば,以後その人からメイルが来たときに
emailアドレスしかFrom:になかった場合nicknameが付加される。
次で述べる動的メンバーのときはもっと簡単で,新規メンバーを足すときの
To:(またはCc:)欄に「ニックネーム <ほんとの@アドレス>」の
形で書けばそれが以後採用される。これで「ちみ誰や」とオサラバ。
動的メンバーのMLとして
拡張アドレス taro-trip@example.com を作って気のあう仲間だけを
登録しておく。んじゃみんなでおでかけ。待ち合わせしよか。この宛先に
送れば仲間全員に届く。返事もみんなに確実に届く。あら、別の人が
参加? じゃあ、その人のアドレスも宛先に追加して送信。はい、
taro-trip@example.com はその人も動的メンバーとして加わる。
動的メンバーはしばらく(標準で1週間)メイルを送って来ないと
自動的にメンバーから外れる。めでたし。
誰に送られてるの? …… コマンドメイル
普段参加してないのにあとからMLに追加された人は誰が
メンバーなのか分からん。そんなときはMLの宛先に
Subject: member
というメイルを送ればヨシ。抜けたかったら、
Subject: off
というメイルを送ればヨシ。だいじょうぶ、あとから入れられた人には
使い方ガイドが送られるから。
ときには一部のメンバーに …… サブリスト機能
さあ、これで携帯電話の暗号のようなアドレスを覚えなくて済むぞい。
と思ったのも束の間、たとえば、MLに入っている一部の人にだけ通知したい。
「えーと、saru君とkiji君のアドレスなんだっけ…」
で、結局暗号のようなアドレスを探しに行くのであった…。が、
そんなときのために、MLアドレスのさらに後にハイフンを付けて、
特定の人の名前を書くと、その人とだけの連絡に使えるサブリストが
自動構築され、以後はそのサブリスト経由で連絡すればよくなる。
たとえば、全体のリストのアドレスが
taro-kerai@example.com
で、そこに加入している saru さん kiji さんにだけ送りたければ、
taro-kerai-saru+kiji@example.com
という宛先に送る。すると、メンバーリストからパターン saru, kiji
にマッチするアドレス全てと、自分からなるサブリストが作られる。
パターンは + 記号で区切って、確実に1人に定まると思われる
ものを指定する。この機能ゆえ、初期メンバーの登録時には正しい氏名を
ローマ字で入れておくよろし。
サブリストも、動的なメンバー追加ができる。それには
To: サブリストのアドレス
Cc: 追加したい人のアドレス
とすればよいのは全体リストの場合と同様。
1発あみだくじ
仲間で集まったときに、何か決めることになった。じゃんけんぽーん。
なかなか決まらん。じゃあ一発で
To: (サブ)リストのアドレス
Subject: 123
で空メイルを送ろう。1番からn番までくじ引き結果が各自に送られる。
インストール
さあ、これ大事。大まかな手順はこんな感じ。
- qmailなサーバを用意する。
-
catchup.rb
をどこかに
インストールする(/usr/local/bin
と仮定)。
-
catchup.rb -install
と起動する。
なに1がネック? インストール簡単だって。やってみれ。え、
めんどいとな。じゃ、
うちとか
家系本家とか、
すどさんちとか、
おがわさんちとか、
けーじさんちとか、
いくらでもあるでよ。
おっと話が逸れた。catchup.rb -install
したら
以下のように入力していく。
- 作りたいMLアドレス
- 固定メンバーにしたい人のメイルアドレス その1
- 固定メンバーにしたい人のメイルアドレス その2
- 固定メンバーにしたい人のメイルアドレス その3
- :
- :(必要なだけいれる)
- :
- x (おしまいにxだけいれる)
これが終わると、
- From:ヘッダの改ざんもするか?
(Reply-toに従わず送信者に送り返して来るような電話メイルの人が
加入しそうなら y にする)
- Subject空欄は回避するか?
の質問がなされるので適宜答える。最後に、書き出す dot-qmail
ファイル名を聞いて来るので入力する。
で、たとえば、~/.qmail-kerai
に書き出されるとすると、
同時に ~/.qmail-kerai-adm-default
がシンボリックリンクで
作成される。これは、エラーメイルが帰って来たときに
自動的にエラー発生アドレスを削除するために必要。
dot-qmailファイルの書式
吐き出された dot-qmail を見れば簡単。例えば
taro-keitai@example.com
という宛先用に
~/.qmail-keitai
を作ってみたのがこんな感じ。
| /usr/local/bin/catchup.rb -F -S -r taro-kerai@example.com
#: MOMO Taro <taro@example.net>
#: INUYAMA Wanko <inu@example.net>
#: kiji@example.org
#: SARUTA Monkichi <saru@example.com>
そう、固定メンバーを #: のあとに列挙しているだけ。
qmail 本体は # で始まる行は無視するのでエラーにならない。でも
catchup.rb は自分が呼ばれた dot-qmail ファイルを探してそこにある
#: の行をメンバーリストとして利用する。書式は簡単,
#: ローマ字氏名 <メイルアドレス>
を、列挙していけばよい。実際は漢字氏名でもよいが、それだと
サブグループ作成時に氏名で検索パターンを書けなくなるので、
英字で書いておく方が無難。もちろん例にあるように、氏名の省略も可能で、
その場合はメイルアドレスのみを書く。
オプション | 意味 |
-F | From:ヘッダをいじくる(携帯電話参加者が
多いときは必須) |
-S | 空っぽなSubject:を回避 |
-s | 自動メンバー登録しない(Static only) |
-r address | このMLの宛先を
明示的に指定(つけた方が無難) |
-f | Reply-Toが既にあっても上書き |
-o | オープン制にする(ToにMLアドレス、
Ccに自分アドレスを送れば誰でも加入できるが
悪用への注意が必要)
|
-h Header=Value |
ユーザ定義ヘッダを追加で付ける
(-h X-ML-Name=foo なんてするとよろし) |
-e expire
| 自動登録メンバーを(最後の発言から)何秒後に
登録解除するか(y m d h を後置すると年月日時指定) |
-install | 固定メンバーを入れた
dot-qmailファイルのインストール |
-d dir |
dot-qmailファイルを書き出すディレクトリを指定(-installで使う) |
他のMTAで使いたい
courier-mta ならほぼそのまま動くはず。
Postfixでも
dotqmail
スクリプトと組み合わせれば使える。この場合、Postfixの設定ファイル、
たとえば/etc/postfix/main.cf
に、
recipient_delimiter = -
を足し、postfixの設定をリロードする。そして、この catchup
を仕込む人のホームディレクトリの .forward
ファイルに以下の1行を追加する。
| $HOME/dotqmail
これはdotqmailスクリプトをホームディレクトリに置いた場合の記述で、
別の場所に置いたならその場所に書き換える。
以上の設定により、Postfixから ~/.qmail-*
ファイルが使えるようになるので、あたかもqmailを利用しているかのように
dot-qmail ファイルを作っていけばOK。
14150
yuuji@
Fingerprint16 = FF F9 FF CC E0 FE 5C F7 19 97 28 24 EC 5D 39 BA
HIROSE Yuuji -
ASTROLOGY /
BIKE
/
EPO /
GUEST BOOK
/
YaTeX