[LUG.ro] Consulta contacto LDAP

Felipe Andrés Pino Ramirez lugro@lugro.org.ar
Tue, 26 Dec 2006 23:26:18 -0300


------=_Part_85227_24937364.1167186378467
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hola lista.
Estoy trabajando en un proyecto que involucra LDAP y posftix, y en uno de
los post anteriores alguien habla sobre lo que necesito saber,  copio el
texto de dicho mensaje:
Asunto: problema de loopback en postfix + ldap + mailHost
Fecha : Mon, 31 Jul 2006 19:50:33 -0300
URL : http://www.lugro.org.ar/pipermail/lugro/2006-July/016876.html
###########################################################################=
#

Buenas, consultando un problemilla que me viene volviendo loco.

Detalles:
---------

Tengo 3 servidores postfix 2.0 filtrando el correo de la mano de
amavis, clamav y spamassassin con el paquete courier-maildrop,
courier-imap, courier-pop, courier-authdaemon.

Llamemosle gauss, euler y pi. Estos servidores son de la empresa y
dominio example.com. Estos servidores atienden las peticiones de los
usuarios unix:passwd ( con relay local ) y cuando no encuentran como
usuarios locales los recipientes, se fijan en openldap para encontrar
donde rutear los emails.

El esquema del =E1rbol de ldap es el siguiente:

dc=3Dexample,dc=3Dcom
|
-->ou=3Dmailserver,dc=3Dexample,dc=3Dcom
   |
   -->ou=3Dpi,ou=3Dmailserver,dc=3Dexample,dc=3Dcom
   |  |
   |  -->ou=3Dpeople,ou=3Dpi,ou=3Dmailserver,dc=3Dexample,dc=3Dcom
   |
   |
   -->ou=3Dgauss,ou=3Dmailserver,dc=3Dexample,dc=3Dcom
   |  |
   |  -->ou=3Dpeople,ou=3Dgauss,ou=3Dmailserver,dc=3Dexample,dc=3Dcom
   |
   |
   -->ou=3Deuler,ou=3Dmailserver,dc=3Dexample,dc=3Dcom
     |
     -->ou=3Dpeople,ou=3Deuler,ou=3Dmailserver,dc=3Dexample,dc=3Dcom

En cada people se encuentran el atributo mailHost, mail,
mailLocalAddress los cuales contienen la casilla de email de cada
usuario y mailHost la ip del host que tiene el mailbox del usuario (en
caso de que sea necesario rutear el email).
En ldap estoy utilizando misc.schema y sendmail.schema los cuales me
permiten tener los atributos anteriormente mencionados.

Un diagrama de como se encuentran los servidores:

                                   __ euler
--> internet --> pi --> o -|           |
                                   --- gauss

Con esto quiero decir que dentro del dominio example.com, si
usuario1@euler envia correo a usuario2@euler debe ser tratado con
relay local. Si usuario1@euler envia correo a usuario1@gauss, el email
debe ir directamente a gauss, sin tener que pasar por pi. Si
usuario1@euler envia un email fuera del dominio example.com, el email
deber=E1 ser enviado por smarthost a pi, y pi deber=E1 encargarse de
enviarlo al exterior. Si hay respuesta para el email enviado por
usuario1@euler desde el exterior, pi deber=E1 enviarlo a euler.

Para ello como bien dije, utilizo postfix con ldap que me permite
hacer esto. Peque=F1o detalle olvido mencionar:

Pi es el servidor master ldap y euler y gauss son servidores slaves
ldap. Con lo cual se cargan todos los datos en pi, y pi replica a
euler y gauss. Como ver=E1n en los siguientes archivos de configuraci=F3n
que les adjuntar=E9, este esquema me ha presentado el siguiente
problema:

Cuando envio un email desde un usuario de pi a un usuario de euler,
postfix busca en el ldap, encuentra la ip del host que pertenece al
usuario destino y delivera el mail correctamente. Ahora, si envio un
email desde un usuario local a otro usuario local, noto que postfix
encuentra al otro usuario local en el ldap, y delivera el correo como
si fuera otro host (utilizando la ip p=FAblica del host local, la cual
est=E1 asignada en el ldap). Esto provoca que postfix le ponga un bounce
al email y no llegue.

#cuando amavis reiyecta el email a postfix
Jul 31 19:26:57 pi postfix/smtp[9870]: 8276711FC3: to=3D<batman@example.com=
>,
relay=3D127.0.0.1[ 127.0.0.1], delay=3D19, status=3Dsent (250 2.6.0 Ok,
id=3D09227-03, fr
om MTA([127.0.0.1]:10025): 250 Ok: queued as 0C7B011FC6)
Jul 31 19:26:57 pi postfix/qmgr[9853]: 8276711FC3: removed
#vemos como postfix trata al usuario batman con el atributo mailHost
en lugar de reconocerlo
#como usuario local que =E9s y hacer relay local. Osea, lo busca en el
ldap en lugar de
#encontrarlo en /etc/passwd y reconocerlo como local.
Jul 31 19:26:57 pi postfix/smtp[9874]: 0C7B011FC6: to=3D< batman@example.co=
m>,
relay=3Dnone, delay=3D0, status=3Dbounced (mail for 64.30.80.118 loops back=
 to
myself
)

Bien, dicho todo esto, mi pregunta y soluci=F3n a este problema. Como
puedo lograr que postfix entregue correctamente los emails a los
usuarios locales ?
Se me ocurre que con query_filter podr=EDa utilizar mail y
mailLocalAddress para hacerle distinguir a postfix como tratar el
email.
Ejemplo:
mail=3Duser1@example.com
mailLocalAddress=3D user1@pi.example.com
Si el postfix del servidor pi encuentra que la cuenta
user1@example.com (mail) tiene como
mailLocalAddress=3D user1@pi.example.com, devolver el valor null en la
busqueda, y seg=FAn le=ED en la documentaci=F3n, postfix al obtener null
deber=EDa tratar de hacer relay local.
No estoy seguro y no s=E9 como hacerle distinguir esto con query_filter.
En fin, les adjunto los archivos de configuraci=F3n main.cf, ldap-aliases.c=
f


main.cf :

#####////////////////////////////////////////// p o s t f i x  p r 0 //\
#####################################################///////////////////
#////// a n t i v i r u s -->>>>>>>>>>>>>>>>>>>>>>>>>>>>///////////////

content_filter =3D smtp-amavis:[ 127.0.0.1]:10024

##\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
# c o n t i n u e -->

myorigin =3D /etc/mailname2
smtpd_banner =3D $myhostname ESMTP $mail_name (Debian/GNU)
biff =3D no
append_dot_mydomain =3D no

# Oh!, plz configure me, fucktard h4x0r! ^^
###############################################///////////////////////
#//////////////////////////// n e x t -->

myhostname =3D pi.example.com
alias_maps =3D hash:/etc/aliases, ldap:/etc/postfix/ldap-aliases.cf
alias_database =3D hash:/etc/aliases
myorigin =3D /etc/mailname2
mydestination =3D localhost, example.com
relayhost =3D
relay_domains =3D $mydestination
mynetworks =3D 127.0.0.0/8
mailbox_command =3D /usr/bin/maildrop
home_mailbox =3D Maildir/
mailbox_size_limit =3D 0
recipient_delimiter =3D +
inet_interfaces =3D all
transport_maps =3D ldap:/etc/postfix/ldap-aliases.cf


ldap-aliases.cf:

#/////// m ai l  r ou ti ng /////
#////////////////////////------/
server_host =3D 127.0.0.1
server_port =3D 389
search_base =3D ou=3Dmailserver,dc=3Dexample,dc=3Dcom
query_filter =3D (&(mail=3D%s)(mailLocalAddress=3D%s))
result_attribute =3D mailHost
result_format =3D smtp:[%s]


Espero haber podido dar detalles del problema que tengo. Desde ya les
agradesco su atenci=F3n, me despido expectante por una soluci=F3n,
Emiliano.
######################################################################

Me gustar=EDa poder contactarme con la persona que escribio este mensaje pa=
ra
poder realizarle un par  de consultas, ojala todabia est=E9 enla lista, des=
de
ya gracias y saludos a todos !

------=_Part_85227_24937364.1167186378467
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Hola lista. <br>Estoy trabajando en un proyecto que involucra LDAP y posfti=
x, y en uno de los post anteriores alguien habla sobre lo que necesito sabe=
r,&nbsp; copio el texto de dicho mensaje: <br>Asunto: problema de loopback =
en postfix + ldap + mailHost
<br>Fecha : Mon, 31 Jul 2006 19:50:33 -0300<br>URL : <a href=3D"http://www.=
lugro.org.ar/pipermail/lugro/2006-July/016876.html" target=3D"_blank" oncli=
ck=3D"return top.js.OpenExtLink(window,event,this)">http://www.lugro.org.ar=
/pipermail/lugro/2006-July/016876.html
</a><br>###################################################################=
#########
<br>Buenas, consultando un problemilla que me viene volviendo loco.<br><br>=
Detalles:<br>---------<br><br>Tengo 3 servidores postfix 2.0 filtrando el c=
orreo de la mano de<br>amavis, clamav y spamassassin con el paquete courier=
-maildrop,
<br>courier-imap, courier-pop, courier-authdaemon.<br><br>Llamemosle gauss,=
 euler y pi. Estos servidores son de la empresa y<br>dominio <a href=3D"htt=
p://example.com" target=3D"_blank" onclick=3D"return top.js.OpenExtLink(win=
dow,event,this)">

example.com</a>. Estos servidores atienden las peticiones de los
<br>usuarios unix:passwd ( con relay local ) y cuando no encuentran como<br=
>usuarios locales los recipientes, se fijan en openldap para encontrar<br>d=
onde rutear los emails.<br><br>El esquema del =E1rbol de ldap es el siguien=
te:
<br><br>dc=3Dexample,dc=3Dcom<br>|<br>--&gt;ou=3Dmailserver,dc=3Dexample,dc=
=3Dcom<br>&nbsp;&nbsp; |<br>&nbsp;&nbsp; --&gt;ou=3Dpi,ou=3Dmailserver,dc=
=3Dexample,dc=3Dcom<br>&nbsp;&nbsp; |&nbsp; |<br>&nbsp;&nbsp; |&nbsp; --&gt=
;ou=3Dpeople,ou=3Dpi,ou=3Dmailserver,dc=3Dexample,dc=3Dcom<br>&nbsp;&nbsp; =
|<br>&nbsp;&nbsp; |<br>


&nbsp;&nbsp; --&gt;ou=3Dgauss,ou=3Dmailserver,dc=3Dexample,dc=3Dcom<br>&nbs=
p;&nbsp; |&nbsp; |<br>&nbsp;&nbsp; |&nbsp; --&gt;ou=3Dpeople,ou=3Dgauss,ou=
=3Dmailserver,dc=3Dexample,dc=3Dcom<br>&nbsp;&nbsp; |<br>&nbsp;&nbsp; |<br>=
&nbsp;&nbsp; --&gt;ou=3Deuler,ou=3Dmailserver,dc=3Dexample,dc=3Dcom<br>&nbs=
p;&nbsp;&nbsp;&nbsp; |<br>&nbsp;&nbsp;&nbsp;&nbsp; --&gt;ou=3Dpeople,ou=3De=
uler,ou=3Dmailserver,dc=3Dexample,dc=3Dcom
<br><br>En cada people se encuentran el atributo mailHost, mail,<br>mailLoc=
alAddress los cuales contienen la casilla de email de cada<br>usuario y mai=
lHost la ip del host que tiene el mailbox del usuario (en<br>caso de que se=
a necesario rutear el email).
<br>En ldap estoy utilizando misc.schema y sendmail.schema los cuales me<br=
>permiten tener los atributos anteriormente mencionados.<br><br>Un diagrama=
 de como se encuentran los servidores:<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp; __ euler
<br>--&gt; internet --&gt; pi --&gt; o -|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp; |<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp; --- gauss<br><br>Con esto quiero decir que dentro del dominio <=
a href=3D"http://example.com" target=3D"_blank" onclick=3D"return top.js.Op=
enExtLink(window,event,this)">

example.com</a>, si<br>usuario1@euler envia correo a=20
usuario2@euler debe ser tratado con<br>relay local. Si usuario1@euler envia=
 correo a usuario1@gauss, el email<br>debe ir directamente a gauss, sin ten=
er que pasar por pi. Si<br>usuario1@euler envia un email fuera del dominio=
=20
<a href=3D"http://example.com" target=3D"_blank" onclick=3D"return top.js.O=
penExtLink(window,event,this)">example.com</a>, el email<br>deber=E1 ser en=
viado por smarthost a pi, y pi deber=E1 encargarse de<br>enviarlo al exteri=
or. Si hay respuesta para el email enviado por
<br>usuario1@euler desde el exterior, pi deber=E1 enviarlo a euler.
<br><br>Para ello como bien dije, utilizo postfix con ldap que me permite<b=
r>hacer esto. Peque=F1o detalle olvido mencionar:<br><br>Pi es el servidor =
master ldap y euler y gauss son servidores slaves<br>ldap. Con lo cual se c=
argan todos los datos en pi, y pi replica a
<br>euler y gauss. Como ver=E1n en los siguientes archivos de configuraci=
=F3n<br>que les adjuntar=E9, este esquema me ha presentado el siguiente<br>=
problema:<br><br>Cuando envio un email desde un usuario de pi a un usuario =
de euler,
<br>postfix busca en el ldap, encuentra la ip del host que pertenece al<br>=
usuario destino y delivera el mail correctamente. Ahora, si envio un<br>ema=
il desde un usuario local a otro usuario local, noto que postfix<br>encuent=
ra al otro usuario local en el ldap, y delivera el correo como
<br>si fuera otro host (utilizando la ip p=FAblica del host local, la cual<=
br>est=E1 asignada en el ldap). Esto provoca que postfix le ponga un bounce=
<br>al email y no llegue.<br><br>#cuando amavis reiyecta el email a postfix
<br>Jul 31 19:26:57 pi postfix/smtp[9870]: 8276711FC3: to=3D&lt;<a href=3D"=
mailto:batman@example.com" target=3D"_blank" onclick=3D"return top.js.OpenE=
xtLink(window,event,this)">batman@example.com</a>&gt;,<br>relay=3D127.0.0.1=
[<a href=3D"http://127.0.0.1" target=3D"_blank" onclick=3D"return top.js.Op=
enExtLink(window,event,this)">

127.0.0.1</a>], delay=3D19, status=3Dsent (250 2.6.0 Ok, id=3D09227-03, fr
<br>om MTA([<a href=3D"http://127.0.0.1" target=3D"_blank" onclick=3D"retur=
n top.js.OpenExtLink(window,event,this)">127.0.0.1</a>]:10025): 250 Ok: que=
ued as 0C7B011FC6)<br>Jul 31 19:26:57 pi postfix/qmgr[9853]: 8276711FC3: re=
moved
<br>#vemos como postfix trata al usuario batman con el atributo mailHost
<br>en lugar de reconocerlo<br>#como usuario local que =E9s y hacer relay l=
ocal. Osea, lo busca en el<br>ldap en lugar de<br>#encontrarlo en /etc/pass=
wd y reconocerlo como local.<br>Jul 31 19:26:57 pi postfix/smtp[9874]: 0C7B=
011FC6: to=3D&lt;
<a href=3D"mailto:batman@example.com" target=3D"_blank" onclick=3D"return t=
op.js.OpenExtLink(window,event,this)">batman@example.com</a>&gt;,<br>relay=
=3Dnone, delay=3D0, status=3Dbounced (mail for <a href=3D"http://64.30.80.1=
18" target=3D"_blank" onclick=3D"return top.js.OpenExtLink(window,event,thi=
s)">

64.30.80.118</a> loops back to myself<br>)<br><br>Bien, dicho todo esto, mi=
 pregunta y soluci=F3n a este problema. Como
<br>puedo lograr que postfix entregue correctamente los emails a los<br>usu=
arios locales ?<br>Se me ocurre que con query_filter podr=EDa utilizar mail=
 y<br>mailLocalAddress para hacerle distinguir a postfix como tratar el<br>


email.<br>Ejemplo:<br>mail=3D<a href=3D"mailto:user1@example.com" target=3D=
"_blank" onclick=3D"return top.js.OpenExtLink(window,event,this)">user1@exa=
mple.com</a><br>mailLocalAddress=3D<a href=3D"mailto:user1@pi.example.com" =
target=3D"_blank" onclick=3D"return top.js.OpenExtLink(window,event,this)">

user1@pi.example.com</a><br>Si el postfix del servidor pi encuentra que la =
cuenta
<br><a href=3D"mailto:user1@example.com" target=3D"_blank" onclick=3D"retur=
n top.js.OpenExtLink(window,event,this)">user1@example.com</a> (mail) tiene=
 como<br>mailLocalAddress=3D<a href=3D"mailto:user1@pi.example.com" target=
=3D"_blank" onclick=3D"return top.js.OpenExtLink(window,event,this)">

user1@pi.example.com</a>, devolver el valor null en la<br>busqueda, y seg=
=FAn le=ED en la documentaci=F3n, postfix al obtener null
<br>deber=EDa tratar de hacer relay local.<br>No estoy seguro y no s=E9 com=
o hacerle distinguir esto con query_filter.<br>En fin, les adjunto los arch=
ivos de configuraci=F3n <a href=3D"http://main.cf" target=3D"_blank" onclic=
k=3D"return top.js.OpenExtLink(window,event,this)">

main.cf</a>, <a href=3D"http://ldap-aliases.cf" target=3D"_blank" onclick=
=3D"return top.js.OpenExtLink(window,event,this)">
ldap-aliases.cf</a><br><br><br><a href=3D"http://main.cf" target=3D"_blank"=
 onclick=3D"return top.js.OpenExtLink(window,event,this)">main.cf</a> :<br>=
<br>#####////////////////////////////////////////// p o s t f i x&nbsp; p r=
 0 //\
<br>#####################################################//////////////////=
/
<br>#////// a n t i v i r u s --&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt=
;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;//////=
/////////<br><br>content_filter =3D smtp-amavis:[<a href=3D"http://127.0.0.=
1" target=3D"_blank" onclick=3D"return top.js.OpenExtLink(window,event,this=
)">


127.0.0.1</a>]:10024<br><br>##\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\<br=
># c o n t i n u e --&gt;<br><br>myorigin =3D /etc/mailname2<br>smtpd_banne=
r =3D $myhostname ESMTP $mail_name (Debian/GNU)<br>biff =3D no<br>append_do=
t_mydomain =3D no
<br><br># Oh!, plz configure me, fucktard h4x0r! ^^<br>####################=
###########################///////////////////////<br>#////////////////////=
//////// n e x t --&gt;<br><br>myhostname =3D <a href=3D"http://pi.example.=
com" target=3D"_blank" onclick=3D"return top.js.OpenExtLink(window,event,th=
is)">


pi.example.com</a><br>alias_maps =3D hash:/etc/aliases, ldap:/etc/postfix/l=
dap-<a href=3D"http://aliases.cf" target=3D"_blank" onclick=3D"return top.j=
s.OpenExtLink(window,event,this)">aliases.cf</a><br>alias_database =3D hash=
:/etc/aliases
<br>myorigin =3D /etc/mailname2<br>mydestination =3D localhost, <a href=3D"=
http://example.com" target=3D"_blank" onclick=3D"return top.js.OpenExtLink(=
window,event,this)">
example.com</a><br>relayhost =3D<br>relay_domains =3D $mydestination<br>myn=
etworks =3D <a href=3D"http://127.0.0.0/8" target=3D"_blank" onclick=3D"ret=
urn top.js.OpenExtLink(window,event,this)">127.0.0.0/8</a><br>mailbox_comma=
nd =3D /usr/bin/maildrop
<br>home_mailbox =3D Maildir/<br>mailbox_size_limit =3D 0<br>
recipient_delimiter =3D +<br>inet_interfaces =3D all<br>transport_maps =3D =
ldap:/etc/postfix/ldap-<a href=3D"http://aliases.cf" target=3D"_blank" oncl=
ick=3D"return top.js.OpenExtLink(window,event,this)">aliases.cf</a><br><br>=
<br><a href=3D"http://ldap-aliases.cf" target=3D"_blank" onclick=3D"return =
top.js.OpenExtLink(window,event,this)">

ldap-aliases.cf</a>:<br><br>#/////// m ai l&nbsp; r ou ti ng /////
<br>#////////////////////////------/<br>server_host =3D <a href=3D"http://1=
27.0.0.1" target=3D"_blank" onclick=3D"return top.js.OpenExtLink(window,eve=
nt,this)">127.0.0.1</a><br>server_port =3D 389<br>search_base =3D ou=3Dmail=
server,dc=3Dexample,dc=3Dcom
<br>query_filter =3D (&amp;(mail=3D%s)(mailLocalAddress=3D%s))<br>
result_attribute =3D mailHost<br>result_format =3D smtp:[%s]<br><br><br>Esp=
ero haber podido dar detalles del problema que tengo. Desde ya les<br>agrad=
esco su atenci=F3n, me despido expectante por una soluci=F3n,<br>Emiliano.<=
br>

######################################################################
<br><br>Me gustar=EDa poder contactarme con la persona que escribio este me=
nsaje para poder realizarle un par&nbsp; de consultas, ojala todabia est=E9=
 enla lista, desde ya gracias y saludos a todos ! <br>



------=_Part_85227_24937364.1167186378467--