Назад | Перейти на главную страницу

Перенаправление с маршрутизаторами Exim и транспортом

Я написал 2 маршрутизатора для пересылки на одном из моих почтовых серверов:

virtual_aliases_nostar:
  driver = redirect
  allow_defer
  allow_fail
  require_files = "+/var/auth/valiases/$domain"
  data = ${lookup{$local_part@$domain}lsearch{/var/auth/valiases/$domain}}
  file_transport = address_file
  group = mail
  pipe_transport = virtual_address_pipe
  retry_use_local_part
  unseen

virtual_aliases:
    driver = redirect
    allow_defer
    allow_fail
    require_files = "+/var/auth/valiases/$domain"
    data = ${lookup{*}lsearch{/var/auth/valiases/$domain}}
    file_transport = address_file
    group = mail
    pipe_transport = virtual_address_pipe
    unseen

Какие звонки для этого транспорта:

virtual_address_pipe:
  driver = pipe
  group = some_user
  return_output          
  user = some_user

Если есть файл valiases / somedomain.com, подобный приведенному ниже, он разрешит первое электронное письмо и перешлет его, но на этом остановится.

user1@domain.com: user1@forwardomain.com
user1@domain.com: user3@forwardomain.com
user1@domain.com: user4@forwardomain.com
user1@domain.com: user9@forwardomain.com
user1@domain.com: user111@forwardomain.com
user1@domain.com: user12@forwardomain.com
user1@domain.com: user11@forwardomain.com

Обычно user1@domain.com будет перенаправлен только на user1@forwardomain.com и на этом остановится. Есть идеи, почему это происходит? Спасибо.

Что вы от него ждете? Вы, кажется, ожидаете virtual_address_pipe транспорт, который должен быть вызван, но в приведенном вами примере файла псевдонима нет псевдонимов каналов ...

омигошь ... Я просто в 20 раз перечитал твой вопрос. Меня отвлекло то, что то, что вы описываете, не совсем соответствует вашему примеру, поскольку перенаправление на другой адрес электронной почты не вызовет pipe_transport. Я собираюсь предположить, что ваш настоящий файл псевдонима перенаправляется на реальные каналы, и он потерялся при переводе, когда вы попытались очистить пример вместо того, чтобы опубликовать реальный файл конфигурации и псевдонима, с которым у вас возникли проблемы.

В любом случае, игнорируя это, я думаю, что ответ на ваш вопрос так же прост, как поместить все цели в одну строку:

user1@domain.com: user1@forwardomain.com, user3@forwardomain.com, user4@forwardomain.com, user9@forwardomain.com, user111@forwardomain.com, user12@forwardomain.com, user11@forwardomain.com

Вы делаете только один поиск на local_part в таком маршрутизаторе. Поместите все цели в одну строку, и Exim выполнит перенаправление / транспортировку / и т.д. всех целей, которые просматриваются. Это работает для адресов электронной почты, файлов и каналов:

 user1@domain.com: /path/to/file, |/path/to/pipe, user1@forwardomain.com

Надеюсь, это поможет.