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