Я пытаюсь настроить 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 для большего.