qmailadminで設定したユーザーの情報は、~vpopmail/domains/バーチャルドメイン名/ディレクトリのvpasswdファイルに保存され、その後cdbファイルに変換されてそれぞれのコマンドから利用されます。これはqmailadminの仕様ではなく、vpopmailによるものです。
vpopmailは、vpasswdやcdbファイル以外に、SQLデータベースやLDAPを使ったユーザー情報の保存や参照が可能です。大規模な運用には、こうしたバックエンドの利用は欠かせません。そこで、SQLデータベースでユーザー情報を管理できるようにしてみましょう。
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と併せて提供するプログラムのソースコードを含めて公開すればGPLライセンスが適用され、支払い義務はなくなります。
前回紹介した、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ファイルを編集します。
〜省略〜 |
vmysql.h |
使用するデータベース名やテーブル名を置き換えたい場合は、vmysql.hの該当個所を変更する必要がありますが、ここではデフォルトのまま使用することにします。
configureは、「--enable-mysql=y」をオプションに付け加えます。
# ./configure --enable-roaming-users=y
--enable-mysql=y |
MySQLのインストール状態によっては、libmysqlclient.aとmysql.hの存在するディレクトリを指定する必要があります。configureがうまくいかない場合は、この作業を行いましょう。大抵は自動的に検出されるはずです。
# ./configure --enable-roaming-users=y --enable-mysql=y \ |
configureが終わったらコンパイルとインストールです。
# make |
次に手順(4)のデータベースの準備に移ります。データベース「vpopmail」を用意し、vpopmailユーザーに対して特権を設定します。
# mysqladmin create
vpopmail |
vpopmailの動作には4つのテーブルが必要ですが、vadddomain、vdominfoコマンドなどを実行することで自動的に作成されます。
cdbファイルによる認証を行っていたときに作成された、既存のcdbファイルのデータをMySQLへインポートするには次のようにします。
# vconvert -c -m |
この時点で、vconvertなどのMySQL対応になったvpopmailコマンドが使用できない場合は、MySQLのライブラリをライブラリパスに追加する必要があります。環境変数LD_LIBRARY_PATHを利用する場合は次のようにします。
# export LD_LIBRARY_PATH=/usr/lib/mysql/ |
bash系の場合(指定するディレクトリは適宜変更すること) |
# setenv LD_LIBRARY_PATH
/usr/lib/mysql/ |
csh系の場合(指定するディレクトリは適宜変更すること) |
ldconfigを使用する場合は、/etc/ld.so.confファイルに、
/usr/lib/mysql/ |
(指定するディレクトリは適宜変更すること) |
の1行を追加し、
# ldconfig |
を実行します。
最終的には、データベースは以下のような構成になります(この時点でlastauthなどのテーブルがなくても、利用する際に自動生成されます)。
# mysqlshow vpopmail |
次に手順(5)として、POP Before SMTPのためにSMTPのリレーコントロールを設定します。上のテーブル構成表からも分かるとおり、POPで接続してきたユーザーの記録もMySQLサーバで管理され、そのデータを基に/etc/tcp.smtp.cdbファイルを作成します。前回同様に/etc/tcp.smtpファイルを用意し、1時間に1回、接続情報中の寿命が過ぎたデータを削除するようにcrontabの編集を行います。
# vi /etc/tc.smtp |
最後に、手順(6)としてrcスクリプトを用意しますが、前回と特に変わるところはありません。ただし、libmysqlclient.aが適切にリンクされていないなどの理由で実行できない場合は、前述の方法で/etc/ld.so.confファイルを修正します。
これでMySQLサーバをバックエンドに持ったvpopmailができあがりました。しかし、残念ながらqmailadminから利用する場合は再度qmailadminをインストールする必要があります。
# ./configure |
qmailadminの操作方法はvpopmailと同様、変わりません。試しにqmailadmin経由でPOPアカウントを追加してみましょう。MySQLサーバに登録されたかどうかを確認するには、以下のようにします。
# mysql vpopmail |
今回は、バーチャルドメインをWebブラウザで管理できるqmailadminとMySQL対応版vpopmailを紹介しました。WebというインターフェイスとSQLというバックエンドを併せ持つことで、大規模な運用にも耐えられ、かつ管理コストを抑えることができます。また、SQLデータベース中のテーブルをほかのアプリケーションでも利用することで、簡単なWebアプリケーションが構築できるなど、SQLの導入は単に高速性のメリットだけでなく、データの共有化を図るなどの可用性をもたらします。
残念ながらqmailadminのすべてを紹介し切れませんでしたが、quotaやIMAPに興味のある方はぜひREADMEに目を通してみてください。
Copyright © ITmedia, Inc. All Rights Reserved.