Bug#833296: exim4-config: dpkg-reconfigure exim4-config: misleading message
Mauro Salvini
mauro.salvini at smigroup.net
Wed Aug 3 11:45:33 UTC 2016
On Wed, 2016-08-03 at 10:44 +0200, Marc Haber wrote:
> On Wed, Aug 03, 2016 at 10:26:57AM +0200, Mauro Salvini wrote:
> > > > > If uname() returns a single-component name, Exim calls gethostbyname()
> > > > > (or getipnodebyname() where available) in an attempt to acquire a
> > > > > fully qualified host name.
> > > > >
> > > > > Can you check what your gethostbyname/getipnodebyname returns?
> > >
> > > > hostname by uname(): myhostname
> > > > hostname by gethostbyname(): myhostname.mydomain.local
> > >
> > > Hm.
> > >
> > > What does hostname --fqdn say?
> >
> > It says myhostname.mydomain.local
>
> Good.
>
> > > What does exim -bP | grep ^primary_hostname say?
> >
> > It says myhostname
>
> not good.
>
> > Checked /var/lib/exim4/config.autogenerated for primary_hostname:
> >
> > .ifdef MAIN_HARDCODE_PRIMARY_HOSTNAME
> > primary_hostname = MAIN_HARDCODE_PRIMARY_HOSTNAME
> > .endif
> >
> > MAIN_HARDCODE_PRIMARY_HOSTNAME never defined
>
> So primary_hostname is set according to the docs
> (/usr/share/doc/exim4-base/spec.txt.gz):
>
> $primary_hostname
>
> This variable contains the value set by primary_hostname in the
> configuration file, or read by the uname() function. If uname() returns a
> single-component name, Exim calls gethostbyname() (or getipnodebyname()
> where available) in an attempt to acquire a fully qualified host name. See
> also $smtp_active_hostname.
>
> The last sentence doesn't apply here. And we see that your
> gethostbyname returns the host name just fine.
>
> What does getent hosts $IP for all your IP addresses say?
getent hosts 127.0.0.1
127.0.0.1 localhost
getent hosts 127.0.1.1
127.0.1.1 myhostname.mydomain.local myhostname
getent hosts 10.0.xx.xx # LAN address
10.0.xx.xx myhostname
getent hosts 10.0.yy.yy # WIFI address, now off
10.0.yy.yy myhostname.mydomain.local
Strange difference between last two IPs. If I enable WIFI and disconnect
LAN, result is:
getent hosts 10.0.xx.xx # LAN address, now off
10.0.xx.xx myhostname.mydomain.local
getent hosts 10.0.yy.yy # WIFI address
10.0.yy.yy myhostname
Seems to depend of /etc/nsswitch.conf hosts row items order, that is the
default one:
hosts: files myhostname mdns4_minimal [NOTFOUND=return] dns
Moving dns in second position before myhostname, both addresses resolve
to myhostname.mydomain.local, but exim -bP | grep ^primary_hostname
stills report myhostname.
> > > and 192.168.0.10 is your local IP address on the network?
> >
> > No , I obfuscate it, sorry. It actually is 10.0.xx.xx
>
> Same thing, a RFC 1918 address that is unlikely to have correct
> reverse DNS.
>
> > > Is your "myhostname.mydomain.local" the literal host name? If so, are
> > > you actually using the .local TLD or is that just obfuscated? Please
> > > consider using a different TLD as .local may cause interference with
> > > avahi (the .local TLD is reserved for use with mDNS).
> >
> > Yes, domain ends with .local (this name comes from IT&C office
> > configuration).
> >
> > Just for a try, I changed /etc/hosts and /etc/mailname to have a .net
> > TLD:
> > - exim -bP | grep ^primary_hostname says
> > myhostname
>
> Bad.
>
> > - exim -bt -d+all username says
> > 10:13:17 5455 local_part=username domain=myhostname.mydomain.net
> > 10:13:17 5455 checking domains
> > 10:13:17 5455 myhostname.mydomain.net in "@:localhost"? no (end of
> > list)
>
> Looks better, but why? Strangely, the process of qualifying the
> address is not in the debug output, first thing I see of the username
> is its already qualified form.
Sorry, I didn't paste all the log but only the part regarding domains.
Full log below.
Thanks again to spend your time with me :-)
Greetings
Mauro
11:30:16 6760 Exim version 4.87 uid=0 gid=0 pid=6760 D=fffdffff
Berkeley DB: Berkeley DB 5.3.28: (September 9, 2013)
Support for: crypteq iconv() IPv6 GnuTLS move_frozen_messages DKIM
DNSSEC Event OCSP PRDR SOCKS
Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch cdb dbm
dbmjz dbmnz dnsdb dsearch nis nis0 passwd
Authenticators: cram_md5 plaintext
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore autoreply lmtp pipe smtp
Fixed never_users: 0
Size of off_t: 8
Compiler: GCC [4.9.2]
Library version: GnuTLS: Compile: 3.3.8
Runtime: 3.3.8
Library version: PCRE: Compile: 8.35
Runtime: 8.35 2014-04-04
11:30:16 6760 Total 13 lookups
WHITELIST_D_MACROS: "OUTGOING"
TRUSTED_CONFIG_LIST: "/etc/exim4/trusted_configs"
11:30:16 6760 changed uid/gid: forcing real = effective
11:30:16 6760 uid=0 gid=0 pid=6760
11:30:16 6760 auxiliary group list: <none>
11:30:16 6760 seeking password data for user "uucp": cache not
available
11:30:16 6760 getpwnam() succeeded uid=10 gid=10
11:30:16 6760 configuration file is /var/lib/exim4/config.autogenerated
11:30:16 6760 log selectors = 0000cffc 10732001
11:30:16 6760 trusted user
11:30:16 6760 admin user
11:30:16 6760 seeking password data for user "mail": cache not
available
11:30:16 6760 getpwnam() succeeded uid=8 gid=8
11:30:16 6760 DSN: hubbed_hosts propagating DSN
11:30:16 6760 DSN: smarthost propagating DSN
11:30:16 6760 DSN: real_local propagating DSN
11:30:16 6760 DSN: system_aliases propagating DSN
11:30:16 6760 DSN: userforward propagating DSN
11:30:16 6760 DSN: procmail propagating DSN
11:30:16 6760 DSN: maildrop propagating DSN
11:30:16 6760 DSN: lowuid_aliases propagating DSN
11:30:16 6760 DSN: local_user propagating DSN
11:30:16 6760 DSN: mail4root propagating DSN
11:30:16 6760 expanding: $1
11:30:16 6760 result: root
11:30:16 6760 user name "root" extracted from gecos field "root"
11:30:16 6760 originator: uid=0 gid=0 login=root name=root
11:30:16 6760 sender address = root at myhostname.mydomain.net
11:30:16 6760 Address testing: uid=0 gid=114 euid=0 egid=114
11:30:16 6760 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11:30:16 6760 Testing username at myhostname.mydomain.net
11:30:16 6760 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11:30:16 6760 Considering username at myhostname.mydomain.net
11:30:16 6760 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11:30:16 6760 routing username at myhostname.mydomain.net
11:30:16 6760 --------> hubbed_hosts router <--------
11:30:16 6760 local_part=username domain=myhostname.mydomain.net
11:30:16 6760 checking domains
11:30:16 6760 expanding: /etc/exim4/hubbed_hosts
11:30:16 6760 result: /etc/exim4/hubbed_hosts
11:30:16 6760 condition: exists{/etc/exim4/hubbed_hosts}
11:30:16 6760 result: false
11:30:16 6760 expanding: partial-lsearch;/etc/exim4/hubbed_hosts
11:30:16 6760 result: partial-lsearch;/etc/exim4/hubbed_hosts
11:30:16 6760 skipping: result is not used
11:30:16 6760 failed to expand: ${if
exists{/etc/exim4/hubbed_hosts}{partial-lsearch;/etc/exim4/hubbed_hosts}fail}
11:30:16 6760 error message: "if" failed and "fail" requested
11:30:16 6760 failure was forced
11:30:16 6760 expansion of "${if
exists{/etc/exim4/hubbed_hosts}{partial-lsearch;/etc/exim4/hubbed_hosts}fail}" forced failure: assume not in this list
11:30:16 6760 hubbed_hosts router skipped: domains mismatch
11:30:16 6760 --------> smarthost router <--------
11:30:16 6760 local_part=username domain=myhostname.mydomain.net
11:30:16 6760 checking domains
11:30:16 6760 myhostname.mydomain.net in "@:localhost"? no (end of
list)
11:30:16 6760 myhostname.mydomain.net in "! +local_domains"? yes (end
of list)
11:30:16 6760 expanding: R: smarthost for $local_part@$domain
11:30:16 6760 result: R: smarthost for
username at myhostname.mydomain.net
11:30:16 6760 R: smarthost for username at myhostname.mydomain.net
11:30:16 6760 calling smarthost router
11:30:16 6760 smarthost router called for
username at myhostname.mydomain.net
11:30:16 6760 domain = myhostname.mydomain.net
11:30:16 6760 route_item = * mail.mydomain.it byname
11:30:16 6760 myhostname.mydomain.net in "*"? yes (matched "*")
11:30:16 6760 original list of hosts = "mail.mydomain.it" options =
byname
11:30:16 6760 expanded list of hosts = "mail.mydomain.it" options =
byname
11:30:16 6760 set transport remote_smtp_smarthost
11:30:16 6760 finding IP address for mail.mydomain.it
11:30:16 6760 calling host_find_byname
11:30:16 6760 gethostbyname2(af=inet6) returned 4 (NO_DATA)
11:30:16 6760 Configured local interface: address=127.0.0.1
11:30:16 6760 Configured local interface: address=::1
11:30:16 6760 fully qualified name = mail.mydomain.it
11:30:16 6760 gethostbyname2 looked up these IP addresses:
11:30:16 6760 name=mail.mydomain.it address=192.168.50.4
11:30:16 6760 queued for remote_smtp_smarthost transport: local_part =
username
11:30:16 6760 domain = myhostname.mydomain.net
11:30:16 6760 errors_to=NULL
11:30:16 6760 domain_data=NULL localpart_data=NULL
11:30:16 6760 routed by smarthost router
11:30:16 6760 envelope to: username at myhostname.mydomain.net
11:30:16 6760 transport: remote_smtp_smarthost
11:30:16 6760 host mail.mydomain.it [192.168.50.4]
username at myhostname.mydomain.net
router = smarthost, transport = remote_smtp_smarthost
host mail.mydomain.it [192.168.50.4]
11:30:16 6760 search_tidyup called
11:30:16 6760 >>>>>>>>>>>>>>>> Exim pid=6760 terminating with rc=0
>>>>>>>>>>>>>>>>
More information about the Pkg-exim4-maintainers
mailing list