Está en la página 1de 44

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: 21/01/16

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
CONTRIBUTORS
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,
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.
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 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:


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

correo.ejemplo.com.
IN

192.168.0.200

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
7:19AM
sendmail: accepting connections (sendmail)

0:00.25

root
28380 0.0 0.4
sendmail

0:00.07 grep -i

332

744 p0 S+

8:11AM

# 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
-q

/usr/sbin/sendmail -L sm-msp-queue -Ac

Cambiamos la informacin de las utilidades:


# mv /etc/mailer.conf /etc/mailer.copia
y ponemos lo siguiente:
# cat /etc/mailer.conf
sendmail

/usr/sbin/smtpctl

send-mail

/usr/sbin/smtpctl

mailq

/usr/sbin/smtpctl

makemap
newaliases

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

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

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

N 2 nando@ejemplo.com Sun Nov 8 09:08


prueba

aaa

17/620

Correo de

&
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

wheel

drwxr-xr-x 23 root

512 Nov 8 09:10 .

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 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?
#

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

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

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/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 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.ejem
plo.com/emailAddress=nando@ejemplo.com
Getting 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 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/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 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/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, 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/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 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/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/dovecot

f
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
..............................................++++++
............++++++
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 incorporated


into your certifcate request.
What you are about to enter is what is called a Distinguished Name or a
DN.
There are quite a few felds but you can leave some blank
For some felds there will be a default value,
If you enter '.', the feld 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 qualifed host name) []:correo.ejemplo.com
Email Address []:nando@ejemplo.com
Please enter the following 'extra' attributes
to be sent with your certifcate 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@ejemp
lo.com
Getting 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.
#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/44

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 certifcate request.
What you are about to enter is what is called a Distinguished Name or a
DN.
There are quite a few felds but you can leave some blank
For some felds there will be a default value,
If you enter '.', the feld 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 qualifed host name) []:webmail.ejemplo.com
Email Address []:nando@ejemplo.com
Please enter the following 'extra' attributes
to be sent with your certifcate request
A 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 ok
subject=/C=CO/ST=OpenBSD/L=Medellin/O=OpenBSD
Colombia/OU=IT/CN=webmail.ejemplo.com/emailAddress=nando@eje
mplo.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/44

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/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 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/mysql-server5.0.83.tgz
parsing ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/mysqlserver-5.0.83.tgz
Dependencies 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.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
________________________________________________________________________________
5.Habilitando un webmail seguro

26/44

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

found libspec z.4.1 in /usr/lib

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 fnd 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/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 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/php5mysql-5.2.10.tgz
Dependencies 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.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/44

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 confguration 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

________________________________________________________________________________
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
<?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:
________________________________________________________________________________
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/roundcubemail0.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-mbstring5.2.10, php5-core-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/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.dist
installed /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 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

________________________________________________________________________________
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 the


full-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 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>
________________________________________________________________________________
5.Habilitando un webmail seguro

33/44

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

# General setup for the virtual host


DocumentRoot /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 -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)

________________________________________________________________________________
5.Habilitando un webmail seguro

34/44

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

mysql> quit
Bye
#

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_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 que
configuremos 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-MDB2mysql-1.4.1p1.tgz
parsing ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/pearMDB2-mysql-1.4.1p1.tgz
Dependencies for pear-MDB2-mysql-1.4.1p1 resolve to: php5-mysql5.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: pear1.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-core5.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

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 autenticar
usuarios 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 que
debemos eliminar el directorio installer (el que usamos para la instalacin), ya que representa un
problema 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 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

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

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
________________________________________________________________________________
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 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?

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

________________________________________________________________________________
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