next up previous contents
Next: Postfixのインストール、設定の準備 Up: mail の仕組みとPostfix Previous: Postfixの情報

Postfixの構造

最初に触れたように Postfix は複数のプロセスが協調して動作するように なっている。通常、こうしたプロセスや、プロセスから起動されるファイル についてはきちんと管理されていれば意識する必要はないが、管理者として は一応流れは理解しておいた方が良いだろう(図参照)。

なお、こうした情報は全て /usr/local/share/doc/postfix/ 以下にあります。

まず、Postfix では、図の中のコマンド類は master デーモンの管理下に あります。つまり、Postfix の中心は masterです。個々のプログラムは この master からデーモン、あるいはプログラムとして起動されます。 実際の処理の流れは、まず入って来たメイルについては pickup または smtpd が処理をします。pickup はローカルなメイルの処理を担当し、 smtpd は SMTP(Simple Mail Transfer Protocol)による処理を担当します。 面白いのは、メイルのポート 25 番もmaster の管理下に置かれていて、 master が監視しています。アクセスがあると、smtpdが起動され、処理 をするのです。次にこうした受け入れ処理プログラム(勿論、受け取りを 拒否する事もありますが)は、メイルを cleanup プロセスに渡します。 cleanup プロセスはアドレスの書き換えなどの処理を行った後に、 /var/spool/postfix/incoming キューにメイルをおきます。Postfix の 構造では、ここまでで一区切りになっていて、receiving(受け取り)の プロセス群を成しています。

次に、delivering(配送)のプロセス群は、まず先程の incoming キューを 処理する qmgr が、これらの配送待ちメイルを、配送方法の決定や実際の 配送処理プロセス、配送エラー、再送処理のリクエストを各プログラムに 対して行うようになっている。つまりは、受け取り処理では cleanup が 中心で、配送処理では qmgr が中心であると考えて良い。実際の配送に おいては、ローカルに配送される場合には local が、UUCP などでは pipeが、 SMTP 配送では smtp に処理が渡される。

以上のように、Postfix では各々のプロセスが協調して動作しているが、 その際に使われるキューの場所が FreeBSD では、/var/spool/postfix/ ディレクトリである。そして、このディレクトリの所有者は、Postfix の プロセスの多くが root ではなく、postfix というユーザによって 行われるために、/var/spool/postfix/ 以下全ての所有者は postfix と なっている。

なお、Postfix ではローカルユーザへのメイルの書き込みは、標準では /var/mail 下に mbox 形式で書き込むようになっているが、設定によって qmail と同じmaildir 形式でユーザのディレクトリに直接書き込むことも 出来るようになっている。



Noriyo Kanayama