会話伝達重視型動的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

というメイルを送ればヨシ。だいじょうぶ、あとから入れられた人には 使い方ガイドが送られるから。

インストール

さあ、これ大事。大まかな手順はこんな感じ。

  1. qmailなサーバを用意する。
  2. catchup.rbをどこかに インストールする(/usr/local/binと仮定)。
  3. catchup.rb -install と起動する。

なに1がネック? インストール簡単だって。やってみれ。え、 めんどいとな。じゃ、 うちとか 家系本家とか、 すどさんちとか、 おがわさんちとか、 けーじさんちとか、 いくらでもあるでよ。

おっと話が逸れた。catchup.rb -install したら 以下のように入力していく。

  1. 作りたいMLアドレス
  2. 固定メンバーにしたい人のメイルアドレス その1
  3. 固定メンバーにしたい人のメイルアドレス その2
  4. 固定メンバーにしたい人のメイルアドレス その3
  5. :
  6. :(必要なだけいれる)
  7. :
  8. x (おしまいにxだけいれる)

これが終わると、

の質問がなされるので適宜答える。最後に、書き出す 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>
#: inu@example.net
#: kiji@example.org
#: SARUTA monkey <saru@example.com>

そう、固定メンバーを #: のあとに列挙しているだけ。 qmail 本体は # で始まる行は無視するのでエラーにならない。でも catchup.rb は自分が呼ばれた dot-qmail ファイルを探してそこにある #: の行をメンバーリストとして利用する。書式は簡単, 手でも書けるっしょ。先にこっち書けばよかった? そうかも。 で、オプションの意味。

オプション意味
-FFrom:ヘッダをいじくる(携帯電話参加者が 多いときは必須)
-S空っぽなSubject:を回避
-s自動メンバー登録しない(Static only)
-r addressこのMLの宛先を 明示的に指定(つけた方が無難)
-fReply-Toが既にあっても上書き
-h Header=Value ユーザ定義ヘッダを追加で付ける
(-h X-ML-Name=foo なんてするとよろし)
-e expire 自動登録メンバーを(最後の発言から)何秒後に 登録解除するか(y m d h を後置すると年月日時指定)
-installdot-qmailファイルの インストール
-d dir dot-qmailファイルを書き出すディレクトリを指定(-installで使う)

他のMTAで使いたい

courier-mta ならほぼそのまま動くはず。Postfixでも拡張アドレスとVERPは 使えるので情報もらえればすぐ直せるはず。御相談を。


890
yuuji@gentei.org
Fingerprint16 = FF F9 FF CC E0 FE 5C F7 19 97 28 24 EC 5D 39 BA
HIROSE Yuuji - ASTROLOGY / BIKE / BILLIARDS / EPO / GUEST BOOK / YaTeX