El Horde Groupware Webmail Edition es el paquete integrado de Horde.
Tabla de Contenidos
Instalación de Horde Groupware Webmail Edition
# usuario y grupo bajo el cual corre el web server (o específico para Horde si es que usamos mod_suexec)
export WWWUSER=www-data
export WWWGROUP=www-data
# directorio donde vamos a poner el subdirectorio /horde visible desde la web
export WWWHOME=/var/vhost-www/example.com
# datos de la base de datos
export DBNAME=horde
export DBUSER=hordedbuser
export DBPASS=H0RD3_D8
# Versión de Horde Groupware Webmail Edition que vamos a usar (a septiembre de 2008, sólo lo probé con la 1.1.3)
export HGWEVERSION=1.1.3
# bajo el paquete
cd ${HOME}/soft
wget ftp://ftp.horde.org/pub/horde-webmail/horde-webmail-${HGWEVERSION}.tar.gz
# lo abro
tar xvzf horde-webmail-${HGWEVERSION}.tar.gz
# creo el directorio padre si no existe
sudo mkdir -pv ${WWWHOME}
# instalo los archivos
sudo mv -v horde-webmail-${HGWEVERSION} ${WWWHOME}/horde
# cambio el usuario/grupo de los archivos
# (después hay que revisar BIEN los permisos)
sudo chown -R ${WWWUSER}.${WWWGROUP} ${WWWHOME}/horde
Setup inicial
Como ahora todos los archivos son ${WWWUSER} vamos a abrirnos un shell como este usuario para trabajar
sudo -E su -c bash ${WWWUSER}
cd ${WWWHOME}/hordeCrear la base de datos en mysql (e.g. usando phpmyadmin) y el usuario con privilegios sobre esa base (y NO para las otras bases).
Ejecutar el script de configuración para configurar la base de datos y crear automáticamente las tablas
scripts/setup.php
Elegir/responder lo siguiente:
What is the web root path on your web server for this installation, i.e. the path of the address you use to access Horde Groupware Webmail Edition in your browser? [/horde] /horde
(1) Configure database settings
(mysqli) MySQL mysqli (salvo que la versión del server MySQL sea menor a 4.1, en cuyo caso, sólo funciona mysql).
Username to connect to the database as* [] Escribir el nombre de usuario mysql con permisos para la base de datos creado
Password to connect with [] Escribir la password de ese usuario
- How should we connect to the database? [unix]
(unix) UNIX Sockets
(tcp) TCP/IP
Type your choice: unix
Location of UNIX socket [] /var/run/mysqld/mysqld.sock (esto es el lugar donde está el socket en los debian/ubuntu nuevos... puede variar según como se haya instalado el mysql).
Database name to use* [] Escribir el nombre de la base de datos creada
Internally used charset* [iso-8859-1] utf-8
- Split reads to a different server? [false]
(false) Disabled
(true) Enabled
Type your choice: false
Aquí graba el archivo de configuración... seguimos adelante para crear las tablas de la base de datos:
Writing main configuration file
Done configuring database settings.
(2) Create database or tables
- Should we create the database for you? If yes, you need to provide a database
user that has permissions to create new databases on your system. If no, we
will only create the database tables for you. [y](y) Yes
(n) No
Type your choice: n (esto intenté hacerlo poniendo la clave de root del mysql y no anduvo, así que vamos por el modo tradicional).
Database superuser for creating the tables if necessary for your database system: Escribir el nombre de usuario mysql con permisos para la base de datos creado
Specify a password for the database user: Escribir la password de ese usuario
- Should we create the database for you? If yes, you need to provide a database
Aquí crea las tablas necesarias en la base de datos:
Loading database module...
Creating database...
[ OK ] Successfully created the global tables.
[ OK ] Successfully created the tables for Mail (imp).
[ OK ] Successfully created the tables for Filters (ingo).
[ OK ] Successfully created the tables for Address Book (turba).
[ OK ] Successfully created the tables for Calendar (kronolith).
[ OK ] Successfully created the tables for Tasks (nag).
[ OK ] Successfully created the tables for Notes (mnemo).
Done creating tables.
(3) Configure administrator settings
Specify an existing mail user who you want to give administrator permissions (optional): Escribir el nombre de usuario de mail de quien será el administrador (debe ser un usuario de mail imap existente) Done configuring administrator settings.
Listo
(0) Exit
Test
Ahora podemos probar que pasen los tests básicos de la instalación, en un browser cargar la página test.php en el URL donde se instaló (por ejemplo http://example.com/horde/test.php).
Configuración
Autenticar contra SQL del postfix/postfixadmin
Como dice en http://wiki.horde.org/SQLAuthHowTo editamos ${WWWHOME}/horde/imp/config/servers.php y cambiamos la línea que dice hordeauth => false (dentro de $servers['imap']) por:
'hordeauth' => 'full',
Ahora
entrar desde un browser (e.g. http://example.com/horde/) y loguearse con el usuario administrador que configuramos antes (con la clave que usa ese usuario para el mail). En Mode (en la pantalla de login), elegir Traditional
navegar: Administration -> Setup -> Horde, y elegir el tab Authentication
en $conf[auth][driver] elegir SQL authentication w/custom-made queries
en $conf[auth][params][phptype] elegir MySQL (mysqli) (salvo que la versión del server MySQL sea menor a 4.1, en cuyo caso, elegir MySQL).
en $conf[auth][params][protocol] elegir UNIX Sockets
en $conf[auth][params][socket] poner la ubicación del socket de mysql (en debian/ubuntu nuevos es /var/run/mysqld/mysqld.sock)
en $conf[auth][params][hostspec] dejar localhost
en $conf[auth][params][username] poner el usuario de la base de datos con el cual nos conectamos a la base mysql de autenticación (e.g. postfixadmin)
en $conf[auth][params][password] poner la password de ese usuario mysql
en $conf[auth][params][database] poner el nombre de la base de datos (e.g. postfix)
- Configurar los queries al mysql (esto está hecho suponiendo que tenemos las tablas que usa postfixadmin)
en $conf[auth][params][query_auth] poner SELECT * FROM mailbox WHERE username = \L AND password = \P AND active = 1
en $conf[auth][params][query_add] poner INSERT INTO mailbox (username,password,name,maildir,domain,created,modified,active) VALUES (\L,\P,\L,CONCAT(SUBSTRING_INDEX(\L, '@', -1) ,'/', SUBSTRING_INDEX(\L, '@', 1)),SUBSTRING_INDEX(\L, '@', -1), NOW(),NOW(),1)
en $conf[auth][params][query_getpw] poner SELECT password FROM mailbox WHERE username = \L
en $conf[auth][params][query_update] poner UPDATE mailbox SET username = \L WHERE username = \O LIMIT 1
en $conf[auth][params][query_resetpassword] poner UPDATE mailbox SET password = \P WHERE username = \L
en $conf[auth][params][query_remove] poner DELETE FROM mailbox WHERE username = \L
en $conf[auth][params][query_list] poner SELECT username,name,maildir,domain,created,modified,active FROM mailbox
en $conf[auth][params][query_exists] poner SELECT 1 FROM mailbox WHERE username = \L
en $conf[auth][params][encryption] elegir el algoritmo de hashing que tienen las passwords en la base de datos
en $conf[auth][params][show_encryption seleccionar el checkbox
Apretar el botón Generate Horde Configuration
Para que funcionen las notificaciones via email, el mail tiene que estar bien configurado en horde... si tenemos un sendmail o similar local (yo estoy usando postfix), hay que configurar el comando correctamente:
navegar: Administration -> Setup -> Horde, y elegir el tab Mailer
en $conf[mailer][type] elegir Use the local sendmail binary
en $conf[mailer][params][sendmail_path] poner /usr/sbin/sendmail (o el path absoluto donde está instalado el comando sendmail por default horde tiene /usr/lib/sendmail)
en $conf[mailer][params][sendmail_args] dejar -oi (o fijarse en man sendmail que opciones queremos poner)
Apretar el botón Generate Horde Configuration
Asegurarse de que el usuario bajo el cual corre el horde (e.g. www-data) tenga permisos suficientes para ejecutar el comando senmdail, en el caso del postfix, tuve que hacer que pueda leer el archivo /etc/postfix/main.cf.
varios
cambiar de lugar el log (por default está en /tmp)
navegar: Administration -> Setup -> Horde, y elegir el tab Logging
en $conf[log][priority] elegir PEAR_LOG_INFO
en $conf[log][type] elegir File
en $conf[log][name] poner /var/log/horde.log
Apretar el botón Generate Horde Configuration
- en una terminal, hacer:
# muevo el log file que estaba en /tmp (si es que existía)
sudo mv /tmp/horde.log /var/log
# creo el archivo para el log vacío si no existe (si no, a lo sumo le cambio la fecha/hora de modificación)
sudo touch /var/log/horde.log
# le doy los permisos correctos
sudo chown -R ${WWWUSER}.${WWWGROUP} /var/log/horde.log
# configuro la rotación del log
cd ${WWWHOME}/horde
sudo cp -v scripts/horde.logrotate /etc/logrotate.d/horde
usar ImageMagick para manejar imágenes
navegar: Administration -> Setup -> Horde, y elegir el tab Image Manipulation
en $conf[image][convert] poner /usr/bin/convert (o el path del convert de ImageMagick)
Apretar el botón Generate Horde Configuration
detección de tipos de archivos
navegar: Administration -> Setup -> Horde, y elegir el tab MIME Detection
en $conf[mime][magic_db] poner /usr/share/misc/magic (o el path del magic que usa el comando file)
Apretar el botón Generate Horde Configuration
envío de reportes de problemas
Si no tenemos configurado el whups:
navegar: Administration -> Setup -> Horde, y elegir el tab Problem Reporting
en $conf[problems][email] poner la dirección de mail a la que hay que dirigir los problemas
en $conf[problems][maildomain] poner el dominio que hay que agregar a los usuarios que no tienen dirección de mail cargada
Apretar el botón Generate Horde Configuration
.