Integracion Postfix y Active Directory

Integración de Postfix y Active Directory, v0.1

Autor: Eduardo González de la Herrán (endergonz AT terra.es)

Última Modificación: 4 de Febrero de 2005

-------------- version en desarrollo ---------------------

NOTA temporal: Este documento está aún en desarrollo. Se irán colgando las sucesivas versiones preliminares en el mismo sitio web (http://ender.txipinet.com/linux/). La versión final se colgará en otro sitio, ya que ender.txipinet.com es mi PC y de vez en cuando lo apago ;-).

Falta:

	- Descripción detallada del proceso y las pruebas: comando a comando.
	- Añadir funcionalidad de introducir comentarios al documento.
	- Dar formato.

Log de cambios:

---------------------------------------------------------

0) Licencia:

Integración de Postfix y Active Directory.

Copyright  2005. Eduardo González de la Herrán Copyleft 2005. Eduardo González de la Herrán

Se permite la copia, distribución, uso y realización de la obra, siempre y cuando se reconozca la autoría y no se use la obra con fines comerciales --a no ser que se obtenga permiso expreso del autor--. El autor permite distribuir obras derivadas de esta sólo si mantienen la misma licencia que esta obra.

Esta nota no es la licencia completa de la obra sino una traducción de la nota orientativa de la licencia original completa (jurídicamente válida), que puede encontrarse en: http://creativecommons.org/licenses/by-nc-sa/1.0/legalcode

1) Introduccion:

Este howto pretende explicar los pasos necesarios para montar un servidor de correo Postfix que actúa como frontal de un exchange y que, para dar un servicio lo mejor posible, se comunica con él tanto para autenticar los usuarios que pretenden enviar a través de ese servidor como para comprobar que los correos que llegan desde internet van para cuentas que existen (y no mandar por mandar todos los correos al exchange).

Además se intentará implementar todo centrándonos en la seguridad de la plataforma.

Muchas empresas con una infraestructura de correo basada en exchange se han dado cuenta de que el exchange como backend (almacén de buzones) es una solución buena pero como MTA deja bastante que desear. Por esta razón, o como primer paso para ir migrando la plataforma a una solución libre, puede resultarnos bastante útil utilizar como MTA (tanto de entrada como de salida de correos) un Postfix configurado para que interactúe con el exchange durante el proceso de recepción y envío de mails.

Además, en este frontal podremos instalar también una solución de Antispam y Antivirus (por ejemplo amavisd-new + clamav y spamassassin).

Para entender este documento hay que conocer los siguientes conceptos relacionados con el correo: - MX - Relay - SMTP Auth - Aliases y consulta de cuentas - Dominios Locales

El servidor que vamos a montar, para que sirva de solución global va a ser un servidor tanto de entrada como de salida de correos. ¿Qué entiendo yo como entrada y salida de correos?

Cuando digo "entrada" de correos me refiero a que desde cualquier parte de internet se va a aceptar un correo que vaya para un dominio determinado, o sea, que el MTA en cuestión es MX para ese dominio y acepta todos los correos para ese dominio. Por ejemplo vamos a utilizar el dominio "dominiolocal.com".

Con "salida" de correos me refiero a que a unos determinados usuarios (ya diferenciemos por IP o por nombre de usuario) vamos a permitir el envío de correos (relay) a cualquier destino.

Normalmente un MTA no tiene por qué actuar de las 2 maneras. Dependiendo de la capacidad de la máquina, el número de usuarios a los que se tiene que dar servicio, la carga y cantidad de correos esperados, muchas veces configuramos nuestro MTA para que actúe como MX de una serie de dominios (frontal de entrada de correos de internet) o para que haga de MTA para los clientes (frontal de salida de correos).

Los ISPs, generalmente, disponen de servidores dedicados a recibir los correos desde internet y procesarlos (filtros antispam, antivirus, expresiones regulares, etc.) y servidores que dan el servicio de relay a sus clientes.

Cuando configuramos mal el servidor de correo de salida y permitimos el envío a todo el mundo a cualquier destino nos convertimos en un "open relay" y la liamos parda.

2) ¿A quien le puede interesar este documento?

Este documento va destinado a administradores de sistemas que conozcan bien la teoría del servicio de correo, hayan trabajado algo con postfix y tengan que integrarlo con el exchange.

3) Objetivo

El objetivo final va a ser configurar contra el directorio activo los siguientes apartados:

A) SMTP-Auth: SMTP Auth es el mecanismo de autenticación SMTP. Se utiliza cuando queremos dar servicio de relay a unos clientes determinados y estos, para poder enviar un correo, deben dar al servidor su nombre de usuario y contraseña. Es una de las formas de implementar, como hemos explicado antes, un MTA de "salida" de correos. La otra forma es permitir el envío a IPs determinadas (poco útil en muchos casos).

Lo que vamos a conseguir es autenticar los usuarios contra el Directorio Activo (Active Directory) de Windows 2000/2003 Server.

B) Comprobación de la cuenta de destino para los dominios locales: Cuando nuestro servidor de correo es el servidor final (MX) para un dominio en concreto, lo ideal es comprobar, en mitad de la conexión con el MTA que nos enchufa el correo, que la cuenta de destino del mail es una cuenta válida.

Esto quiere decir que cuando el MTA origen le manda a nuestro MTA: rcpt to: pepito@dominiolocal.com

Se comprueba que la cuenta pepito@dominiolocal.com exista en nuestra organización. La opción fácil en cambio, es permitir a nuestro postfix que trague todo el correo para dominiolocal.com y se lo envíe al exchange; posteriormente el exchange ya hará reject de los mails "de mentira".

Esta opción "fácil" es muy desaconsejable, ya que la mayoría de los mails de este tipo son SPAM cuya dirección de origen no existe, y cuando queremos reencaminarlo al origen, el MTA de destino (que estará bien configurado ;-) ) nos va a decir que ni por el forro, por lo que acabaremos dejando ese mensaje y todos los similares en un INBOX del estilo de postmaster@dominiolocal.com.

Por esta razón es imprescindible, si tenemos un Postfix como frontal de un exchange, que consigamos autenticar las cuentas de destino de los mails durante las conexiones en los comandos "RCPT TO".

4) Software Necesario y descripción del proceso.

Para llevar a cabo nuestras tareas necesitaremos tener lo siguiente instalado (a revisar porque lo escribo de memoria):

- Postfix con soporte para ldap (recomendado también tls)
- saslauthd
- Winbindd (Un paquete de la suite Samba).
- Modulo smtp en pam.d
- Kerberos (para incluir seguridad en la comunicación con el Active Directory, opcional).

El proceso que seguiremos va a ser:

- Intentar configurar el winbindd para que se comunique con el directorio activo. Para eso intentaremos meter la máquina en el dominio y realizar consultas directas al directorio activo. Este apartado es opcional, pero así te aseguras de que la parte del winbind es correcta.

- Posteriormente trataremos de crear el módulo de autenticación SMTP contra el directorio activo, tirando de las librerías de winbind y creando un modulo en pam.d que será llamado desde saslauthd. Este es el paso más difícil.

- Si todo ha ido bien, configuraremos la comprobación de los aliases para los dominios locales contra el active directory. Esto simplemente será configurando correctamente la parte de postfix-ldap. Para esto debemos conocer muy bien como está estructurado nuestro directorio activo: BASEDN, Usuario para hacer bind, etc... Es muy útil el programa ADSIEdit que viene en las Support Tools de Windows 2000 Server. Este programa te permite navegar el directorio con la estructura de LDAP.

5) Descripción detallada: Configuración Winbindd

6) Descripción detallada: Configuración SMTP-Auth contra directorio Activo

7) Descripción detallada: Configuración de la comprobación de los Aliases contra el directorio Activo

8) Kerberos

9) Agradecimientos:

- Pablo Garaizar Sagarminaga (http://www.txipinet.com), por su amistad y ayuda incondicional en "todo" tipo de situaciones ;-)

- Iker Sagasti (Irontec, S.A) (http://www.irontec.com), por el cursazo sobre servidores de correo que se curró el verano pasado.

- Arantza Serrano (Euskaltel, S.A) y Javi Montes (Nextel, S.A), por enseñarme tantas cosas sobre el funcionamiento del correo.

- A los usuarios de la lista de correo postfix-es, y en especial, como no, a Simon Mudd, por resolver todas las dudas y problemas de forma desinteresada.

- A toda la peña del e-ghost (http://eghost.deusto.es)