Hello people,
I've got the following:
# Exim v4.12 configuration
# GLOBAL
# ...
# Listen on a local and a non-local interface
# local_interfaces = 127.0.0.1 : 217.xxx.xxx.xxx
# ...
# ROUTERS
# Route domains that do not point their MX to any of our local
# interfaces, but treat 127.0.0.1 as a non-existing host rather than
# our loopback interface
foreign_router:
driver = dnslookup
domains = !@mx_any
ignore_target_hosts = 127.0.0.0/8
transport = foreign_smtp
I observe that if some [broken] domain contains [secondary] MX
records that point to 127.0.0.1 (try hubbardcollege.org for instance)
Exim DOES NOT IGNORE it when checking for @mx_any pseudo-list:
# exim -d+all-lookup-memory -bt spam@???
=cut
--------> foreign router <--------
local_part=spam domain=hubbardcollege.org
checking domains
DNS lookup of hubbardcollege.org (MX) succeeded
discarded duplicate host dns1.pixelgate.net (MX=40)
Configured local interface: address=127.0.0.1
Configured local interface: address=217.xxx.xxx.xxx
local host in host list - removed hosts:
mail.pixelgate.com 127.0.0.1 30
host_find_bydns yield = HOST_FOUND (2); returned hosts:
mail.hubbardcollege.org 209.239.252.199 10
dns1.pixelgate.net 66.254.66.99 20
hubbardcollege.org in "!@mx_any"? no (matched "!@mx_any")
foreign router skipped: domains mismatch
=cut
At least, ignore_target_hosts is ALWAYS NULL as it's always passed as
NULL argument.
at src/host.c(2060), function host_find_bydns()
... called from match.c(192), function check_string()
... called from match.c(573), function match_check_list()
... called from match.c(757), function match_isinlist()
... called from route.c(424), function route_check_dls()
... called from route.c(775), function check_router_conditions()
How to pass ignore_target_hosts to host_find_bydns() through all of
these ? Any workarounds? Still, I'm not sure it will help to kick off
broken MX records out in this way.
Thanks.
--
Best regards,
Peter mailto:spam4octan@highway.ru