GUI管理ツールの導入とユーザー情報のSQL化:実用qmailサーバ運用・管理術(7)(3/3 ページ)
コマンド操作が基本のqmailだが、Webベースの管理フロントエンドも存在する。今回はこれをインストールして日々の管理業務を効率化するとともに、メールユーザーの情報をMySQLに格納して認証を行えるようにする方法を紹介する。
ユーザー管理をSQLデータベースで
qmailadminで設定したユーザーの情報は、~vpopmail/domains/バーチャルドメイン名/ディレクトリのvpasswdファイルに保存され、その後cdbファイルに変換されてそれぞれのコマンドから利用されます。これはqmailadminの仕様ではなく、vpopmailによるものです。
vpopmailは、vpasswdやcdbファイル以外に、SQLデータベースやLDAPを使ったユーザー情報の保存や参照が可能です。大規模な運用には、こうしたバックエンドの利用は欠かせません。そこで、SQLデータベースでユーザー情報を管理できるようにしてみましょう。
コラム PostgreSQLの対応状況
inter7社のWebページ(http://www.inter7.com/vpopmail/features.html)には、「Support for Mysql, Oracle, PostgreSQL」とあります。実際、ソースを展開してみるとvpgsql.cやvpgsql.hというPostgreSQL用のCソースやヘッダファイルが存在します。しかし、ソース添付のINSTALLにはこれを組み込む方法が明記されていません。
正式な対応にはもう少し時間を必要とするようです。
vpopmailでは、SQLデータベースとしてOracle、Sybase、MySQLをサポートしています(PostgreSQLについてはコラム「PostgreSQLの対応状況」参照)。ここでは、最も手軽に導入できるMySQLを選択します。MySQLの概要やインストール手順については、筆者が以前したためた快速MySQLでデータベースアプリ!を参照してください。
ここでMySQLを採用したのは、筆者がひいきにしているということもありますが、何より実装がシンプル(注)なので実行速度が速いことと無料(コラム「MySQLのライセンス」参照)で入手できるというメリットがあるからです。
OracleやSybase、LDAPを使いたい場合は、README.XXファイルを参考にしてください。ただし、各モジュールとREADMEでバージョンの整合が取れていないところもあり、READMEに書いてあるとおりにしても、うまくいかない場合があるので注意が必要です。
コラム MySQLのライセンス
MySQL自体を販売したりインストールするなど、商用利用する場合は商用ライセンスを購入する必要があります。しかし、個人や社内での使用などの用途であれば適応されません。
商用利用する場合でも、MySQLと併せて提供するプログラムのソースコードを含めて公開すればGPLライセンスが適用され、支払い義務はなくなります。
MySQL対応化作業
前回紹介した、vpopmailのインストール手順は以下のようになっていました。
(1)ソースの展開
↓
(2)グループ:vchkpw、ユーザー:vpopmailの作成
↓
(3)configure、make、make installの実行
↓
(4)tcp.smtpファイルの準備、crontabの編集
↓
(5)rcスクリプトの準備、実行
MySQLを導入した場合は、(3)以降の手順が次のようになります。
(3)vmysql.hの編集、configure、make、make install-stripの実行
↓
(4)データベースの準備
↓
(5)tcp.smtpファイルの準備、crontabの編集
↓
(6)rcスクリプトの準備、実行
では、手順(3)から見ていきましょう。まずはvpopmail-5.2ディレクトリ下にあるvmysql.hファイルを編集します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
使用するデータベース名やテーブル名を置き換えたい場合は、vmysql.hの該当個所を変更する必要がありますが、ここではデフォルトのまま使用することにします。
configureは、「--enable-mysql=y」をオプションに付け加えます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
MySQLのインストール状態によっては、libmysqlclient.aとmysql.hの存在するディレクトリを指定する必要があります。configureがうまくいかない場合は、この作業を行いましょう。大抵は自動的に検出されるはずです。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
configureが終わったらコンパイルとインストールです。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
次に手順(4)のデータベースの準備に移ります。データベース「vpopmail」を用意し、vpopmailユーザーに対して特権を設定します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
vpopmailの動作には4つのテーブルが必要ですが、vadddomain、vdominfoコマンドなどを実行することで自動的に作成されます。
cdbファイルによる認証を行っていたときに作成された、既存のcdbファイルのデータをMySQLへインポートするには次のようにします。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
この時点で、vconvertなどのMySQL対応になったvpopmailコマンドが使用できない場合は、MySQLのライブラリをライブラリパスに追加する必要があります。環境変数LD_LIBRARY_PATHを利用する場合は次のようにします。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ldconfigを使用する場合は、/etc/ld.so.confファイルに、
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
の1行を追加し、
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
を実行します。
最終的には、データベースは以下のような構成になります(この時点でlastauthなどのテーブルがなくても、利用する際に自動生成されます)。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
次に手順(5)として、POP Before SMTPのためにSMTPのリレーコントロールを設定します。上のテーブル構成表からも分かるとおり、POPで接続してきたユーザーの記録もMySQLサーバで管理され、そのデータを基に/etc/tcp.smtp.cdbファイルを作成します。前回同様に/etc/tcp.smtpファイルを用意し、1時間に1回、接続情報中の寿命が過ぎたデータを削除するようにcrontabの編集を行います。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
最後に、手順(6)としてrcスクリプトを用意しますが、前回と特に変わるところはありません。ただし、libmysqlclient.aが適切にリンクされていないなどの理由で実行できない場合は、前述の方法で/etc/ld.so.confファイルを修正します。
これでMySQLサーバをバックエンドに持ったvpopmailができあがりました。しかし、残念ながらqmailadminから利用する場合は再度qmailadminをインストールする必要があります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
qmailadminの操作方法はvpopmailと同様、変わりません。試しにqmailadmin経由でPOPアカウントを追加してみましょう。MySQLサーバに登録されたかどうかを確認するには、以下のようにします。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
応用も広がるSQLの導入
今回は、バーチャルドメインをWebブラウザで管理できるqmailadminとMySQL対応版vpopmailを紹介しました。WebというインターフェイスとSQLというバックエンドを併せ持つことで、大規模な運用にも耐えられ、かつ管理コストを抑えることができます。また、SQLデータベース中のテーブルをほかのアプリケーションでも利用することで、簡単なWebアプリケーションが構築できるなど、SQLの導入は単に高速性のメリットだけでなく、データの共有化を図るなどの可用性をもたらします。
残念ながらqmailadminのすべてを紹介し切れませんでしたが、quotaやIMAPに興味のある方はぜひREADMEに目を通してみてください。
Copyright © ITmedia, Inc. All Rights Reserved.