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

EXIM - сначала отправить локальную почту на шлюз

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

RoutetoBarracuda:

драйвер = manualroute

домены =?

транспорт = remote_smtp

route_list = * barracuda.mydomain.com

ignore_target_hosts = 0.0.0.0: 127.0.0.0/8

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

Могу я написать выражение «if / else» для «доменов», где (на простом английском языке):

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

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

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

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

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

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

или

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

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

Я бы использовал hosts = ... проверьте ACL (например, определенный для acl_smtp_connect), чтобы установить переменную, такую ​​как $acl_c_is_from_barracuda быть yes или no; также есть ACL для acl_not_smtp_start который устанавливает ту же переменную в no. Самый надежный чек, который у вас есть, - это «вернулось ли это к нам с Barracuda»; если нет, вы хотите отправить его барракуде. Просто убедитесь, что вы не добавляете новые 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}}

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

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

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

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

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

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