Я пытаюсь настроить 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 о начале обработки следующего адреса, сгенерированного текущим маршрутизатором, с указанным маршрутизатором, позволяя ему последовательно пропускать любые предыдущие маршрутизаторы.
Затем я определил структуру своего маршрутизатора как:
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
подобрать изменения и все должно работать.
Надеюсь, это кому-то поможет; Я понятия не имею, «правильный» это или «лучший» способ сделать это, но, похоже, он идеально подходит для моих целей.