'Find the name of a host that acts as a mail exchange server
for a domain.
@type domain: L{bytes}
@param domain: A domain name.
@type maximumCanonicalChainLength: L{int}
@param maximumCanonicalChainLength: The maximum number of unique
canonical name records to follow while looking up the mail exchange
host.
@rtype: L{Deferred} which successfully fires with L{Record_MX}
@return: A deferred which succeeds with the MX record for the mail
exchange server for the domain or fails if none can be found.'

def getMX(self, domain, maximumCanonicalChainLength=3):

    mailExchangeDeferred = self.resolver.lookupMailExchange(domain)
    mailExchangeDeferred.addCallback(self._filterRecords)
    mailExchangeDeferred.addCallback(self._cbMX, domain, maximumCanonicalChainLength)
    mailExchangeDeferred.addErrback(self._ebMX, domain)
    return mailExchangeDeferred
