qmailによるSMTPサーバの構築:実用qmailサーバ運用・管理術(1)(1/3 ページ)
sendmailに代わるMTAとして絶大な人気をほこるqmail。このqmailによるメールサーバの運用方法を解説していく。今回は、運用テクニックの前段階としてSMTPサーバの構築方法を紹介する。
sendmailからqmailへ
「進化の最終形は絶滅である」という説をご存じでしょうか。複雑になりすぎたシステムは、その複雑さゆえに自己の適応能力が環境の変化に追い付けず、絶滅の道をたどるといった内容だったと記憶しています。
メール配送システム(MTA:Mail Transfer Agent)の代名詞であり、インターネット発展の礎ともなったsendmailは、誕生以来いくたびかの補修と修繕を繰り返し、いままさに進化の最終形にさしかかっているように感じます。そこまで大げさではないとしても、sendmailに何らかの変革を望むサーバ管理者は多いのではないのでしょうか(その変革の1つに「sendmail 9」があるのだと思います)。SPAM対策やSMTPの不正中継に辟易し、事有るごとにsendmailに簡易性を求めることも少なくないと思います。セキュリティやバグ対策もしかりです。「メールユーザー≒UNIXユーザー」であったインターネット創成期、SPAMというものも存在せず、それどころかインターネット利用者全員が1つの互助会に属している良き仲間であったころに誕生したsendmailでは、セキュリティをはじめとする多くの要望を満たすことに限界がきています。もちろん、それらをすべて解決することは不可能ではありません。むしろ、sendmailは多くの要望に対応できる柔軟性があります。その範疇は広すぎるくらいです。
問題は、解決の手段を得るまでにどれほどの時間を費やさなくてはいけないかということです。SPAMや不正中継、セキュリティを考慮しなくてはいけない時代にサーバ管理者となってしまった方が待ち望んでいたもの、それがいまから紹介するqmailです。
次世代MTAといわれるものを挙げると、次の4つがあります。
- qmail
http://www.qmail.org/top.html(qmailの公式ページではありません) - Exim
http://www.exim.org/http://www.exim.org/ - Postfix
http://www.postfix.org/http://www.postfix.org/ - ZMailer
http://www.zmailer.org/http://www.zmailer.org/
新世代MTAとして特に注目されているのがqmailとPostfixです。両者ともsendmailを意識したうえで開発されたMTAです。qmailはsendmailとの互換性にこだわらず、信頼性と性能を追求した成果として、Postfixはなるべく互換を保ちながら、qmailよりも後発だったのでqmailからもいいところを吸収した成果として誕生しました。
Postfixも優れたMTAです。sendmailとの互換性を主張しつつも、qmailの特徴である「Maildir」というメールスプール形式を採用し、活発に開発が続けられています。ですが、どうせsendmailから乗り換えるのなら、あえて互換性にこだわらない潔さをよしとするqmailに触れてみるのもサーバ管理者としての幅を広げると思います。また、qmailには多くのパッチやツールが用意されています。その中には、いまはやりの「Web mail」や「POP before SMTP」、バーチャルドメインメールサービスを実現するためのものもあります。
MTA乗り換えのメリットは、管理者だけでなくサーバを使用するユーザーにももたらされると思います。本連載では、管理者としてqmailのインストールや運用を行うにとどまらず、サーバを使用する一般ユーザーも恩恵を受けられるような使用方法を紹介していきます。
オープンソース版は小文字で始まる「sendmail」、商用版は大文字で始まる「Sendmail」で表記します。商用版には、米Sendmail社や販売代理店によるサポート、運用管理機能、暗号化通信などが付いているといった違いがあります。http://www.sendmail.com/
qmailの仕組み
qmailは、D. J. Bernstein氏(http://cr.yp.to/djb.html)によって提供されています。sendmailを反面教師としているqmailは、次の点でsendmailと大きく違います。
- sendmailが、メッセージを単一のファイルに結合して全ユーザーが共通のディレクトリを使用するmbox形式であるのに対し、qmailは各ユーザーのホームディレクトリに1つのメッセージを1ファイルとして保存するMaildir形式であるMaildir形式である
- sendmailではメール配送にかかわる処理を1つのプロセスで実行しているのに対し、qmailではメール配送にかかわる処理を複数のプログラムに分割している
/var/spool/mailをのぞいてみると、そこには全ユーザーのメッセージがユーザー1人につき1ファイルで保存されているのが分かります。メールのファイルを見てみると、FromやToなどが表記されたヘッダ情報があり、最初のヘッダから次のヘッダの間にメッセージ本体であるbodyが表記されていることに気づくと思います。仕切りとなっているヘッダ情報が何らかの理由で壊れると、ほかのメッセージにも影響を与えてしまうことが分かるでしょう。メールを保存するのも読み出すのも1つのファイルを対象にしているため、同時に複数の処理が発生して、さらにファイルの排他制御が働いていなければ、ファイルを正常な形に保つのは難しくなります。Maildirはそれを最も単純な方法で解決した結果だといえます。
配送システムに目を向けてみると、sendmailはローカル配信やリモート配信などすべての処理を「sendmail」という1つのプロセスで管理しています。きれいな実装ですが、それゆえにsendmailの改変には手間を要します。大きなシステムほど、複雑さも増します。それなら処理ごとに小さなプログラムに分けてしまった方が効率がよくなる、というのがqmailの発想です。セキュリティホールなどが発見されたとしても、小さなプログラムごとに問題を片付けることが可能になります。また、qmailのプログラムは3つのグループに分かれており、それぞれのグループは他グループの機能さえも信頼しないという前提で動作します。どこか1つのグループが仮に乗っ取られてしまったとしても、ほかの2つのグループは乗っ取られてしまったグループからの攻撃にさえ対応できるのです。さらに、qmail-1.03誕生以来、qmailそのものの脆弱性は報告されていません(もちろん運用を誤ればその保証の限りではありませんが)。
Copyright © ITmedia, Inc. All Rights Reserved.