Oracle Linux 6.2 でメール・サーバーを構築

Oracle Linux 6.2 で送信にPostfix、受信にDovecotを使用したメール・サーバーを構築する。この構築するメール・サーバーの送信ではSMTP認証 (SMTP AUTH) / SMTP over SSL/TLS / ウイルス・スキャンに対応し、受信では IMAP over SSL/TLS / POP over SSL/TLS / ウイルス・スキャン / スパム・フィルターに対応したいと思う。

まずはメール・サーバー構築において必要な用語の整理から。MTAは Mail Transfer Agent の略で、ほかのメール・サーバーやMUAからメールを受け取り、配送先を決め、MDAに配送を依頼する。MDAは Mail Delivery Agent で、MTAの決めた配送先へメールを配送する。配送先はローカル・マシンの受信箱だったりほかのメール・サーバーだったりする。MUAは Mail User Agent の略で、Windows Live Mail や Apple Mail などのエンド・ユーザーが使うメーラーのことだ。MRAは Mail Retrieval Agent で、IMAPやPOPプロトコルを介してMUAにメールを提供する。

MTA, MDA, MUA, MRA の関係

メール・サーバーの中心となるのはMTAで、今回使用するMTAであるPostfixは小さなプログラムが連携して全体を構成するマルチ・プロセス構造となっている。これらのプロセスは「入力」「整形」「キュー管理」「出力」の4グループに別れ、以下のように連携している。

ローカルからsendmailコマンドで送られたメールはmaildropキューに保存され、1分間隔でpickupプロセスが取得しcleanupプロセスに渡す。外部からのメールやMUAからのSMTPで送られてきたメールはsmtpdプロセスがcleanupプロセスに渡す。cleanupプロセスは細かな修正が必要な場合はそれを行い、incomingキューに入れる。incomingキューに入ったメールはqmgrプロセスがactiveキューに移動させ、配送先に適したMDAに渡す。何らかの理由で配送できなかったメールはdeferredキューに入れられ、一定時間後に再度activeキューに移動されて再送を試みる。Postfixの持っているMDAにはlocalプロセスとvirtualプロセス、smtpプロセスがあり、ローカルの受信箱に配送しなければいけないメールはlocalプロセスが配送し、外部に配送しなければいけないメールはsmtpプロセスが配送する。

Postfixのプロセスとキュー

簡単にPostfixのアーキテクチャを説明したが、まじめに運用するとなると、より詳細を知っておくべきだろう。ボクは 荒木靖宏『Postfix詳解 MTAの理解とメールサーバの構築・運用』(オーム社)で体系的に学んだ。

目次

コメントを残す