SquirrelMail
DB-backend
最終更新:
匿名ユーザー
-
view
データ・ベースに個人のアドレス帳や個人プリファレンスを格納
- SquirrelMailのDB-backendとは?
- 個人のアドレス帳や個人プリファレンスなどを外部データ・ベースに格納します ( SquirrelMailの通常設定では、data/*.abook、data/*.prefなど、 テキストファイル形式保存が、デフォルトとなっています)。
- SquirrelMailのバージョンアップやサーバマシン更新の際、 個人情報データ移行がスムーズに行えます。
- ユーザ名が重複していなければ、リモートDB接続により、 複数のSquirrelMailサーバの個人情報データの一元管理が可能です。
- SquirrelMailのDBハンドリングはPHP-PEARで書かれているようなので、 PostgreSQLやMySQLなどに対応しています。
- ドキュメント
- db-backend.txt に詳しく書かれています。
- PHP-PEARの準備
-
通常、PHPシステムでは、PEARクラスがインストールされていると思われます。
phpinfo()であらかじめ調べておいてください。
-
通常、PHPシステムでは、PEARクラスがインストールされていると思われます。
- Postgresの準備(DBの作成・ユーザの作成)
- 最初に、データを格納するためのデータ・ベースおよびテーブルを作成する必要があります。
- そのテーブルの中で読み書きするためにアクセスを持ったデータ・ベース・ユーザを作ってください。
- データベース設定例一覧
Postgreサーバ 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 Shall the new user be allowed to create databases? (y/n) y Shall the new user be allowed to create more new users? (y/n) y CREATE USER
- squirrelmailデータベースを作成
$ createdb -U squirreluser squirrelmail createdb $ psql -l List of databases Name | Owner | Encoding --------------+--------------+---------- squirrelmail | squirreluser | EUC_JP
- テーブル定義SQLの読み込み
- 個人アドレス帳用のテーブル(address)を定義する。
# su - postgres $ vi 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.sqlCREATE UNIQUE INDEX "address_firstname_key" ON "address" ("firstname", "lastname");
---- 西坂さんから(2003.04.12) ----------------------------- このインデックスは address をユニークにする為のキーです。 UNIQUE があると同一のメールアドレスを重複して登録できなくなります。 同一アドレスを登録するのを許したければ、ユニークインデックスは 外した方が良いですね。 アドレス検索を早くするためのキーを作なら UNIQUE を 外してインデックスを作成してく� さい。 ----------------------- 情� �ありがとうございます。西坂さん(^^) - 個人プリファレンス用のテーブル(userprefs)を定義する。
# su - postgres $ vi 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
- 個人アドレス帳用のテーブル(address)を定義する。
- 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 AddressBook : pgsql://user:pass@localhost/squirrelmail 2. Table for AddressBook: address 3. DSN for Preferences : pgsql://user:pass@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
- ./configure で、9.Databaseを設定する。
- 使ってみる
- データ・ベースに個人アドレス帳、個人プリファレンスが、格納されます。
- これにより、data/*.abook,data/*.prefのテキストファイルは使われなくなります。
- DBメンテナンス
- 定期的(cronなどで)に、DBバックアップ(pgdump)、 DBの不要領域の回収と解析(vacuumdb)をしておくと良いでしょう。