&fml8; のメール配送システム &fml4; と &fml8; の相違点 &fml8; 最大の目的の一つは、 メンバーリストの取得操作におけるコードの統合と抽象化です。 配送システムも抽象化された IO 層を利用して配送先の情報を取得しています。 配送には抽象化された Mail::Delivery クラスを次のように使っています。 Mail::Delivery::* に属するクラスは SMTP および LMTP 配送へのインターフェイスを提供します。 つまり Mail::Delivery は Mail::Delivery 以下の派生クラス SMTP、ESMTP へのインターフェイスを提供するアダプター層です。 たとえば次のように使います。 use Mail::Delivery::SMTP; my $service = new Mail::Delivery::SMTP; if ($service->error) { Log($service->error); return;} $service->deliver( { mta => '127.0.0.1:25', smtp_sender => 'rudo@nuinui.net', recipient_maps => $recipient_maps, recipient_limit => 1000, mesage => $message }); ここで $message は Mail::Message オブジェクトです。 <link linkend="module.mail.message"> Mail::Message </link> オブジェクト このオブジェクトはメールを解析し、 header -> body header -> preamble -> part1 -> part2 -> trailor (multipart) のようにオブジェクトが「数珠つなぎ」になったデータ構造を作ります。 Mail::Message クラスはこのようなデータ構造を操作するメソッドを提供しています。 §.mailqueue; キュー管理システム 2004 夏以降、 &fml8; の配送システムはキュー管理システムのもとで動いています。 これにより &fml8; 自力での再送処理が可能となりました。 別の言い方をすれば、 実質的に &fml8; をメールサーバと言ってよくなったわけです。 議論: FML::Mailer は必要か? FML::Process::QueueManager が使っているのみなので 独立したモジュールである必要があるだろうか?という疑問です。 現状 reply_message() メソッドが何でもしてしまうので、 FML::Mailer を呼ぶことはないかもしれません。 もっとも reply_message() 以外の送信メソッドがあり得るかもしれません。 将来、どうも使ってないようなら FML::Process::QueueManager に合併するべきなのでしょう。 ねんのため、HOOK などでは FML::Mailer は使わないようにして下さい。 配送に関する TIPS &recipes.delivery;