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

Exim4: перехватить исходящую почту, разрешить прохождение только нескольких доменов на сервере разработки

Я администрирую кучу серверов разработки и тестирования 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 приведет к отправке почты непосредственно адресату без использования смарт-хоста.