'Attempt to use the name of the domain directly when mail exchange
lookup fails.
@type failure: L{Failure}
@param failure: The reason for the lookup failure.
@type domain: L{bytes}
@param domain: The domain name.
@rtype: L{Record_MX <twisted.names.dns.Record_MX>} or L{Failure}
@return: An MX record for the domain or a failure if the fallback to
domain option is not in effect and an error, other than not
finding an MX record, occurred during lookup.
@raise IOError: When no MX record could be found and the fallback to
domain option is not in effect.
@raise DNSLookupError: When no MX record could be found and the
fallback to domain option is in effect but no address for the
domain could be found.'

def _ebMX(self, failure, domain):

    from twisted.names import error, dns
    if self.fallbackToDomain:
        failure.trap(error.DNSNameError)
        log.msg(('MX    lookup    failed;    attempting    to    use    hostname    (%s)    directly' % (domain,)))
        d = self.resolver.getHostByName(domain)
        def cbResolved(addr):
            return dns.Record_MX(name=addr)
        def ebResolved(err):
            err.trap(error.DNSNameError)
            raise DNSLookupError()
        d.addCallbacks(cbResolved, ebResolved)
        return d
    elif failure.check(error.DNSNameError):
        raise IOError(('No    MX    found    for    %r' % (domain,)))
    return failure
