qmail-inject qmail-smtpd
\ /
\ /
qmail-queue ... [qmail-clean]
|
|
[qmail-send]
/ \
/ \
[qmail-lspawn] [qmail-rspawn]
|| ||
|| ||
qmail-local qmail-remote
メッセージはqmail-queueにより、中核となるキューディレクトリに登録される。メッセージはqmail-sendにより、qmail-lspawnやqmail-rspawnによって配送される。さらに、qmail-cleanによって消去される。これら四つが走り続けているデーモンである。
キューはファイルシステムがクラッシュしない限り、システムクラッシュがあっても安全なように設計されている。
maildir形式のディレクトリにはtmp、new、curというサブディレクトリがある。
例えば、メールの配送中にマシンがクラッシュした場合、mboxファイルだと、メッセージが切り詰められてしまう。最悪の場合、mbox形式ではメッセージが行の途中で切れている場合、次のメッセージとつながってしまうことになる。メイラーは、うまく配送できなかったことを理解し、再送をしようとするが、この場合でも壊れたメッセージが表示される。それに対して、maildirは、メッセージを受け取っている間のシステムクラッシュに耐えることができる。