Configuración de Postfix a través de un relay host autenticado
Figura: cliente, Avatar, gmail
En la figura anterior se observa que el usuario envía correo vía SMTP usando Avatar como servidor de correo local.
Avatar recibirá el mensaje. Si el destinatario es de un dominio externo, y está definido en la lista de dominios a reenviar, no buscará el servidor de correo remoto directamente, sino que por el contrario dirigirá el mensaje al servidor smarthost.
En esta situación nuestro servidor local actuará de cliente SMTP.
En los ejercicios, nuestro servidor smarthost será gmail. Gmail pide autenticación a los usuarios (SASL) y ofrece un canal seguro mediante TLS.
En los siguientes apartados configuraremos Postfix para lograr este objetivo.
Figura: Sistema de archivos
Para tener una visión global de los ficheros a configurar, usa esta figura, destacándose en rojo aquellos que serán objeto de modificaciones.
- Configuración: sigue los pasos indicados en el ejercicio de este apartado Ejercicio: configuración; solución a los casos 3 y 5”).
Sobre SASL y TLS
SASL
- SASL son las siglas de Simple Autenticación and Security Layer, un método para añadir soporte para la autenticación a protocolos basados en la conexión que ha sido estandarizado por la IETF (Internet Engineering Task Force). Se usa en servidores para manejar las peticiones de autenticación de los clientes. Para ello, el protocolo incluye un comando para identificar y autenticar un usuario contra un servidor y para, opcionalmente, negociar la protección de las subsiguientes interacciones del protocolo. Si se negocia su uso, una capa de seguridad es añadida entre el protocolo y la conexión.
- Podemos encontrar información detallada de SASL en la página web https://www.ietf.org/mailman/listinfo/sasl
- A tener en cuenta en la configuración (apartado Ejercicio: configuración de ficheros; solución a los casos 3 y 5”_):
- Para que nuestro servidor Postfix reenvíe el correo a través de gmail debe autenticarse ante él. Gmail usa autenticación, y en concreto emplea los métodos PLAIN o LOGIN (Puedes verificarlo configurando una cuenta de gmail en Evolution y en la pestaña de “Envío de correo” pulsar el botón de “Comprobar tipos soportados”)
- Estos métodos transmiten identificaciones y claves en forma prácticamente plana, es necesario emplear bien una conexión sobre SSL o bien TLS que es otra extensión a SMTP.
- Importante: Debes comprobar que tienes instalado el paquete
libsasl2-modules
, el cual contiene la librería con los diferentes métodos de autenticación (nonymous, crammd5, digest5, md5, login, plain,etc). Estas librerías deben estar instaladas en/usr/lib/sasl2
. -
Interesante: La utilidad
saslfinger
te permitirá verificar la configuración de Postfix y SASL. Descarga:wget http://postfix.state-of-mind.de/patrick.koetter/saslfinger/saslfinger-1.0.3.tar.gz
.Se muestra un ejemplo de la salidad del comando
saslfinger -c
(se recomienda su lectura y prestar atención a las librerías en/usr/lib/sasl2
):saslfinger - postfix Cyrus sasl configuration Tue Apr 20 22:01:12 BST 2010 version: 1.0.2 mode: client-side SMTP AUTH -- basics -- Postfix: 2.5.5 System: Debian GNU/Linux 5.0 \n \l -- smtp is linked to -- libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0xb7d98000) -- active SMTP AUTH and TLS parameters for smtp -- relayhost = [smtp.gmail.com]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl/passwd smtp_sasl_security_options = noanonymous smtp_tls_CAfile = /etc/postfix/cacert.pem smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtp_use_tls = yes -- listing of /usr/lib/sasl2 -- total 680 drwxr-xr-x 2 root root 4096 2010-04-20 18:51 . drwxr-xr-x 42 root root 12288 2010-04-20 18:39 .. -rw-r--r-- 1 root root 13476 2009-05-24 11:20 libanonymous.a -rw-r--r-- 1 root root 855 2009-05-24 11:20 libanonymous.la -rw-r--r-- 1 root root 13016 2009-05-24 11:20 libanonymous.so -rw-r--r-- 1 root root 13016 2009-05-24 11:20 libanonymous.so.2 -rw-r--r-- 1 root root 13016 2009-05-24 11:20 libanonymous.so.2.0.22 -rw-r--r-- 1 root root 15814 2009-05-24 11:20 libcrammd5.a -rw-r--r-- 1 root root 841 2009-05-24 11:20 libcrammd5.la -rw-r--r-- 1 root root 15352 2009-05-24 11:20 libcrammd5.so -rw-r--r-- 1 root root 15352 2009-05-24 11:20 libcrammd5.so.2 -rw-r--r-- 1 root root 15352 2009-05-24 11:20 libcrammd5.so.2.0.22 -rw-r--r-- 1 root root 46420 2009-05-24 11:20 libdigestmd5.a -rw-r--r-- 1 root root 864 2009-05-24 11:20 libdigestmd5.la -rw-r--r-- 1 root root 43500 2009-05-24 11:20 libdigestmd5.so -rw-r--r-- 1 root root 43500 2009-05-24 11:20 libdigestmd5.so.2 -rw-r--r-- 1 root root 43500 2009-05-24 11:20 libdigestmd5.so.2.0.22 -rw-r--r-- 1 root root 13650 2009-05-24 11:20 liblogin.a -rw-r--r-- 1 root root 835 2009-05-24 11:20 liblogin.la -rw-r--r-- 1 root root 13460 2009-05-24 11:20 liblogin.so -rw-r--r-- 1 root root 13460 2009-05-24 11:20 liblogin.so.2 -rw-r--r-- 1 root root 13460 2009-05-24 11:20 liblogin.so.2.0.22 -rw-r--r-- 1 root root 29076 2009-05-24 11:20 libntlm.a -rw-r--r-- 1 root root 829 2009-05-24 11:20 libntlm.la -rw-r--r-- 1 root root 28532 2009-05-24 11:20 libntlm.so -rw-r--r-- 1 root root 28532 2009-05-24 11:20 libntlm.so.2 -rw-r--r-- 1 root root 28532 2009-05-24 11:20 libntlm.so.2.0.22 -rw-r--r-- 1 root root 13970 2009-05-24 11:20 libplain.a -rw-r--r-- 1 root root 835 2009-05-24 11:20 libplain.la -rw-r--r-- 1 root root 14036 2009-05-24 11:20 libplain.so -rw-r--r-- 1 root root 14036 2009-05-24 11:20 libplain.so.2 -rw-r--r-- 1 root root 14036 2009-05-24 11:20 libplain.so.2.0.22 -rw-r--r-- 1 root root 21710 2009-05-24 11:20 libsasldb.a -rw-r--r-- 1 root root 866 2009-05-24 11:20 libsasldb.la -rw-r--r-- 1 root root 18080 2009-05-24 11:20 libsasldb.so -rw-r--r-- 1 root root 18080 2009-05-24 11:20 libsasldb.so.2 -rw-r--r-- 1 root root 18080 2009-05-24 11:20 libsasldb.so.2.0.22 -- permissions for /etc/postfix/sasl/passwd -- -rw------- 1 root root 51 2010-04-19 09:29 /etc/postfix/sasl/passwd -- permissions for /etc/postfix/sasl/passwd.db -- -rw-r--r-- 1 root root 12288 2010-04-19 09:33 /etc/postfix/sasl/passwd.db /etc/postfix/sasl/passwd.db is up to date. -- active services in /etc/postfix/master.cf -- # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) smtp inet n - - - - smtpd pickup fifo n - - 60 1 pickup cleanup unix n - - - 0 cleanup qmgr fifo n - n 300 1 qmgr tlsmgr unix - - - 1000? 1 tlsmgr rewrite unix - - - - - trivial-rewrite bounce unix - - - - 0 bounce defer unix - - - - 0 bounce trace unix - - - - 0 bounce verify unix - - - - 1 verify flush unix n - - 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - - - - smtp relay unix - - - - - smtp -o smtp_fallback_relay= showq unix n - - - - showq error unix - - - - - error retry unix - - - - - error discard unix - - - - - discard local unix - n n - - local virtual unix - n n - - virtual lmtp unix - - - - - lmtp anvil unix - - - - 1 anvil scache unix - - - - 1 scache maildrop unix - n n - - pipe flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient} uucp unix - n n - - pipeflags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient) ifmail unix - n n - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) bsmtp unix - n n - - pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient scalemail-backend unix - n n - 2 pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension} mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user} -- mechanisms on [smtp.gmail.com]:587 -- -- end of saslfinger output --
TLS
- Por defecto, toda comunicación en Internet se hace sin ningún tipo de encriptación y sin una autenticación fiable. Esto significa que cualquiera con acceso físico a la línea de datos por la que viaja un paquete puede espiar dicha comunicación. Aún peor, es posible redirigir o alterar esa comunicación para que la información que se desea mandar se pierda y nadie se dé cuenta.
- De cara a solventar estos problemas de seguridad, Netscape, Inc. introdujo el protocolo SSL (Secure Sockets Layer), que ha ido evolucionando en el protocolo estandarizado TLS (Transportation Layer Security). Ofrece tanto encriptación de la comunicación (frenando las escuchas) como autenticación fuerte (asegurando que ambas partes de una comunicación son correctamente identificadas y que la comunicación no puede ser alterada).
- Postfix/TLS no implementa el protocolo TLS por sí mismo, sino que usa el paquete OpenSSL para esta tarea. En la página de OpenSSL, www.openssl.org, pueden encontrarse enlaces a documentación que profundiza en el protocolo y sus características.
- Comprueba con
dpkg -l openssl
que tienes instalado el paquete.