'Perform APOP authentication.
@type user: L{bytes}
@param user: The name of the user attempting to log in.
@type digest: L{bytes}
@param digest: The challenge response.
@rtype: L{Deferred <defer.Deferred>} which successfully results in
3-L{tuple} of (E{1}) L{IMailbox <pop3.IMailbox>}, (E{2})
L{IMailbox <pop3.IMailbox>} provider, (E{3}) no-argument callable
@return: A deferred which fires when authentication is complete.  If
successful, it returns an L{IMailbox <pop3.IMailbox>} interface, a
mailbox, and a function to be invoked with the session is
terminated.  If authentication fails, the deferred fails with an
L{UnathorizedLogin <cred.error.UnauthorizedLogin>} error.
@raise cred.error.UnauthorizedLogin: When authentication fails.'

def authenticateUserAPOP(self, user, digest):

    if (self.portal is not None):
        return self.portal.login(APOPCredentials(self.magic, user, digest), None, IMailbox)
    raise cred.error.UnauthorizedLogin()
