Servidor de Correo Opensmtpd

download Servidor de Correo Opensmtpd

of 44

description

Instalacion de un Correo smtpd

Transcript of Servidor de Correo Opensmtpd

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

    SERVIDOR DE CORREO CON OPENSMTPD

    Autor: Fernando QuinteroCorreo electrnico: [email protected]

    Fecha de creacin : 03/10/09 Ultima modificacin: 21/01/16

    ndice de contenido1.Licencia (BSD)..................................................................................................................................12. Qe es OpenSMTPD ?...................................................................................................................23.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......................................................................................................113.3.OpenSMTPD usando SSL......................................................................................................18

    4.Descargando el correo por POP e IMAP.........................................................................................195.Habilitando un webmail seguro.......................................................................................................23

    5.1.Servidor web seguro (https).....................................................................................................235.2.Instalando el servidor MySQL.................................................................................................265.3.Soporte PHP/MySQL para Apache..........................................................................................295.4.Instalando el webmail (roundcubemail)..................................................................................31

    6.Conclusiones....................................................................................................................................407.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 conditionsare 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 NOTLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FORA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER ORCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,

    ________________________________________________________________________________ 1.Licencia (BSD) 1/44

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

    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, ORPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OFLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDINGNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THISSOFTWARE, 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 orientadoa la seguridad, con muchas funcionalidades y bastante fcil de configurar. Actualmente esta siendodesarrollado 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, paraque otro nuevo MTA si ya se tiene postfix, sendmail, qmail, exim, etc?. La respuesta la obtuvedespus de hacerle mucho seguimiento a la lista de soporte @misc y de algunas entrevistas a losdesarrolladores. Y la conclusin a la que llego es que vale la pena el esfuerzo por crear algo nuevoal estilo BSD ;). Porque?, porque los otros MTA no tienen licencias adecuadas, por eso nunca hanentrado en el sistema base de OpenBSD, postfix y qmail son ejemplos de estos, no permiten que elequipo OpenBSD realice sus cambios a voluntad, esto segn la filosofa del proyecto, no es algoque se pueda aceptar.Actualmente OpenBSD trae en su sistema base una modificacin del demonio sendmail, el MTAmas antiguo y posiblemente el que tenga mas funcionalidades, pero tambin el mas complicado deconfigurar, ya que para usar los famosos milters, es necesario recompilar el software o crear macrosm4 que no todo el mundo puede comprender...En conclusin, se quiere crear un nuevo servidor de correo al estilo OpenBSD, Libre, Funcional ySeguro!, entonces le damos la bienvenida a OpenSMTPD !!!.

    En este documento voy a mostrar como configurar de forma prctica un servidor de correo conOpenSMTPD que ya viene en el sistema base (no habilitado) en la actual release 4.6. Comosiempre, cualquier duda o comentario lo pueden enviar a la lista de soporte de OpenBSD Colombia.

    3. Configuracin del servidor de correoVamos a comprobar lo sencillo que es configurar un servidor de correo con este nuevo software yvamos a documentar el proceso para que los usuarios de una LAN o desde Internet se puedanconectar al mismo.

    3.1. Recibiendo correo para un dominioEl funcionamiento mas simple de un servidor de correo es que pueda recibir correo para un dominioespecifico, vamos a mostrar la configuracin para un dominio llamado ejemplo.com. Si quieres leersobre como crear dominios virtuales, la nica gua hasta el momento se encuentra aqu:https://calomel.org/OpenSMTPD.htmlEsta gua esta creada para la versin 4.5 entonces los primeros pasos no son necesarios, como lodije antes, en la release 4.6 OpenSMTPD ya viene instalado en el sistema base.Para nuestras configuraciones partiremos de un sistema base 4.6 recin instalado.

    ________________________________________________________________________________ 3.Configuracin del servidor de correo 2/44

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

    a. Configuracin bsica del sistema operativo OpenBSDLo primero es asegurarnos que el sistema este configurado de forma mnima, que tenga un nombrede 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 -aOpenBSD correo.localdomain 4.6 GENERIC#58 i386# vi /etc/myname # cat /etc/myname correo.ejemplo.com# sh /etc/rc# hostnamecorreo.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.comsearch ejemplo.comnameserver 192.168.0.3

    Verificamos que se resuelvan los hosts para el dns y el servidor de correo:

    # ping dns.ejemplo.com

    ________________________________________________________________________________ 3.Configuracin del servidor de correo 3/44

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

    PING dns.ejemplo.com (192.168.0.3): 56 data bytes64 bytes from 192.168.0.3: icmp_seq=0 ttl=255 time=0.361 ms64 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 lossround-trip min/avg/max/std-dev = 0.307/0.334/0.361/0.027 ms

    # ping correo.ejemplo.comPING correo.ejemplo.com (192.168.0.200): 56 data bytes64 bytes from 192.168.0.200: icmp_seq=0 ttl=255 time=0.128 ms64 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 lossround-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.correo.ejemplo.com. IN A 192.168.0.200

    b. Eliminando los rastros de sendmailPara que pueda entrar en funcionamiento nuestro servidor de correos, debemos eliminar laconfiguracin de sendmail que viene por defecto en el sistema:

    Matamos el demonio:

    # ps aux | grep -i sendmailroot 23640 0.0 0.7 1096 1452 ?? Ss 7:19AM 0:00.25 sendmail: accepting connections (sendmail)root 28380 0.0 0.4 332 744 p0 S+ 8:11AM 0:00.07 grep -i sendmail# pkill sendmail

    Lo deshabilitamos del arranque:En el archivo /etc/rc.conf, reemplazamos la lnea:

    ________________________________________________________________________________ 3.Configuracin del servidor de correo 4/44

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

    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 /usr/sbin/smtpctlsend-mail /usr/sbin/smtpctlmailq /usr/sbin/smtpctlmakemap /usr/libexec/smtpd/makemapnewaliases /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 servidor de correo: /etc/mail/smtpd.conf.

    ________________________________________________________________________________ 3.Configuracin del servidor de correo 5/44

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

    # See smtpd.conf(5) for more information.

    listen on vic0

    map "aliases" { source db "/etc/mail/aliases.db" }

    accept for local deliver to mboxaccept for domain "ejemplo.com" deliver to mboxaccept for all relay

    Como pueden ver, lo nico que he hecho es modificar la interfaz de red donde escuchar elservidor de correo (en mi caso vic0) y agregamos una regla para aceptar correos que vayan paraejemplo.com. La sintaxis de OpenSMTPD es muy simple.

    Para hacer pruebas configuramos una cuenta en un software cliente de correo (MUA), en mi casotengo 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/44

  • 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 servidorusa 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/44

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

    Esto ocurre porque en el servidor de correos (OpenSMTPD) no hemos permitido el envo decorreos desde otro lugar diferente a la maquina local, para esto nuestro MTA incorpora filtros alestilo packet filter, la lnea que debemos cambiar en la configuracin es:

    accept for domain "ejemplo.com" deliver to mboxpor

    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 dominioejemplo.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, sudiferencia con MailDir radica en que todos los correos pertenecientes a un mismo usuario sealmacenan en un mismo archivo, lo que puede ocasionar bloqueos cuando las aplicaciones intentanentrar 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, parahabilitarlo 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=, enel archivo /etc/rc.conf.local, de esta forma cada vez que inicie el servidor OpenBSD tendremosOpenSMTPD habilitado.

    Para verificar que los correos llegan, podemos usar el comando mail, con la cuenta del usuarioreceptor:

    $ whoaminando$ pwd/home/nando

    ________________________________________________________________________________ 3.Configuracin del servidor de correo 8/44

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

    $ mailMail version 8.1.2 01/15/2001. Type ? for help."/var/mail/nando": 2 messages 2 new [Read only]>N 1 [email protected] Sun Nov 8 09:06 15/536 aaa N 2 [email protected] 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 -latotal 28drwxr-xr-x 2 root wheel 512 Nov 8 09:10 .drwxr-xr-x 23 root wheel 512 Jul 1 18:54 ..-rw------- 1 astrid astrid 1638 Nov 8 09:07 astrid-rw-r--r-- 1 root wheel 1156 Nov 8 09:08 nando-rw------- 1 root wheel 4532 Nov 8 09:07 root# tail nandoUser-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812)MIME-Version: 1.0To: [email protected]: Correo de pruebaContent-Type: text/plain; charset=ISO-8859-1; format=flowedContent-Transfer-Encoding: 7bit

    Hola como estamos?#

    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

    ________________________________________________________________________________ 3.Configuracin del servidor de correo 9/44

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

    la configuracin que tenemos para que soporte este formato, lo nico que hacemos es modificar laregla 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 vic0map "aliases" { source db "/etc/mail/aliases.db" }accept for local deliver to mboxaccept 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 20drwx------ 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 curdrwx------ 2 nando nando 512 Nov 8 10:11 newdrwx------ 2 nando nando 512 Nov 8 10:11 tmp# cat Maildir/new/1257693105.YXQw59jyRwUaefw2.3512425487 Received: from imac-de-fernando-quintero.local ( [192.168.0.4]) by correo.ejemplo.com (OpenSMTPD) with ESMTP id 1257693105.YXQw59jyRwUaefw2 for ; Sun, 8 Nov 2009 10:11:45 -0500 (COT)Message-ID:

    ________________________________________________________________________________ 3.Configuracin del servidor de correo 10/44

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

    Fig 3. OpenSMTPD en modo debug recibiendo correos.

    3.2. OpenSMTPD usando TLSCuando se envan correos electrnicos sin usar medios seguros estamos propensos a que alguienpueda interceptarlos, por ejemplo. Si tenemos un sniffer capturando el trfico en el momento en quese enva el correo anterior podemos capturar lo siguiente:

    ________________________________________________________________________________ 3.Configuracin del servidor de correo 11/44

  • 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 puedaasegurar 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 formasolo que si usamos TLS la comunicacin segura ser opcional y la debe solicitar el cliente, siusamos SSL la comunicacin siempre se hace cifrada, pero debemos usar un puerto alterno paracomunicarnos. Por ejemplo para cifrar el trfico de correo en el puerto 25, debemos usar otro puertoreservado para SMTPS, el 465.

    ________________________________________________________________________________ 3.Configuracin del servidor de correo 12/44

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

    Lo primero que debemos hacer es verificar que nuestro MTA soporta cifrado con certificadosdigitales, una vez comprobado esto (preguntandole al desarrollador, leyendo manuales, leyendo lalista @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/44

  • 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 servidorde correo (vic0), esto es necesario para que OpenSMTPD pueda asociar el certificado digital en elmomento de arranque.

    Si queremos que el certificado del servidor tenga validez, necesitamos firmarlo con la llave privadade la CA, de esta forma cuando el MUA del usuario intente verificar un tercero confiable, este loresolver sin problemas. En este punto es importante recordar que los certificados se puedenobtener de diferentes formas y puedes pagar por un certificado de una entidad reconocida. Pero paraefectos de prueba y solo con nimos demostrativos vamos a trabajar con estos certificadosautofirmados.

    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 oksubject=/C=CO/ST=OpenBSD/L=Medellin/O=IT/OU=IT/CN=correo.ejemplo.com/[email protected] CA Private Key

    ________________________________________________________________________________ 3.Configuracin del servidor de correo 14/44

  • 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 aubicar 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/44

  • 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/44

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

    Si queremos aceptarlo de forma temporal, simplemente le damos aceptar. Si queremos que nuestrositio sea confiable del todo, debemos pasar el certificado digital de la CA a todos los MUA quevayamos a usar. En thunderbird la ruta para agregar una CA es: Opciones Avanzadas Certificados Ver certificados Autoridades Importar. El certificado que se importa es elCA.crt, o en nuestro caso el Cacert.pem.

    Para hacer la prueba configuramos el MUA para que use TLS y opcionalmente autentique losusuarios 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/44

  • 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, quedandode la siguiente forma:

    # cat /etc/mail/smtpd.conf listen on vic0 smtps enable authmap "aliases" { source db "/etc/mail/aliases.db" }accept for local deliver to mboxaccept 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/44

  • 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 esel 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 alarchivo de configuracin por cada puerto o interfaz donde quieras que el servidor OpenSMTPDescuche.

    4. Descargando el correo por POP e IMAPCon el fin de que nuestros usuarios puedan recuperar el correo electrnico a sus estaciones o quepuedan acceder y leerlos desde un MUA o un webmail, es necesario implementar el soporte paralos protocolos POP3 e IMAP, estos dos protocolos son los mas conocidos para cumplir con estatarea.

    OpenBSD no trae por defecto estos servicios activados, es necesario instalar un paquete que lossoporte, 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.txty 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/44

  • 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'; /usr/local/sbin/dovecotfTambin 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..............................................++++++............++++++writing new private key to '/etc/ssl/private/dovecot.key'

    ________________________________________________________________________________ 4.Descargando el correo por POP e IMAP 20/44

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

    -----You are about to be asked to enter information that will be incorporatedinto your certifcate request.What you are about to enter is what is called a Distinguished Name or aDN.There are quite a few felds but you can leave some blankFor some felds there will be a default value,If you enter '.', the feld will be left blank.-----Country Name (2 letter code) []:COState or Province Name (full name) []:OpenBSDLocality Name (eg, city) []:MedellinOrganization Name (eg, company) []:OpenBSD ColombiaOrganizational Unit Name (eg, section) []:ITCommon Name (eg, fully qualifed host name) []:correo.ejemplo.comEmail Address []:[email protected]

    Please enter the following 'extra' attributesto be sent with your certifcate requestA 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 -CAcreateserialSignature oksubject=/C=CO/ST=OpenBSD/L=Medellin/O=OpenBSD Colombia/OU=IT/CN=correo.ejemplo.com/[email protected] CA Private Key#

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

  • 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.

    #dovecotEl paquete dovecot viene listo para funcionar por los puertos 143 (IMAP) y 993 (IMAPS), paraprobarlo 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 enel archivo /etc/dovecot.conf con la opcin:

    disable_plaintext_auth = yesy se pueden habilitar los protocolos a usar en la variable:

    protocols = imap imaps pop3 popsVeamos 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/44

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

    5. Habilitando un webmail seguroPara el ejercicio vamos a trabajar con roundcubemail, un webmail seguro que esta disponible en lospaquetes de OpenBSD. Antes de habilitar un webmail seguro vamos a crear un certificado digitalpara 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 webcon 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 incorporatedinto your certifcate request.What you are about to enter is what is called a Distinguished Name or aDN.There are quite a few felds but you can leave some blankFor some felds there will be a default value,If you enter '.', the feld will be left blank.-----Country Name (2 letter code) []:COState or Province Name (full name) []:OpenBSDLocality Name (eg, city) []:MedellinOrganization Name (eg, company) []:OpenBSD ColombiaOrganizational Unit Name (eg, section) []:ITCommon Name (eg, fully qualifed host name) []:webmail.ejemplo.comEmail Address []:[email protected] enter the following 'extra' attributesto be sent with your certifcate requestA challenge password []:

    ________________________________________________________________________________ 5.Habilitando un webmail seguro 23/44

  • 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 oksubject=/C=CO/ST=OpenBSD/L=Medellin/O=OpenBSD Colombia/OU=IT/CN=webmail.ejemplo.com/[email protected] 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/44

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

    Fig 16. Configuracin del apache para soportar SSLPor ltimo en el archivo /etc/rc.conf, cambiamos :

    httpd_flags=NOpor

    httpd_flags="-DSSL"Con esto el demonio web se inicia automticamente despus de cada reinicio en modo seguro.

    ________________________________________________________________________________ 5.Habilitando un webmail seguro 25/44

  • 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 MySQLExiste 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/mysql-server-5.0.83.tgz parsing ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/mysql-server-5.0.83.tgzDependencies for mysql-server-5.0.83 resolve to: mysql-client-5.0.83, p5-DBD-mysql-4.010 (todo: mysql-client-5.0.83,p5-DBD-mysql-4.010)mysql-server-5.0.83:parsing mysql-client-5.0.83found libspec c.51.0 in /usr/libfound libspec crypto.18.0 in /usr/libfound libspec m.5.0 in /usr/libfound libspec ncurses.10.0 in /usr/libfound libspec pthread.11.1 in /usr/libfound libspec readline.3.0 in /usr/libfound libspec ssl.15.0 in /usr/lib

    ________________________________________________________________________________ 5.Habilitando un webmail seguro 26/44

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

    found libspec z.4.1 in /usr/libfound libspec z.4.1 in /usr/libadding group _mysqladding user _mysqlinstalled /etc/my.cnf from /usr/local/share/mysql/my-medium.cnf******************************************************************************************************* | 96%mysql-server-5.0.83: complete --- mysql-server-5.0.83 -------------------You can fnd detailed instructions on how to install a databasein /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 formatemporal 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 alscript de arranque /etc/rc.local

    ________________________________________________________________________________ 5.Habilitando un webmail seguro 27/44

  • 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 f

    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/44

  • 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 ApacheEl truco consiste en instalar el paquete php5-mysql, el cual corresponde al modulo o extensin demysql para php, sin embargo durante la comprobacin de las dependencias, OpenBSD descargartodos 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-mysql-5.2.10.tgz parsing ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/php5-mysql-5.2.10.tgzDependencies for php5-mysql-5.2.10 resolve to: mysql-client-5.0.83, php5-core-5.2.10 (todo: php5-core-5.2.10)php5-mysql-5.2.10:parsing php5-core-5.2.10Dependencies 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.17p0Dependencies for gettext-0.17p0 resolve to: libiconv-1.13found libspec c.51.0 in /usr/lib

    ________________________________________________________________________________ 5.Habilitando un webmail seguro 29/44

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

    found libspec expat.9.0 in /usr/libfound libspec iconv.6.0 in package libiconv-1.13found libspec m.5.0 in /usr/libfound libspec ncurses.10.0 in /usr/libphp5-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 symboliclink from /var/www/conf/modules.sample/php5.confto /var/www/conf/modules/php5.conf.

    ln -s /var/www/conf/modules.sample/php5.conf \ /var/www/conf/modules

    The recommended php confguration has been installedto /var/www/conf/php.ini. Don't forget that the default OpenBSD httpd is chrootedinto /var/www by default, so you may need to create supportdirectories such as /var/www/tmp for PHP to work correctly.--- php5-mysql-5.2.10 -------------------You can enable this module by creating a symboliclink 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

    ________________________________________________________________________________ 5.Habilitando un webmail seguro 30/44

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

    2. mkdir /var/www/tmp

    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

    #

    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:

    ________________________________________________________________________________ 5.Habilitando un webmail seguro 31/44

  • 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

    # pkg_add -v ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/roundcubemail-0.2.2.tgzparsing ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/roundcubemail-0.2.2.tgzDependencies for roundcubemail-0.2.2 resolve to: php5-mbstring-5.2.10, php5-core-5.2.10 (todo: php5-mbstring-5.2.10)roundcubemail-0.2.2:parsing php5-mbstring-5.2.10Dependencies for php5-mbstring-5.2.10 resolve to: php5-core-5.2.10found libspec m.5.0 in /usr/libfound libspec stdc++.47.0 in /usr/libroundcubemail-0.2.2:php5-mbstring-5.2.10: complete installed /var/www/roundcubemail/confg/db.inc.php from /var/www/roundcubemail/confg/db.inc.php.dist | 1%installed /var/www/roundcubemail/confg/main.inc.php from /var/www/roundcubemail/confg/main.inc.php.distinstalled /var/www/roundcubemail/confg/mimetypes.php from /var/www/roundcubemail/confg/mimetypes.php.dist | 2%roundcubemail-0.2.2: complete --- php5-mbstring-5.2.10 -------------------You can enable this module by creating a symboliclink 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/roundcubemailProceed to complete the installation or upgrade by reading:/var/www/roundcubemail/INSTALL/var/www/roundcubemail/UPGRADINGA database is required to use this package; PostgreSQL, MySQL and

    ________________________________________________________________________________ 5.Habilitando un webmail seguro 32/44

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

    SQLite are supported. If you have no requirements for either of thefull-scale RDBMS, you might like to install the php5-sqlite package.#

    Al igual que con los paquetes anteriores, se recomiendan crear unos enlaces y hacer unasconfiguraciones:

    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 root2. 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 directory7. 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:

    ...

    ________________________________________________________________________________ 5.Habilitando un webmail seguro 33/44

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

    # General setup for the virtual hostDocumentRoot /var/www/roundcubemail/...

    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 -pEnter password: Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 5Server 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@localhostIDENTIFIED BY 'webmailpassword';Query OK, 0 rows affected (0.03 sec)

    mysql> flush privileges;Query OK, 0 rows affected (0.00 sec)

    ________________________________________________________________________________ 5.Habilitando un webmail seguro 34/44

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

    mysql> quitBye#

    Con esto se crear una base de datos llamada roundcube, un usuario llamado webmail que tienepermisos 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 lnea321 y hay que ponerla en un estado true.

    $rcmail_confg['enable_installer'] = true;

    Con esto podemos arrancar el instalador web.

    ________________________________________________________________________________ 5.Habilitando un webmail seguro 35/44

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

    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:

    # pwd/var/www# chown www.www tmp# chmod 755 tmp

    Luego recargamos nuevamente (F5) el instalador web y encontramos lo siguiente:

    ________________________________________________________________________________ 5.Habilitando un webmail seguro 36/44

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

    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 queconfiguremos el acceso a la base de datos desde el archivo de configuracin.

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

    $rcmail_confg['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:

    ________________________________________________________________________________ 5.Habilitando un webmail seguro 37/44

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

    # 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-MDB2-mysql-1.4.1p1.tgzparsing ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/pear-MDB2-mysql-1.4.1p1.tgzDependencies 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.1Dependencies 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.2Dependencies 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.2pear-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 modochroot, debemos asegurarnos que exista el directorio: /var/www/var/run/mysql, de lo contrario elsocket de mysql no podr ser creado y la aplicacin no se podr conectar a la base de datos. Esimportante recordar que para el modo chroot del apache la RAIZ es /var/www, por eso se crea apartir de all la estructura de directorios. Este directorio lo habamos creado cuando instalamosMySQL, pero es posible que a alguien se le pase y le cause dolores de cabeza, por eso la insistenciasobre la creacin del mismo.

    ________________________________________________________________________________ 5.Habilitando un webmail seguro 38/44

  • 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_confg['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_confg['IMAP_auth_type'] = plain;Usar autenticacin tipo PLAIN, pero dentro del canal seguro con TLS, entonces no hay peligro

    $rcmail_confg['smtp_server'] = '192.168.0.200';Se define el servidor de correo, nuestro OpenSMTPD.

    $rcmail_confg['smtp_port'] = 25;Puerto donde funciona nuestro MTA.

    $rcmail_confg['smtp_auth_type'] = 'LOGIN';Tipo de autenticacin en SMTP, recuerden que lo importante es asegurar el canal antes de autenticarusuarios para el envo de correo.

    $rcmail_confg['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 quedebemos eliminar el directorio installer (el que usamos para la instalacin), ya que representa unproblema de seguridad.

    ________________________________________________________________________________ 5.Habilitando un webmail seguro 39/44

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

    ________________________________________________________________________________ 5.Habilitando un webmail seguro 40/44

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

    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 yeste se validara ante el servidor IMAP usando TLS. Una vez adentro te tomar poco tiempoaprender a trabajar con rondcube.

    ________________________________________________________________________________ 5.Habilitando un webmail seguro 41/44

  • 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 unpoco del tema, pero creo que el ejercicio vale la pena porque se muestra como configurar unservidor de correo seguro con acceso web para usuarios con las herramientas mas comunes en elmundo del software libre.

    Es importante recalcar que OpenSMTPD es un software en construccin, an no tiene todas lascaractersticas deseadas, cosas como una autenticacin diferente a PLAIN o LOGIN en el SMTPan no estn creadas, pero de igual forma, configurando el servicio de una forma adecuada, esposible que no las necesitemos.

    OpenSMTPD no obliga a establecer una sesin TLS en el momento que un cliente intenta enviar uncorreo, otros MTA si lo hacen, por ejemplo postfix, tiene una variable que obliga a que una sesinSMTP se vuelva TLS, desafortunadamente esto an no existe en este nuevo demonio. Esto lo debesde tener en cuenta porque si del lado del cliente no se le configura el uso del canal cifrado, loscorreos viajarn a travs de OpenSMTPD en texto plano, aunque hayamos configurado el protocoloTLS. Cul es la solucin?, mi recomendacin es hacer el montaje usando SSL en el puerto 465, deesta 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 permitaestablecer una sesin TLS son el servidor SMTP, esto es un problema, ya que todos los correosenviados desde el webmail sern enviados en texto plano, aunque el servidor soporte TLS.Solucin?. Afortunadamente roundcube SI soporta una comunicacin por SSL, entonces podemoshacer que nuestro servidor de correo soporte SSL y de esa forma garantizar el cifrado en todos loscorreos que se envan desde el webmail.

    Si bien el ejercicio muestra como usar protocolos seguros (SSL, TLS), es importante tener encuenta que al tener todo el montaje en un mismo servidor (smtpd, webmail, imapd, pop3d, etc), esposible que el uso de cifrado ocasione una perdida en el rendimiento del servidor, si pensamosmejor la situacin encontramos que si todos los servicios estn en la misma estacin fsica, el uso decanales cifrados es algo que se puede obviar, pues si alguien quiere capturar el trfico debe ingresarhasta el equipo servidor que tiene instaladas las aplicaciones y esto nos estara indicando que elservidor fue comprometido. Sin embargo el acceso por web SI debe estar protegido con SSL, puesun 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 pudieronleer, en menos de 5 lneas tenemos un servidor completamente funcional con reglas de filtrado al

    ________________________________________________________________________________ 6.Conclusiones 42/44

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

    estilo packet filter. BIEN POR ESA!.

    Por ltimo recordarles que estamos montando un servicio de red bastante demandado (el servicio decorreo), por eso el documento apunta a un ejemplo completo sobre como montar una plataforma decorreo segura desde cero, el software usado es software que se encuentra en el sistema base deOpenBSD y de forma adicional paquetes creados y en algunas ocasiones auditados por loscolaboradores del proyecto, esto es un valor aadido, detalles como usar una configuracin mnimapara los servicios de red, tener un servidor web enjaulado, tener por omisin solo los puertosnecesarios abiertos, etc, le dan un + a nuestras soluciones. Gracias al equipo OpenBSD por trabajaren esto para nosotros.

    Es posible que en una segunda entrega acerca de servidores de correo, configure este demonio juntocon los sistemas antispam y antivirus disponibles, desafortunadamente, no tengo todo el tiempo quequisiera para escribir documentacin, alguien se anima?

    7. Enlaces recomendados

    Gua de como configurar OpenSMTPD en OpenBSD 4.5, tiene ejemplos buenos de como creardominios 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=html

    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

    ________________________________________________________________________________ 7.Enlaces recomendados 43/44

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

    Portal oficial de OpenBSD Colombia (Bienvenidos!)http://www.openbsdcolombia.org/

    ! LARGA VIDA A OPENBSD !

    ________________________________________________________________________________ 7.Enlaces recomendados 44/44

    1. Licencia (BSD)2. Qe es OpenSMTPD ?3. Configuracin del servidor de correo3.1. Recibiendo correo para un dominioa. Configuracin bsica del sistema operativo OpenBSDb. Eliminando los rastros de sendmailc. Habilitamos el servidor OpenSMTPD para recibir en MBOXd. Habilitamos el servidor OpenSMTPD para recibir en formato MailDir

    3.2. OpenSMTPD usando TLS3.3. OpenSMTPD usando SSL

    4. Descargando el correo por POP e IMAP5. Habilitando un webmail seguro5.1. Servidor web seguro (https)5.2. Instalando el servidor MySQL5.3. Soporte PHP/MySQL para Apache5.4. Instalando el webmail (roundcubemail)

    6. Conclusiones7. Enlaces recomendados