NAME
Tripletail::Sendmail::MailQueue - 独自のメールキューを使用するメール送信
SYNOPSIS
my $smail = $TL->newSendmail('SendMailQueue');
$smail->send(...);
$smail->send(...);
$smail->send(...);
$smail->process;
DESCRIPTION
送信要求されたメールを、 TripletaiL のメールキューに保存する.
キュー内に保存されたメールは、"process" 呼び出し時に一括して配送される。
METHODS
- new
- connect
- disconnect
-
何もしない。
- setTimeout
-
Tripletail::Sendmail::Smtp 参照。配信時のタイムアウト時間を設定する。
- send
- process
-
$smail->process
実際の配信処理を行う。一般にこのメソッドは処理に時間が掛かる為、 CGIのプロセスから直接呼ぶべきではない。
Ini パラメータ
- queuedir
-
queuedir = /home/www/mqueue/
メールキューディレクトリ。
- timeout
- host
- erroraddr
-
erroraddr = null@example.org%localhost
配信エラー時にエラーメールを送るなら、その送信先を指定。
null@example.org%localhost
のように使用する smtp サーバーを指定する。%
以降は省略可能で、省略された場合はlocalhost
となる。 - errorlog
-
errorlog = 1
配信エラー時にエラーログを記録するかどうか。 0の場合、保存しない。 1の場合、保存する。
実装
- メールキュー
-
メールキューのディレクトリには、queue,incoming,outgoing の3つのディレクトリが 作成済みで、同一のパーティションになければならない。
メールは、1行目にエンベロープFrom、2行目以降にエンベロープToが1行1アドレスで あり、空行を挟み、その後に本文データが続く。改行コードは
\r\n
とする。 - 送信時 (Tripletail::MailQueue)
-
新規にキューにメールを入れる場合は、incoming ディレクトリ内に作成してから queue へ rename(2) する。ファイル名は、時刻、プロセスID等を使い、 ユニークになるようなものとする。
- 配信時 (mailqueue-process)
-
メールを処理するときは,outgoing に rename してから処理を行い、終わったら
rm
する。rename(2)
する際、ファイル名の末尾に「.」とプロセスIDを記述する。メールを定期的に調査し、設定されたMTAへSMTPで送信を行う。failure の場合は 指定アドレスにメールを送るか、ログに書き込む(設定で変更可能)。deferral の場合は queue ディレクトリに rename(2) で戻す。末尾の .$pid は削除する。
- 修復 (mailqueue-recover)
-
プロセスが存在しないのに、outgoing にファイルがある場合は、deferral として queue ディレクトリにrename(2) で戻す。末尾の .$pid は削除する。
プロセスが存在しないのにincomingにファイルがある場合は、それを削除する。
SEE ALSO
AUTHOR INFORMATION
Copyright 2006 YMIRLINK Inc.
This framework is free software; you can redistribute it and/or modify it under the same terms as Perl itself
このフレームワークはフリーソフトウェアです。あなたは Perl と同じライセンスの 元で再配布及び変更を行うことが出来ます。
Address bug reports and comments to: tl@tripletail.jp
HP : http://tripletail.jp/