2008-09-30 9 views
3

J'ai un système Debian Etch standard, en utilisant Exim4. Les domaines sont pour la plupart locaux mais certains sont distants. Pour gérer la distribution du courrier à distance que j'utilise le fichier de configuration Debian:Spécifier le port distant à utiliser pour le courrier via exim4

/etc/exim4/hubbed_hosts 

Ce fichier répertorie les noms de domaine et machines MX à distance pour offrir à. Par exemple:

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

En regardant le fichier de configuration de exim4 Je vois que cela utilisé 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 

La question que j'ai est que certains des hôtes que je utilise le besoin d'avoir leur courrier livré à un port non standard. Malheureusement, le fichier hubbed_hosts Debian ne fonctionne pas si je tente 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 dynamiquement le port à préciser?

Répondre

3

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}} 

Puis un simple fichier peut avoir une liste de ports sur un base -domain:

example.org: 2525 
    example.com: 26 
1

faire un nouveau transport qui spécifie le port

remote_hub_2525: 
driver = smtp 
port = 2525 

puis créez un routeur pour les domaines qui ont besoin de livraison non standard

non_standard_hub: 
driver = manualroute 
domains = example.org : example.com 
transport = remote_hub_2525 
no_more 
+0

Merci pour votre aide - je réussi à obtenir que cela fonctionne de façon plus dynamique que je voulais à la fin. –

2

Vous pouvez probablement utiliser le $ {extrait} opérateur pour vous permettre de combiner les numéros de port et les noms d'hôte, comme dans l'exemple dans votre question initiale.

Quelque chose comme (non testé):

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

Ceci est effectivement pris en charge par défaut sans aucune modification de votre config exim4. Dans hubbed_hosts, vous séparez les hôtes avec deux-points et vous spécifiez un numéro de port avec un double-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