'Check whether mail can be relayed to a user.
@type user: L{User}
@param user: A user.
@rtype: no-argument callable which returns L{IMessage <smtp.IMessage>}
provider
@return: A function which takes no arguments and returns a message
receiver for the user.
@raise SMTPBadRcpt: When mail cannot be relayed to the user.'

def exists(self, user):

    if self.willRelay(user.dest, user.protocol):
        orig = filter(None, str(user.orig).split('@', 1))
        dest = filter(None, str(user.dest).split('@', 1))
        if ((len(orig) == 2) and (len(dest) == 2)):
            return (lambda : self.startMessage(user))
    raise smtp.SMTPBadRcpt(user)
