Académique Documents
Professionnel Documents
Culture Documents
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
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 ) )
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
NOTA: El comando slaptest cre el siguiente rbol a partir del directorio conf que se cre previamente:
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
# 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.
Finalmente se agregan los atributos mailenable y mailbox, como se mostr en pasos anteriores
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
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
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
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/
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.
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
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/10mail.conf
# nano /etc/dovecot/conf.d/10-mail.conf
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.
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 .
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.
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.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 # chown -R named:named * /var/named/chroot/var/named/
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 @ @ 103 103 103 103 IN IN IN IN IN IN NS MX 10 PTR PTR PTR PTR dns.abc.com. smtp.abc.com. dns.abc.com. smtp.abc.com. atmail.abc.com. 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
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.
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 Mar 20 15:49:12 srv-centos 15238 exit status 1 Mar 20 15:49:12 srv-centos startup -- throttling Mar 20 15:49:12 srv-centos 15247 exit status 1 Mar 20 15:49:12 srv-centos 15250 exit status 1 Mar 20 15:49:12 srv-centos 15252 exit status 1 Mar 20 15:57:51 srv-centos Mar 20 15:57:51 srv-centos Mar 20 15:57:52 srv-centos 15291 exit status 1 Mar 20 15:57:52 srv-centos startup -- throttling postfix/smtpd[15252]: fatal: bad net/mask pattern: "192.168.40.0.0/28" postfix/master[5275]: warning: process /usr/libexec/postfix/smtpd pid postfix/master[5275]: warning: /usr/libexec/postfix/smtpd: bad command postfix/master[5275]: warning: process /usr/libexec/postfix/smtpd pid postfix/master[5275]: warning: process /usr/libexec/postfix/smtpd pid postfix/master[5275]: warning: process /usr/libexec/postfix/smtpd pid postfix/smtpd[15291]: connect from unknown[192.168.40.101] postfix/smtpd[15291]: fatal: bad net/mask pattern: "192.168.40.0.0/28" postfix/master[5275]: warning: process /usr/libexec/postfix/smtpd pid postfix/master[5275]: warning: /usr/libexec/postfix/smtpd: bad command
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.
Reiniciamos el servicio:
# service postfix restart
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
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
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
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
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
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)
Nuevamente probamos la instalacin de AtMail y aceptamos los trminos de licencia, hasta que lleguemos a este punto:
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
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
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
Elaborada por: Luis Felipe Londoo Muoz Ajustada por: Luis Felipe Londoo Muoz
Fecha Fecha
18 21
03 03
2011 2012