Мой почтовый сервер защищен от спама нашим устройством 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.
Я обновлю эту ветку, если будут какие-то ошибки с этим методом.