データ・ベースに個人のアドレス帳や個人プリファレンスを格納
このページでは、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)をしておくと良いでしょう。