123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- $Id$
- Storing private addressbooks and preferences in a database
- ==========================================================
- On sites with many users you might want to store your user data in a
- database instead of in files. This document describes how to configure
- SquirrelMail to do this.
- Methods for storing both personal addressbooks and user preferences in
- a database is included as a part of the distribution.
- Configuring PEAR DB
- -------------------
- For this to work you must have the PEAR classes installed, these are
- part of PHP. Once these are installed you must have sure the directory
- containg them is a part of your PHP include path. See the PHP
- documentation for information on how to do that.
- Under Mandrake Linux the PEAR classes are installed as part of the
- php-devel package and under FreeBSD they are installed as part of
- the mod_php4 or php4 port/package. I'm afraid I have no information on
- other systems at the present time.
- Configuring addressbooks in database
- ------------------------------------
- First you need to create a database and a table to store the data in.
- Create a database user with access to read and write in that table.
- For MySQL you would normally do something like:
- (from the command line)
- # mysqladmin create squirrelmail
- (from the mysql client)
- mysql> GRANT select,insert,update,delete ON squirrelmail.*
- TO squirreluser@localhost IDENTIFIED BY 'sqpassword';
- The table structure should be similar to this (for MySQL):
- CREATE TABLE address (
- owner varchar(128) DEFAULT '' NOT NULL,
- nickname varchar(16) DEFAULT '' NOT NULL,
- firstname varchar(128) DEFAULT '' NOT NULL,
- lastname varchar(128) DEFAULT '' NOT NULL,
- email varchar(128) DEFAULT '' NOT NULL,
- label varchar(255),
- PRIMARY KEY (owner,nickname),
- KEY firstname (firstname,lastname)
- );
- and similar to this for PostgreSQL:
- 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 UNIQUE INDEX "address_firstname_key" ON "address"
- ("firstname", "lastname");
- Next, edit your configuration so that the address book DSN (Data Source
- Name) is specified, this can be done using either conf.pl or via the
- administration plugin. The DSN should look something like:
- mysql://squirreluser:sqpassword@localhost/squirrelmail or
- pgsql://squirreluser:sqpassword@localhost/squirrelmail
- From now on all users' personal addressbooks will be stored in a
- database.
- Configuring preferences in database
- -----------------------------------
- This is done in much the same way as it is for storing your address
- books in a database.
- The table structure should be similar to this (for MySQL):
- CREATE TABLE userprefs (
- user varchar(128) DEFAULT '' NOT NULL,
- prefkey varchar(64) DEFAULT '' NOT NULL,
- prefval BLOB DEFAULT '' NOT NULL,
- PRIMARY KEY (user,prefkey)
- );
- and for PostgreSQL:
- CREATE TABLE "userprefs" (
- "username" varchar(128) NOT NULL,
- "prefkey" varchar(64) NOT NULL,
- "prefval" text,
- CONSTRAINT "userprefs_pkey" PRIMARY KEY ("prefkey", "username")
- );
- Next, edit your configuration so that the preferences DSN (Data Source
- Name) is specified, this can be done using either conf.pl or via the
- administration plugin. The DSN should look something like:
- mysql://squirreluser:sqpassword@localhost/squirrelmail or
- pgsql://squirreluser:sqpassword@localhost/squirrelmail
- From now on all users' personal preferences will be stored in a
- database.
- Default preferences can be set by altering the $default array in
- db_prefs.php.
|