/** * Authenticate a user and return the {@link Response} * * @param session * @param user * @param pass * @return response */ protected final Response doAuth(POP3Session session, String user, String pass) { try { Mailbox mailbox = auth(session, user, pass); if (mailbox != null) { session.setUserMailbox(mailbox); stat(session); session.setHandlerState(POP3Session.TRANSACTION); StringBuilder responseBuffer = new StringBuilder(64).append("Welcome ").append(session.getUser()); return new POP3Response(POP3Response.OK_RESPONSE, responseBuffer.toString()); } else { session.setHandlerState(POP3Session.AUTHENTICATION_READY); return AUTH_FAILED; } } catch (Exception e) { LOGGER.error("Unexpected error accessing mailbox for {}", session.getUser(), e); session.setHandlerState(POP3Session.AUTHENTICATION_READY); return UNEXPECTED_ERROR; } }