'Map this alias to its ultimate destination.
@type aliasmap: L{dict} mapping L{bytes} to L{AliasBase}
@param aliasmap: A mapping of username to alias or group of aliases.
@type memo: L{None} or L{dict} of L{AliasBase}
@param memo: A record of the aliases already considered in the
resolution process.  If provided, C{memo} is modified to include
this alias.
@rtype: L{IMessage <smtp.IMessage>} or L{None}
@return: A message receiver for the ultimate destination or None for
an invalid destination.'

def resolve(self, aliasmap, memo=None):

    if (memo is None):
        memo = {}
    if (str(self) in memo):
        return None
    memo[str(self)] = None
    return self.createMessageReceiver()
