qmailの仕組み
0.はじめに
電子メールは、ネットワークの重要なアプリケーションのひとつである。そして、たくさんあるメール配送エージェント(MTA、Mail Transport Agent)のなかで、代表的なものにsendmailというものがある。しかし、sendmailは管理や設定が複雑さ、セキュリティなどに関して、改善が必要である。そこで今回、管理やセキュリティに関してsendmailよりも有利であるといわれているqmailについてとりあげる。
1.qmailの特徴
qmailには以下の特徴がある。
- 安全性:
qmailはsendmailとは異なり、機能ごとに複数のプログラムに分かれている。そして、それぞれが必要最小限の権限で動作している。また、メールアドレスやファイル、プログラムを区別して扱う。
- 信頼性:
qmailはメッセージをシステムに一旦受け取ると、決してそれが失われることがない、ということを保証している。また、maildir形式のメイルボックスをサポートしている。
- 高性能:
並列処理を行うことにより、メールが短時間で配送される。
- 簡潔:
qmailは他のMTAよりも小さい。
2.qmailの内部構造
qmail-inject qmail-smtpd
\ /
\ /
qmail-queue ... [qmail-clean]
|
|
[qmail-send]
/ \
/ \
[qmail-lspawn] [qmail-rspawn]
|| ||
|| ||
qmail-local qmail-remote
メッセージはqmail-queueにより、中核となるキューディレクトリに登録される。
そして、qmail-queueは、通常の形としてはローカルに作られるメールはqmail-injectにより呼び出される。また、SMTPによって受け取ったときはqmail-smtpdにより呼び出される。さらに、フォワードされるものはqmail-localにより呼び出され、差戻しの場合にはqmail-sendにより呼び出される。
メッセージはqmail-sendにより、qmail-lspawnやqmail-rspawnによって配送される。さらに、qmail-cleanによって消去される。これら四つが走り続けているデーモンである。
キューはファイルシステムがクラッシュしない限り、システムクラッシュがあっても安全なように設計されている。
3.maildir形式メイルボックス
maildirとは、メール受信用のディレクトリ構造のことである。
- maildirの構造
maildir形式のディレクトリにはtmp、new、curというサブディレクトリがある。
- maildirとmboxの違い
- mbox:
ひとつのファイルに複数のメールを+"From"で区切って保存する。
- maildir:
メールはそれぞれ別のファイルに保存する。
- maildirの信頼性
例えば、メールの配送中にマシンがクラッシュした場合、mboxファイルだと、メッセージが切り詰められてしまう。最悪の場合、mbox形式ではメッセージが行の途中で切れている場合、次のメッセージとつながってしまうことになる。メイラーは、うまく配送できなかったことを理解し、再送をしようとするが、この場合でも壊れたメッセージが表示される。それに対して、maildirは、メッセージを受け取っている間のシステムクラッシュに耐えることができる。
4.参考文献
書籍
- Software Design 1998年10月号PP.38-44 『qmail入門』 佐田 憲治
URL
履歴
- 1998/12/11
- 横山 誠