矢崎です。
Yuji Yamanoさん wrote:
>
> > ホソカワさんご提案のMailerクラス(これは入力用と出力用にわけ
> > なくてもいいのでしょうか?)だけでいいような気もしますが。
>
> まず、Mailer クラスだけでよいかどうかですが、Mailer がおこなうのは、
> メール本文と配送先のアドレス(/etc/aliases に書かれたもの、実際の配送
> 先アドレスへの展開は sendmail がおこなう)を使い、sendmail を起動する
> ことです。
>
> そのままクラスになるのかどうかは別にして、メール本文と配送先のアドレス
> は必要になりませんか?
>
それは、こういう意味でしょうか?
1.Mailerが引数で受け取ったアドレス(メンバから見て送信先
のアドレス)を、配送先のアドレスに変換する。この配送先
のアドレスは/etc/aliasesに登録されていて、実際のメンバ
へのアドレスへの展開は、sendmailが行う。
2.1で送信先アドレスから配送先アドレスへの変換のための対応
表が、テキストファイル上にあるので、それを読んで、1の
変換処理を行う必要がある。
さて、以上が正しいとして、以下のようなCRCを考えてみました、、
1.Mailerがメール本文と送信先アドレスを取得する。
##ここいらへんは、よく知らないのですが、メール本文はMailer
の標準入力から取得し、送信先アドレスは引数で受け取ること
になるのでしょうか?
2.Mailerは、AddressMap(仮称)をnewし(あるいは既に起きて
いるかもしれませんが)、次に送信先アドレスから配送先アドレ
スへ変換する処理を依頼する。
3.AddressMapは対応表を読みこみ(あるいは、既に読み込み済み
で、キャッシュしているもの)、送信先アドレスから配送先アド
レスをつきとめ、それをreturnする。
4.Mailerは、Mailインスタンスをnewし、本文および配送先アドレ
スをMailインスタンスにセットする。
5.MailerはMailインスタンスに、出力を依頼する。
6.Mailインスタンスは、自分の情報をsendmailの標準入力?に書き
出す。
#この時、sendmailを起動する必要があるのでしょうか?
5と6は
・Mailが返したテキストをMailerが出力する。
・MailがMailerのポインタを受け取り整形後、Mailerへ出力を
依頼する。。等
いくつか代案がありそうです。
えーと、勘違い部分へのご指摘も含めて、ご批判、ご代案、ご教示お
願いします。
>
> 次に、入出力をわけるかどうかです。非 XP 的ですが:-p、将来、メールの配送
> 系まで自前で作る事を考えるのであれば、入力用と出力用をわけたほうがいい
> でしょうね。(qmail 的ですが)
>
私はそこまで考えていなくて、単に入力と出力をいっしょにしたほう
がよいか、分けたほうがよいか、、くらいしか頭にありませんでした(^^;;。
>
> でも、最初のイテレーションですし、このあたりを作りなおしてもたかが
> しれているので、とりあえず入出力をわけずに作ってみるのはどうでしょうか?
御意です。
--
矢崎博英 firo@....jp