Pregunta

Tengo un sistema Debian Etch de valores, utilizando Exim4. Los dominios son en su mayoría locales, pero hay algunos que son remotos. Para manejar la entrega de correo remoto, uso el archivo de configuración de Debian:

  /etc/exim4/hubbed_hosts

Este archivo enumera los nombres de dominio y las máquinas MX remotas para entregar. Por ejemplo:

  example.org:  mx.example.com
  example.com:  mx2.example.com

Mirando el archivo de configuración exim4 veo que se usa de la siguiente manera:

hubbed_hosts:
  debug_print = "R: hubbed_hosts for $domain"
  driver = manualroute
  domains = "${if exists{CONFDIR/hubbed_hosts}\
                   {partial-lsearch;CONFDIR/hubbed_hosts}\
              fail}"
  route_data = ${lookup{$domain}partial-lsearch{CONFDIR/hubbed_hosts}}
  transport = remote_smtp

El problema que tengo es que algunos de los hosts que estoy usando necesitan que su correo sea enviado a un puerto no estándar. Desafortunadamente, el archivo hubbed_hosts de Debian no funciona si intento cambiarlo para incluir un puerto:

example.org: mx1.example.org:2525
example.com: 1.2.3.4.2525

¿Es posible permitir dinámicamente que se especifique el puerto?

¿Fue útil?

Solución 2

Esperaba algo un poco más dinámico, y esta solución funciona:

 port = ${if exists{/etc/exim4/ports.list}\
              {${lookup{$domain}lsearch{/etc/exim4/ports.list}\
              {$value}{25}}}{25}}

Entonces, un archivo simple puede tener una lista de puertos por dominio:

   example.org: 2525
   example.com: 26

Otros consejos

Esto es realmente compatible de manera predeterminada sin ningún cambio en su configuración exim4.

En hubbed_hosts, se separan los hosts con dos puntos y se especifica un número de puerto con dos puntos dobles.     EX:

domain1: server1:server2::port:server3
domain2: server1::port
domain3: server1:server2

Para obtener más información, visite http: / /www.exim.org/exim-html-current/doc/html/spec_html/ch20.html#SECID122

Probablemente podría usar el operador $ {extract} para permitirle combinar los números de puerto y los nombres de host, como en el ejemplo de su pregunta original.

Algo como (sin probar):

route_data = ${extract{1}{:}{${lookup{$domain}partial-lsearch{CONFDIR/hubbed_hosts}}}}

realice un nuevo transporte que especifique el puerto

remote_hub_2525:
driver = smtp
port = 2525

y luego cree un enrutador para los dominios que necesitan una entrega no estándar

non_standard_hub:
driver = manualroute
domains = example.org : example.com
transport = remote_hub_2525
no_more
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top