Servidor de correo con Postfix, Courier-IMAP, MySQL, Spamassassin y Rondcube

Índice

1. Finalidad
2. Instalar Postfix y MySQL
3. Configurar Postfix para que funcione con MySQL

3.1 Fichero main.cf
3.2 Ficheros de Configuración para usuarios virtuales en postfix
3.3 Chroot de Postfix
3.4 Configurar Autenticación de Postfix con SASL

4. Base de datos MySQL
5. Configurar Spamassassin

5.1 Instalación y Configuración
5.2 Configuración de Postfix para que use Spamassassin

6. Servicio IMAP/POP

6.1 Instalar Courier
6.2 Configurar Courier para que consute a MySQL

7. Primer buzón de prueba

7.1 Registros en MySQL
7.2 Estructura de carpetas y permisos

8. Webmail

8.1 Instalar Rondcube
8.2 Configurar Rondcube
8.3 Configurar db.inc.php
8.4 Configurar main.inc.php
8.5 Crear tablas en MySQL

9. Aviso Importante y Referencias
9.1 Segunda Revisión



1. Finalidad.


Servidor de correo totalmente autónomo, con cuentas de correo virtuales que no precise dar de alta usuarios reales en el servidor. Los protocolos que se pretenden configurar con el software mencionado a continuación son SMTP, POP e IMAP. De igual manera el servidor de correo estará en la capacidad de atender el servicio de correo tanto para webmail como para el uso de clientes de correo tales como FIREBIRD o Evolution.
En el siguiente artículo intentaré detallar al máximo el procedimiento que recién he seguido para configurar un servidor de correo con Debian Lenny empleando los siguientes paquetes de software:
Postfix: MTA
MySQL: Base de datos integrada con Postfix para buzones virtuales (no utilizar usuarios locales)
Spamassassin: Integrado con Postfix para marcar los mensajes de SPAM
SASL: Servicio de autenticación para ser usado con Postfix.
Courier-IMAP: Para leer el correo por IMAP
Rondcube: Webmail 2.0 que utiliza IMAP
Para todo ello emplearemos únicamente las versiones oficiales de Debian Lenny, excepto para el Rondcube, que lo instalaremos de Squeeze (testing)


2. Instalar Postfix y MySQL:


He decidido utilizar Postfix, ya que es más apto que Exim si hablamos de un volumen alto de correo
Nos aseguramos de tener únicamente el repositorio de Debian Lenny y actualizamos los paquetes y el sistema

#aptitude update
#aptitude safe-upgrade

Ahora instalamos postfix, nos deberá eliminar el exim si es que lo tenemos instalado:

#aptitude install postfix mysql-server postfix-mysql

Si ya tenemos postfix y mysql podemos empezar a configurar postfix.


3. Configurar Postfix para que funcione con MySQL:


3.1 Fichero main.cf:
Hay dos archivos de configuración básicos de Postfix:
/etc/postfix/main.cf
/etc/postfix/master.cf

Pego aquí el contenido de main.cf que es el que utilizaremos ahora y a continuación detallo:

# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
#############################
# TLS parameters
#############################
# Por ahora no se usarán los certificados, sin embargo se puede usar para usar un servicio de correo externo
# como el de gmail, para enviar correo al exterior (fuera de la red LAN)
#############################

#smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
#smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
#smtpd_use_tls=yes
#smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
#smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
#(1)
myhostname = deb-laptop.midominio.com
#(2)
mydomain = midominio.com
#(3)
myorigin = $mydomain
#alias_maps = hash:/etc/aliases
#alias_database = hash:/etc/aliases
#(4)
mydestination = $myhostname, localhost.localdomain, localhost.$mydomain, $myhostname.$mydomain
relayhost =
#mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
#mailbox_command = procmail -a "$EXTENSION"
#(5)
mailbox_size_limit = 0
recipient_delimiter = +
#(6)
inet_interfaces = all
#################################
# Usuarios Virtuales (7)
################################
home_mailbox = Maildir/
virtual_mailbox_base = /var/spool/mail/
virtual_mailbox_maps = mysql:/etc/postfix/mysql_m_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_transport.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_a_maps.cf
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_transport = virtual
local_transport = virtual
local_recipient_maps = $virtual_mailbox_maps, $virtual_alias_maps
#################################
# Autenticación (8)
#################################
smtpd_sasl_auth_enable = yes
smtpd_sasl2_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_delay_reject = yes
################################
# OTROS
################################
#(9)
disable_vrfy_command = yes
#(10)
maximal_queue_lifetime = 1d
#(11)
strict_rfc821_envelopes = yes
message_size_limit = 10240000
disable_dns_lookups = no
#default_transport = error
#relay_transport = error

  1. FQDN (FULL QUALIFIED DOMAIN NAME) del servidor
  2. Nombre del dominio.
  3. Será, para el correo local, el origen del correo. Para sitios pequeños se recomienda $myhostname.
  4. Son los destinos de correo que nosotros manejaremos. Esta opcion es muy importante pues define que correo es para el y cual no. Si es para el lo entrega al buzón de correo de su usuario.
  5. El tamaño total de cada mailbox. 0 para usar casillas sin límite. Esta dada en Bytes y nunca podrá ser menor a message_size_limit ya que si es así postfix mostrará un error al arrancar.
  6. El servicio escucha en todas las interfaces de red disponibles en el equipo.
  7. En esta parte se especifica todo lo que es necesario para usar las casillas de correo especificadas en las tablas de mysql. Se debe aclarar que en el caso de home_mailbox existen dos posibilidades, una que es usar un único fichero para almacenar todos los mensajes recibidos por cada usuario. En Maildir se usa un juego de carpetas ubicadas en un lugar del disco duro par almacenar los mensajes de cada usuario. Mas adelante se explicará como crear estas casillas de correo físicamente en el servidor. Por otra parte, para esta configuración no es necesario usar dos tablas adicionales para UID y GID ya que éstos son estáticos (5000) este grupo y usuario será usado en el sistema operativo para manipular las casillas de correo.
  8. En esta parte se le informa a Postfix que debe usar el servicio SASL para autenticar a los usuarios. También se configurará a SASL para que valide los usuarios de acuerdo a tablas mencionadas de MYSQL.
  9. Indicar a postfix que debe usar el servicio SASL para autenticar los usuarios que van a usar el servicio.
  10. Deshabilitar en comando vrfy en postfix.
  11. Tiempo que tendrá el mensaje para ser entregado a su destino. Pasado este tiempo se devolverá al remitente indicando que el destino fue inalcanzable.
  12. Esta opcion configurada indica si cumplir estrictamente el RFC821 y no contenga basura que el RFC822 permite. Software mal programado no podr ́ enviar correos.
  13. Tamaño máximo de un mensaje enviado por un usuario.
  14. Esta habilitar ́o deshabilitar ́ la resolucion DNS. Es conveniente habilitar las resoluciones sino nuestro MTA se armar un buen lío.

De todo el fichero, podemos destacar una sección importante, la de virtualización, ya que el resto se puede configurar al gusto del consumidor, pero lo más interesante que buscamos es que utilice MySQL para las cuentas de usuario (buzones) y redirecciones.
Dicho de otro modo, en lugar de indicar la ubicación de un fichero real donde leer la configuración, le indicamos la ubicación de un fichero con las indicaciones necesarias para que lo consulte en MySQL.
Por lo tanto, paso a detallar los ficheros de acceso a mysql:
3.2 Ficheros de Configuración para usuarios virtuales en postfix:
/etc/postfix/mysql_a_maps.cf

user=<usuario>
password=<clave>
dbname=<base de datos>
table=virtual
hosts=127.0.0.1
select_field=goto
where_field=address

Este fichero permite asignar alias a algunas direcciones de correo que dispongamos. Funciona como cuando el sistema operativo le envía notificaciones al root mediante mails y estos son recibidos también por el usuario predeterminado del sistema.
/etc/postfix/mysql_transport.cf

user=<usuario>
password=<clave>
dbname=<base de datos>
table=transport
hosts=127.0.0.1
select_field=transport
where_field=domain

/etc/postfix/mysql_m_maps.cf

user=<usuario>
password=<clave>
dbname=<base de datos>
table=usuarios
hosts=127.0.0.1
select_field=maildir
where_field=address

Antes de continuar es necesario aclarar un par de cosas. La primera es que es necesario usar el 127.0.0.1 ya que se utilizará el archivo mysqld.sock para acceder a los servicios de mysql. Por otra parte el nombre de usuario para los clientes que van a utilizar nuestro servidor será el campo address en la tabla usuarios. Por qué aclarar esto: lo primero porque Postfix se ejecuta en un chroot (jaula) que se explicará mas adelante. Y lo segundo, para evitar confusiones a la hora de configurar los clientes de correo, ya que se permite indicar un login diferente a la dirección de correo, lo cual a criterio propio es innecesario ya que cada casilla de correo debe ser única(el hipotético lector puede llegar a sus propias conclusiones).
3.3 Chroot de postfix
Primero se debe aclarar que es chroot. Chroot permite configurar el sistema de forma tal que se puedan lanzar procesos confinados dentro de un determinado directorio. Para ellos y sus procesos hijos, dicho directorio será el "/" (la raíz). Cualquier fichero o directorio que esté fuera del CHROOT les quedará inaccesible.
Ahora bien, postfix tiene su chroot en /var/spool/postfix/ y para poder acceder al servicio de mysql, es necesario usar un archivo mysqld.sock que se encuentra en /var/run/mysqld/mysqld.sock. Para lograr que postfix se comunique correctamente con mysql, es necesario crear un enlace simbólico a dicho archivo.

# cd /var/spool/postfix
# mkdir -p var/run/mysqld/
# cd var/run/mysqld/
# ln -s /var/run/mysqld/mysqld.sock mysqld.sock

Por qué hacer esto (opinión personal), sencillamente porque de no hacerlo postfix no podrá conectarse a mysql para consultar a los usuarios. En esta parte me pude sacar una buenas canas, gastar un buen número de tazas de café y 2 noches sin dormir.
3.4 Configurar Autenticación de Postfix con SASL
Lo que es necesario para la autenticación de postfix usando las tablas de mysql es la instalación de SASL. Los paquetes necesarios son:

apt-get install libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin

Después de instalados estos paquetes, dentro de la ruta /etc/postfix se podrá encontrar una carpeta con el nombre sasl dentro de la cual tendremos que crear un archivo llamado smtpd.conf:

pwcheck_method: auxprop
auxprop_plugin: sql
sql_engine: mysql
mech_list: LOGIN PLAIN
sql_hostnames: 127.0.0.1
sql_user: <usuario>
sql_passwd: <clave>
sql_database: <base de datos>
sql_select: SELECT clear FROM usuarios WHERE address = '%u@%r'
log_level: 7

Este archivo tiene todo lo necesario para que postfix, mediante el servicio de SASL pueda consultar en la base de datos la información relacionada con los usuarios registrados en ella. La ultima linea es muy util para revisar los logs del sistema en busca de fallas en la configuración empleada. Fue lo que me ayudó a identificar los problemas de acceso de postfix a mysql. Obviamente es recomendable que una vez se logre satisfactoriamente la configuración, que se baje el nivel de registro en logs por razones de seguridad.
El otro archivo que hay que cambiar es /etc/default/saslauthd en cual hay que cambiar la siguiente linea:

START=yes

Esto para que el servicio SASL arranque con el sistema.


4. Base de datos MySQL:


Ahora crearemos la estructura inicial de la base de datos, así como un usuario que tenga permisos solo sobre la base de datos en cuestión.
Indico aquí las sentencias SQL necesarias para crear la estructura inicial:

--
-- Base de datos: `mail`
--
CREATE DATABASE `mail` DEFAULT CHARACTER SET latin1;
USE `mail`;

-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `virtual`
--
CREATE TABLE virtual(address VARCHAR(255) NOT NULL PRIMARY KEY,
goto VARCHAR(255) NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `transport`
--
CREATE TABLE transport(domain VARCHAR(128) NOT NULL PRIMARY KEY,
transport VARCHAR(128) NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
-
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `usuarios`
--
CREATE TABLE usuarios(address VARCHAR(255) NOT NULL PRIMARY KEY,
clear VARCHAR(20) NOT NULL,
uid INT(5) UNSIGNED DEFAULT 5000,
gid INT(5) UNSIGNED DEFAULT 5000,
name VARCHAR(128) NOT NULL,
home VARCHAR(128) NOT NULL '/var/spool/mail',
domain VARCHAR(128) NOT NULL,
maildir VARCHAR(255) NOT NULL,
active CHAR(1) NOT NULL DEFAULT '1')ENGINE=MyISAM DEFAULT CHARSET=latin1;

Ahora creamos un usuario y le otorgamos permisos sobre la base de datos creada:

CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'postfix';
GRANT ALL PRIVILEGES ON mail.* TO 'postfix'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES ;

Es decir, en este caso el nombre del usuario es postfix, con clave postfix, la base de datos es mail y las tablas de la base de datos, transport, virtual y usuarios.


5. Configurar Spamassassin:


Vamos a instalar y configurar este anti-spam para que nos identifique los emails no deseados
5.1 Instalación y Configuración:

#aptitude install spamssassin

Con este comando deberá instalar las dependencias necesarias.
A continuación editaremos su fichero de configuración para que nos identifique el spam con un texto en el asunto de los mensajes que detecte como tal, aparte de las cabeceras que él mete (X-Spam-*)
En /etc/spamassassin/local.cf Buscamos la siguente línea y la descomentamos:

rewrite_header Subject *****SPAM*****

Vamos a hacer que Spamssassin funcnione como un demonio, para lo cual le creamos un usuario y un grupo:

#groupadd -g 5001 spamd
#useradd -u 5001 -g spamd -s /sbin/nologin -d /var/lib/spamassassin spamd
#mkdir /var/lib/spamassassin
#chown spamd:spamd /var/lib/spamassassin

Ahora editamos el fichero de configuración /etc/default/spamassassin para que que tenga las siguientes opciones:

ENABLED=1
SAHOME="/var/lib/spamassassin/"
OPTIONS="--create-prefs --max-children 5 --username spamd --helper-home-dir ${SAHOME} -s ${SAHOME}spamd.log"
PIDFILE="${SAHOME}spamd.pid"

Y arrancamos el demonio:

#/etc/init.d/spamassassin start

5.2 Configuración de Postfix para que use Spamassassin
En este caso editaremos el fichero /etc/postfix/master.cf para que Postfix utilice Spamassassin, buscando la línea:

smtp inet n - - - - smtpd

y modificándola para que quede así:

smtp inet n - - - - smtpd -o content_filter=spamassassin

Y al final del fichero añadir asegurándose que no lo este ya, lo siguiente:

spamassassin unix - n n - - pipe
user=spamd argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}

Con esto conseguimos que postfix utilice Spamassassin para marcar los emails no deseados.


6. Servicio IMAP/POP


6.1 Instalar Courier
Para los servicios de recepción de correo se usará courier, software que tiene todo lo necesario para configurar de igual manera las cuentas de correo especificadas en MYSQL. Éstos paquetes tirarán de las dependencias necesarias:

#aptitude install courier-imap courier-pop courier-authdaemon courier-authlib-mysql

Con esto debería ser suficiente.
6.2 Configurar Courier para que consute a MySQL
Ahora hay que configurar courier, para que consulte los datos de los buzones de MySQL.
Hay dos ficheros que debemos tocar, uno es el /etc/courier/authdaemonrc y el otro es el /etc/courier/authmysqlrc
En el fichero /etc/courier/authdaemonrc hay que asegurarse que disponemos de la siguiente linea igualmente configurada:

##NAME: authmodulelist:2
#
# The authentication modules that are linked into authdaemond. The
# default list is installed. You may selectively disable modules simply
# by removing them from the following list. The available modules you
# can use are: authuserdb authpam authpgsql authldap authmysql authcustom authp$
#authmodulelist="authpam"
authmodulelist="authmysql"

o lo que es lo mismo, utilizar el módulo authmysql.
En el fichero /etc/courier/authmysqlrc debemos configurar la conexión a MySQL para que el servidor imap encuentre lo que pueda necesitar:

#Datos de conexión al Servidor MySQL
MYSQL_SERVER localhost
MYSQL_USERNAME <usuario>
MYSQL_PASSWORD <clave>
MYSQL_SOCKET /var/run/mysqld/mysqld.sock
MYSQL_PORT 3306
MYSQL_DATABASE <base de datos>
MYSQL_USER_TABLE usuarios
MYSQL_CLEAR_PWFIELD clear
MYSQL_UID_FIELD uid
MYSQL_GID_FIELD gid
###########################
#PILAS CON ESTE
###########################
MYSQL_LOGIN_FIELD address
###########################
MYSQL_HOME_FIELD home
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD maildir

Recordar que para este caso, se usará de igual manera la dirección de la casilla de correo como nombre de usuario para el login en el sistema de correo. Claro está que queda a gusto del consumidor como cree/quiere que su servicio de correo use el login en el mismo.
Solo quedaría reiniciar el servicio IMAP,POP y autenticación:

#/etc/init.d/courier-imap restart
#/etc/init.d/courier-authdaemon restart
#/etc/init.d/courier-pop restart

Ya deberíamos poder consultar nuestro correo mediante cualquier quiente compatible con IMAP (kmail, outlook, etc)


7. Primer buzón de prueba:


Vamos a ver los pasos para la creación de un Buzón.
7.1 Registros en MySQL
Para las pruebas de envío y recepción de correo se han empleado dos casillas, una de ellas es usuario@midominio.com y la otra es admin@midominio.com. Los registros en cada una de las tablas serían los siguientes, para la primera casilla serían:
Tabla transport:


+ - - - - - - - - + - - - - - - - - + 
|    domain       |     transport   |
+ - - - - - - - - + - - - - - - - - + 
|   midominio.com |     local:      |
+ - - - - - - - - + - - - - - - - - + 

Tabla virtual


+ - - - - - - + - - - - - + 
|    address  |    goto   |
+ - - - - - - + - - - - - + 
|   root      |    admin  |
+ - - - - - - + - - - - - + 

Tabla usuarios:


+ - - - - - - - - - - - - + - - - - - + - - - - + - - - - + - - - - - - - - - + 
|        address          |     clear |   uid   |   gid   |      name         |
+ - - - - - - - - - - - - + - - - - - + - - - - + - - - - + - - - - - - - - - + 
| usuario@midominio.com   |   123456  |   5000  |   5000  |   frutoso sanchez |
+ - - - - - - - - - - - - + - - - - - + - - - - + - - - - + - - - - - - - - - + 
|        home             |  dominio  | maildir |  activo |
+ - - - - - - - - - - - - + - - - - - + - - - - + - - - - + - - - - - - - - - + 
|     /var/spool/mail     | midominio.co | midominio.com/usuario/ | 1 |
+ - - - - - - - - - - - - + - - - - - + - - - - + - - - - + - - - - - - - - - + 

Así las cosas, e insertando los registros correspondientes al usuario admin se tendrían dos casillas de correo habilitadas, la de usuario y la de admin, las cuales se pueden usar para realizar las correspondientes pruebas.
7.2 Estructura de carpetas y permisos:
Antes que nada hay que crear un usuario y grupo de usuarios para que sean propietarios de la carpeta donde se manejará toda la parte de almacenaje de los usuarios.

# groupadd -g 5000 vmail
# useradd -u 5000 -g vmail -s /bin/false vmail

Esta parte me costó bastante trabajo encontrarla, ya que no tenía idea de como se almacenaban y procesaban físicamente los mensajes dentro del servidor. Pues bien, para nuestra fortuna existe un comando capaz de crear el arbol de directorios para la casilla de correo de un usuario. Solo hay que crear la carpeta correspondiente a el dominio en cuestión y proceder a crear las correspondientes casillas de correo.

# cd /var/spool/mail
# mkdir midominio.com
# cd midominio.com
# maildirmake -S usuario
# maildirmake -S admin
#chown -R vmail:vmail /var/spool/mail/midominio.com/
#chmod -R 700 /var/spool/mail/midominio.com/

Una vez hecho esto, reiniciamos postfix:

#/etc/init.d/postfix restart

Para detectar cualquier clase de falla o ver el movimiento que realizan los servicios para la entrega de los correos, se deben vigilar los siguientes archivos
/var/log/mail.log
/var/log/auth.log

En ellos de acuerdo a la configuración, mostrarán en detalle que esta sucediendo con los servicios. Si por casualidad hay problemas con alguna linea mal escrita, o que hizo falta, o que faltó configurar (que es lo mas seguro que suceda :D ) este es el lugar para empezar a buscar.


8. Servicio Webmail


RoundCube es un cliente de correo web el cual mediante el uso de PHP, MySQL, AJAX, permite organizar los mensajes con tan solo arrastrarlos hacia donde deseamos. Tiene una interfaz muy intuitiva y amena y es bastante configurable.
8.1 Instalar RoundCube:
La instalación de RoundCube en Debian es muy sencilla. Solamente tenemos que ejecutar en consola el siguiente comando:

#apt-get install rouncube

O bien podemos descargar la versión estable o de prueba desde su sitio web oficial

Requerimientos:

Si nos bajamos el paquete desde el sitio web, el directorio donde lo vamos a descomprimir debe tener permiso de escritura. Además se supone que usted debe tener disponible un servidor web con PHP 4.3.1 o superior y por supuesto acceso a la base de datos que puede ser MySQL, Postgre o SQLite.
8.2 Configurar RoundCube:
Si instalamos Roundcube desde los repositorios de Debian, este nos preguntará que tipo de base de datos queremos utilizar y configurará los archivos correspondientes, los cuales podemos encontrar en /usr/share/roundcube/config.
Si lo hacemos desde el paquete descargado de la web, al descomprimirlo este nos creará dentro del directorio una carpeta llamada config en la cual se encontrarán 2 ficheros que debemos configurar:
8.3 Configurar db.inc.php:
Este fichero viene por defecto con el nombre db.inc.php.dist así que lo renombramos a db.inc.php. En este fichero es donde establecemos la base de datos a utilizar en Roundcube. Buscamos las líneas siguientes:

$rcmail_config['db_dsnw'] = 'mysql://roundcube:roundcube@localhost/roundcube';
// postgres example: 'pgsql://roundcube:pass@localhost/roundcubemail';
// sqlite example: 'sqlite://./sqlite.db?mode=0646';

Como pueden ver, para este ejemplo usé MySQL y establecí como nombre de usuario roundcube y como contraseña roundcube (algo que no es recomendado, pero solo es para el ejemplo). Usted en dependencia de la base de datos que utilice, descomenta la línea respectiva.
8.4 Configurar main.inc.php:
Este es el fichero de configuración de RoundCube. Usted puede modificarlo como desee aunque básicamente no hay que hacer mucho en él. Nos puede interesar las siguientes líneas:

// the mail host chosen to perform the log-in
// leave blank to show a textbox at login, give a list of hosts
// to display a pulldown menu or set one host as string.
// To use SSL/TLS connection, enter hostname with prefix ssl:// or tls://
$rcmail_config['default_host'] = 'tudominio';

En este caso si tu dirección de correo es, por ejemplo, johndoe@miejemplo.com debemos poner la línea de esta forma:

$rcmail_config['default_host'] = 'miejemplo.com';

8.5 Crear tablas en MySQL:
Ahora solo nos queda crear las tablas en MySQL para que RoundCube guarde los perfiles de los usuarios. Podemos usar phpmyadmin y crear un usuario llamado roundcube con contraseña roundcube ya que ese fué el usuario/contraseña que establecimos en la variable de la base de datos.
Una vez creada la base de datos solo tenemos que importar un fichero llamado mysql.initial.sql que se encuentra dentro de la carpeta "SQL" que a su vez se encuentra dentro del lugar donde descomprimimos Roundcube, lo seleccionamos y lo importamos.
Ahora solo nos queda acceder a nuestro buzón poniendo en el navegador la URL: http://localhost/rouncube.
Para tener en cuenta
En caso de que hallamos instalado Roundcube desde los repositorios de Debian, no hay necesidad de crear la base de datos de Mysql, ya que es creada de forma automática por el gestor de paquetes.
Otra cosa que se debe hacer, es instalar el correspondiente servicio web para acceder al webmail desde el navegador. Para ello se debe instalar Apache y PHP con los modulos de acceso para mysql.
por ultimo para que funcione correctamente hay que crear un enlace simbólico a la carpeta de acceso a roundcube en la ruta donde se leen las páginas en Apache, lo cual podría ser de esta forma:

# cd /var/www/
# ln -s /usr/share/roundcube roundcube

Con lo cual ya estaría listo para trabajar.
Por otra parte si por alguna razón se presenta el error de "Server error (Not Found)" al entrar en la sesión de roundcube, es probable que halla que cambiar una variable en php. Esto se puede hacer en el archivo /etc/php5/apache2/conf.d/suhosin.ini cambiando el valor de suhosin.session.encrypt en off.


9. Aviso Importante y Referencias


El presente Wiki no esta optimizado para un entorno de producción, no aborda temas concretos de seguridad como contraseñas seguras, autentificación SMTP, etc. siendo peligroso dejarlo público tal cual se detalla únicamente aquí (podría ser utilizado por terceros para hacer envíos de correo electrónico no deseado -SPAM-).
esDebian ni los creadores del Wiki se hacen responsables de los problemas que puedan surgir por omitir este aviso.

Referencias:

9.1 Segunda Revisión

En la segunda revisión se agregaron algunos detalles en la configuración para realizar la correspondiente autenticación usando SASL y el demonio AUTHDAEMON de courier para que consultaran lo necesario de la base de datos de MYSQL. De igual manera aprovechando que se instalaba el servicio IMAP, se habilita el POP y se deja abierta la opción de usar clientes de correo alternos además del webmail Roundcube.
Algo muy importante es la creación de las casillas de correo físicamente en el servidor. En algunos casos esto puede resultar en muchos dolores de cabeza.
Esta guia esta pensada para ser simplemente eso, una base de la cual poder empezar. Vale la pena destacar que cada usuario que configure su servicio de correo puede realizar los cambios que suponga convenientes de acuerdo a sus propias necesidades.
Tambien mucho OJO shocked smash Para que el servicio de correo trabaje correctamente es recomendable tener bien configurado el servicio de DNS, lo digo por propia experiencia.
Referencias:
Algunas son útiles, otras no tanto pero igual cada una aporta su granito de arena. De igual manera se debe aclarar que es muy probable que estas páginas no estén disponibles ya que fueron consultadas hace bastante tiempo.