検索
連載

GUI管理ツールの導入とユーザー情報のSQL化実用qmailサーバ運用・管理術(7)(3/3 ページ)

コマンド操作が基本のqmailだが、Webベースの管理フロントエンドも存在する。今回はこれをインストールして日々の管理業務を効率化するとともに、メールユーザーの情報をMySQLに格納して認証を行えるようにする方法を紹介する。

Share
Tweet
LINE
Hatena
前のページへ |       

ユーザー管理を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.

ページトップに戻る