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

SquirrelMail

DB-backend

最終更新:

匿名ユーザー

- view
管理者のみ編集可

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


このマニュアルでは、PostgreSQLを対象としています。

  1. SquirrelMailのDB-backendとは?
    • 個人のアドレス帳や個人プリファレンスなどを外部データ・ベースに格納します ( SquirrelMailの通常設定では、data/*.abook、data/*.prefなど、 テキストファイル形式保存が、デフォルトとなっています)。
    • SquirrelMailのバージョンアップやサーバマシン更新の際、 個人情報データ移行がスムーズに行えます。
    • ユーザ名が重複していなければ、リモートDB接続により、 複数のSquirrelMailサーバの個人情報データの一元管理が可能です。
    • SquirrelMailのDBハンドリングはPHP-PEARで書かれているようなので、 PostgreSQLやMySQLなどに対応しています。
  2. ドキュメント
    • db-backend.txt に詳しく書かれています。
  3. PHP-PEARの準備
    • 通常、PHPシステムでは、PEARクラスがインストールされていると思われます。
      phpinfo()であらかじめ調べておいてください。
  4. 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
      
  5. テーブル定義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.sql 
      
      
      
      CREATE  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 
      
  6. 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
      
  7. 使ってみる
    • データ・ベースに個人アドレス帳、個人プリファレンスが、格納されます。
    • これにより、data/*.abook,data/*.prefのテキストファイルは使われなくなります。
  8. DBメンテナンス
    • 定期的(cronなどで)に、DBバックアップ(pgdump)、 DBの不要領域の回収と解析(vacuumdb)をしておくと良いでしょう。
最近更新されたスレッド
ウィキ募集バナー