矢崎です。
いろいろご教示ありがとうございます。
Yuji Yamano さんwrote:
>
> 大昔、ML 用のドライバーを自作していた時は、こんな感じにやっていました。
> まず、以下のエントリーを /etc/aliases に追加します。(MTA は sendmail)
>
> foo: "|/home/yyamano/ml/foo/driver"
> foo-recipient: :include:/etc/mail-list/foo
> foo-request: owner-foo
> owner-foo: u90156@....jp
>
> foo はリスト本体のアドレスで、ここあてのメールを受信すると
> /home/yyamano/ml/foo/driver が起動され、メール本文(含むヘッダー)
> は標準入力にながしこまれます。driver の中で、メールヘッダーの
> 書きかえや、アーカイブをおこない、最終的に送信する内容を sendmail
> にふたたびわたします。
>
> foo-recipient は配送のためのトリックです。/etc/mail-list/foo という
> ファイルには実際に配送するアドレスが列挙されています。driver は、
> 最終的に配送するメール本文とこのアドレスを、sendmail にわたします。
私はメールのしくみ(sendmail含む)は詳しく知りませんし、
当然のこと、自分でメール関係のプログラムを組んだこと
はないのですが、だいたい上記のイメージで、今は考えて
います。
>
> > 1.Mailerがメール本文と送信先アドレスを取得する。
> > ##ここいらへんは、よく知らないのですが、メール本文はMailer
> > の標準入力から取得し、送信先アドレスは引数で受け取ること
> > になるのでしょうか?
>
> ここで Mailer といっているものは、上の /home/yyamano/ml/foo/driver
> と同じものでしょうか? もし、そうだとすると可能なはずです。
>
同じものです。
>
> ただし、Mailer に直接アドレスをわたすよりは、ML 固有の情報(ML 名とか、
> アドレス等)を記述したファイルを作っておき、そのファイル名をわたすよう
> にしたほうが汎用性があると思います。
これは、Mailerの標準入力から受け取ったテキスト
から、ヘッダにあるアドレス(例でいえばfoo)を取り
出してfooと対応する宛先(foo-recipient:)へ変換す
るということという理解でいいでしょうか?そして、そ
の変換の情報がファイルに書いてあると、、
>
> うーん、Mail インスタンスは、メール本文と配送先をためておくものですよね?
> なんとなく、配送系の作業は別のクラスにさせたほうがよいように思います。
私も、入力系と出力系をわけたほうがいいかなあ、と
漠然と思っていたのですが、そういう意味で、配送系
のクラスを作ることに異議はないです。
>
> 1. Mailerがメール本文とメール設定ファイルを取得する。
>
> 2. メール設定ファイルをパースし、配送先のアドレス等をメモリ上に保存する。
>
> 3. Mailerは、Mailインスタンスをnewし、本文および配送先アドレスを
> Mailインスタンスにセットする。
>
> 4. Mailer は、Mail インスタンスを配送エージェントクラスにわたし、配送を
> 依頼する。
>
> 5. 配送エージェントクラスは sendmail を起動する。
>
> こんな感じでどうでしょうか?
>
> クラスとしては、
>
> Mailer
> ML 固有の設定
> Mail
> 配送エージェント
>
> ぐらいですね。
だいたいのイメージは(このMLメンバの中で)共有できた
と思いますがどうでしょう。とりあえず現在はIteration
Planning Meetingでもあるし(と私は認識)、さらなる詳細な
デザインは、後続のペアにまかせることとして(その段階で
CRCの変更は有り得る)、このタスクが2、3日で達成でき
るかどうか判断し、達成できそうだとわかればタスクの見積
りを行い、ペアに進みましょう。もし、2、3日以上かかりそう
であれば、タスクを分割しませう。。。。というのはどうでしょう?
それと、少なくともあと1つくらいはストーリをこのイテレー
ションの開発対象にしたいですね。
ユーザ殿、他に開発したいストーリはありませんでしょうか?
--
矢崎 博英 <firo@....jp>