Укажите удаленный порт для использования с почтой через exim4 - PullRequest
3 голосов
/ 30 сентября 2008

У меня есть стандартная система Debian Etch, использующая Exim4. Домены в основном локальные, но есть и удаленные. Для доставки удаленной почты я использую файл конфигурации 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 ]

9 голосов
/ 23 декабря 2009

Это фактически поддерживается по умолчанию без каких-либо изменений в вашей конфигурации exim4.

В hubbed_hosts вы разделяете хосты двоеточием, а номер порта задаете двойным двоеточием. EX:

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

3 голосов
/ 01 октября 2008

Я надеялся на что-то более динамичное - и это решение работает:

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

Тогда простой файл может иметь список портов для каждого домена:

   example.org: 2525
   example.com: 26
2 голосов
/ 02 октября 2008

Возможно, вы могли бы использовать оператор $ {extract}, чтобы объединить номера портов и имена хостов, как в примере из исходного вопроса.

Что-то вроде (не проверено):

route_data = ${extract{1}{:}{${lookup{$domain}partial-lsearch{CONFDIR/hubbed_hosts}}}}
1 голос
/ 30 сентября 2008

сделать новый транспорт, который указывает порт

remote_hub_2525:
driver = smtp
port = 2525

, а затем создайте маршрутизатор для доменов, нуждающихся в нестандартной доставке

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