exim4 smarthost с проверкой отправителя

exim4 smarthost с проверкой отправителя

Я пытаюсь настроить exim4 как смартхост перед почтовым сервером ISP. Все работает отлично, за исключением некоторых писем, приходящих от недействительных отправителей (скорее всего, спам). ISP отклоняет их с помощью

450 4.1.8 <[email protected]>: Sender address rejected: Domain not found

что заставляет смарт-хост exim повторять попытки, без необходимости увеличивая размер очереди.

Ближайшее, что мне удалось настроить, это использовать /etc/exim4/local_sender_calloutфайл. Но затем вызов идет к провайдеру, который затем отклоняет его с помощью

554 5.7.1 <[email protected]>: Relay access denied(для любого адреса, даже допустимого). /etc/exim4/passwd.clientВ этом случае настройка, похоже, не работает...

Как настроить проверку отправителя (с вызовом или, желательно, без него) с помощью exim smarthost?

разъяснение: мой exim не является открытым ретранслятором, он уже указывает только ограниченный список доменов, для которых он принимает электронные письма. Затем эти электронные письма отправляются на смартхост для доставки в реальные почтовые ящики. Диаграмма настройки, вероятно, будет выглядеть примерно так.

Internet -> my exim(mx) -> ISP(smarthost) <- users accessing email via POP/IMAP

mx-записи моего домена указывают на мой exim-сервер. Однако интернет-провайдер принимает письма для моего домена и хранит их в почтовых ящиках.

решение1

По сути, вы настраиваете front-end MX с более строгим набором фильтров, которые глубже по направлению к конечному пункту назначения. Лучший способ справиться с этим — быть по крайней мере столь же строгим на front-end.

Но поскольку у вас есть смартхост, вы отправляете почту для "любого домена" на смартхост. Это плохо сочетается с проверкой валидности домена: где-то в вашем ACL, определенном для команд RCPT, должен быть , require verify = senderкоторый гарантирует, что у Exim есть метод отправки почты на домен отправителя, прежде чем он примет сообщение.

Поскольку вы всегда в сети, я рекомендую поставить дополнительный маршрутизатор непосредственно перед маршрутизатором smarthost. Предполагая, что у smarthost есть domains = ! +local_domainsи no_more, затем добавьте no_verifyк маршрутизатору smarthost и перед ним вставьте этот маршрутизатор:

remote_dns_verify:
  driver = dnslookup
  domains = ! +local_domains
  transport = remote_smtp
  # ignore_target_hosts = +some_hostlist_matching_rfc1918_and_so_on
  same_domain_copy_routing
  verify_only
  no_more

С этим,проверкаpath не будет использовать смартхост, поэтому у вас больше не будет «маршрута для всего». Проверка сможет маршрутизировать только удаленные домены, которые имеют DNS, поэтому вы больше не будете принимать письма, которые ваш провайдер отклоняет из-за невозможности маршрутизации.

После этого я бы рассмотрел возможность установки некоторых правил повтора, которые соответствуют определенным удаленным ошибкам, чтобы прекратить повторную отправку писем, отклоненных провайдером. Смотритеhttp://www.exim.org/exim-html-current/doc/html/spec_html/ch-retry_configuration.htmlдля большего.

Связанный контент