3

我有一个使用 Exim4 的股票 Debian Etch 系统。这些域大多是本地的,但也有一些是远程的。为了处理远程邮件的传递,我使用了 Debian 配置文件:

  /etc/exim4/hubbed_hosts

该文件列出了域名和要传送到的远程 MX 机器。例如:

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

查看 exim4 配置文件,我看到它的用法如下:

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

我遇到的问题是我使用的一些主机需要将他们的邮件传递到非标准端口。不幸的是,如果我尝试将 Debian hubbed_hosts 文件更改为包含端口,则该文件不起作用:

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

是否可以动态允许指定端口?

4

4 回答 4

9

这实际上是默认支持的,无需对您的 exim4 配置进行任何更改。

在 hubbed_hosts 中,您使用冒号分隔主机,并使用双冒号指定端口号。前任:

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

欲了解更多信息,请查看http://www.exim.org/exim-html-current/doc/html/spec_html/ch20.html#SECID122

于 2009-12-23T02:21:39.950 回答
3

我希望有一些更动态的东西 - 这个解决方案有效:

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

然后一个简单的文件可能有一个基于每个域的端口列表:

   example.org: 2525
   example.com: 26
于 2008-09-30T20:12:45.693 回答
2

您可能可以使用 ${extract} 运算符来组合端口号和主机名,就像原始问题中的示例一样。

类似(未经测试):

route_data = ${extract{1}{:}{${lookup{$domain}partial-lsearch{CONFDIR/hubbed_hosts}}}}
于 2008-10-01T21:38:25.417 回答
1

创建一个指定端口的新传输

remote_hub_2525:
driver = smtp
port = 2525

然后为需要非标准交付的域创建一个路由器

non_standard_hub:
driver = manualroute
domains = example.org : example.com
transport = remote_hub_2525
no_more
于 2008-09-30T19:59:42.323 回答