Вы находитесь на странице: 1из 42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.

org

SERVIDOR DE CORREO CON OPENSMTPD

Autor: Fernando Quintero Correo electrnico: nando@openbsdcolombia.org Fecha de creacin : 03/10/09 Ultima modificacin: 12/11/09

ndice de contenido
1.Licencia (BSD)..................................................................................................................................1 2. Qe es OpenSMTPD ?...................................................................................................................2 3.Configuracin del servidor de correo................................................................................................2 3.1.Recibiendo correo para un dominio...........................................................................................2 a.Configuracin bsica del sistema operativo OpenBSD.......................................................3 b.Eliminando los rastros de sendmail.....................................................................................4 c.Habilitamos el servidor OpenSMTPD para recibir en MBOX............................................5 d.Habilitamos el servidor OpenSMTPD para recibir en formato MailDir.............................9 3.2.OpenSMTPD usando TLS......................................................................................................11 3.3.OpenSMTPD usando SSL......................................................................................................18 4.Descargando el correo por POP e IMAP.........................................................................................19 5.Habilitando un webmail seguro.......................................................................................................23 5.1.Servidor web seguro (https).....................................................................................................23 5.2.Instalando el servidor MySQL.................................................................................................26 5.3.Soporte PHP/MySQL para Apache.........................................................................................29 5.4.Instalando el webmail (roundcubemail)..................................................................................31 6.Conclusiones....................................................................................................................................40 7.Enlaces recomendados.....................................................................................................................42

1. Licencia (BSD)
Copyright (c) 2009, Fernando Quintero (a.k.a nonroot), All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the OpenBSD Colombia nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR

________________________________________________________________________________
1.Licencia (BSD) 1/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

2. Qe es OpenSMTPD ?
OpenSMTPD es un MTA en proceso de desarrollo, que busca crear un servidor de correo orientado a la seguridad, con muchas funcionalidades y bastante fcil de configurar. Actualmente esta siendo desarrollado en gran parte por jacekm@ y gilles@, siendo este ltimo el frontend del proyecto. Cuando le la noticia de un nuevo servidor de correo pens lo que seguramente estas pensando, para que otro nuevo MTA si ya se tiene postfix, sendmail, qmail, exim, etc?. La respuesta la obtuve despus de hacerle mucho seguimiento a la lista de soporte @misc y de algunas entrevistas a los desarrolladores. Y la conclusin a la que llego es que vale la pena el esfuerzo por crear algo nuevo al estilo BSD ;). Porque?, porque los otros MTA no tienen licencias adecuadas, por eso nunca han entrado en el sistema base de OpenBSD, postfix y qmail son ejemplos de estos, no permiten que el equipo OpenBSD realice sus cambios a voluntad, esto segn la filosofa del proyecto, no es algo que se pueda aceptar. Actualmente OpenBSD trae en su sistema base una modificacin del demonio sendmail, el MTA mas antiguo y posiblemente el que tenga mas funcionalidades, pero tambin el mas complicado de configurar, ya que para usar los famosos milters, es necesario recompilar el software o crear macros m4 que no todo el mundo puede comprender... En conclusin, se quiere crear un nuevo servidor de correo al estilo OpenBSD, Libre, Funcional y Seguro!, entonces le damos la bienvenida a OpenSMTPD !!!. En este documento voy a mostrar como configurar de forma prctica un servidor de correo con OpenSMTPD que ya viene en el sistema base (no habilitado) en la actual release 4.6. Como siempre, cualquier duda o comentario lo pueden enviar a la lista de soporte de OpenBSD Colombia.

3. Configuracin del servidor de correo


Vamos a comprobar lo sencillo que es configurar un servidor de correo con este nuevo software y vamos a documentar el proceso para que los usuarios de una LAN o desde Internet se puedan conectar al mismo.

3.1. Recibiendo correo para un dominio


El funcionamiento mas simple de un servidor de correo es que pueda recibir correo para un dominio especifico, vamos a mostrar la configuracin para un dominio llamado ejemplo.com. Si quieres leer sobre como crear dominios virtuales, la nica gua hasta el momento se encuentra aqu: https://calomel.org/OpenSMTPD.html Esta gua esta creada para la versin 4.5 entonces los primeros pasos no son necesarios, como lo dije antes, en la release 4.6 OpenSMTPD ya viene instalado en el sistema base. ________________________________________________________________________________
3.Configuracin del servidor de correo 2/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

Para nuestras configuraciones partiremos de un sistema base 4.6 recin instalado. a. Configuracin bsica del sistema operativo OpenBSD Lo primero es asegurarnos que el sistema este configurado de forma mnima, que tenga un nombre de host, un nombre de dominio, una direccin IP y que este registrado en un DNS local o externo. Configuremos el nombre de la estacin: # uname -a OpenBSD correo.localdomain 4.6 GENERIC#58 i386 # vi /etc/myname # cat /etc/myname correo.ejemplo.com # sh /etc/rc # hostname correo.ejemplo.com Configuremos la direccin IP de la interfaz, en mi caso se llama vic0: # cat /etc/hostname.vic0 inet 192.168.0.200 255.255.255.0 192.168.0.255 # sh /etc/netstart Configuremos el gateway por defecto: # cat /etc/mygate 192.168.0.100 Configuremos el servidor DNS de la red (en mi caso 192.168.0.3): # vi /etc/resolv.conf # cat /etc/resolv.conf domain ejemplo.com search ejemplo.com nameserver 192.168.0.3

Verificamos que se resuelvan los hosts para el dns y el servidor de correo: ________________________________________________________________________________
3.Configuracin del servidor de correo 3/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

# ping dns.ejemplo.com PING dns.ejemplo.com (192.168.0.3): 56 data bytes 64 bytes from 192.168.0.3: icmp_seq=0 ttl=255 time=0.361 ms 64 bytes from 192.168.0.3: icmp_seq=1 ttl=255 time=0.307 ms --- dns.ejemplo.com ping statistics --2 packets transmitted, 2 packets received, 0.0% packet loss round-trip min/avg/max/std-dev = 0.307/0.334/0.361/0.027 ms

# ping correo.ejemplo.com PING correo.ejemplo.com (192.168.0.200): 56 data bytes 64 bytes from 192.168.0.200: icmp_seq=0 ttl=255 time=0.128 ms 64 bytes from 192.168.0.200: icmp_seq=1 ttl=255 time=0.114 ms --- correo.ejemplo.com ping statistics --2 packets transmitted, 2 packets received, 0.0% packet loss round-trip min/avg/max/std-dev = 0.114/0.121/0.128/0.007 ms Recuerden que el DNS debe tener un registro MX apuntando a nuestro servidor de correo (192.168.0.200): @ IN MX 10 correo.ejemplo.com. IN A 192.168.0.200

correo.ejemplo.com.

b. Eliminando los rastros de sendmail Para que pueda entrar en funcionamiento nuestro servidor de correos, debemos eliminar la configuracin de sendmail que viene por defecto en el sistema: Matamos el demonio: # ps aux | grep -i sendmail root 23640 0.0 0.7 1096 1452 ?? Ss accepting connections (sendmail) root 28380 0.0 0.4 332 744 p0 S+ # pkill sendmail Lo deshabilitamos del arranque: ________________________________________________________________________________
3.Configuracin del servidor de correo 4/42

7:19AM 8:11AM

0:00.25 sendmail: 0:00.07 grep -i sendmail

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

En el archivo /etc/rc.conf, reemplazamos la lnea: sendmail_flags="-L sm-mta -C/etc/mail/localhost.cf -bd -q30m" por sendmail_flags=NO Evitamos los chequeos automticos con el crontab: Ejecutamos crontab -e y comentamos la lnea: #*/30 * * * * /usr/sbin/sendmail -L sm-msp-queue -Ac -q

Cambiamos la informacin de las utilidades: # mv /etc/mailer.conf /etc/mailer.copia y ponemos lo siguiente: # cat /etc/mailer.conf sendmail send-mail mailq makemap newaliases /usr/sbin/smtpctl /usr/sbin/smtpctl /usr/sbin/smtpctl /usr/libexec/smtpd/makemap /usr/libexec/smtpd/makemap

Para reconstruir los mapas usamos: # makemap -t aliases -o /etc/mail/aliases.db /etc/mail/aliases # newaliases /etc/mail/aliases: 50 aliases

c. Habilitamos el servidor OpenSMTPD para recibir en MBOX Antes de poder recibir y enviar correos, debemos tener usuarios vlidos en el sistema, para el ejemplo vamos a crear dos usuarios: nando y astrid, usando el comando adduser.

Una vez creados los usuarios podemos hacer los cambios en el archivo de configuracin del ________________________________________________________________________________
3.Configuracin del servidor de correo 5/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

servidor de correo: /etc/mail/smtpd.conf.

# See smtpd.conf(5) for more information. listen on vic0 map "aliases" { source db "/etc/mail/aliases.db" } accept for local deliver to mbox accept for domain "ejemplo.com" deliver to mbox accept for all relay

Como pueden ver, lo nico que he hecho es modificar la interfaz de red donde escuchar el servidor de correo (en mi caso vic0) y agregamos una regla para aceptar correos que vayan para ejemplo.com. La sintaxis de OpenSMTPD es muy simple. Para hacer pruebas configuramos una cuenta en un software cliente de correo (MUA), en mi caso tengo thunderbird , un cliente de correo multiplataforma con bastantes funcionalidades. Le configuramos una cuenta para el usuario nando y luego intentamos enviar un correo.

________________________________________________________________________________
3.Configuracin del servidor de correo 6/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

Fig 1. Configuracin bsica de una cuenta de correo usando thunderbird. Si no quieres tener problemas mas adelante con los certificados digitales en el campo del servidor usa el nombre del servidor y no su IP, por ejemplo: correo.ejemplo.com. El problema es que cuando intentamos enviar un correo obtenemos el siguiente mensaje:

Fig 2. Error al enviar el primer mensaje de prueba.

________________________________________________________________________________
3.Configuracin del servidor de correo 7/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

Esto ocurre porque en el servidor de correos (OpenSMTPD) no hemos permitido el envo de correos desde otro lugar diferente a la maquina local, para esto nuestro MTA incorpora filtros al estilo packet filter, la lnea que debemos cambiar en la configuracin es: accept for domain "ejemplo.com" deliver to mbox por accept from "192.168.0.0/24" for domain "ejemplo.com" deliver to mbox Esta lnea traduce algo como: Permita la recepcin de correos provenientes desde la red 192.168.0.0/24 con destino al dominio ejemplo.com, cada uno de estos correos deben ser almacenado usando el formato MBOX. Recuerden que MBOX es uno de los dos formatos de almacenamiento de correos mas populares, su diferencia con MailDir radica en que todos los correos pertenecientes a un mismo usuario se almacenan en un mismo archivo, lo que puede ocasionar bloqueos cuando las aplicaciones intentan entrar a su contenido, por esto en la actualidad se recomienda mejor usar el formato MailDir. Si queremos permitir el envo de correos desde cualquier lugar, debemos cambiar el from 192.168.0.0/24 por from all Antes de enviar correos es importante recordar que el servidor de correo no esta funcionando, para habilitarlo de forma temporal ejecutamos en una consola del sistema el comando: #smtpd -dv Si queremos que el servicio funcione de forma permanente, podemos agregar smtpd_flags=, en el archivo /etc/rc.conf.local, de esta forma cada vez que inicie el servidor OpenBSD tendremos OpenSMTPD habilitado. Para verificar que los correos llegan, podemos usar el comando mail, con la cuenta del usuario receptor: $ whoami nando $ pwd /home/nando ________________________________________________________________________________
3.Configuracin del servidor de correo 8/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

$ mail Mail version 8.1.2 01/15/2001. Type ? for help. "/var/mail/nando": 2 messages 2 new [Read only] >N 1 astrid@correo.eje Sun Nov 8 09:06 15/536 aaa N 2 nando@ejemplo.com Sun Nov 8 09:08 17/620 Correo de prueba & O podemos verificarlo manualmente buscando el archivo MBOX almacenado en el sistema: # cd /var/mail # pwd /var/mail # ls -la total 28 drwxr-xr-x 2 root drwxr-xr-x 23 root -rw-r--r-- 1 root -rw------- 1 root # tail nando User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) MIME-Version: 1.0 To: nando@ejemplo.com Subject: Correo de prueba Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hola como estamos? # wheel wheel 512 Nov 8 09:10 . 512 Jul 1 18:54 ..

-rw------- 1 astrid astrid 1638 Nov 8 09:07 astrid wheel 1156 Nov 8 09:08 nando wheel 4532 Nov 8 09:07 root

d. Habilitamos el servidor OpenSMTPD para recibir en formato MailDir Como ya dijimos en la actualidad se recomienda usar el formato MailDir, as que vamos a cambiar la configuracin que tenemos para que soporte este formato, lo nico que hacemos es modificar la ________________________________________________________________________________
3.Configuracin del servidor de correo 9/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

regla delivery, escribiendo lo siguiente:


accept from 192.168.0.0/24 for domain "ejemplo.com" deliver to maildir "/home/%u/Maildir"

El archivo /etc/mail/smtpd.conf, queda as: listen on vic0 map "aliases" { source db "/etc/mail/aliases.db" } accept for local deliver to mbox
accept from 192.168.0.0/24 for domain "ejemplo.com" deliver to maildir "/home/%u/Maildir"

accept for all relay El %u se reemplazar en tiempo real por el nombre del usuario que recibe el correo electrnico, tambin se puede usar el %d para determinar el dominio al que llegan los correos. Para verificar que el correo ha llegado: # pwd /home/nando # ls -la Maildir/ total 20 drwx------ 5 nando nando 512 Nov 8 10:11 . drwxr-xr-x 4 nando nando 512 Nov 8 10:11 .. drwx------ 2 nando nando 512 Nov 8 10:11 cur drwx------ 2 nando nando 512 Nov 8 10:11 new drwx------ 2 nando nando 512 Nov 8 10:11 tmp # cat Maildir/new/1257693105.YXQw59jyRwUaefw2.3512425487 Received: from imac-de-fernando-quintero.local (<unknown> [192.168.0.4]) by correo.ejemplo.com (OpenSMTPD) with ESMTP id 1257693105.YXQw59jyRwUaefw2 for <nando@ejemplo.com>; Sun, 8 Nov 2009 10:11:45 -0500 (COT) Message-ID: <4AF72762.90609@ejemplo.com>

________________________________________________________________________________
3.Configuracin del servidor de correo 10/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

Fig 3. OpenSMTPD en modo debug recibiendo correos.

3.2. OpenSMTPD usando TLS


Cuando se envan correos electrnicos sin usar medios seguros estamos propensos a que alguien pueda interceptarlos, por ejemplo. Si tenemos un sniffer capturando el trfico en el momento en que se enva el correo anterior podemos capturar lo siguiente:

________________________________________________________________________________
3.Configuracin del servidor de correo 11/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

Fig 4. Captura de un correo no cifrado. Qu podemos hacer entonces?, la solucin es cifrar el canal, usando un protocolo que pueda asegurar nuestras comunicaciones. Actualmente tenemos SSL y TLS, en sus versiones 3.0 y 1.0, respectivamente. Cul es la diferencia de usar uno u otro? , bsicamente trabaja de la misma forma solo que si usamos TLS la comunicacin segura ser opcional y la debe solicitar el cliente, si usamos SSL la comunicacin siempre se hace cifrada, pero debemos usar un puerto alterno para comunicarnos. Por ejemplo para cifrar el trfico de correo en el puerto 25, debemos usar otro puerto reservado para SMTPS, el 465.

________________________________________________________________________________
3.Configuracin del servidor de correo 12/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

Lo primero que debemos hacer es verificar que nuestro MTA soporta cifrado con certificados digitales, una vez comprobado esto (preguntandole al desarrollador, leyendo manuales, leyendo la lista @misc) podemos crear los certificados y ubicarlos en las rutas correctas. Vamos a crear el certificado de nuestra CA, de esta forma todas las comunicaciones sern validadas por este certificado raz: #openssl req -days 3650 -nodes -new -x509 -keyout /etc/ssl/private/CA.key -out /etc/ssl/CA.crt Con este comando generamos el certificado digital de la CA (CA.crt) y su llave privada (CA.key)

Fig 5. Creando una CA local, para validar certificados digitales. Lo siguiente es crear el certificado para el servidor de correo, lo primero es generar una peticin de certificado, que generalmente estar en formato PKCS#10 y tendr la extensin .csr. El siguiente comando genera una llave privada para el servidor de correo (vic0.key) y el archivo de peticin del certificado (que no el certificado digital).
#openssl req -days 3650 -nodes -new -x509 -keyout /etc/ssl/private/vic0.key -out /etc/ssl/vic0.csr

________________________________________________________________________________
3.Configuracin del servidor de correo 13/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

Fig 6. Creando la peticin del certificado para el servidor de correo. Observe que el certificado tiene como nombre el que se usa en la interfaz donde escucha el servidor de correo (vic0), esto es necesario para que OpenSMTPD pueda asociar el certificado digital en el momento de arranque. Si queremos que el certificado del servidor tenga validez, necesitamos firmarlo con la llave privada de la CA, de esta forma cuando el MUA del usuario intente verificar un tercero confiable, este lo resolver sin problemas. En este punto es importante recordar que los certificados se pueden obtener de diferentes formas y puedes pagar por un certificado de una entidad reconocida. Pero para efectos de prueba y solo con nimos demostrativos vamos a trabajar con estos certificados autofirmados.

Fig 7. Generando el certificado digital para el servidor a travs de la CA. Debes verificar que salga Signature ok, de lo contrario el certificado quedar con problemas. # openssl x509 -req -days 3650 -in /etc/ssl/vic0.csr -out /etc/ssl/private/vic0.crt / -CA /etc/ssl/CA.crt -CAkey /etc/ssl/private/CA.key -CAcreateserial Signature ok subject=/C=CO/ST=OpenBSD/L=Medellin/O=IT/OU=IT/CN=correo.ejemplo.com/ emailAddress=nando@ejemplo.com Getting CA Private Key

________________________________________________________________________________
3.Configuracin del servidor de correo 14/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

Una vez tengamos el certificado del servidor de correo creado y firmado por nuestra CA, vamos a ubicar los archivos donde el OpenSMTPD los necesita. # mkdir /etc/mail/certs # cp /etc/ssl/private/vic0.crt /etc/mail/certs/ # cp /etc/ssl/private/vic0.key /etc/mail/certs/ # cp /etc/ssl/CA.crt /etc/mail/certs/CA.crt El nombre del archivo para la CA debe ser: Cacert.pem, debido a que el servidor de correo lo buscar con este nombre, lo que hacemos entonces es renombrarlo:
# mv /etc/mail/certs/CA.crt /etc/mail/certs/CAcert.pem

Son iguales los certificados generados como .crt y los .pem? Si no lo crees, puedes hacer la conversin usando los siguientes comandos: # openssl x509 -in CA.crt -out CA.der -outform DER # openssl x509 -in CA.der -inform DER -out CAcert.pem -outform PEM

Fig 8. Puede ser que te encuentres con este problema. Si haces algo incorrecto es posible que recibas un mensaje como este. Se recomienda repetir con cuidado el procedimiento de generacin de los certificados digitales. Del lado del servidor veremos algo as:

________________________________________________________________________________
3.Configuracin del servidor de correo 15/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

Fig 9. Error con un certificado incorrecto, repite el procedimiento. Si por el contrario todo va bien, al tratar de enviar un correo obtendremos el siguiente mensaje:

Fig 10. Advertencia por no tener en la BD de thunderbird el certificado de la CA.

________________________________________________________________________________
3.Configuracin del servidor de correo 16/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

Si queremos aceptarlo de forma temporal, simplemente le damos aceptar. Si queremos que nuestro sitio sea confiable del todo, debemos pasar el certificado digital de la CA a todos los MUA que vayamos a usar. En thunderbird la ruta para agregar una CA es: Opciones Avanzadas Certificados Ver certificados Autoridades Importar. El certificado que se importa es el CA.crt, o en nuestro caso el Cacert.pem. Para hacer la prueba configuramos el MUA para que use TLS y opcionalmente autentique los usuarios y luego capturamos el trfico:

Fig 11. Configuracin de la cuenta para usar TLS. Podemos hacer el ejercicio de capturar el trfico usando por ejemplo el sniffer wireshark.

________________________________________________________________________________
3.Configuracin del servidor de correo 17/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

Fig 12. Captura de trfico usando TLS para enviar correos.

3.3. OpenSMTPD usando SSL


Para darle soporte a SSL solo basta con cambiar una lnea en el archivo de configuracin, quedando de la siguiente forma: # cat /etc/mail/smtpd.conf listen on vic0 smtps enable auth map "aliases" { source db "/etc/mail/aliases.db" } accept for local deliver to mbox
accept from "192.168.0.0/24" for domain "ejemplo.com" deliver to maildir "/home/%u/Maildir"

accept for all relay # La diferencia esta en la lnea: listen on vic0 smtps enable auth. ________________________________________________________________________________
3.Configuracin del servidor de correo 18/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

Se cambia la palabra tls por smtps. Ahora el servidor se inicia de la forma tradicional y observamos que el puerto por el que escucha es el 465:

Fig 13. Inicio del servidor con soporte de SSL, se siguen usando los mismos certificados. Obviamente tendremos que cambiar la configuracin del MUA para que no use TLS sino SSL. Si quieres tener uno o mas puertos escuchando al tiempo, puedes agregar una lnea listen al archivo de configuracin por cada puerto o interfaz donde quieras que el servidor OpenSMTPD escuche.

4. Descargando el correo por POP e IMAP


Con el fin de que nuestros usuarios puedan recuperar el correo electrnico a sus estaciones o que puedan acceder y leerlos desde un MUA o un webmail, es necesario implementar el soporte para los protocolos POP3 e IMAP, estos dos protocolos son los mas conocidos para cumplir con esta tarea. OpenBSD no trae por defecto estos servicios activados, es necesario instalar un paquete que los soporte, por ejemplo, el conocido software dovecot. La forma mas sencilla es descargar el archivo index.txt de la ruta de paquetes, por ejemplo: ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/index.txt y luego buscar el nombre exacto del paquete a instalar. Hay que recordar que es importante tener en cuenta la arquitectura en la que esta instalado el sistema operativo, por ejemplo, si el procesador tuviera una arquitectura amd64 la ruta sera: ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/amd64/index.txt

________________________________________________________________________________
4.Descargando el correo por POP e IMAP 19/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

Si navegamos a este sitio, podemos encontrar que el paquete dovecot se llama: dovecot-1.1.16.tgz. Y para instalarlo nos olvidamos de compilar cdigo y usamos los paquetes ya listos del repositorio de OpenBSD, simplemente ejecutamos: #pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/dovecot-1.1.16.tgz

Fig 14. Instalacin del paquete dovecot en OpenBSD, usando los binarios. Si queremos que dovecot arranque automticamente, agregamos lo siguiente al archivo /etc/rc.local if [ -x /usr/local/sbin/dovecot ]; then echo -n ' dovecot'; fi Tambin nos recomiendan ejecutar el script: /usr/local/sbin/dovecot-mkcert.sh. Esto para generar el certificado autofirmado del dovecot, pero como ya tenemos una CA creada, vamos a generar un nuevo certificado para dovecot y lo vamos a firmar con nuestra CA. Siguiendo los pasos entonces: 1. Generamos la peticin del certificado: # openssl req -days 3650 -nodes -new -keyout /etc/ssl/private/dovecot.key -out /etc/ssl/private/dovecot.csr Generating a 1024 bit RSA private key ..............................................++++++ ............++++++ ________________________________________________________________________________
4.Descargando el correo por POP e IMAP 20/42

/usr/local/sbin/dovecot

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

writing new private key to '/etc/ssl/private/dovecot.key' ----You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----Country Name (2 letter code) []:CO State or Province Name (full name) []:OpenBSD Locality Name (eg, city) []:Medellin Organization Name (eg, company) []:OpenBSD Colombia Organizational Unit Name (eg, section) []:IT Common Name (eg, fully qualified host name) []:correo.ejemplo.com Email Address []:nando@ejemplo.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: # 2. Lo firmamos con la CA # openssl x509 -req -days 3650 -in /etc/ssl/private/dovecot.csr -out /etc/ssl/dovecot.crt -CA /etc/ssl/CA.crt -CAkey /etc/ssl/private/CA.key -CAcreateserial Signature ok subject=/C=CO/ST=OpenBSD/L=Medellin/O=OpenBSD Colombia/OU=IT/CN=correo.ejemplo.com/emailAddress=nando@ejemplo.com Getting CA Private Key #

________________________________________________________________________________
4.Descargando el correo por POP e IMAP 21/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

3. Ubicamos los certificados en las rutas recomendadas por el paquete dovecot para OpenBSD: # cp /etc/ssl/private/dovecot.key /etc/ssl/private/dovecot.pem # cp /etc/ssl/dovecot.crt /etc/ssl/dovecotcert.pem 4. Para ejecutarlo simplemente corremos el comando dovecot. #dovecot El paquete dovecot viene listo para funcionar por los puertos 143 (IMAP) y 993 (IMAPS), para probarlo solo basta con crear una nueva cuenta en nuestro MUA y decirle que vamos a usar IMAP. Recuerde que la configuracin del dovecot por defecto deshabilita la autenticacin en texto plano en el archivo /etc/dovecot.conf con la opcin: disable_plaintext_auth = yes y se pueden habilitar los protocolos a usar en la variable: protocols = imap imaps pop3 pops Veamos como se visualiza una conexin con TLS al puerto IMAP:

Fig 15. Trfico capturado en una sesin IMAP/TLS. ________________________________________________________________________________


4.Descargando el correo por POP e IMAP 22/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

5. Habilitando un webmail seguro


Para el ejercicio vamos a trabajar con roundcubemail, un webmail seguro que esta disponible en los paquetes de OpenBSD. Antes de habilitar un webmail seguro vamos a crear un certificado digital para el servidor web de modo que todas las conexiones que hagan nuestros usuarios sean seguras.

5.1. Servidor web seguro (https)


Para habilitar un servidor web seguro solo basta con crear un nuevo certificado para el servidor web con los datos personales del servidor, lo siguiente es un ejemplo. Primero se crea la peticin de certificado: # openssl req -days 3650 -nodes -new -keyout /etc/ssl/private/web.key -out /etc/ssl/private/web.csr Generating a 1024 bit RSA private key .++++++ ........++++++ writing new private key to '/etc/ssl/private/web.key' ----You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----Country Name (2 letter code) []:CO State or Province Name (full name) []:OpenBSD Locality Name (eg, city) []:Medellin Organization Name (eg, company) []:OpenBSD Colombia Organizational Unit Name (eg, section) []:IT Common Name (eg, fully qualified host name) []:webmail.ejemplo.com Email Address []:nando@ejemplo.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:

________________________________________________________________________________
5.Habilitando un webmail seguro 23/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

Y luego se firma con la nuestra CA: # openssl x509 -req -days 3650 -in /etc/ssl/private/web.csr -out /etc/ssl/web.crt -CA /etc/ssl/CA.crt -CAkey /etc/ssl/private/CA.key -CAcreateserial Signature ok subject=/C=CO/ST=OpenBSD/L=Medellin/O=OpenBSD Colombia/OU=IT/CN=webmail.ejemplo.com/emailAddress=nando@ejemplo.com Getting CA Private Key # Con esto obtenemos un certificado (web.crt) firmado por nuestra CA. Ahora configuramos el servidor apache: /var/www/conf/httpd.conf

________________________________________________________________________________
5.Habilitando un webmail seguro 24/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

Fig 16. Configuracin del apache para soportar SSL Por ltimo en el archivo /etc/rc.conf, cambiamos : httpd_flags=NO por httpd_flags="-DSSL" Con esto el demonio web se inicia automticamente despus de cada reinicio en modo seguro. ________________________________________________________________________________
5.Habilitando un webmail seguro 25/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

Para recargar la configuracin: #sh /etc/rc Para comprobar que funciona el nuevo certificado, visitamos el sitio usando el FQDN usado en el certificado:

Fig 17. Probando el servidor web con SSL

5.2. Instalando el servidor MySQL


Existe un paquete en OpenBSD para poner a punto un servidor MySQL, hacemos lo siguiente: #pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/mysql-server-5.0.83.tgz # pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/mysqlserver-5.0.83.tgz parsing ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/mysql-server5.0.83.tgz Dependencies for mysql-server-5.0.83 resolve to: mysql-client-5.0.83, p5-DBDmysql-4.010 (todo: mysql-client-5.0.83,p5-DBD-mysql-4.010) mysql-server-5.0.83:parsing mysql-client-5.0.83 found libspec c.51.0 in /usr/lib found libspec crypto.18.0 in /usr/lib found libspec m.5.0 in /usr/lib found libspec ncurses.10.0 in /usr/lib found libspec pthread.11.1 in /usr/lib found libspec readline.3.0 in /usr/lib found libspec ssl.15.0 in /usr/lib found libspec z.4.1 in /usr/lib ________________________________________________________________________________
5.Habilitando un webmail seguro 26/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

found libspec z.4.1 in /usr/lib adding group _mysql adding user _mysql installed /etc/my.cnf from /usr/local/share/mysql/mymedium.cnf******************************************************************************* ************************ | 96% mysql-server-5.0.83: complete --- mysql-server-5.0.83 ------------------You can find detailed instructions on how to install a database in /usr/local/share/doc/mysql/README.OpenBSD. Con eso quedara instalado el servidor MySQL. Una vez instalado, debemos inicializar la base de datos con este comando: #/usr/local/bin/mysql_install_db Luego debemos cambiar la contrasea de acceso a mysql, para eso ejecutamos el demonio de forma temporal y usamos el comando administrativo para cambiar la clave: # mysqld_safe & # /usr/local/bin/mysqladmin -u root password 'passwordfuerte' La clave del usuario root ser: passwordfuerte. Por ultimo debemos correr el script que asegura nuestro entorno MySQL: /usr/local/bin/mysql_secure_installation Este preguntar algunas cosas, puedes responder SI/YES para los elementos que quieras asegurar. Si queremos que mysql se inicie cada vez que se reinicie el sistema debemos agregar lo siguiente al script de arranque /etc/rc.local

________________________________________________________________________________
5.Habilitando un webmail seguro 27/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

if [ X"${mysql}" == X"YES" -a -x /usr/local/bin/mysqld_safe ]; then echo -n " mysqld " /usr/local/bin/mysqld_safe --user=_mysql & sleep 5 ln -f /var/run/mysql/mysql.sock /var/www/var/run/mysql/mysql.sock fi En este momento el archivo /etc/rc.local se debe ver as:

Fig 18. Archivo /etc/rc.local hasta el momento.

________________________________________________________________________________
5.Habilitando un webmail seguro 28/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

y en el archivo /etc/rc.conf.local debemos agregar lo siguiente: # cat /etc/rc.conf.local mysql=YES # *OJO*: Para lograr tener mysql enjaulado, debemos crear el siguiente directorio: #pwd /var/www/ # mkdir -p var/run/mysql/ # Despus podemos recargar usado el comando: #sh /etc/rc

5.3. Soporte PHP/MySQL para Apache


El truco consiste en instalar el paquete php5-mysql, el cual corresponde al modulo o extensin de mysql para php, sin embargo durante la comprobacin de las dependencias, OpenBSD descargar todos los paquetes necesarios (php5 core, mysql-client, etc). Instalamos el paquete: # pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/php5-mysql-5.2.10.tgz # pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/php5-mysql5.2.10.tgz parsing ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/php5-mysql5.2.10.tgz Dependencies for php5-mysql-5.2.10 resolve to: mysql-client-5.0.83, php5-core5.2.10 (todo: php5-core-5.2.10) php5-mysql-5.2.10:parsing php5-core-5.2.10 Dependencies for php5-core-5.2.10 resolve to: libxml-2.6.32p2, libiconv-1.13, gettext-0.17p0 (todo: gettext-0.17p0,libxml-2.6.32p2) php5-mysql-5.2.10:parsing gettext-0.17p0 Dependencies for gettext-0.17p0 resolve to: libiconv-1.13 found libspec c.51.0 in /usr/lib ________________________________________________________________________________
5.Habilitando un webmail seguro 29/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

found libspec expat.9.0 in /usr/lib found libspec iconv.6.0 in package libiconv-1.13 found libspec m.5.0 in /usr/lib found libspec ncurses.10.0 in /usr/lib php5-mysql-5.2.10:gettext-0.17p0|******************************** php5-mysql-5.2.10: complete --- php5-core-5.2.10 ------------------To enable the php5 module please create a symbolic link from /var/www/conf/modules.sample/php5.conf to /var/www/conf/modules/php5.conf. ln -s /var/www/conf/modules.sample/php5.conf \ /var/www/conf/modules The recommended php configuration has been installed to /var/www/conf/php.ini. Don't forget that the default OpenBSD httpd is chrooted into /var/www by default, so you may need to create support directories such as /var/www/tmp for PHP to work correctly. --- php5-mysql-5.2.10 ------------------You can enable this module by creating a symbolic link from /var/www/conf/php5.sample/mysql.ini to /var/www/conf/php5/mysql.ini. ln -fs /var/www/conf/php5.sample/mysql.ini \ /var/www/conf/php5/mysql.ini Al terminar de instalar nos recomiendan ejecutar un procedimiento: 1. ln -s /var/www/conf/modules.sample/php5.conf /var/www/conf/modules

2. mkdir /var/www/tmp

________________________________________________________________________________
5.Habilitando un webmail seguro 30/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

3. ln -fs /var/www/conf/php5.sample/mysql.ini

/var/www/conf/php5/mysql.ini

La forma mas fcil de probar el soporte php instalado es creando un script de prueba: # pwd /var/www/htdocs # cat test.php <?php phpinfo(); ?> # Debemos obtener algo as:

Fig 19. Script de prueba para comprobar el soporte de PHP en apache.

5.4. Instalando el webmail (roundcubemail)


OpenBSD tiene un paquete llamado roundcubemail-0.2.2.tgz que puede ser instalado de la misma forma que los paquetes anteriores: # pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/roundcubemail-0.2.2.tgz

________________________________________________________________________________
5.Habilitando un webmail seguro 31/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

# pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/roundcubemail-0.2.2.tgz parsing ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/roundcubemail0.2.2.tgz Dependencies for roundcubemail-0.2.2 resolve to: php5-mbstring-5.2.10, php5core-5.2.10 (todo: php5-mbstring-5.2.10) roundcubemail-0.2.2:parsing php5-mbstring-5.2.10 Dependencies for php5-mbstring-5.2.10 resolve to: php5-core-5.2.10 found libspec m.5.0 in /usr/lib found libspec stdc++.47.0 in /usr/lib roundcubemail-0.2.2:php5-mbstring-5.2.10: complete installed /var/www/roundcubemail/config/db.inc.php from /var/www/roundcubemail/config/db.inc.php.dist | 1% installed /var/www/roundcubemail/config/main.inc.php from /var/www/roundcubemail/config/main.inc.php.dist installed /var/www/roundcubemail/config/mimetypes.php from /var/www/roundcubemail/config/mimetypes.php.dist | 2% roundcubemail-0.2.2: complete --- php5-mbstring-5.2.10 ------------------You can enable this module by creating a symbolic link from /var/www/conf/php5.sample/mbstring.ini to /var/www/conf/php5/mbstring.ini. ln -fs /var/www/conf/php5.sample/mbstring.ini \ /var/www/conf/php5/mbstring.ini --- roundcubemail-0.2.2 ------------------RoundCube webmail has been installed into /var/www/roundcubemail Proceed to complete the installation or upgrade by reading: /var/www/roundcubemail/INSTALL /var/www/roundcubemail/UPGRADING A database is required to use this package; PostgreSQL, MySQL and SQLite are supported. If you have no requirements for either of the full-scale RDBMS, you might like to install the php5-sqlite package. #

________________________________________________________________________________
5.Habilitando un webmail seguro 32/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

Al igual que con los paquetes anteriores, se recomiendan crear unos enlaces y hacer unas configuraciones:
1. ln -fs /var/www/conf/php5.sample/mbstring.ini /var/www/conf/php5/mbstring.ini

2.

Leer el archivo INSTALL

Los pasos de la instalacin de roundcube son: ============ INSTALLATION ============ 1. Decompress and put this folder somewhere inside your document root 2. Make sure that the following directories (and the files within) are writable by the webserver

/temp /logs

3. Create a new database and a database user for RoundCube (see DATABASE SETUP) 4. Point your browser to http://url-to-roundcube/installer/ 5. Follow the instructions of the install script (or see MANUAL CONFINGURATION) 6. After creating and testing the configuration, remove the installer directory 7. Done! Hagamoslo! 1. El software ya se encuentra descomprimido en: /var/www/roundcubemail/ Podemos dejarlo ah y luego cambiar la ruta del host virtual https en el archivo /var/www/conf/httpd.conf, especficamente la lnea donde esta: ... <VirtualHost _default_:443> # General setup for the virtual host DocumentRoot /var/www/roundcubemail/ ...

________________________________________________________________________________
5.Habilitando un webmail seguro 33/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

2. Lo mejor es darle permisos a todo el software roundcube y ponerle permisos de escritura a los dos directorios que se mencionan: # pwd /var/www/roundcubemail # chown -R www.www roundcubemail/ # cd roundcubemail/ # chmod -R 755 temp/ # chmod -R 755 logs 3. Debemos crear una base de datos para roundcube e inicializarla con el contenido que trae el software: # mysqladmin -u root -p create roundcube Enter password: # mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.0.83-log OpenBSD port: mysql-server-5.0.83 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> GRANT ALL PRIVILEGES ON roundcube.* TO webmail@localhost IDENTIFIED BY 'webmailpassword'; Query OK, 0 rows affected (0.03 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> quit Bye #

________________________________________________________________________________
5.Habilitando un webmail seguro 34/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

Con esto se crear una base de datos llamada roundcube, un usuario llamado webmail que tiene permisos completos sobre la misma y usa como contrasea: 'webmailpassword' para este usuario. No sobra advertir que en la configuracin real se sugiere usar contraseas realmente robustas. Por ultimo creamos la estructura de la base de datos con la plantilla que trae el roundcube: # mysql -u root -p roundcube < SQL/mysql.initial.sql Enter password: # En este punto estaremos listos para entrar al instalador web del roundcube: La primera vez que arranco el instalador recibo el siguiente error:

Fig 20. Error al intentar usar el instalador web por primera vez. Lo primero es que en el archivo de configuracin (/var/www/roundcubemail/config/main.inc.php) debemos habilitar la posibilidad de usar el instalador web, por defecto la variable esta en la lnea 321 y hay que ponerla en un estado true. $rcmail_config['enable_installer'] = true; Con esto podemos arrancar el instalador web. Hay un error con respecto al directorio temporal (tmp) debido a que mysql y php requieren un directorio /tmp, pero dentro del chroot, entonces hacemos lo siguiente:

________________________________________________________________________________
5.Habilitando un webmail seguro 35/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

# pwd /var/www # chown www.www tmp # chmod 755 tmp Luego recargamos nuevamente (F5) el instalador web y encontramos lo siguiente:

Fig 21. An persisten unos errores en las dependencias de roundcube. Aqu podemos ver que algunas cosas estn bien, pero que aun falta configurar, nos pide que configuremos el acceso a la base de datos desde el archivo de configuracin.

________________________________________________________________________________
5.Habilitando un webmail seguro 36/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

En el archivo /var/www/roundcubemail/config/db.inc.php, lnea 21, modificamos la conexin a la base de datos mysql.


$rcmail_config['db_dsnw'] = 'mysql://webmail:webmailpassword@localhost/roundcube';

Luego de volver a recargar seguimos obteniendo el mismo error, cual es el problema? Intentamos instalar el paquete Pear-MDB2-Mysql: # pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/pear-MDB2-mysql-1.4.1p1.tgz # pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/pear-MDB2mysql-1.4.1p1.tgz parsing ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/pear-MDB2mysql-1.4.1p1.tgz Dependencies for pear-MDB2-mysql-1.4.1p1 resolve to: php5-mysql-5.2.10, pear-1.7.2, pear-MDB2-2.4.1 (todo: pear-MDB2-2.4.1,pear-1.7.2) pear-MDB2-mysql-1.4.1p1:parsing pear-MDB2-2.4.1 Dependencies for pear-MDB2-2.4.1 resolve to: pear-1.7.2 (todo: pear-1.7.2) pear-MDB2-mysql-1.4.1p1:parsing pear-1.7.2 Dependencies for pear-1.7.2 resolve to: pear-utils-1.7.2, php5-core-5.2.10 (todo: pear-utils-1.7.2) pear-MDB2-mysql-1.4.1p1:parsing pear-utils-1.7.2 pear-MDB2-mysql-1.4.1p1:pear-utils-1.7.2: complete pear-MDB2-mysql-1.4.1p1:pear-1.7.2: complete pear-MDB2-mysql-1.4.1p1:pear-MDB2-2.4.1: complete pear-MDB2-mysql-1.4.1p1: complete Muchas veces nos ocurren estos errores cuando trabajamos con OpenBSD y apache en modo chroot, debemos asegurarnos que exista el directorio: /var/www/var/run/mysql, de lo contrario el socket de mysql no podr ser creado y la aplicacin no se podr conectar a la base de datos. Es importante recordar que para el modo chroot del apache la RAIZ es /var/www, por eso se crea a partir de all la estructura de directorios. Este directorio lo habamos creado cuando instalamos MySQL, pero es posible que a alguien se le pase y le cause dolores de cabeza, por eso la insistencia sobre la creacin del mismo.

________________________________________________________________________________
5.Habilitando un webmail seguro 37/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

Fig 22. Pruebas ejecutadas desde roundcube, al servidor SMTP y al servidor IMAP. Despus de hacer los tests correspondientes, editamos el archivo main.inc.php para terminar de organizar algunos detalles de la configuracin: Veamos algunas variables importantes para que nuestro webmail funcione, las otras variables las puedes explorar despus de que el sistema funcione. $rcmail_config['default_host'] = 'tls://192.168.0.200'; Esta variable le dice que nos conectaremos a un host(192.168.0.200) IMAP usando TLS: $rcmail_config['IMAP_auth_type'] = plain; Usar autenticacin tipo PLAIN, pero dentro del canal seguro con TLS, entonces no hay peligro $rcmail_config['smtp_server'] = '192.168.0.200'; Se define el servidor de correo, nuestro OpenSMTPD. $rcmail_config['smtp_port'] = 25; Puerto donde funciona nuestro MTA. $rcmail_config['smtp_auth_type'] = 'LOGIN'; Tipo de autenticacin en SMTP, recuerden que lo importante es asegurar el canal antes de autenticar usuarios para el envo de correo.

________________________________________________________________________________
5.Habilitando un webmail seguro 38/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

$rcmail_config['product_name'] = 'servidor de correo'; Titulo del webmail, este se ver en la barra del navegador con el que visites la aplicacin. Una vez terminados estos cambios, podemos ingresar al webmail. Al entrar al sitio definido vamos a ver el siguiente mensaje de advertencia que nos indica que debemos eliminar el directorio installer (el que usamos para la instalacin), ya que representa un problema de seguridad.

Fig 23. Advertencia sobre la existencia del directorio installer. # pwd /var/www/roundcubemail # rm -rf installer/ # Una vez borrado el directorio podemos hacer uso del webmail, ingresa el usuario y clave vlidos y este se validara ante el servidor IMAP usando TLS. Una vez adentro te tomar poco tiempo aprender a trabajar con rondcube.

________________________________________________________________________________
5.Habilitando un webmail seguro 39/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

Fig 23. RoundCube en accin.

6. Conclusiones
El objetivo del documento era hablar un poco de OpenSMTPD y como han visto me he desviado un poco del tema, pero creo que el ejercicio vale la pena porque se muestra como configurar un servidor de correo seguro con acceso web para usuarios con las herramientas mas comunes en el mundo del software libre. Es importante recalcar que OpenSMTPD es un software en construccin, an no tiene todas las caractersticas deseadas, cosas como una autenticacin diferente a PLAIN o LOGIN en el SMTP an no estn creadas, pero de igual forma, configurando el servicio de una forma adecuada, es posible que no las necesitemos.

________________________________________________________________________________
6.Conclusiones 40/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

OpenSMTPD no obliga a establecer una sesin TLS en el momento que un cliente intenta enviar un correo, otros MTA si lo hacen, por ejemplo postfix, tiene una variable que obliga a que una sesin SMTP se vuelva TLS, desafortunadamente esto an no existe en este nuevo demonio. Esto lo debes de tener en cuenta porque si del lado del cliente no se le configura el uso del canal cifrado, los correos viajarn a travs de OpenSMTPD en texto plano, aunque hayamos configurado el protocolo TLS. Cul es la solucin?, mi recomendacin es hacer el montaje usando SSL en el puerto 465, de esta forma el cliente se ver obligado a establecer una sesin cifrada. Roundcube usa las libreras de php internas para establecer la comunicacin con el servidor SMTP, desafortunadamente an no tiene cdigo (o no lo encontr despus de mucho buscarlo) que permita establecer una sesin TLS son el servidor SMTP, esto es un problema, ya que todos los correos enviados desde el webmail sern enviados en texto plano, aunque el servidor soporte TLS. Solucin?. Afortunadamente roundcube SI soporta una comunicacin por SSL, entonces podemos hacer que nuestro servidor de correo soporte SSL y de esa forma garantizar el cifrado en todos los correos que se envan desde el webmail. Si bien el ejercicio muestra como usar protocolos seguros (SSL, TLS), es importante tener en cuenta que al tener todo el montaje en un mismo servidor (smtpd, webmail, imapd, pop3d, etc), es posible que el uso de cifrado ocasione una perdida en el rendimiento del servidor, si pensamos mejor la situacin encontramos que si todos los servicios estn en la misma estacin fsica, el uso de canales cifrados es algo que se puede obviar, pues si alguien quiere capturar el trfico debe ingresar hasta el equipo servidor que tiene instaladas las aplicaciones y esto nos estara indicando que el servidor fue comprometido. Sin embargo el acceso por web SI debe estar protegido con SSL, pues un usuario remoto puede conectarse desde cualquier lugar usando una red pblica vulnerable. La sintaxis usada en el archivo de configuracin de OpenSMTPD promete mucho, como pudieron leer, en menos de 5 lneas tenemos un servidor completamente funcional con reglas de filtrado al estilo packet filter. BIEN POR ESA!. Por ltimo recordarles que estamos montando un servicio de red bastante demandado (el servicio de correo), por eso el documento apunta a un ejemplo completo sobre como montar una plataforma de correo segura desde cero, el software usado es software que se encuentra en el sistema base de OpenBSD y de forma adicional paquetes creados y en algunas ocasiones auditados por los colaboradores del proyecto, esto es un valor aadido, detalles como usar una configuracin mnima para los servicios de red, tener un servidor web enjaulado, tener por omisin solo los puertos necesarios abiertos, etc, le dan un + a nuestras soluciones. Gracias al equipo OpenBSD por trabajar en esto para nosotros. Es posible que en una segunda entrega acerca de servidores de correo, configure este demonio junto con los sistemas antispam y antivirus disponibles, desafortunadamente, no tengo todo el tiempo que quisiera para escribir documentacin, alguien se anima?

________________________________________________________________________________
6.Conclusiones 41/42

SERVIDOR DE CORREO CON OPENSMTPD - Fernando Quintero, OpenBSDColombia.org

7. Enlaces recomendados
Gua de como configurar OpenSMTPD en OpenBSD 4.5, tiene ejemplos buenos de como crear dominios virtuales y como conectarse con los servidores de correo de google. https://calomel.org/OpenSMTPD.html Pgina del manual de OpenSMTPD (requerida). http://www.openbsd.org/cgi-bin/man.cgi? query=smtpd&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=i386&format=html Pgina del manual de smtpd.conf (el archivo de configuracin). http://www.openbsd.org/cgi-bin/man.cgi? query=smtpd.conf&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=i386&format=htm l Pgina del manual de starttls (te ayuda a entender un poco mas). http://www.openbsd.org/cgi-bin/man.cgi? query=starttls&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=i386&format=html Lista de distribucin y documentos de OpenBSD Colombia (el repositorio de la comunidad). http://groups.google.com/group/OpenBSD-Colombia?hl=es&pli=1 Portal oficial de OpenBSD Colombia (Bienvenidos!) http://www.openbsdcolombia.org/

! LARGA VIDA A OPENBSD !

________________________________________________________________________________
7.Enlaces recomendados 42/42

Вам также может понравиться