@Override public Response onCommand(POP3Session session, Request request) { Response response = super.onCommand(session, request); if (POP3Response.OK_RESPONSE.equals(response.getRetCode())) { POP3BeforeSMTPHelper.addIPAddress(session.getRemoteAddress().getAddress().getHostAddress()); } return response; }
/** * 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; } }
/** * Handler method called upon receipt of a PASS command. Reads in and * validates the password. */ @Override public Response onCommand(POP3Session session, Request request) { String parameters = request.getArgument(); if (session.getHandlerState() == POP3Session.AUTHENTICATION_USERSET && parameters != null) { return doAuth(session, session.getUser(), parameters); } else { session.setHandlerState(POP3Session.AUTHENTICATION_READY); return AUTH_FAILED; } }