6.0.0-git
2024-04-20
Last Modified 2008-09-16 by Eric Rostetter

NOTE: This page is a work in progress, and has not been tested. It may

or may not be of any use, may contain numerous errors, and may turn your

tongue a strange color. Use at your own risk.

First, install MySQL, following the directions found on numerous web sites on the internet.

Next, install Horde and IMP, following directions elsewhere on this wiki.

Then, install dovecot, following the instructions on http://wiki.dovecot.org/

Configure dovecot to use MySQL as per the directions at http://wiki.dovecot.org/AuthDatabase/SQL

Now, configure IMP:

  • Backup horde/imp/config/servers.php and imp/config/conf.php
    • Edit imp/config/servers.php and set 'hordeauth' => 'full' so users only

need to login once (Horde passes authentication data to IMP).

Now, configure Horde:

  • Backup your horde/config/conf.php file
    • Backup any relevant MySQL databases
    • Log in to Horde as an administrative user.
    • Navigate: Administration -> Setup -> Horde select the Authentication tab.
    • Switch authentication backend ($conf[auth][driver]) to SQL authentication w/custom-made queries
    • Set the phptype setting to MySQL
    • Set the protocol setting to TCP/IP
    • Leave port as the default 5432
    • Set the hostspec to localhost
    • Set the username and password paramters to the SQL database username and password you set when creating the database
    • Set the encryption to use to store the password in the table to crypt-md5?
    • Set the database field to the one defined when you configured dovecot's SQL database (in this case, we will use "users" like on the dovecot website)
    • For query_auth, enter:

SELECT * FROM users WHERE userid = \L AND password = MD5(\P);

  • For query_add, enter:

INSERT INTO users (domain,userid,password) VALUES ('example.org', \L, MD5(\P));

NB: Change the domain to your domain in the above query.

  • For query_update, enter:

UPDATE users SET password = MD5(\P) WHERE userid = TRIM('@example.org' FROM \L) LIMIT 1;

NB: Change the domain to your domain in the above query.

  • For query_remove, enter:

DELETE FROM users WHERE userid = TRIM('@example.org' FROM \L) LIMIT 1;

  • For query_list, enter:

SELECT * FROM users;

  • and so on for the other queries...