<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def _auth_login(self, username, password):
 """ Performs an authentication attempt using the LOGIN mechanism. Protocol: 1. The username is base64-encoded ; 2. The string 'AUTH LOGIN' and a space character are prepended to the base64-encoded username and sent to the server ; 3. If the server replies with a 334 return code, we can go on: 1) The password is base64-encoded and sent to the server ; 2) If the server replies with a 235 return code, the user is authenticated. Args: username (str):
 Identifier of the user trying to authenticate. password (str):
 Password for the user. Raises: ConnectionResetError: If the connection with the server is unexpectedely lost. SMTPAuthenticationError: If the authentication attempt fails. Returns: (int, str):
 A (code, message) 2-tuple containing the server response. """

        mechanism = "LOGIN"

        code, message = await self.do_cmd(
            "AUTH", mechanism, SMTP.b64enc(username), success=(334,)
        )

        try:
            code, message = await self.do_cmd(SMTP.b64enc(password), success=(235, 503))
        except SMTPCommandFailedError as e:
            raise SMTPAuthenticationError(e.code, e.message, mechanism)

        return code, message