Status check fails on newly created box

I’ve just setup a new box. Everything went fine so far. Unfortunately I get a “Something went wrong, sorry.” when accessing the status page. When I run the status_checks.py on the command line I get the following:

System

✓ All system services are running.
✓ SSH disallows password-based login.
✓ System software is up to date.
✓ Mail-in-a-Box is up to date. You are running version v0.19b.
✓ System administrator address exists as a mail alias. [administrator@box.mathishoffmann.de ↦ mathis@mathishoffmann.de]
✓ The disk has 23.6 GB space remaining.
✓ System memory is 54% free.

Network

✓ Firewall is active.
✓ Outbound mail (SMTP port 25) is not blocked.
✓ IP address is not blacklisted by zen.spamhaus.org.
multiprocessing.pool.RemoteTraceback:
“”"
Traceback (most recent call last):
File “/usr/lib/python3.4/multiprocessing/pool.py”, line 119, in worker
result = (True, func(*args, **kwds))
File “/usr/lib/python3.4/multiprocessing/pool.py”, line 47, in starmapstar
return list(itertools.starmap(args[0], args[1]))
File “./status_checks.py”, line 333, in run_domain_checks_on_domain
check_primary_hostname_dns(domain, env, output, dns_domains, dns_zonefiles)
File “./status_checks.py”, line 384, in check_primary_hostname_dns
ipv6 = query_dns(domain, “AAAA”) if env.get(“PUBLIC_IPV6”) else None
File “./status_checks.py”, line 683, in query_dns
return "; ".join(sorted(str(r).rstrip(‘.’) for r in response))
File “./status_checks.py”, line 683, in
return "; “.join(sorted(str(r).rstrip(‘.’) for r in response))
TypeError: str returned non-string (type bytes)
“””

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File “./status_checks.py”, line 940, in
run_checks(False, env, ConsoleOutput(), pool)
File “./status_checks.py”, line 65, in run_checks
run_domain_checks(rounded_values, env, output, pool)
File “./status_checks.py”, line 312, in run_domain_checks
ret = pool.starmap(run_domain_checks_on_domain, args, chunksize=1)
File “/usr/lib/python3.4/multiprocessing/pool.py”, line 268, in starmap
return self._map_async(func, iterable, starmapstar, chunksize).get()
File “/usr/lib/python3.4/multiprocessing/pool.py”, line 599, in get
raise self._value
TypeError: str returned non-string (type bytes)

I did not configure anything yet and it was indeed a really fresh Ubuntu 14.04. box. I just set up my user, enabled ipv6 and configured sshd to solely accept pubkey-authentication. Nothing else.

Does anyone have an idea?

Ok, after some investigation I found the error. The answer-object of the Python DNS-Resolver (with python 3.4.3) for an AAAA-query does convert to string correctly (__str__) returns byte instead. The same error occurs in ssl_certificates.py. A hot-fix can be found here: http://pastebin.com/xi7R86ME . This is no nice code (definitively too late for that today), but it does the job.

Let’s continue at https://github.com/mail-in-a-box/mailinabox/issues/945 thanks.

@ma0ho If you want to open a pull request with that patch, and add some code comments documenting why the changes are necessary, that would be a big help!