アットウィキロゴ
SquirrelMail
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

SquirrelMail

DB-Backend

最終更新:

sqmail

- view
メンバー限定 登録/ログイン

データ・ベースに個人のアドレス帳や個人プリファレンスを格納

このページでは、PostgreSQLを対象としています。

SquirrelMailのDB-backendとは?

  • 個人のアドレス帳や個人プリファレンスなどを外部データ・ベースに格納します ( SquirrelMailの通常設定では、data/*.abook、data/*.prefなど、 テキストファイル形式保存が、デフォルトとなっています)。
  • SquirrelMailのバージョンアップやサーバマシン更新の際、 個人情報データ移行がスムーズに行えます。
  • ユーザ名が重複していなければ、リモートDB接続により、 複数のSquirrelMailサーバの個人情報データの一元管理が可能です。
  • SquirrelMailのDBハンドリングはPHP-PEARで書かれているようなので、 PostgreSQLやMySQLなどに対応しています。

ドキュメント

  • ソース附属の doc/db-backend.txt に詳しく書かれています。

PHP-PEARの準備

  • 通常、PHPシステムでは、PEARクラスがインストールされていると思われます。 phpinfo() 等で、あらかじめ調べておいてください。

Postgresの準備(DBの作成・ユーザの作成)

  • 最初に、データを格納するためのデータ・ベースおよびテーブルを作成する必要があります。
  • そのテーブルの中で読み書きするためにアクセスを持ったデータ・ベース・ユーザを作ってください。
  • データベース設定例一覧
PostgreSQL接続先 localhost
DB名 squirrelmail
DBユーザ名 squirreluser
DBユーザ・パスワード sqpassword
DSN(データソース名) pgsql://squirreluser:sqpassword@localhost/squirrelmail
  • Postgresユーザとなって、squirreluserユーザを作成
# su - postgres
$ createuser -P squirreluser
     Enter password for user "squirreluser": sqpassword
     Enter it again: sqpassword
     CREATE USER
  • squirrelmailデータベースを作成
$ createdb -U squirreluser squirrelmail
$ psql -l
          List of databases
     Name     |    Owner     | Encoding
--------------+--------------+----------
 squirrelmail | squirreluser | EUC_JP

テーブル定義SQLの読み込み

  • 個人アドレス帳用のテーブル(address)を定義する。
# su - postgres
$ cat sq_address.sql
 
     CREATE TABLE "address" (
        "owner" varchar(128) NOT NULL,
        "nickname" varchar(16) NOT NULL,
        "firstname" varchar(128) NOT NULL,
        "lastname" varchar(128) NOT NULL,
        "email" varchar(128) NOT NULL,
        "label" varchar(255) NOT NULL,
        CONSTRAINT "address_pkey" PRIMARY KEY ("nickname", "owner")
     );
     CREATE INDEX "address_firstname_key" ON "address"
        ("firstname", "lastname");
 
$ psql -U squirreluser squirrelmail < sq_address.sql
  • 個人プリファレンス用のテーブル(userprefs)を定義する。
# su - postgres
$ cat sq_pref.sql
 
   CREATE TABLE "userprefs" (
     "username" varchar(128) NOT NULL,
     "prefkey" varchar(64) NOT NULL,
     "prefval" text,
     CONSTRAINT "userprefs_pkey" PRIMARY KEY ("prefkey", "username")
   );

$ psql -U squirreluser squirrelmail < sq_pref.sql 

SquirrelMailの Database-configure

  • ./configure で、9.Databaseを設定する。
$ ./configure

SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Main Menu --
1.  Organization Preferences
2.  Server Settings
3.  Folder Defaults
4.  General Options
5.  Themes
6.  Address Books (LDAP)
7.  Message of the Day (MOTD)
8.  Plugins
9.  Database

D.  Set pre-defined settings for specific IMAP servers

C.  Turn color on
S   Save data
Q   Quit

Command >> 9

SquirrelMail Configuration : Read: config.php (1.4.0)
---------------------------------------------------------
Database
1.  DSN for Address Book   : pgsql://squirreluser:sqpassword@localhost/squirrelmail
2.  Table for Address Book : address
3.  DSN for Preferences    : pgsql://squirreluser:sqpassword@localhost/squirrelmail
4.  Table for Preferences  : userprefs
5.  Field for username     : username
6.  Field for prefs key    : prefkey
7.  Field for prefs value  : prefval

R   Return to Main Menu
C.  Turn color on
S   Save data
Q   Quit

Command >> s

ファイルベースの個人データをDBへ移行

  • (省略) TAB形式ファイルからDBテーブルへ挿入するSQLスクリプト等が必要と思われます。

使ってみる

  • データ・ベースに個人アドレス帳、個人プリファレンスが、格納されます。
  • これにより、data/*.abook,data/*.prefのテキストファイルは使われなくなります。

DBメンテナンス

  • 定期的(cronなどで)に、DBバックアップ(pgdump)、 DBの不要領域の回収と解析(vacuumdb)をしておくと良いでしょう。



記事メニュー
最近更新されたスレッド
ウィキ募集バナー