Я администрирую кучу серверов разработки и тестирования debian (v.6-8). Текущая установка exim4 выглядит так:
Поскольку функциональность электронной почты stage и dev-серверов будет проверяться с помощью веб-приложений, а в наших веб-приложениях настроены адреса электронной почты для реальных сценариев, я хочу выполнить следующие настройки:
Учебник, наиболее близкий к моей цели, таков, даже если он использует противоположную стратегию: разрешить всех отправителей и запретить одному отправителю.
https://serverfault.com/a/577007/322673
Любая помощь действительно приветствуется, так как я собираюсь сходить с ума по синтаксису конфигурации exim.
В течение нескольких дней я просматривал множество образцов конфигурации, но ни один из них не соответствует моему варианту использования.
Поскольку Exim обрабатывает почту в порядке, указанном в разделе маршрутизаторов, я думаю, это может быть достигнуто с помощью следующих правил. Обязательно сначала установите правило для специальных доменов, а затем установите все правила.
# sender domain based routing
router_for_special_domain_sender:
driver = dnslookup
senders = *@example.com
transport = remote_smtp
no_more
# reciepients domain based routing
router_for_special_domain_reciepints:
driver = dnslookup
domains = example.com
transport = remote_smtp
no_more
catch_all_outgoing:
driver = redirect
data = catchallemail@example.com
Согласно Exim документация:
домены
Если задана опция доменов, домен адреса должен быть в наборе доменов, который он определяет.
отправители
Если этот параметр установлен, маршрутизатор пропускается, если адрес отправителя сообщения не совпадает с чем-то в списке. См. Раздел 3.12 для списка порядка, в котором оцениваются предварительные условия.
Первое правило выше говорит exim о том, что нужно отправлять все электронные письма с доменом отправителя example.com, не делая ничего особенного. Второе правило - уловка для всех писем. Вы можете попробовать.
Вот соответствующее обсуждение: http://www.gossamer-threads.com/lists/exim/users/97056
begin routers
router_for_special_domain_reciepint:
driver = manualroute
domains = example.com
transport = remote_smtp
route_list = "* internalsmarthost.example.com "
no_more
catch_all_outgoing:
driver = redirect
data = devmail@1234oursmarthost.com
Поскольку я использую smarthost как для исключения, так и для маршрутизатора router_for_special_domain_recipient и для маршрутизатора catch_all_outgoing, мне пришлось добавить параметр route_list. Использование драйвера dnslookup приведет к отправке почты непосредственно адресату без использования смарт-хоста.