Last Modified 11/04/2007 by Guest Show changes for 13
CentOS5InstallationNotes (13) Reload Page

Installing Horde Groupware Webmail Edition on CentOS 5

Horde Groupware Webmail Edition is a free, enterprise ready, browser based communication suite. Users can read, send and organize email messages and manage and share calendars, contacts, tasks and notes with the standards compliant components from the Horde Project. Horde Groupware Webmail Edition bundles the separately available applications IMP, Ingo, Kronolith, Turba, Nag and Mnemo.

http://www.horde.org/webmail/

Versions

Set up your host name and address (ONLY IF YOU DIDN'T DO IT AT INSTALLATION)


system-config-network-tui


NETWORKING=yes

NETWORKING_IPV6=yes

HOSTNAME=yourhostname.yourdomain.com


nameserver 208.67.222.222

nameserver 208.67.220.220


# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1         localhost.localdomain        localhost

192.168.0.100     yourhostname.yourdomain.com  yourhostname

::1               localhost6.localdomain6      localhost6


service network restart


init 6

Installing prerequisites


yum install -y gettext httpd mysql mysql-server dovecot postfix system-switch-mail perl

yum install -y php php-mysql php-xml php-imap php-mbstring php-mcrypt php-pecl-Fileinfo php-pecl-memcache php-pear-DB php-pear-File php-pear-Log php-pear-Mail-Mime php-pear-Auth-SASL php-pear-Date php-pear-HTTP-Request php-pear-Mail php-pear-Net-Sieve php-pear-Net-Socket php-pear-Net-SMTP

Configuring Postfix and Dovecot


service sendmail stop

chkconfig sendmail off

system-switch-mail

(select postfix)


postconf -e 'home_mailbox = Maildir/'


# to allow the creation of mail subfolders

mail_location = maildir:~/Maildir

namespace private {

separator = /

prefix = ""

inbox = yes

}

# Enable IMAP protocol

protocols = imap

http://fedorasolved.org/server-solutions/postfix-mail-server

Start services


service httpd restart

chkconfig httpd on

service postfix restart

chkconfig postfix on

service dovecot restart

chkconfig dovecot on

service mysqld restart

chkconfig mysqld on


/usr/bin/mysqladmin -u root password 'new-password'

Download Horde G. W. Edition and extract it

http://www.horde.org/download/app/?app=webmail


tar zxf horde-webmail-*.tar.gz -C /var/www/html/

mv /var/www/html/horde-*/ /var/www/html/horde/

Creating database and tables in MySQL


cd /var/www/html/horde/scripts/

./setup.php

If asked, choose /horde.

Press 1; choose mysql; Persistent connection: 0; Username horde; Choose a password for mysql-user-horde; Unix sockets; Location null; DB name horde;

Press 2; yes; root; root-mysql-password.

Press 3; specify an existing IMAP user to have horde administration permissions (i.e. your current linux user).

PS: Apparently, this should be done by ./setup.php script. So it's better to check out if the user and permission already exists. If not:

Edit a text file and change the password for the same as in Step 1 above:


USE mysql;

REPLACE INTO user (host, user, password)

    VALUES (

        'localhost',

        'horde',

-- IMPORTANT: Change this password!

        PASSWORD('passwordformysquserhorde')

);

REPLACE INTO db (host, db, user, select_priv, insert_priv, update_priv,

                 delete_priv, create_priv, drop_priv, index_priv)

    VALUES (

        'localhost',

        'horde',

        'horde',

        'Y', 'Y', 'Y', 'Y',

        'Y', 'Y', 'Y'

);

-- Make sure that priviliges are reloaded.

FLUSH PRIVILEGES;

Save the file as createuser.mysql (or something else) and load it as mysql stdin:


mysql --user=root --password=mysqlrootpassword < createuser.mysql

Configure Apache and PHP


#

# Horde

#

Alias /horde /var/www/html/horde

<Directory /var/www/html/horde>

    # Uncomment the following 3 lines to make Horde locally accessible only

    #Order Deny,Allow

    #Deny from all

    #Allow from 127.0.0.1

    Options +FollowSymLinks

    # horde.org's recommended PHP settings:

    php_admin_flag safe_mode off

    php_admin_flag magic_quotes_runtime off

    php_flag session.use_trans_sid off

    php_flag session.auto_start off

    php_admin_flag file_uploads on

    # Optional - required for weather block in Horde to function

    php_admin_flag allow_url_fopen on

    # If horde dies while trying to handle large email file attachments,

    #  you are probably hitting PHP's memory limit.  Raise that limit here,

    #  but use caution

    # Set to your preference - memory_limit should be at least 32M

    #  and be greater than the value set for post_max_size

    php_value memory_limit 32M

    php_value post_max_size 20M

    php_value upload_max_filesize 10M

    # /usr/share/pear is needed for PEAR. /var/www/html/horde is needed for Horde itself

    # TODO: Set an appropriate include_path, too. Might even increase speed a bit.

    php_admin_value open_basedir "/var/www/html/horde:/var/www/html/horde/config:/usr/share/pear:/tmp"

    php_admin_flag register_globals off

</Directory>

<Directory /var/www/html/horde/config>

    Order Deny,Allow

    Deny from all

</Directory>

# Deny access to files that are not served directly by the webserver

<DirectoryMatch "^/var/www/html/horde/(.*/)?(config|lib|locale|po|scripts|templates)/(.*)?">

    Order Deny,Allow

    Deny from all

</DirectoryMatch>

# Deny access to the test.php files except from localhost

<LocationMatch "^/horde/(.*/)?test.php">

    Order Deny,Allow

    Deny from all

    Allow from 127.0.0.1

</LocationMatch>


chmod 0644 -v /etc/httpd/conf.d/horde.conf 


memory_limit = 32M


service httpd restart

Check if everything is alright


http://localhost.localdomain/horde/test.php

Security configuration


chown apache:root -R /var/www/html/horde/config

chown apache:root -R /var/www/html/horde/*/config

chmod -R go-rwx /var/www/html/horde/config

chmod -R go-rwx /var/www/html/horde/*/config


chown -R root:root /var/www/html/horde/scripts

chown -R root:root /var/www/html/horde/*/scripts

chmod -R go-rwx /var/www/html/horde/scripts

chmod -R go-rwx /var/www/html/horde/*/scripts


chmod a-rwx /var/www/html/horde/test.php

chmod a-rwx /var/www/html/horde/*/test.php

Finishing configuration


http://localhost.localdomain/horde

(PS: use full URL address, with host and domain name)

Fell free to change other options, as you like. The good thing about H G W E is it comes pretty much configured and ready for use!


service httpd restart