+++ /dev/null
-$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. In Debian, you can install the
-php4-pear 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.
-
-Global address book uses same table format as the one used for personal
-address book. You can even use same table, if you don't have user named
-'global'.
-
-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
-
-Note that when using the above PostgreSQL schema, you also need to change
-the prefs_user_field variable in config.php from the default 'user' to
-'username'.
-
-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.
-
-Troubleshooting
----------------
-1. Oversized field values. Preferences are not/can't be saved
-
-Database fields have size limits. Preference table example sets 128
-character limit to owner field, 64 character limit to preference key
-field and 64KB (database BLOB field size) limit to value field.
-
-If interface tries to insert data without checking field limits, it
-can cause data loss or database errors. Table information functions
-provided by Pear DB libraries are not accurate and some database
-backends don't support them. Since 1.5.1 SquirrelMail provides
-configuration options that set allowed field sizes.
-
-If you see oversized field errors in your error logs - check your
-database structure. Issue can be solved by increasing database field
-sizes.
-
-If you want to get more debugging information - check setKey() function
-in dbPrefs class. Class is stored in functions/db_prefs.php