Hola Jaume On Wednesday 16 October 2002 09:23, jaume wrote: > Alguien me puede decir algun documento sobre la autentificacion smtp en > exim? > Estoy un poco liado de conceptos y necesitaria aclaraci�n por favor. > Lo �nico que quiero es que al enviar una red con outlooks express a trav�s > de exim en una Woody tengan que marcar por fuerza "mi servidor requiere > autentificacion", y que sea un usuario v�lido del sistema.(shadow passwd). > Tengo el exim instalado a partir del apt-get y configurado con las > opciones del eximconf, pero no se si tengo que bajarme los codigos fuentes > y compilarlo con otro soporte, ...o ke. > Ayudadme por favor. > > Gracias.
La documentaci�n oficial la puedes encontrar en: http://www.exim.org/exim-html-3.30/doc/html/spec_toc.html#TOC763 ( creo que incluso el spec viene en la distribuci�n de exim ) Tienes todo un cap�tulo dedicado a eso, por si acaso y de paso te pego un documentillo de cocina interna para incomporar smpt autentiticado a un exim con LDAP en multidominio s�lo para algunos dominios --------------------------------------------------------------------------------------------------- ----------------------------------------- Paso 1: Compilaci�n de exim con soporte para smtp autenticado: Local/Makefile AUTH_PLAINTEXT=yes Paso 2: Habilitar el uso de smtp autenticado por parte de los clientes: desde cualquier direcci�n:host_auth_accept_relay = * s�lo desde las conexiones con relay permitido: #puedes utilizar los formatos habituales de exim, o incluso poner una sola #direcci�n de red con m�scaras host_auth_accept_relay=/opt/exim/etc/relay.conf generar una macro LDAP de este tipo: LDAP_FILTER_SMTPAUTH=(&([EMAIL PROTECTED])(userpassword=$3)) Suponiendo que el mail del usuario de dominio.com contiene la uid del usuario y el dominio de no ser asi tendr�as algo as�: LDAP_FILTER_SMTPAUTH=(&(&([EMAIL PROTECTED])(uid=$2))(userpassword=$3)) suponiendo que el atributo userpassword contiene el password del usuario en texto plano. en configuraciones m�s trabajadas se podr�a atacar un password cifrado con MD5, pero en principio el soporte de SHA en las comparaciones no se obtiene de forma nativa. si unimos esto a que el atributo userpassword suele estar protegido de las miradas curiosas, con lo que la b�squeda LDAP se debe hacer con un usario con permisos suficientes para retirar el valor del atributo. lo puedes almacenar en otra Macro CREDENTIALS=user="cn=Directory Manager" pass=password Evidentemente no deber�a ser el directory manager qui�n haga la b�squeda, lo mejor, como me comentaba ernesto ser�a algo as� como utilizar al propio usuario para validar su password, te cuento: imagina que todos los usuarios de dominio.com siguen la misma norma para generar su DN, por ejemplo la uid que env�an para autenticar en el correo seguido de su posici�n en el �rbol: uid=$uid_de_autentificaci�n,ou=dominio,o=bt Como autentico al usuario validando la password.... pues creando esto en la macro credentias: CREDENTIALS_SECURE= user="uid=$2,ou=dominio,o=bt" pass=$3 si utilizas este segundo m�todo te ahorras poner el password en el filtro: LDAP_FILTER_SMTPAUTH=([EMAIL PROTECTED]) o LDAP_FILTER_SMTPAUTH=(&(&([EMAIL PROTECTED])(uid=$2)) si la uid que utilizan para autententicar no es la misma, o no forma parte del dn..... pues tendr�as que ver la manera de hacerte con el dn del usuario, puede que con una b�squeda ldap extra Evitas as� configurar un usuario con privilegios sobre el LDAP en exim y el sistema de cifrado de las passwords es totalmente transparente para exim.... ( �qu� sistema de smtp autenticado da m�s que esto? ) smtp_auth_driver: #opciones especificas de autentificaci�n mediante password en claro #usuario password_codificada_en_base64 driver = plaintext public_name = PLAIN #parametros que el servidor solicita al cliente antes de expandir la condicion #por defecto usuario y password, cuando las tiene...., parece que a outlook #solo le gusta este formato concreto server_prompts = Username : Password #busqueda LDAP y validaci�n server_condition = "${lookup ldap {CREDENTIALS_SECURE \ ldap:///LDAP_BASE?LDAP_ATTRIBUTES?sub?LDAP_FILTER_SMTPAUTH}{true} fail}" #paso del parametro de identificacion en forma de variable al resto #de elementos de exim, por ejemplo para a�adir un campo en las cabeceras server_set_id = $2 tu server condition podr�a hacer usar la funci�n crytpeq, aunque la extracci�n de los passwords del archivo de shadow te supondr� darle lectura al usuario que ejecuta exim, tendr�as que obtener tu el texto cifrado, y bla bla bla, pero bueno, tampoco es : ------------------------------------------------------------------------------------------------------ crytpeq {<string1>}{<string2>} This condition is included in the Exim binary if it is built to support any authentication mechanisms (see chapter 35). Otherwise, it is necessary to define SUPPORT_CRYPTEQ in `Local/Makefile' to get crypteq included in the binary. The crypteq condition has two arguments. The first is encrypted and compared against the second, which is already encrypted. The second string may be in the LDAP form for storing encrypted strings, which starts with the encryption type in curly brackets, followed by the data. For example: {md5}CY9rzUYh03PK3k6DJie09g== If such a string appears directly in an expansion, the curly brackets have to be quoted, because they are part of the expansion syntax. For example: ${if crypteq {test}{\{md5\}CY9rzUYh03PK3k6DJie09g==}{yes}{no}} Two encryption types are currently supported: * md5 first computes the MD5 digest of the string, and then expresses this as printable characters by means of base64 encoding. * crypt calls the crypt() function as used for encrypting login passwords. If the second string does not begin with `{' it is assumed to be encrypted with crypt(), since such strings cannot begin with `{'. Typically this will be a field from a password file. -------------------------------------------------------------------------------------------------- PASSWORDCIFRADO="macro realizada con extract, utilizas $2 como patron de reconocimiento de l�nea y extraes con los : como separador de campo" #(recuerda que las macros las defines en main, pueden ir en la misma l�nea #pero se hacen imposibles de leer" server_condition = "${if crypteq {$3}{PASSWORDCIFRADA}{yes}{no}" La informaci�n de como trabajar con extract ,la tienes tambi�n en la documentaci�n: http://www.exim.org/exim-html-3.30/doc/html/spec_toc.html#TOC179 Puede que haya un sistema mejor para comparar passwords del sistema pero lo desconozco, como consejo yo instalar�a un openldap sin mucha floritura y lo atacar�a para comparar passwords, expones menos la seguridad del sistema y al mismo tiempo te ahorras la "MACRO" de extracci�n de passwords cifrados ( aunque le puedas exportar usuario:password a un archivo y extraer de ah� que es bastante simple.... ) Ante cualquier duda de todos modos ya sabes donde estamos Espero que algo de esto te sirva de ayuda, un saludo Victor

