Você está na página 1de 47

SERVIDOR DE CORREO EN LINUX

VERSIN 2
TECNOLOGIA EN GESTIN DE REDES DE DATOS
CENTRO DE SERVICIOS Y GESTIN EMPRESARIAL
SENA, MEDELLN


NOTAS PRELIMINARES:

Este tutorial describe el proceso de instalacin y administracin de un servidor de correo en
una mquina con Sistema Operativo Red Hat 6.0.

Antes de seguir este tutorial se recomienda seguir paso a paso el manual de administracin
de openLDAP 2.4 disponible en http://cursos.redsena.net






1. CONFIGURACIN DEL SERVIDOR OPENLDAP


En un manual anterior (manual de administracin de openLDAP 2.4) se realiz la configuracin de
openLDAP, sin embargo no tenemos un esquema que defina clases y atributos para una cuenta de
correo: mailbox, maildrop, mailenable, quota, etc.


1.1 Crear o descargar el esquema mail.schema

En esta URL se define un esquema:
http://mds.mandriva.org/svn/mmc-projects/mmc-core/trunk/agent/contrib/ldap/mail.schema

Debe crearse un nuevo archivo llamado mail.schema y guardarse en /etc/openldap/schema/.
Luego debe copiarse el contenido del archivo como se muestra a continuacin:

# nano /etc/openldap/schema/mail.schema

##
## Needed attributes for MMC Mail Plugin
##
## Version 02 - 29/11/06
##
## Cdric Delfosse (cdelfosse@mandriva.com)
## Matthieu Vogelweith (mvogelweith@mandriva.com)
##

# Attributes
attributetype ( 1.3.6.1.4.1.21103.1.1.13.1
NAME 'maildrop'
DESC 'Mail addresses where mails are forwarded -- ie forwards'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{512})

attributetype ( 1.3.6.1.4.1.21103.1.1.13.2
NAME 'mailalias'
DESC 'Mail addresses accepted by this account -- ie aliases'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{512})

attributetype ( 1.3.6.1.4.1.21103.1.1.13.3
NAME 'mailenable'
DESC 'Mail Account / Virtual alias validity'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{8})

attributetype ( 1.3.6.1.4.1.21103.1.1.13.4
NAME 'mailbox'
DESC 'Mailbox path where mails are delivered'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{512})

attributetype ( 1.3.6.1.4.1.21103.1.1.13.5
NAME 'virtualdomain'
DESC 'A mail domain name'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{512})

attributetype ( 1.3.6.1.4.1.21103.1.1.13.6
NAME 'virtualdomaindescription'
DESC 'Virtual domain description'


EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{512})

attributetype ( 1.3.6.1.4.1.21103.1.1.13.7
NAME 'mailuserquota'
DESC 'Mailbox quota for a user in kilo-bytes'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )

attributetype ( 1.3.6.1.4.1.21103.1.1.13.8
NAME 'mailhost'
DESC 'The mail server IP address or FQDN for a user'
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} SINGLE-VALUE)

attributetype ( 1.3.6.1.4.1.21103.1.1.13.9
NAME 'mailaliasmember'
DESC 'Member of a virtual alias'
SUP distinguishedName )

# Mail Account Objectclass
objectclass ( 1.3.6.1.4.1.21103.1.2.13.1
NAME 'mailAccount'
DESC 'Mail Account'
SUP top
AUXILIARY
MUST (
mail
)
MAY (
mailalias $ maildrop $ mailenable $ mailbox $ mailuserquota $
mailhost
)
)

# Mail Domain Objectclass
objectclass ( 1.3.6.1.4.1.21103.1.2.13.2
NAME 'mailDomain'
DESC 'Domain mail entry'
SUP top
STRUCTURAL
MUST (
virtualdomain
)
MAY (
virtualdomaindescription $ mailuserquota
)
)

# Mail Group Objectclass
objectclass ( 1.3.6.1.4.1.21103.1.2.13.3
NAME 'mailGroup' SUP top AUXILIARY
DESC 'Mail Group'
MUST ( mail )
)

# Virtual Alias Objectclass
objectclass ( 1.3.6.1.4.1.21103.1.2.13.4
NAME 'mailAlias'
DESC 'Mail Alias'
SUP top
STRUCTURAL
MUST ( mailalias )
MAY ( mail $ mailaliasmember $ mailenable )
)




1.2 Conversin de mail.schema a mail.ldif



En el manual de administracin de openLDAP 2.4 se explic que esta versin de openLDAP trabaja
la configuracin directamente con archivos de extensin LDIF y no con archivos de extensin
schema.

Para visualizar los esquemas actuales usados en openldap podemos usar el comando tree.

# tree /etc/openldap/slapd.d



Crear el archivo misesquemas.conf:

# cd /root/
# nano misesquemas.conf

include /etc/openldap/schema/core.schema
include /etc/openldap/schema/collective.schema
include /etc/openldap/schema/corba.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/duaconf.schema
include /etc/openldap/schema/dyngroup.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/java.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/ppolicy.schema
include /etc/openldap/schema/mail.schema

Crear un directorio para la creacin de los esquemas en formato LDIF

# mkdir conf/

Ejecutar el comando slaptest para realizar la conversin:



# slaptest f misesquemas.conf F conf/

NOTA: El comando slaptest cre el siguiente rbol a partir del directorio conf que se cre
previamente:



Hacemos una copia del archivo cn={11}mail.ldif y la editamos:

# cp conf/cn\=config/cn\=schema/cn\=\{11\}mail.ldif mail.ldif
# nano mail.ldif

Editar las lneas:

dn: cn={11}mail
objectClass: olcSchemaConfig
cn: {11}mail

Por lo siguiente:
dn: cn=mail,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: mail

NOTA: Not que se borraron los nmeros y sus llaves y se agreg cn=schema,cn=config

Luego, debemos borrar las siguientes lneas:

structuralObjectClass: olcSchemaConfig
entryUUID: 007940a2-0289-1031-873b-89615207f42d
creatorsName: cn=config
createTimestamp: 20120315012157Z
entryCSN: 20120315012157.547939Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20120315012157Z

Por ltimo se importa el esquema al LDAP:



# ldapadd x D cn=admin,cn=config W f mail.ldif
Enter LDAP Password:
adding new entry "cn=mail,cn=schema,cn=config "

Verificacin:




1.3 Crear usuarios para que sean usuarios de correo electrnico

Para este procedimiento se usar el cliente grfico Apache Directory Studio. En primer lugar se
crear una nueva entrada en el directorio como se muestra en la figura:




Luego le diremos que la nueva entrada se crear desde cero y no a partir de otra entrada como
plantilla:



Se crea la entrada con las siguientes clases: inetOrgPerson, mailAccount (Las dems clases se
agregan automticamente)







El RDN (Nombr distinguido relativo de cada usuario de correo) ser el uid. En muchos casos se usa
cn como el RDN. En este caso el uid ser Elvis, ya que se pretende crear un usuario que a su vez
ser usuario de correo: elvis@abc.com



Luego, se pedir que se ingresen los atributos obligatorios: cn, mail y sn. Sin embargo usaremos
otros atributos adicionales. Para esto presionamos el botn New Attribute, como se muestra en la
siguiente figura:






La bsqueda de atributos es una labor sencilla. Se ingresan los siguientes atributos adicionales:
mailbox y mailenable. Ver las siguientes dos figuras:






NOTA: El atributo mail ser usado para indicarle al servidor de correo el e-mail del usuario.

NOTA: El atributo mailbox ser usado para indicarle al servidor de correo cual ser la ruta (path) del
buzn del usuario. Por ejemplo si se almacenan los correos en /var/mail, el buzn de Elvis estar
en la ruta /var/mail/elvis/Maildir/.



NOTA: El atributo mailenable ser usado para indicarle al servidor de correo que la cuenta se
encuentra activa o inactiva.


1.4 Modificar usuarios para que sean usuarios de correo electrnico

En el manual de administracin de openLDAP 2.4 se crearon varios usuarios con diferentes clases y
atributos, sin embargo no estaban pensados para ser usuarios de correo sino ms bien usuarios que
pudieran autenticarse en sistemas UNIX (posixAccount) o usuarios con informacin personal
(inetOrgPerson).

A continuacin se muestra el proceso de modificacin de un objeto (Usuario) existente, para
convertirlo tambin en usuario de correo electrnico. En el siguiente pantallazo se muestra un
usuario de LDAP que fue creado a partir de las clases posixAccount e inetOrgPerson. Para que este
usuario, sea usado como usuario de correo simplemente ubicamos el cursor del mouse sobre
cualquiera de las objectClass y luego presionamos el botn New Value.



Buscamos la clase mailAccount y luego la agregamos y damos clic en Next:




Para la clase mailAccount el atributo obligatorio es mail:



Finalmente se agregan los atributos mailenable y mailbox, como se mostr en pasos anteriores






2. INSTALACIN Y CONFIGURACIN DE POSTFIX (MTA y MDA)


Postfix es un servidor de correo Open Source, que acta como agente de transporte de correo
(MTA). A continuacin se describe el proceso de instalacin y configuracin de Postfix como MTA y
como agente de entrega de correo (MDA).

En procesos anteriores se instal el servidor de directorio openLDAP 2.4. Los usuarios de correo
electrnico sern los mismos usuarios definidos en el LDAP. En otras palabras se usar LDAP como
backend del Postfix.

La implementacin supone que los correos sern entregados a los buzones de los usuarios dentro
del dominio abc.com

Antes de instalar y configurar POSTFIX responda las siguientes preguntas, ya que sus respuestas
son la base de la configuracin:

Qu nombre de dominio usar para el correo saliente?
Respuesta: abc.com

De cules dominios recibir correos?
Respuesta: Cualquier dominio puede enviarme correos electrnicos.

Qu clientes podrn enviar correo electrnico desde su servidor?
Respuesta: Solo los usuarios dentro de la red local 192.168.40.0/24

A qu destinos desea enviar correos electrnicos?
Respuesta: A cualquier destino, incluyendo dominios en internet

Cul ser el formato usado para almacenar los buzones de los usuarios: mbox o maildir?
Respuesta: Se usar Maildir

Qu mtodo de envo de correo usara: directo o indirecto?
Respuesta: El servidor Postfix enviar correo directamente, sin necesidad
de usar un relay de retransmisin de correo.

Cul ser la base de datos de usuarios?
Respuesta: El servidor Postfix enviar correo solo a usuarios del directorio
openLDAP. No se usaran los usuarios del sistema.


Procedimiento para la instalacin y configuracin de Postfix:

2.1 Instalacin de Postfix

En las distribuciones basadas en RHEL 6.0 (Red Hat Enterprise Linux 6.0) Postfix es el agente de
transporte por omisin (Preinstalado). Sin embargo, si este no es el caso solo ser necesario
instalarlo:

# yum install postfix




2.2 Configuracin inicial de Postfix con base en las necesidades:

Editar el archivo main.cf con los parmetros de configuracin. A continuacin se muestran las
lneas que se deben editar:

# nano /etc/postfix/main.cf



myhostname = mail.abc.com

mydomain = abc.com

myorigin = $mydomain

inet_interfaces = all

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

mynetworks = 192.168.40.0/24, 127.0.0.0/8

home_mailbox = Maildir/

myhostname: Corresponde al nombre del servidor de correo (Hostname). Debe existir un registro en
el servidor DNS.

mydomain: Es el nombre de dominio que se usar para los correos salientes.

myorigin: Es el nombre de dominio que se usar para los correos salientes. Si el usuario usersena
enva un correo electrnico, postfix pondr como remitente usersena@abc.com. Para la configuracin
mostrada en la figura myorigin sera abc.com (mydomain).

inet_interfaces: interfaces (subredes) que estarn a la escucha de peticiones de clientes de correo
electrnico. En este caso, el servidor escuchar por todas las interfaces de red. Por ejemplo si el
servidor tiene 2 interfaces de red escuchar por cada una de estas interfaces.

mydestination: El parmetro mydestination especifica que dominios entregar localmente, en vez de
enviarlo a otras maquinas. En este caso, todo correo @abc.com ($mydomain) ser entregado de
manera local por el mismo servidor y no se usar otro MTA.

mynetworks: La directiva mynetworks permite que una red se considere local para Postfix. Esto es,
distinguir entre maquinas dentro de la red local que tienen permitido el uso del servidor de correo. En
el ejemplo de configuracin solo los equipos de la red 192.168.40.0/24 y el host local pueden usar
Postfix como agente de transporte de correo.

home_mailbox: Este parmetro define el formato en que sern almacenados los buzones. Existen
dos tipos de formatos mbox y maildir. El elegido ser Maildir que es un formato que usa varios
directorios y evita los bloqueos. Con la configuracin mostrada los usuarios tendrn sus buzones en
el directorio /home/username/Maildir/


NOTA: Con la configuracin mostrada ya pueden hacerse pruebas y enviar correos a los usuarios
locales (Unix users) o a dominios en Internet. Cada correo es almacenado en el home de cada


usuario. Aunque se mostrar la prueba de esto, no podemos olvidar que no queremos trabajar con
usuarios locales sino que nuestros usuarios de correo estarn definidos en el directorio LDAP, por lo
cual ser necesario cambiar nuevamente la configuracin de Postfix es pasos posteriores.

Como hemos modificado el archivo de configuracin ser necesario reiniciar el servicio:

# service postfix restart


2.3 Prueba del servidor de correo con usuarios locales usando un MUA


Para realizar la prueba podemos usar un cliente de correo electrnico (MUA) de lnea de comandos
llamado mail o podemos usar algn cliente de correo (MUA) grfico.

En el servidor RHEL existen solo dos usuarios: root y usersena. Las dos pruebas que se realizarn
sern:

Enviar un correo electrnico del usuario root@abc.com al usuario usersena@abc.com

$ su -
# echo "Este es el cuerpo del mensaje" | mail s "Este es el asunto" usersena@abc.com

Enviar un correo electrnico del usuario root@abc.com al usuario felipelondon@gmail.com

$ su -
# echo "Cuerpo del mensaje" | mail s "Este es el asunto" felipelondon@gmail.com

Verificacin:

# su - usersena
$ cat Maildir/new/1331681220.XXXXXX.ldap.abc.com

Return-Path: <root@abc.com>
X-Original-To: usersena@abc.com
Delivered-To: usersena@abc.com
Received: by ldap.abc.com (Postfix, from userid 0)
id 8218D649EA; Tue, 13 Mar 2012 18:27:00 -0500 (COT)
Date: Tue, 13 Mar 2012 18:27:00 -0500
To: usersena@abc.com
Subject: Asunto del mensaje
User-Agent: Heirloom mailx 12.4 7/29/08
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-Id: <20120313232700.8218D649EA@ldap.abc.com>
From: root@abc.com (root)

Este es el cuerpo del mensaje


El Segundo correo se encuentra en la carpeta SPAM de la bandeja de GMAIL:




2.4 Configuracin de postfix usando LDAP como backend


En el paso anterior se realiz una prueba exitosa de postfix, usando los usuarios UNIX. Ahora
cambiaremos los parmetros necesarios para que postfix trabaje con los usuarios del directorio
(Usuarios virtuales).

Lo primero ser consultar la documentacin oficial de postfix para la configuracin de dominios y
usuarios virtuales LDAP (Bsqueda en google: virtual domains postfix ldap). En los resultados
buscamos el de la documentacin oficial en la seccin Postfix virtual MAILBOX example: separate
domains, non-UNIX accounts: http://www.postfix.org/VIRTUAL_README.html#virtual_mailbox

Con base en el ejemplo, adaptaremos la configuracin de Postfix a nuestras necesidades. Borre
$mydomain de la lnea mostrada en rojo y agregue las dems lneas al final del archivo main.cf

mydestination = $myhostname, localhost.$mydomain, localhost

virtual_mailbox_domains = $mydomain
virtual_mailbox_base = /var/vmail/
virtual_mailbox_maps = ldap:/etc/postfix/ldap-accounts.cf
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000


virtual_mailbox_domains le dice a Postfix que abc.com es un dominio de correo virtual. Si se
incluye $mydomain en virtual_mailbox_domains no puede incluirse en mydestination.

El parmetro virtual_mailbox_base especifica un prefijo para todas las rutas de acceso de buzn
virtual. En este directorio se crearn varios subdirectorios, uno por cada usuario del LDAP que sea
tambin usuario de correo electrnico. Por ejemplo, para el usuario uid=elvis,dc=abc,dc=com,
postfix crear los directorios /var/vmail/elvis y /var/vmail/elvis/Maildir.

NOTA: El directorio /var/vmail debe existir, por eso lo crearemos un usuario a partir del cual se
crearn los buzones y el cual tendr como directorio personal /var/vmail y su uid ser 5000:

# adduser -d /var/vmail -u 5000 vmail


El parmetro virtual_mailbox_maps especifica la tabla de bsqueda de los buzones. Este
parmetro lo pasaremos usando LDAP, a travs del atributo mailbox. Por ejemplo: cuando postfix
recibe un correo electrnico para el usuario elvis@abc.com necesita saber dnde almacenarlo,
entonces realiza una consulta al servidor LDAP del atributo mailbox, del usuario elvis. El servidor
LDAP responder que el atributo mailbox ser elvis/Maildir/.

El archivo /etc/postfix/ldap-accounts.cf debe tener la informacin necesaria para la conexin
con el servidor LDAP y el atributo de respuesta para la consulta:

# nano /etc/postfix/ldap-accounts.cf

server_host = 127.0.0.1
search_base = dc=abc, dc=com
query_filter = (&(objectClass=mailAccount)(mail=%s)(mailenable=ok))


result_attribute = mailbox

NOTA: La configuracin variar dependiendo de si el servidor se encuentra en una mquina local o
en una mquina remota. Yo recomiendo usar un FQDN (Por ejemplo ldap.abc.com).

NOTA: Como puede verse la bsqueda en el LDAP se realizar primero una verificacin de todas las
entradas que sean mailAccount, luego se buscar la direccin de correo (%s) y por ltimo se
verificar que el atributo mailenable tenga el valor OK, en otra palabras, que la cuenta de correo
est habilitada.

NOTA: El atributo resultante es mailbox.

A continuacin se comprobar con el usuario elvis que existe en el directorio:

# postmap -q elvis@abc.com ldap:/etc/postfix/ldap-accounts.cf
elvis/Maildir/

Por ltimo reiniciamos el servicio:

# service postfix restart



2.5 Prueba del servidor de correo con usuarios del directorio (LDAP)

Se usar el cliente de lnea de comandos mail:

# echo "Hola Mortiz" | mail -s "mensaje del root para mortiz" mortiz@abc.com

De acuerdo a la configuracin que se ha realizado hasta el momento, este correo debe estar
almacenado en el mailbox del usuario mortiz, que es el directorio /var/vmail/mortiz/Maildir/

[root@ldap usersena]# tree /var/vmail/mortiz/
/var/vmail/mortiz/
Maildir
cur
new
1332201296.Vfd01I8354eM985430.ldap.abc.com
tmp

NOTA: Recuerde que el comando tree es usado para visualizar el rbol de directorios y
subdirectorios. Como puede verse, postfix a travs del MDA, cre el directorio mortiz, a partir de
/var/vmail y los dems subdirectorios.

Ahora leeremos el mail usando el comando cat:

# cat /var/vmail/mortiz/Maildir/new/1332201296.Vfd01I8354eM985430.ldap.abc.com

Return-Path: <root@abc.com>
X-Original-To: mortiz@abc.com
Delivered-To: mortiz@abc.com
Received: by ldap.abc.com (Postfix, from userid 0)
id EA95664AA4; Mon, 19 Mar 2012 18:54:53 -0500 (COT)


Date: Mon, 19 Mar 2012 18:54:53 -0500
To: mortiz@abc.com
Subject: mensaje del root para mortiz
User-Agent: Heirloom mailx 12.4 7/29/08
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-Id: <20120319235453.EA95664AA4@ldap.abc.com>
From: root@abc.com (root)

Hola Mortiz

NOTA: Ms adelante se usarn dos clientes grficos (MUA) para la revisin de correo: Outlook y
Thunderbird. Lo nico que nos hace falta es configurar el servidor POP/IMAP.




3. INSTALACIN Y CONFIGURACIN DE DOVECOT (MAA)


Dovecot es un servidor de IMAP y POP3 Open Source para sistemas GNU/Linux o Unix en general

Dovecot puede trabajar con el estndar MBOX y MAILDIR y es completamente compatible con
clientes MUA que accedan directamente a los buzones de correo.

Dovecot tambin incluye un Agente de Entrega de Correo llamado Local Delivery Agent (agente de
entrega local o LDA). Por el momento, el agente de entrega de correo es virtual, a travs de postfix,
pero ms adelante tendremos que configurar dovecot como MDA (o en trminos de Dovecot, LDA).
Esto con el fin de que se impida la entrega de correos cuando los usuarios hayan excedido la cuota.


3.1 Instalacin de dovecot

# yum install dovecot

Una vez instalado dovecot, se configurar para que el servicio sea iniciado cuando el sistema
arranque:

# chkconfig dovecot on

Es importante saber qu versin de dovecot se est usando para luego buscar la documentacin
apropiada en la Wiki de dovecot. El siguiente comando muestra la versin de dovecot (2.0.9):

# dovecot --version
2.0.9



3.2 Configuracin de dovecot

Dovecot tiene varios archivos de configuracin. A continuacin se explican los que sern usados
para nuestra configuracin:

/etc/dovecot/dovecot.conf: Configuraciones bsicas de protocolos (IMAP, POP o ambos),
redes de confianza, etc. Adems se incluyen los archivos del directorio /etc/dovecot/conf.d/

/etc/dovecot/conf.d/10-mail.conf: En este archivo se le indicar a dovecot la ruta en la
que debe buscar el buzn de los usuarios y, el UID y GID del usuario local a travs del cual se
accede al mail (En nuestro caso el usuario vmail).

/etc/dovecot/conf.d/10-auth.conf: Antes de que un usuario pueda acceder a su buzn
desde el MUA, debe pasar por un proceso de autenticacin con el servidor POP/IMAP. Este archivo
permite configurar configurar qu tipo de backends se usarn para usuarios y contraseas. En
nuestro caso usaremos LDAP.

/etc/dovecot/conf.d/auth-ldap.conf.ext: En este archivo se le indicar a dovecot los
parmetros para la bsqueda de usuarios y contraseas en LDAP.



Lo primero que haremos ser usar nicamente los protocolos IMAP y POP. Sin embargo si usted
desea solo usar uno de los dos no hay problema.

# nano /etc/dovecot/dovecot.conf

Se descomenta la siguiente lnea y se habilitan nicamente los protocolos IMAP y POP:

...
# Protocols we want to be serving.
protocols = imap pop3
...


Luego, se configurar la ruta de los buzones de los usuarios y se le indicar a dovecot el usuario del
sistema para acceder al correo. Para esto se editar el archivo /etc/dovecot/conf.d/10-
mail.conf

# nano /etc/dovecot/conf.d/10-mail.conf

Se descomentan y se configuran las siguientes directivas (En color rojo):

...
# There are a few special variables you can use, eg.:
#
# %u - username
# %n - user part in user@domain, same as %u if there's no domain
# %d - domain part in user@domain, empty if there's no domain
# %h - home directory
#
# See doc/wiki/Variables.txt for full list. Some examples:
#
# mail_location = maildir:~/Maildir
# mail_location = mbox:~/mail:INBOX=/var/mail/%u
# mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
#
# <doc/wiki/MailLocation.txt>
#
mail_location = maildir:/var/vmail/%n/Maildir
...
# System user and group used to access mails. If you use multiple, userdb
# can override these by returning uid or gid fields. You can use either numbers
# or names. <doc/wiki/UserIds.txt>
mail_uid = vmail
mail_gid = vmail
...

Explicacin: Cuando un usuario use un cliente (MUA) y se autentique, se buscar su buzn en
/var/vmail/%n/Maildir donde %n se reemplaza por el nombre de usuario que compone la direccin
de correo electrnico. Por ejemplo, para el usuario elvis (Con direccin de correo elvis@abc.com),
DOVECOT buscar su buzn en /var/vmail/elvis/Maildir de esta manera, el usuario puede ver la
bandeja de entrada y los dems mensajes de su buzn.

El uid y gid es usado para que DOVECOT tenga permisos tanto de lectura como escritura en los
buzones de los usuarios. El permiso de lectura es obvio, pero, Para qu necesita DOVECOT tener
permisos de escritura sobre el directorio? Sencillo: En caso de que el usuario no tenga creado un
buzn, DOVECOT lo crear de manera automtica.


Luego se habilitar el uso de LDAP para la autenticacin de usuarios y se deshabilitar el uso de
usuarios locales. Busque el final del archivo y comente la lnea de autenticacin usando usuarios
locales y descomente la lnea de autenticacin LDAP.

# nano /etc/dovecot/conf.d/10-auth.conf

# Disable LOGIN command and all other plaintext authentications unless
# SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP
# matches the local IP (ie. you're connecting from the same computer), the
# connection is considered secure and plaintext authentication is allowed.
disable_plaintext_auth = no
...

#!include auth-system.conf.ext
#!include auth-sql.conf.ext
!include auth-ldap.conf.ext
#!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-vpopmail.conf.ext
#!include auth-static.conf.ext

En el archivo /etc/dovecot/conf.d/auth-ldap.conf.ext se hace referencia a otro archivo de
configuracin que debe crearse /etc/dovecot/dovecot-ldap.conf.ext. Este archivo est en la
documentacin de dovecot como ejemplo. Se realiza la bsqueda del archivo y luego se copia en el
directorio /etc/dovecot:

# find / -iname "dovecot-ldap.conf.ext"
/usr/share/doc/dovecot-2.0.9/example-config/dovecot-ldap.conf.ext

# cp /usr/share/doc/dovecot-2.0.9/example-config/dovecot-ldap.conf.ext /etc/dovecot
# nano /etc/dovecot/dovecot-ldap.conf.ext

...

# Space separated list of LDAP hosts to use. host:port is allowed too.
hosts = 127.0.0.1
...

sasl_bind = no
...

# Use TLS to connect to the LDAP server.
tls = no
...

# Use authentication binding for verifying password's validity. This works by
# logging into LDAP server using the username and password given by client.
# The pass_filter is used to find the DN for the user. Note that the pass_attrs
# is still used, only the password field is ignored in it. Before doing any
# search, the binding is switched back to the default DN.
auth_bind = no
...

# LDAP protocol version to use. Likely 2 or 3.
ldap_version = 3
...

# LDAP base. %variables can be used here.
# For example: dc=mail, dc=example, dc=org
base = dc=abc,dc=com


...

# Search scope: base, onelevel, subtree
scope = subtree
...

# User attributes are given in LDAP-name=dovecot-internal-name list. The
# internal names are:
# uid - System UID
# gid - System GID
# home - Home directory
# mail - Mail location
#
# There are also other special fields which can be returned, see
# http://wiki.dovecot.org/UserDatabase/ExtraFields
user_attrs =

# Filter for user lookup. Some variables can be used (see
# http://wiki.dovecot.org/Variables for full list):
# %u - username
# %n - user part in user@domain, same as %u if there's no domain
# %d - domain part in user@domain, empty if user there's no domain

user_filter = (&(objectClass=mailAccount)(mailenable=OK)(uid=%n))
...

# Password checking attributes:
# user: Virtual user name (user@domain), if you wish to change the
# user-given username to something else
# password: Password, may optionally start with {type}, eg. {crypt}
# There are also other special fields which can be returned, see
# http://wiki.dovecot.org/PasswordDatabase/ExtraFields

pass_attrs = uid=user,userPassword=password
...

# Filter for password lookups
pass_filter = (&(objectClass=mailAcoount)(mailenable=OK)(uid=%n))


Explicacin:

El servidor LDAP est en la misma mquina del servidor de correo (127.0.0.1)
No se usar SASL ni TLS.
La directiva scope subtree indica que la bsqueda de usuarios se realizar a partir la base
dentro de todos los contenedores y sub-contenedores.
Las bsquedas son annimas, no se requerir la autenticacin con el servidor LDAP
(auth_bind)
La directiva base indica la base de bsqueda para los usuarios, en este caso ser
dc=abc,dc=com.
Como muchos de los usuarios que hemos creado son instancias de la clase posixAccount
ser necesario borrar los dems atributos de respuesta para dovecot (user_attrs). Ms
adelante usaremos el atributa quota.
user_filter y pass_filter son las directivas que permiten filtrar las bsquedas de usuarios y
passwords, respectivamente. En otras palabras, los usuarios para DOVECOT sern aquellas
entradas del directorio que sean instancias de la clase mailAccount, que el correo est
habilitado (mailenable=OK) y cuyo uid sea la parte de username del correo electrnico (%n).
pass_attrs especifica cules sern las credenciales para autenticarse en el servidor
POP/IMAP. En este caso se usar el atributo uid como el login y el atributo userPassword
como contrasea.


Por ltimo reiniciamos el servicio para aplicar los cambios:

# service dovecot restart


3.3 Prueba del servidor POP desde la lnea de comandos

Para realizar esta prueba ser necesario instalar el cliente telnet.

# yum install telnet

Hacemos un telnet al puerto 110 (POP3). Esto abre una conexin con DOVECOT a travs del puerto
110:

# telnet 127.0.0.1 110
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
+OK Dovecot ready.
user mortiz
+OK
pass BBBbbb111
+OK Logged in.

Como puede verse, el login fue exitoso. Ahora, si queremos revisar los correos podemos usar los
comandos del protocolo. Como podemos ver solo se tiene un mensaje sin leer (#1) de 528 bytes. Se
usa retr para leer el correo nmero 1.

+OK Dovecot ready.
user mortiz
+OK
pass BBBbbb111
+OK Logged in.
list
+OK 1 messages:
1 528
retr 1
+OK 528 octets
Return-Path: <root@abc.com>
X-Original-To: mortiz@abc.com
Delivered-To: mortiz@abc.com
Received: by ldap.abc.com (Postfix, from userid 0)
id EA95664AA4; Mon, 19 Mar 2012 18:54:53 -0500 (COT)
Date: Mon, 19 Mar 2012 18:54:53 -0500
To: mortiz@abc.com
Subject: mensaje del root para mortiz
User-Agent: Heirloom mailx 12.4 7/29/08
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-Id: <20120319235453.EA95664AA4@ldap.abc.com>
From: root@abc.com (root)

Hola Mortiz
.


Para borrar el primer correo use el comando:

dele 1
+OK Marked to be deleted.



3.4 Prueba del servidor IMAP desde la lnea de comandos

Hacemos un telnet al puerto 143 (IMAP). Esto abre una conexin con DOVECOT a travs del puerto
143:

# telnet 127.0.0.1 143
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE
STARTTLS AUTH=PLAIN] Dovecot ready.

Ahora ejecutamos los comandos del protocolo IMAP que se muestran a continuacin:

. login mortiz@abc.com BBBbbb111
. OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT
SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT CHILDREN
NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT
SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS] Logged in
. list "" "*"
* LIST (\HasNoChildren) "." "INBOX"
. OK List completed.
. status INBOX (messages)
* STATUS "INBOX" (MESSAGES 2)
. OK Status completed.
. select INBOX
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags
permitted.
* 2 EXISTS
* 2 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1332209614] UIDs valid
* OK [UIDNEXT 4] Predicted next UID
* OK [HIGHESTMODSEQ 1] Highest
. OK [READ-WRITE] Select completed.
. fetch 1 (body[header.fields (subject)])
* 1 FETCH (FLAGS (\Seen \Recent) BODY[HEADER.FIELDS (SUBJECT)] {43}
Subject: mensaje 1 del root para mortiz

)
. OK Fetch completed.
. FETCH 3 rfc822.text
. BAD Error in IMAP command FETCH: Invalid messageset
. fetch 1 rfc822.text
* 1 FETCH (RFC822.TEXT {13}
Hola Mortiz
)
. OK Fetch completed.


. logout

NOTA: Existen muchos ms comandos pero es cuestin del lector indagar sobre ellos, ya que uno de
los propsitos de este manual es usar herramientas grficas.





4. CONFIGURACIN DEL CLIENTE DE CORREO GRFICO (MUA)


Ahora que tenemos instalados tres de los agentes de correo electrnico: Postfix (MTA y MDA) y
Dovecot (MAA: Servidor POP e IMAP), podemos instalar el cliente de correo (MUA). El MUA que se
instalar ser Thunderbird y posteriormente se usar Outlook que viene integrado en la suite
ofimtica Microsoft Office.

Desde la pgina oficial de Thunderbird se descarg el paquete y luego se instal.

Configuracin de Thunderbird:




Como no tenemos servidor DNS configurado, es recomendable realizar la configuracin manual:



El protocolo Entrante usado ser IMAP, que hasta el momento no usar SSL y la autenticacin se
realizar en texto plano. La direccin IP de mi servidor IMAP es 192.168.40.103

El protocolo Saliente ser SMTP, que hasta el momento no usar SSL y no se usar autenticacin.

Por ltimo se crea la cuenta:





Ya con esto podemos revisar el buzn del usuario mortiz.

RECUERDE:

Cuando quieres escribir un mensaje, se usa el servidor SMTP para enviarlo.
Cuando quiere revisar su correo electrnico (Bandeja de entrada y dems directorios) est
usando el protocolo IMAP.





5. CONFIGURACIN DEL SERVIDOR DNS


NOTA: Aunque este es un paso que debe realizarse antes de configurar el cliente, he decidido
instalarlo despus solo para que el lector aprenda a configurar el cliente de correo en caso de no
tener servidor un DNS.


5.1 Instalacin del servidor DNS

Instalar el servidor DNS BIND9 en modo chroot:

# yum install bind-chroot


5.2 Configuracin del servidor DNS

Se edita el archivo /etc/named.conf como se muestra a continuacin:

# nano /etc/named.conf

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
listen-on port 53 { 192.168.40.103; };
directory "/var/named";
};

zone "." IN {
type hint;
file "named.ca";
};

zone "abc.com"{
type master;
file "abc.db";
};

zone "40.168.192.in-addr.arpa"{
type master;
file "inversa.db";
};

include "/etc/named.rfc1912.zones";

Todos los archivos (named.ca, abc.db, inversa.db y los de la zona localhost) deben estar en la ruta
/var/named/chroot/var/named.

# cd /var/named/
# cp named.ca named.localhost named.loopback named.empty /var/named/chroot/var/named/
# chown -R named:named *



Crear los archivos abc.db e inversa.db en el directorio /var/named/chroot/var/named/

# cd /var/named/chroot/var/named/
# nano abc.db

$TTL 1D
@ IN SOA dns.abc.com hostmaster.abc.com (
1 ; Serial
10800 ; Refresh despus de tres horas
3600 ; Reintentar despus de una hora
604800 ; Expirar despus de una semana
86400 ) ; TTL(Time to Live) mnimo de un da

@ IN NS dns.abc.com.
@ IN MX 10 smtp.abc.com.
@ IN A 192.168.40.103
dns IN A 192.168.40.103
smtp IN A 192.168.40.103
atmail IN CNAME dns
mail IN CNAME dns
ldap IN CNAME dns
imap IN CNAME dns

NOTA: Los registros tipo A, atmail y mail, sern usados para los Virtual Hosts que se crearn en el
captulo 7, para el acceso a los Webmails.

# nano inversa.db

$TTL 1D
@ IN SOA dns.abc.com hostmaster.abc.com (
1 ; Serial
10800 ; Refresh despus de tres horas
3600 ; Reintentar despus de una hora
604800 ; Expirar despus de una semana
86400 ) ; TTL(Time to Live) mnimo de un da

@ IN NS dns.abc.com.
@ IN MX 10 smtp.abc.com.
103 IN PTR dns.abc.com.
103 IN PTR smtp.abc.com.
103 IN PTR atmail.abc.com.
103 IN PTR mail.abc.com.

Se reinicia el servicio

# service named restart
# chkconfig named on


5.3 Prueba del servidor DNS

Se configure la mquina para que use nuestro servidor DNS

# nano /etc/resolv.conf

domain abc.com


search abc.com
nameserver 192.168.40.103

Por ltimo realizamos una prueba con el cliente host:

# host abc.com
abc.com has address 192.168.40.103
abc.com mail is handled by 10 smtp.abc.com.

# host smtp.abc.com
abc.com has address 192.168.40.103

# host smtp.abc.com
abc.com has address 192.168.40.103


5.4 Crear una cuenta en thuderbird despus de instalar el servidor DNS

La mquina en la que est instalado Thunderbird debe tener como DNS la direccin IP del servidor
DNS que acabamos de instalar.


Creacin de la cuenta:








El protocolo Entrante usado ser IMAP, que hasta el momento no usar SSL y la autenticacin se
realizar en texto plano. La direccin IP de mi servidor IMAP es 192.168.40.103

El protocolo Saliente ser SMTP, que hasta el momento no usar SSL y no se usar autenticacin.

Ya con esto podemos revisar el buzn del usuario mortiz.



Ahora intentemos enviar un correo electrnico de un usuario a otro:








Cuando intento enviar el correo me sale un error:



He querido poner este error en evidencia porque es importante saber identificar los errores en el
servidor de correo. Por defecto los registros (logs) de estos errores se guardan en el archivo
/var/log/maillog

# tail /var/log/maillog

Mar 20 15:49:11 srv-centos postfix/smtpd[15252]: fatal: bad net/mask pattern: "192.168.40.0.0/28"
Mar 20 15:49:12 srv-centos postfix/master[5275]: warning: process /usr/libexec/postfix/smtpd pid
15238 exit status 1
Mar 20 15:49:12 srv-centos postfix/master[5275]: warning: /usr/libexec/postfix/smtpd: bad command
startup -- throttling
Mar 20 15:49:12 srv-centos postfix/master[5275]: warning: process /usr/libexec/postfix/smtpd pid
15247 exit status 1
Mar 20 15:49:12 srv-centos postfix/master[5275]: warning: process /usr/libexec/postfix/smtpd pid
15250 exit status 1
Mar 20 15:49:12 srv-centos postfix/master[5275]: warning: process /usr/libexec/postfix/smtpd pid
15252 exit status 1
Mar 20 15:57:51 srv-centos postfix/smtpd[15291]: connect from unknown[192.168.40.101]
Mar 20 15:57:51 srv-centos postfix/smtpd[15291]: fatal: bad net/mask pattern: "192.168.40.0.0/28"
Mar 20 15:57:52 srv-centos postfix/master[5275]: warning: process /usr/libexec/postfix/smtpd pid
15291 exit status 1
Mar 20 15:57:52 srv-centos postfix/master[5275]: warning: /usr/libexec/postfix/smtpd: bad command
startup -- throttling

La lnea indica que comet un error al postfix (mynetworks). En primer lugar no es una direccin IP
vlida (5 octetos) y en segundo lugar el prefijo de red debera ser 24 para la configuracin de mi red
local.



# nano /etc/postfix/main.cf


mynetworks = 192.168.40.0/24, 127.0.0.0/8


Reiniciamos el servicio:

# service postfix restart

Despus de esto s permite enviar el correo:








6. CONFIGURACIN DE LISTAS DE DISTRIBUCIN DE CORREO ELECTRNICO


Las listas de distribucin permiten enviar correos a grupos de usuarios con caractersticas en comn,
por ejemplo: sistemas@abc.com. Cuando un correo electrnico es enviado a esta direccin, el
servidor SMTP lo reenva a un grupo de usuarios.

La configuracin de listas de correo es una tarea muy sencilla y solo necesitamos crear un nuevo
objeto del LDAP y habilitar los alias de correo en Postfix.


6.1 Creacin de objetos mailAlias en LDAP

En primer lugar se crear una nueva unidad organizativa llamada listas de correo. Luego dentro de
esta unidad organizativa se crear una entrada que sea instancia de las clases mailAlias y
mailAccount









El RDN ser el atributo mail=sistemas@abc.com



Luego hacemos uso del atributo maildrop por cada cuenta de correo que queremos que pertenezca
a la lista de distribucin. En la siguiente imagen se muestra que existen solo dos cuentas de correo
mortiz@abc.com y elvis@abc.com





6.2 Configuracin de listas de correo en postfix

Agregar la siguiente lnea al final del archivo main.cf

# nano /etc/postfix/main.cf


virtual_alias_maps = ldap:/etc/postfix/maillist.cf

Luego crearemos el archivo maillist.cf

# nano /etc/postfix/maillist.cf

server_host = 127.0.0.1
search_base = dc=abc, dc=com
query_filter = (&(objectClass=mailAlias)(mail=%s))
result_attribute = maildrop

NOTA: El atributo resultante de la bsqueda ser maildrop, es decir, todas las direcciones de correo
pertenecientes a la lista de correo.

Una forma rpida de probar es a travs del comando postmap:

# postmap -q sistemas@abc.com ldap:/etc/postfix/maillist.cf
mortiz@abc.com,elvis@abc.com


6.2 Prueba de listas de correo desde un cliente (MUA) grfico







Bandeja de entrada de Elvis:




Bandeja de entrada de Mortiz:





7. CONFIGURACIN DE UN WEBMAIL


Un Webmail es un cliente de correo electrnico, que provee una interfaz web para el acceso al correo
electrnico.

Existen dos Webmails open source muy populares: Roundcube y AtMail Open (sin embargo existen
ms). Para este tutorial instalaremos ambos.


7.1 Instalacin y configuracin del servidor Web Apache

# yum install y httpd

Se realizar la configuracin de Virtual Hosting basado en nombres en el servidor apache, ya que
existir ms de un sitio Web (Con diferentes nombres de dominio) pero una sola direccin IP.

Como repaso, recuerde que para crear un host virtual en distribuciones Red Hat solo es necesario
crear un archivo con extensin .conf en el directorio /etc/httpd/conf.d

Creamos el host virtual para la aplicacin AtMail Open:

# nano /etc/httpd/conf.d/atmail.conf

NameVirtualHost 192.168.40.103:80

<VirtualHost 192.168.40.103:80>
ServerName atmail.abc.com
DocumentRoot /var/www/html/atmailopen
<Directory /var/www/html/atmailopen>
AllowOverride none
Order allow,deny
allow from all
</Directory>
</VirtualHost>

NOTA DE REPASO: La directiva NameVirtuaHost es usada cada vez que exista ms de un sitio
virtual por direccin IP, pero solo debe usarse una vez. Para este ejemplo de configuracin la
direccin IP que alojar ms dos sitios ser la interfaz con direccin IP 192.168.40.103, que es una
de las direcciones IP del servidor. El otro Host Virtual estar reservado para el Webmail Roundcube.

Creamos el host virtual para la aplicacin RoundCube:

# nano /etc/httpd/conf.d/roundcube.conf

<VirtualHost 192.168.40.103:80>
ServerName mail.abc.com
DocumentRoot /var/www/html/roundcube
<Directory /var/www/html/roundcube >
AllowOverride none
Order allow,deny
allow from all
</Directory>


</VirtualHost>


Se inicia el servicio y se configura para que inicie automticamente luego de que el sistema operativo
inicie:

# service httpd start
# chkconfig httpd on

NOTA: Ignoramos los warnings, ya que ms adelante crearemos los DocumentRoots


7.2 Instalacin y configuracin de AtMail Open

Se descargaron los paquetes estndar para la instalacin de AtMail Open, luego de un bsqueda en
google. Para la fecha de creacin de este manual la URL de descarga es:
http://atmail.org/download.php

AtMail Open est escrito en PHP y se instala como cualquier aplicacin Web que se ha instalado
previamente: Se necesita un servidor Web con soporte para PHP.

Lo primero ser copiar el archivo comprimido en el DocumentRoot del servidor Web y descomprimir
el paquete.

# cp /root/Descargas/atmailopen.tgz /var/www/html
# cd /var/www/html
# tar xvzf atmailopen.tgz
# ls
atmailopen/ atmailopen.tgz

Antes de instalarlo leemos las instrucciones de instalacin y los requerimientos previos

# more /var/www/html/atmailopen/README
...
Requirements
------------

* PHP 5.X recommended ( PHP 4.X supported )
* MySQL database server
* Access to the php.ini to set runtime configuration
* IMAP4 server to access accounts

Vamos entonces a instalar lo necesario, luego reiniciamos el servidor Web e iniciamos el servidor
MySQL:

# yum install php php-mysql mysql mysql-server
# service httpd restart
# service mysqld start

Nos hace falta algo ms: Configurar el servidor MySQL para que inicie automticamente y correr el
script de configuracin inicial de MySQL:

# chkconfig mysqld on


# mysql_secure_installation
Enter current password for root (enter for none): ENTER
Set root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Se crear una base de datos (atmail) y un usuario (atmailuser) que sea el propietario de dicha base
de datos:

# mysql u root p
Enter password:
mysql> CREATE DATABASE atmail;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER atmailuser@'localhost' IDENTIFIED BY 'BBBbbb111';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL ON atmail.* TO atmailuser@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql> quit

El ltimo paso antes de comenzar la instalacin es configurar al usuario apache como propietario del
directorio /var/www/html/atmailopen (Como lo dice el archivo README)

# chown -R apache /var/www/html/atmailopen

Ahora podemos comenzar con la instalacin. Para esto abrimos el navegador y digitamos la URL con
el NameServer que hayamos configurado en el VirtualHost para atmailOpen (atmail.abc.com)




Falta instalar las extensiones mbstring y ldap:

# yum install php-mbstring php-ldap

Y editamos el archivo php.ini:

# nano /etc/php.ini

; Maximum allowed size for uploaded files.
; http://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize
upload_max_filesize = 16M

; Maximum size of POST data that PHP will accept.
; http://www.php.net/manual/en/ini.core.php#ini.post-max-size
post_max_size = 16M

Cada que se haga un cambio en la configuracin de PHP debe reiniciarse el apache:

# service httpd restart

Nuevamente probamos la instalacin de AtMail y aceptamos los trminos de licencia, hasta que
lleguemos a este punto:









Ya lo dems es cuestin de seguir el proceso de instalacin.






7.3 Instalacin y configuracin de Roundcube

Se descargaron los paquetes estndar para la instalacin de Roundcube, luego de un bsqueda en
google. Para la fecha de creacin de este manual la URL de descarga es:
http://sourceforge.net/projects/roundcubemail/files/roundcubemail/0.7.2/roundcubemail-0.7.2.tar.gz/download

Lo primero ser copiar el archivo comprimido en el DocumentRoot del servidor Web y descomprimir
el paquete.

# cp /root/Descargas/roundcubemail-0.7.2.tar.gz /var/www/html
# cd /var/www/html
# tar xvzf roundcubemail-0.7.2.tar.gz
# mv roundcubemail-0.7.2 roundcube
# ls
atmailopen atmailopen.tgz roundcube roundcubemail-0.7.2.tar.gz

Se crear una base de datos (roundcube) y un usuario (roundcubeuser) que sea el propietario de
dicha base de datos:

# mysql -u root -p
Enter password:
mysql> CREATE DATABASE roundcube;
Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER roundcubeuser@'localhost' IDENTIFIED BY 'BBBbbb111';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL ON roundcube.* TO roundcubeuser@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql> quit

El ltimo paso antes de comenzar la instalacin es configurar al usuario apache como propietario del
directorio /var/www/html/roundcube (Como lo dice el archivo README)

# chown -R apache /var/www/html/roundcube

Ahora podemos comenzar con la instalacin. Para esto abrimos el navegador y digitamos la URL
http://mail.abc.com/installer y luego se instalan las extensiones de PHP necesarias y se edita el
archivo PHP.ini

Falta instalar la extensin DOM:

# yum install -y php-xml php-mcrypt php-intl

Y editamos el archivo php.ini:

# nano /etc/php.ini

[Date]
; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
date.timezone = America/Bogota



Debe reiniciarse el apache:

# service httpd restart

Existen varias opciones de configuracin que el lector debe estar en capacidad de comprender. Aqu
muestro solo las opciones ms relevantes:











Luego se nos pedir que copiemos o descarguemos los archivos main.inc.php y db.inc.php y los
peguemos en el directorio /var/www/html/roundcube/config



# cd /root/Descargas/
# cp main.inc.php db.inc.php /var/www/html/roundcube/config

Luego inicializamos la base de datos:




Por el momento no voy a realizar pruebas de conexin con los servidores SMTP e IMAP, entonces
procedemos a finalizar la instalacin movisndo el directorio installer:

# mv /var/www/html/roundcube/installer/ /root

Finalmente accedemos con la URL http://mail.abc.com/








8. CONFIGURACIN DE CUOTAS PARA LOS BUZONES DE LOS USUARIOS


La configuracin de cuotas permite limitar la capacidad de almacenamiento del buzn de uno o
varios usuarios de correo electrnico.

8.1 Configuracin de cuotas en Dovecot

Hay dos aspectos que deben tenerse en cuenta:

Dovecot es el encargado de advertir que la cuota se ha excedido
Postfix debera saber que no debe entregar los correos en caso de que se exceda la cuota.
Imaginemos el siguiente escenario: El usuario elvis@abc.com ya excedi el lmite de
almacenamiento y dovecot lo advierte y por consiguiente no dejara mover correos a la
papelera o a la carpeta de enviados. Sin embargo si el usuario mortiz@abc.com enva un
correo a elvis@abc.com, Postfix entregara el correo al buzn de elvis a travs de su MDA
porque no tiene idea de que se excedi la cuota.

En pocas palabras debe haber una integracin entre Postfix y Dovecot.

Cul es la solucin?

Respuesta: Configurar DOVECOT como el MDA (Agente de entrega de correo) de Postfix.

El MDA de dovecot es llamado LDA (Local Delivery Agent o Agente de entrega local). Buscando un
poco en Internet, en la documentacin de Dovecot 2.0 (wiki2) encontr la solucin:

8.2 Configuracin de dovecot como LDA de Postfix

Editar el archivo /etc/postfix/master.cf pegando lo siguiente al final del archivo:

# nano /etc/postfix/master.cf

...
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/dovecot-lda -f ${sender} -d ${recipient}

Agregar las siguientes lneas al archivo de configuracin de Postfix:

# nano /etc/postfix/main.cf

...
dovecot_destination_recipient_limit = 1
virtual_transport = dovecot


8.3 Configuracin de Dovecot

...
protocol lda {
..
# UNIX socket path to master authentication server to find users.
# auth_socket_path = /var/run/dovecot/auth-master
}


auth default {
..
socket listen {
# Note that we're setting a master socket. SMTP AUTH for Postfix and Exim uses client sockets.
master {
# Typically under base_dir/, if not the directory must be created.
path = /var/run/dovecot/auth-master

# Auth master socket can be used to look up userdb information for
# given usernames. This probably isn't very sensitive information
# for most systems, but still try to restrict the socket access if possible.
mode = 0600
user = vmail # User running deliver
#group = mail # Or alternatively mode 0660 + deliver user in this group
}
}
..
}





Elaborada por:
Luis Felipe Londoo Muoz
Fecha
18 03 2011
Ajustada por:
Luis Felipe Londoo Muoz
Fecha
21 03 2012

Você também pode gostar