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

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

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

450 4.1.8 <etqoalxre@xgcuux.com>: Sender address rejected: Domain not found

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

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

554 5.7.1 <mjsb@haf.org>: Relay access denied (для любого адреса, даже действующего). Настройка /etc/exim4/passwd.client похоже, не работает в этом случае ...

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

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

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

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

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

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

Поскольку вы всегда на связи, я рекомендую поставить дополнительный маршрутизатор непосредственно перед маршрутизатором 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 не будет использовать smarthost, поэтому у вас больше не будет «маршрута для всего». Проверка сможет маршрутизировать только удаленные домены, у которых есть DNS, поэтому вы больше не будете принимать электронные письма, которые ваш интернет-провайдер отклоняет как не маршрутизируемые.

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