= Postfix: Dinamización del listado de redes locales = == Descripción == Postfix define cuales son las redes locales que se conectan a él a través de la variable '''mynetworks''', esta variable contiene una lista de IPs y/o subredes para definir que MTAs o MUAs son considerados de la misma red (de confianza) para el servidor Postfix que administramos. == El problema == Si uno de los MUAs o MTAs que se conectan a nuestro MTA lo hace desde una IP dinámica no podemos poner su '''hostname''' en la lista de IPs de '''mynetworks'''. == En que afecta == Los '''hosts''' que se consideran locales (definidos en '''mynetworks''') tienen un trato especial, por ejemplo, si se hace un control de acceso por RBLs y el '''host''' de confianza que se nos quiere conectar pertenece a un rango considerado peligroso gracias a que esa IP pertenece a un rango de confianza la restricción de la RBL no le afectará. Para que esto pase el fichero de configuración '''main.cf''' de postfix contendría algo así: {{{ ... mynetworks = 1.1.1.1 ... smtpd_client_restrictions = permit_mynetworks, reject_rbl_client dnsbl.njabl.org, reject_rbl_client cbl.abuseat.org, reject_rbl_client bl.spamcop.net, reject_rbl_client dnsbl.sorbs.net, reject_rbl_client sbl-xbl.spamhaus.org ... }}} == La solución == Como otros muchos comandos de Postfix podemos hacer que el contenido de la variable '''mynetworks''' sea dinámico, o sea, que se pregunte su contenido directamente contra un servidor de tablas TCP. Este servidor lo hemos programado a medida para que a través de un fichero de configuración se obtenga la lista de IPs y/o '''hostnames''' que queremos considerar como própios. El hecho de soportar '''hostnames''' nos permite que estos se resuelvan contra más de una IP o con una IP dinámica. Estas funcionlidades extendien el comportamiento de la variable '''mynetworks'''. == Consideración == Para cada connexión que reciba Postfix el servidor de tablas TCP para '''mynetworks''' recibirá una petición de resolución, esto no significa una nueva conexión ya que a menudo se aprovechará otros sockets abiertos para hacer las peticiones. == Ejemplo del protocolo de tabla TCP para mynetworks == {{{ postfix > servidor : get hostname_fqdn_no_local servidor > postfix : 500 este hostname no es local ... postfix > servidor : get hostname_fqdn_local servidor > postfix : 200 este hostname es local }}} == Código fuente == El código fuente del servicio de tablas '''mynetorks''' esta junto al resto de [source:src/trunk/backend código del servidor de backend].