| | 1 | |
| | 2 | = Postfix: Dinamización del listado de redes locales = |
| | 3 | |
| | 4 | == Descripción == |
| | 5 | |
| | 6 | 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. |
| | 7 | |
| | 8 | == El problema == |
| | 9 | |
| | 10 | 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'''. |
| | 11 | |
| | 12 | == En que afecta == |
| | 13 | |
| | 14 | 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í: |
| | 15 | |
| | 16 | {{{ |
| | 17 | ... |
| | 18 | mynetworks = 1.1.1.1 |
| | 19 | ... |
| | 20 | smtpd_client_restrictions = |
| | 21 | permit_mynetworks, |
| | 22 | reject_rbl_client dnsbl.njabl.org, |
| | 23 | reject_rbl_client cbl.abuseat.org, |
| | 24 | reject_rbl_client bl.spamcop.net, |
| | 25 | reject_rbl_client dnsbl.sorbs.net, |
| | 26 | reject_rbl_client sbl-xbl.spamhaus.org |
| | 27 | ... |
| | 28 | }}} |
| | 29 | |
| | 30 | |
| | 31 | == La solución == |
| | 32 | |
| | 33 | 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'''. |
| | 34 | |
| | 35 | == Consideración == |
| | 36 | |
| | 37 | 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. |
| | 38 | |
| | 39 | == Ejemplo del protocolo de tabla TCP para mynetworks == |
| | 40 | |
| | 41 | {{{ |
| | 42 | postfix > servidor : get hostname_fqdn_no_local |
| | 43 | servidor > postfix : 500 este hostname no es local |
| | 44 | ... |
| | 45 | postfix > servidor : get hostname_fqdn_local |
| | 46 | servidor > postfix : 200 este hostname es local |
| | 47 | }}} |
| | 48 | |
| | 49 | == Código fuente == |
| | 50 | |
| | 51 | El código fuente del servicio de tablas '''mynetorks''' esta junto al resto de [source:src/trunk/backend código del servidor de backend]. |
| | 52 | |