平鍋です.
On Wed, 16 Aug 2000 18:16:25 +0900,
Yuji Yamano <u90156@....jp> said:
>> Memberというクラスはどうでしょう?1インスタンスが、1つ(1人)の
>> メンバ情報を管理します。また、案ですが、こいつにメール本文を
>> 送れば、ヘッダ情報をつけて、外に出すような役割を持たせても
>> よいかもしれません。
> Member にメール本文を送る案は、効率と SMTP のプロトコルとの親和性を
> 考えるといまいちだと思います。このやり方だと、
そうですね.Member クラスを作るとしても,それはデータベース
(あるいは MVC のM)として用い,直接外部とは接触を持たせない方
が良さそうです.「学会誌を送る秘書」メタファで言うと,会員に
学会誌を送る場合,秘書は実際はメンバと顔見知りでもなんでもな
く,メンバ情報を持っているだけです.送付は,郵便局が行って
くれます.
> - Member 毎に相手先のメールサーバと MAIL FROM: 〜 DATA をしゃべる
> か、
> - 全 Member の情報と本文をどこかにためておいて、効率的な配送
> ができるように誰かがコントロールしながら SMTP をしゃべる
> 必要があります。リストがアクティブで多数の講読者がいる場合には、
> 効率は無視できません。
ということで,後者が良さそうです.
> SMTP をしゃべる部分まで自前で作るのであれば、最低でも
> ML 固有の設定を管理するクラス(ML 名とか、メンバーファイル等)
> メール本文
> メンバーリスト、メンバー
> メール配送を管理するクラス
> SMTP をしゃべるクラス
> ぐらいが必要ではないでしょうか。
> ストーリー1 は、sendmail のような MTA におまかせにして、先に進むのが
> 楽かなという気もしますが。
賛成です.ということで,矢崎さんがまとめていただいた以下の案
を基本にしましょうか.少しコメントしました.
On Thu, 17 Aug 2000 13:03:16 +0900,
firo <firo@....jp> said:
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ([XP-jp:00680]を参照)
> MTA(ex.sendmai)--->extreme-domo--->MTA(ex.sendmai)
> (--->はメールの流れ)
> というわけで、上記のextreme-domoを、今回のVXPで開発
> する。
> つまり、
> 1.MTA(sendmail)がメールを受け取る。
> 2.MTAは/etc/aliasesを見て、エイリアスの判断し、該当するもの
> をextreme-domoの標準入力に送る。
> 例:XP-jp: "|/usr/local/bin/extreme-domo XP-jp"
> 3.extreme-domoはいろいろやる<---何をやるかが、ユーザ
> ストーリとして定義されるというわけ。
> 4.extreme-domoはいろいろやった後のメールを、メンバーへ
> 配送するために、再びMTAへ渡す。
ここも,標準出力を基本的には使いましょう.sendmail は,メー
ルヘッダを含めて標準入力から読むことができます.ただし,エン
ベロープの To は,sendmail に引数で渡す必要があったと思いま
す.
> 5.MTAは/etc/aliasesを見て、エイリアスをメンバへのアドレス
> へと展開し、送信する。
いいえ,ここは無理があると思います.メンバの追加等で,
/etc/aliases を extreme-domo が管理するのは,他のプログラム
との兼ね合いもあり,危険でしょう.
送信宛先のリストには /etc/aliases を用いず,送信用 sendmail
起動時に引数として渡す方がよいと思います.
> <[XP-jp:00676]>
> ストーリー1の「メーリングリスト(以下ML)のユーザが,ML のアドレスにメー
> ル送
> 信すると,ML に所属するメンバ全員に,そのメールが配信される.」タスクを
> 考え
> てみました。
> タスク1:メンバーリストを読み込んで、メールアドレスのリストとして保持す
> る。
> タスク2:新規メールを受け取ると、メールアドレスのリストの各メールアドレ
> スに
> 受け取ったメールを送る。
> タスク3:新規メールが到着したら、タスク2を起動するメカニズム。
> タスク4:メールを送るメカニズム。
> </[XP-jp:00676]>
> さて、以上だとすれば、Memberクラスはいらない、というご指摘に
> 私も賛成します。
Member クラスは自然だと思います.(バウンダリでなく,データとして)
[extreme-domo] ---> [MemberList<<entity>>] <>----*> [Member<<entity>>]
+----------> [Mailer<<boundary>>] ----> [sendmail<<actor>>]
というクラス構造にすることは全く問題がないように思えます.
以上