矢崎です。
Yuji Yamanoさん wrote:
> こんにちは。最近、いそがしくてきちんと読んでなかったのですが、
>
> firo <firo@....jp> writes:
>
> > Memberというクラスはどうでしょう?1インスタンスが、1つ(1人)の
> > メンバ情報を管理します。また、案ですが、こいつにメール本文を
> > 送れば、ヘッダ情報をつけて、外に出すような役割を持たせても
> > よいかもしれません。
>
> Member にメール本文を送る案は、効率と SMTP のプロトコルとの親和性を
> 考えるといまいちだと思います。このやり方だと、
>
> - Member 毎に相手先のメールサーバと MAIL FROM: 〜 DATA をしゃべる
>
> か、
>
> - 全 Member の情報と本文をどこかにためておいて、効率的な配送
> ができるように誰かがコントロールしながら SMTP をしゃべる
>
> 必要があります。リストがアクティブで多数の講読者がいる場合には、
> 効率は無視できません。
>
> SMTP をしゃべる部分まで自前で作るのであれば、最低でも
>
> ML 固有の設定を管理するクラス(ML 名とか、メンバーファイル等)
> メール本文
> メンバーリスト、メンバー
> メール配送を管理するクラス
> SMTP をしゃべるクラス
>
> ぐらいが必要ではないでしょうか。
>
> ストーリー1 は、sendmail のような MTA におまかせにして、先に進むのが
> 楽かなという気もしますが。
>
なるほど、メールの受け取り、配送、エイリアスの処理は
sendmailにおまかせ、というわけですね。
sendmailとか、誤解しているかもしれないので、ここで確認
させてください。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
([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へ渡す。
5.MTAは/etc/aliasesを見て、エイリアスをメンバへのアドレス
へと展開し、送信する。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
もし、上記でよろしければ、確かにストーリ1の大部分はsendmail
にやらせるということになりますね。以下のタスクでいえば、タスク
4を、「**入力した** メールを **MTAに** 送るメカニズム」と
読みかえて、それだけをすればいいようにも思いますがどうでしょう?
(本当は、メールを と MTAに の間に、XXXをして、というのが
はいりますが、このXXXは、このユーザストーリに含まれていない
ので、このストーリの開発にはあがってこない、と理解していま
すが、、?)
<[XP-jp:00676]>
ストーリー1の「メーリングリスト(以下ML)のユーザが,ML のアドレスにメー
ル送
信すると,ML に所属するメンバ全員に,そのメールが配信される.」タスクを
考え
てみました。
タスク1:メンバーリストを読み込んで、メールアドレスのリストとして保持す
る。
タスク2:新規メールを受け取ると、メールアドレスのリストの各メールアドレ
スに
受け取ったメールを送る。
タスク3:新規メールが到着したら、タスク2を起動するメカニズム。
タスク4:メールを送るメカニズム。
</[XP-jp:00676]>
さて、以上だとすれば、Memberクラスはいらない、というご指摘に
私も賛成します。
ホソカワさんご提案のMailerクラス(これは入力用と出力用にわけ
なくてもいいのでしょうか?)だけでいいような気もしますが。
--
矢崎博英 firo@....jp