'Send an APOP command to perform authenticated login.
This should be used in special circumstances only, when it is
known that the server supports APOP authentication, and APOP
authentication is absolutely required.  For the common case,
use L{login} instead.
@type username: L{bytes}
@param username: The username with which to log in.
@type digest: L{bytes}
@param digest: The challenge response to authenticate with.
@rtype: L{Deferred <defer.Deferred>} which successfully fires with
L{bytes} or fails with L{ServerErrorResponse}
@return: A deferred which fires when the server response is received.
On an OK response, the deferred succeeds with the server
response minus the status indicator.  On an ERR response, the
deferred fails with a server error response failure.'

def apop(self, username, digest):

    return self.sendShort('APOP', ((username + '    ') + digest))
