Gracias por la documentación, pero no hay una manera de que pille los paswords de los usuarios del sistema? sin ldap,...
> 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 > > > -- > To UNSUBSCRIBE, email to [EMAIL PROTECTED] > with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED] > > >