fml からメールで返事を送り返す 送り返すべきメールは Mail::Delivery::Queue を使いML固有の queue に入れます。 queue に入ったメールは、のちに FML::Process::QueueManager クラス経由で(配送)処理をします。 fml の中ではどう書くのか? あるメッセージ(テキストメッセージ)を送り返したい場合は、次のように書きます。 $curproc->reply_message( "you are not a ML member." ); この場合の受信者はコマンドの結果などを受けとる人、 fml にリクエストをした人です。 ファイルを送りたい場合や画像ファイルを送りたい場合は次のようにします。 $curproc->reply_message( { type => "text/plain; charset=iso-2022-jp", path => "/etc/fml/main.cf", filename => "main.cf", disposition => "main.cf example", }); $curproc->reply_message( { type => "image/gif", path => "/some/where/logo001.gif", filename => "logo.gif", disposition => "attachment", }); mail queue と配送の仕組み FML::Process::QueueManager により 特定の queue ファイルが queue ディレクトリから pickup され、 Mail::Message で parse され、 FML::Mailer 経由で Mail::Delivery が実際にメール配送処理をします。 Mail::Delivery::Queue ↓ ↓→→→ キューディレクトリ ↓ FML::Process::QueueManager ↓ ↓←←← キューディレクトリ ↓ FML::Mailer ↓ Mail::Delivery mail queue ディレクトリ queue ディレクトリは複数のディレクトリからなります。 new/ active/ deferred/ info/sender/ info/recipients/ info/ には envelope 情報が格納されます。 queue ファイルを作る時は、一旦 new/ に作成します。 queue ファイルを作る作業が終了し、配送準備 OK となったら new/ から active/ に移動されます。 つまり active/ にあるファイルは配送準備ができているものです。 queue ディレクトリをロックする 特定の $queue_id object ごとに lock() と unlock() メソッドを使い、 ロックをかけます。 ロックは active/$queue_id ファイルに対しての flock(2) システムコールです。