EXIM - отправка локальной почты в Gateway First

Мой почтовый сервер защищен от спама нашим устройством Barracuda. Я пытаюсь настроить EXIM для перенаправления ВСЕХ исходящих сообщений на сервер Barracuda, включая почту для локальных доменов. Как только сообщения отсканированы и разрешены, сервер Barracuda затем доставит локальную почту обратно на мой почтовый сервер, где конфигурация EXIM позволит их доставлять. Я полагаю, что могу добиться этого с помощью условного определения для части "domains =" в конфигурации ниже, но я не уверен в синтаксисе:

RoutetoBarracuda:

водитель = ручной маршрут

домены =?

транспорт = remote_smtp

route_list = * barracuda.mydomain.com

ignore_target_hosts = 0.0.0.0: 127.0.0.0/8

больше не надо

Могу ли я написать оператор "если / еще" для "доменов", где (на простом английском языке):

домены =! +local_domains (все, кроме локальных доменов), если отправителем является мой сервер Barracuda, иначе * (перенаправить все домены в Barracuda), если отправителем является любой другой хост / IP-адрес.

Поскольку я не могу доверять своим пользователям не спамить друг друга, желаемое действие состоит в том, чтобы EXIM перенаправлял локальную почту в локальную почту от отправителя на сервер Barracuda и узнавал, когда он возвращается, чтобы затем его можно было доставить локально.,

Я надеюсь, что этот вопрос имеет смысл. Я не уверен в синтаксисе, чтобы заставить работать выше.

Не стесняйтесь, дайте мне знать, если есть лучший способ сделать это.

3 ответа

Я вхожу из своей основной учетной записи, чтобы дать обновление. Я попробовал это, которое дало желаемые результаты

domains = ${if eq{$interface_port}{587}{*}{! +local_domains}}

Если мои клиенты настроены на отправку через порт 587, а мой Spam Gateway ретранслирует через порт 25, тогда я получу желаемый результат. Ограничение исходящего SMTP на порту 587 удаленно и 25 локально имеет смысл в любом случае, так как многие интернет-провайдеры не разрешают исходящий порт 25, если он не проходит через их SMTP-серверы.

Я обновлю эту ветку, если есть какие-то ошибки с этим методом.

Без использования acls вы можете использовать в своем роутере:

condition = ${if !eq{$sender_host_name}{barracuda_hostname}}

или же

condition = ${if !eq{$sender_host_address}{barracuda_ipaddress}}

если адрес хоста не имеет записи ptr в днс.

Я бы использовал hosts = ... проверить в ACL (например, один определен для acl_smtp_connect) установить переменную, такую ​​как $acl_c_is_from_barracuda быть yes или же no; также есть ACL для acl_not_smtp_start который устанавливает ту же переменную в no, Самый надежный чек, который у вас есть, это "вернулся ли он к нам с Барракуда"; если нет, вы хотите отправить его на барракуду. Просто убедитесь, что вы не добавляете новые IP-адреса в эти поля фильтрации без обновления Exim, иначе у вас будет петля почты.

Если вы хотите защитить от такой возможности, вы можете иметь блоки фильтров, отправляемые на порт 26 вместо 25 на вашем сервере Exim, и иметь фильтры IP, которые разрешают доступ к этому порту только из блоков фильтров, и делать set acl_c_is_from_barracuda = yes основанный на $received_port,

После этого вы можете вызвать первый маршрутизатор barracuda_filter и включают в себя:

condition = ${if !bool{$acl_c_is_from_barracuda}}

Так что, если это не из барракуда, отправьте его в барракуда.

Затем последующие маршрутизаторы отправляют почту в обычном режиме.

Другие вопросы по тегам