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

Использовать другой транспорт для переадресации домена в Exim4

Я пытаюсь настроить exim4 под Debian 6 или 7 следующим образом:

Первый пункт кажется необходимым, потому что SES не разрешит отправку сообщения, адрес «От» которого не соответствует действительному настроенному домену для этой учетной записи AWS (если кто-то знает способ сделать это с помощью SES, это было бы предпочтительным решением. , хотя я почти уверен, что это невозможно).

Итак, сейчас эта система отлично работает с SES; все отправляется правильно, exim настроен правильно и т. д. С этого момента я определил какой-то новый виртуальный домен, для которого я хотел бы пересылать, например, в /etc/exim4/virtual/example.com:

user : user@example.org

Затем я создал новый роутер, например /etc/exim4/conf.d/router/090_exim4-config_virtual_redirect содержащий:

sender_redirect:
  driver = redirect
  domains = dsearch;/etc/exim4/virtual
  data = ${lookup{$local_part}lsearch{/etc/exim4/virtual/$domain}}

Пока это работает нормально - exim пытается ретранслировать сообщения, адресованные user@example.com к user@example.org вместо этого, но это не удается из-за ограничения SES, упомянутого выше.

На этом этапе я хочу, чтобы этот маршрутизатор отправлял сообщения напрямую с сервера на сервер, не влияя на отправку любых других писем на сервере.

Это возможно? У меня такое чувство, что мне здесь не хватает одного небольшого дополнения, но я не смог его найти.

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

Затем я определил структуру своего маршрутизатора как:

  1. Маршрутизатор Amazon SES
  2. перенаправить роутер
  3. цепочка маршрутизаторов по умолчанию (начиная с dnslookup_relay_to_domains в конфигурации Debian по умолчанию)

Итак, мой маршрутизатор перенаправления выглядел так:

sender_redirect:
  driver = redirect
  redirect_router = dnslookup_relay_to_domains
  domains = dsearch;/etc/exim4/virtual 
  data = ${lookup{$local_part}lsearch{/etc/exim4/virtual/$domain}}

Также необходимо отредактировать /etc/exim4/update-exim4.conf.conf файл, чтобы убедиться, что example.com указан как локальный домен, вот так (показаны только соответствующие строки):

dc_eximconfig_configtype='internet'
dc_other_hostnames='server.hostname.com;example.com'
dc_local_interfaces='0.0.0.0'

В internet value указывает exim`у вести себя как интернет-сайт, который общается с другими серверами напрямую, а не только через смарт-хост. Необходимо иметь возможность отправлять и получать почту напрямую через SMTP.

В 0.0.0.0 сообщает Exim о привязке ко всем интерфейсам IPv4 (по умолчанию просто 127.0.0.1 что не позволит серверу получать почту с удаленных хостов). Я не уверен, есть ли там лучшая / более безопасная настройка, но я не хотел указывать фактический внешний IP-адрес, поскольку он может измениться в среде EC2.

Как только все это будет сделано, вы можете сделать /etc/init.d/exim4 restart подобрать изменения и все должно работать.

Надеюсь, это кому-то поможет; Я понятия не имею, «правильный» это или «лучший» способ сделать это, но, похоже, он идеально подходит для моих целей.