理想未来ってなんやねん

娘可愛い。お父さん頑張る。

Internal Postfix block diagram

年末年始はPostfixと戯れていました。

折角だから極めてみようと思い、Postfixの内部構成図を写し描きしてみました。


各デーモンの概要は下記の通り。

プログラム名 説明
master PostfixのMTA環境ではmasterというプログラムが常駐し、必要に応じて他のプログラムを起動するなど、Postfix全体の動作を制御する。
pickup maildropキューにあるメッセージを取り出し、cleanupプログラムに渡す。
smtpd リモートのMTAから電子メールを受信する。受信したメールはcleanupプログラムに渡す。
cleanup 受け取ったメールが適切なメッセージ形式かどうかを確認する。その後、canonicalテーブルとvirtualテーブルの設定に従ってメールアドレスの書き換えを行いincomingキューにメッセージを入れる。
trivial-rewrite cleanup デーモンが検索テーブルにアドレスを通す前に、まずアドレスを trivial-rewrite デーモンに送ることによって、標準的な user@fully.qualified.domain 形式に書き換えます。
qmgr incoming キューにあるメールを取り出し、activeキューに入れる。nqmgrはactiveキュー及びdefferdキューに入れられたメールを定期的にチェックし、そのメールの宛先に応じて、local、smtp、pipeといったメール配信用プログラムに渡す。
local ローカルユーザのメールボックスにメールを配信する。但し、そのメールのアドレスがaliasesテーブルに含まれていた場合はaliasesテーブルで定義されているアドレスに配送するメールボックスを変更する。また、.forwardファイルが存在する場合はそのリストに含まれる宛先にメールを転送する。
smtp リモートホストのユーザを宛先とするメッセージをSMTPプロトコルを使って配信する。
pipe 他のプログラムにメールを渡す。
bounce リモートメールサーバに受け取りを拒否されたメールを処理する。元のメールの送信元を宛先に変更したうえで、defferedキューに格納される。

引用元:Postfix構成とプロセス概要


残りは週末にでも。

MacBookのCPUファンを交換したいと思いつつ、今日は寝ます。