Spécifiez le port distant à utiliser pour le courrier via exim4
Question
J'ai un système Debian Etch standard, utilisant Exim4. Les domaines sont principalement locaux mais certains sont distants. Pour gérer la livraison du courrier distant, j'utilise le fichier de configuration Debian:
/etc/exim4/hubbed_hosts
Ce fichier répertorie les noms de domaine et les machines MX distantes à livrer. Par exemple:
example.org: mx.example.com
example.com: mx2.example.com
En regardant le fichier de configuration exim4, je vois que cela s’utilise comme suit:
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
Le problème que j'ai est que certains des hôtes que j'utilise ont besoin que leur courrier soit livré sur un port non standard. Malheureusement, le fichier hubbed_hosts de Debian ne fonctionne pas si j'essaie de le changer pour inclure un port:
example.org: mx1.example.org:2525
example.com: 1.2.3.4.2525
Est-il possible d'autoriser de manière dynamique la spécification du port?
La solution 2
J'espérais quelque chose d'un peu plus dynamique - et cette solution fonctionne:
port = ${if exists{/etc/exim4/ports.list}\
{${lookup{$domain}lsearch{/etc/exim4/ports.list}\
{$value}{25}}}{25}}
Ensuite, un fichier simple peut avoir une liste de ports par domaine:
example.org: 2525
example.com: 26
Autres conseils
Ceci est en fait supporté par défaut sans aucune modification de votre configuration exim4.
Dans hubbed_hosts, vous séparez les hôtes par deux-points et vous spécifiez un numéro de port avec deux-points. EX:
domain1: server1:server2::port:server3
domain2: server1::port
domain3: server1:server2
Pour plus d'informations, consultez http: / /www.exim.org/exim-html-current/doc/html/spec_html/ch20.html#SECID122
Vous pourriez probablement utiliser l'opérateur $ {extract} pour combiner les numéros de port et les noms d'hôte, comme dans l'exemple de votre question d'origine.
Quelque chose comme (non testé):
route_data = ${extract{1}{:}{${lookup{$domain}partial-lsearch{CONFDIR/hubbed_hosts}}}}
faire un nouveau transport qui spécifie le port
remote_hub_2525:
driver = smtp
port = 2525
puis créez un routeur pour les domaines nécessitant une livraison non standard
non_standard_hub:
driver = manualroute
domains = example.org : example.com
transport = remote_hub_2525
no_more