Specifica la porta remota da utilizzare per la posta tramite exim4
Domanda
Ho un sistema Debian Etch di serie, usando Exim4. I domini sono prevalentemente locali ma ce ne sono alcuni remoti. Per gestire la consegna della posta remota uso il file di configurazione di Debian:
/etc/exim4/hubbed_hosts
Questo file elenca i nomi di dominio e le macchine MX remote a cui consegnare. Ad esempio:
example.org: mx.example.com
example.com: mx2.example.com
Guardando il file di configurazione exim4 vedo che questo è stato usato come segue:
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
Il problema che ho è che alcuni degli host che sto usando devono avere la loro posta consegnata a una porta non standard. Sfortunatamente il file Debian hubbed_hosts non funziona se provo a cambiarlo per includere una porta:
example.org: mx1.example.org:2525
example.com: 1.2.3.4.2525
È possibile consentire la specifica dinamica della porta?
Soluzione 2
Speravo in qualcosa di un po 'più dinamico - e questa soluzione funziona:
port = ${if exists{/etc/exim4/ports.list}\
{${lookup{$domain}lsearch{/etc/exim4/ports.list}\
{$value}{25}}}{25}}
Quindi un semplice file può avere un elenco di porte in base al dominio:
example.org: 2525
example.com: 26
Altri suggerimenti
Questo è effettivamente supportato di default senza alcuna modifica alla configurazione di exim4.
In hubbed_hosts, si separano gli host con due punti e si specifica un numero di porta con due punti due punti. EX:
domain1: server1:server2::port:server3
domain2: server1::port
domain3: server1:server2
Per maggiori informazioni, consulta http: / /www.exim.org/exim-html-current/doc/html/spec_html/ch20.html#SECID122
Probabilmente potresti usare l'operatore $ {extract} per permetterti di combinare i numeri di porta e i nomi host, come nell'esempio della tua domanda originale.
Qualcosa di simile (non testato):
route_data = ${extract{1}{:}{${lookup{$domain}partial-lsearch{CONFDIR/hubbed_hosts}}}}
crea un nuovo trasporto che specifica la porta
remote_hub_2525:
driver = smtp
port = 2525
e quindi creare un router per i domini che richiedono una consegna non standard
non_standard_hub:
driver = manualroute
domains = example.org : example.com
transport = remote_hub_2525
no_more