Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/StartTlsCmdHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/StartTlsCmdHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff ============================================================================== --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/StartTlsCmdHandler.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/StartTlsCmdHandler.java Sat Dec 24 21:17:27 2011 @@ -44,6 +44,10 @@ public class StartTlsCmdHandler implemen private final static Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList(COMMAND_NAME)); private final static List<String> FEATURES = Collections.unmodifiableList(Arrays.asList(COMMAND_NAME)); + private static final Response TLS_ALREADY_ACTIVE = new SMTPResponse("500", DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_CMD) + " TLS already active RFC2487 5.2").immutable(); + private static final Response READY_FOR_STARTTLS = new SMTPStartTLSResponse("220", DSNStatus.getStatus(DSNStatus.SUCCESS, DSNStatus.UNDEFINED_STATUS) + " Ready to start TLS").immutable(); + private static final Response SYNTAX_ERROR = new SMTPResponse("501 " + DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_ARG) + " Syntax error (no parameters allowed) with STARTTLS command").immutable(); + private static final Response NOT_SUPPORTED = new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_COMMAND_UNRECOGNIZED, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_CMD) +" Command " + COMMAND_NAME +" unrecognized.").immutable(); /** * @see org.apache.james.protocols.api.handler.CommandHandler#getImplCommands() */ @@ -57,28 +61,20 @@ public class StartTlsCmdHandler implemen * */ public Response onCommand(SMTPSession session, Request request) { - String command = request.getCommand(); - String parameters = request.getArgument(); if (session.isStartTLSSupported()) { if (session.isTLSStarted()) { - SMTPResponse response = new SMTPResponse("500", DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_CMD) + " TLS already active RFC2487 5.2"); - return response; + return TLS_ALREADY_ACTIVE; } else { - SMTPResponse response; + String parameters = request.getArgument(); if ((parameters == null) || (parameters.length() == 0)) { - response = new SMTPStartTLSResponse("220", DSNStatus.getStatus(DSNStatus.SUCCESS, DSNStatus.UNDEFINED_STATUS) + " Ready to start TLS"); + return READY_FOR_STARTTLS; } else { - response = new SMTPResponse("501 " + DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_ARG) + " Syntax error (no parameters allowed) with STARTTLS command"); - } - return response; - + return SYNTAX_ERROR; + } } } else { - StringBuilder result = new StringBuilder(); - result.append(DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_CMD)).append(" Command ").append(command).append(" unrecognized."); - SMTPResponse response = new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_COMMAND_UNRECOGNIZED, result); - return response; + return NOT_SUPPORTED; } }
Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractGreylistHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractGreylistHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff ============================================================================== --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractGreylistHandler.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractGreylistHandler.java Sat Dec 24 21:17:27 2011 @@ -47,7 +47,10 @@ public abstract class AbstractGreylistHa private long unseenLifeTime = 14400000; - + private static final HookResult TO_FAST = new HookResult(HookReturnCode.DENYSOFT, SMTPRetCode.LOCAL_ERROR, DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.NETWORK_DIR_SERVER) + + " Temporary rejected: Reconnect to fast. Please try again later"); + private static final HookResult TEMPORARY_REJECT = new HookResult(HookReturnCode.DENYSOFT, SMTPRetCode.LOCAL_ERROR, DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.NETWORK_DIR_SERVER) + + " Temporary rejected: Please try again later"); public void setUnseenLifeTime(long unseenLifeTime) { this.unseenLifeTime = unseenLifeTime; } @@ -91,8 +94,7 @@ public abstract class AbstractGreylistHa long acceptTime = createTimeStamp + tempBlockTime; if ((time < acceptTime) && (count == 0)) { - return new HookResult(HookReturnCode.DENYSOFT, SMTPRetCode.LOCAL_ERROR, DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.NETWORK_DIR_SERVER) - + " Temporary rejected: Reconnect to fast. Please try again later"); + return TO_FAST; } else { session.getLogger().debug("Update triplet " + ipAddress + " | " + sender + " | " + recip + " -> timestamp: " + time); @@ -108,8 +110,7 @@ public abstract class AbstractGreylistHa insertTriplet(ipAddress, sender, recip, count, time); // Tempory block on new triplet! - return new HookResult(HookReturnCode.DENYSOFT, SMTPRetCode.LOCAL_ERROR, DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.NETWORK_DIR_SERVER) - + " Temporary rejected: Please try again later"); + return TEMPORARY_REJECT; } // some kind of random cleanup process @@ -126,7 +127,7 @@ public abstract class AbstractGreylistHa // just log the exception session.getLogger().error("Error on greylist method: " + e.getMessage()); } - return new HookResult(HookReturnCode.DECLINED); + return HookResult.declined(); } /** @@ -210,6 +211,6 @@ public abstract class AbstractGreylistHa } else { session.getLogger().info("IpAddress " + session.getRemoteAddress().getAddress().getHostAddress() + " is allowed to send. Skip greylisting."); } - return new HookResult(HookReturnCode.DECLINED); + return HookResult.declined(); } } Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff ============================================================================== --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java Sat Dec 24 21:17:27 2011 @@ -67,7 +67,7 @@ public abstract class AbstractValidRcptH session.getLogger().info("Rejected message. Unknown user: " + rcpt.toString()); return new HookResult(HookReturnCode.DENY,SMTPRetCode.MAILBOX_PERM_UNAVAILABLE, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.ADDRESS_MAILBOX) + " Unknown user: " + rcpt.toString()); } else { - return new HookResult(HookReturnCode.DECLINED); + return HookResult.declined(); } } Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff ============================================================================== --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java Sat Dec 24 21:17:27 2011 @@ -204,6 +204,6 @@ public class DNSRBLHandler implements R } } - return new HookResult(HookReturnCode.DECLINED); + return HookResult.declined(); } } Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff ============================================================================== --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandler.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandler.java Sat Dec 24 21:17:27 2011 @@ -32,6 +32,8 @@ import org.apache.james.protocols.smtp.h public class MaxRcptHandler implements RcptHook { + private static final HookResult MAX_RCPT = new HookResult(HookReturnCode.DENY, SMTPRetCode.SYSTEM_STORAGE_ERROR, DSNStatus.getStatus(DSNStatus.NETWORK, DSNStatus.DELIVERY_TOO_MANY_REC) + + " Requested action not taken: max recipients reached"); private int maxRcpt = 0; @@ -52,10 +54,9 @@ public class MaxRcptHandler implements R if ((session.getRcptCount() + 1) > maxRcpt) { session.getLogger().info("Maximum recipients of " + maxRcpt + " reached"); - return new HookResult(HookReturnCode.DENY, SMTPRetCode.SYSTEM_STORAGE_ERROR, DSNStatus.getStatus(DSNStatus.NETWORK, DSNStatus.DELIVERY_TOO_MANY_REC) - + " Requested action not taken: max recipients reached"); + return MAX_RCPT; } else { - return new HookResult(HookReturnCode.DECLINED); + return HookResult.declined(); } } } Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff ============================================================================== --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandler.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandler.java Sat Dec 24 21:17:27 2011 @@ -59,7 +59,7 @@ public class MaxUnknownCmdHandler implem } else { - return new HookResult(HookReturnCode.DECLINED); + return HookResult.declined(); } } Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff ============================================================================== --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java Sat Dec 24 21:17:27 2011 @@ -84,7 +84,7 @@ public class ResolvableEhloHeloHandler i // try to resolv the provided helo. If it can not resolved do not // accept it. try { - dnsService.getByName(argument); + dnsService.getByName(argument); } catch (UnknownHostException e) { return true; } @@ -109,7 +109,7 @@ public class ResolvableEhloHeloHandler i return new HookResult(HookReturnCode.DENY,SMTPRetCode.SYNTAX_ERROR_ARGUMENTS,DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_ARG) + " Provided EHLO/HELO " + session.getAttachment(SMTPSession.CURRENT_HELO_NAME, State.Transaction) + " can not resolved."); } else { - return new HookResult(HookReturnCode.DECLINED); + return HookResult.declined(); } } @@ -118,7 +118,7 @@ public class ResolvableEhloHeloHandler i */ public HookResult doHelo(SMTPSession session, String helo) { checkEhloHelo(session, helo); - return new HookResult(HookReturnCode.DECLINED); + return HookResult.declined(); } } Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ReverseEqualsEhloHeloHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ReverseEqualsEhloHeloHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff ============================================================================== --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ReverseEqualsEhloHeloHandler.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ReverseEqualsEhloHeloHandler.java Sat Dec 24 21:17:27 2011 @@ -30,6 +30,7 @@ public class ReverseEqualsEhloHeloHandle /** * @see org.apache.james.protocols.smtp.core.fastfail.ResolvableEhloHeloHandler#isBadHelo(org.apache.james.protocols.smtp.SMTPSession, java.lang.String) */ + @Override protected boolean isBadHelo(SMTPSession session, String argument) { try { // get reverse entry Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff ============================================================================== --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandler.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandler.java Sat Dec 24 21:17:27 2011 @@ -28,7 +28,6 @@ import java.util.Map; import org.apache.james.protocols.smtp.MailAddress; import org.apache.james.protocols.smtp.SMTPSession; import org.apache.james.protocols.smtp.hook.HookResult; -import org.apache.james.protocols.smtp.hook.HookReturnCode; import org.apache.james.protocols.smtp.hook.RcptHook; /** @@ -60,17 +59,17 @@ public class SpamTrapHandler implements public HookResult doRcpt(SMTPSession session, MailAddress sender, MailAddress rcpt) { String address = session.getRemoteAddress().getAddress().getHostAddress(); if (isBlocked(address, session)) { - return new HookResult(HookReturnCode.DENY); + return HookResult.deny(); } else { if (spamTrapRecips.contains(rcpt.toString().toLowerCase())){ addIp(address, session); - return new HookResult(HookReturnCode.DENY); + return HookResult.deny(); } } - return new HookResult(HookReturnCode.DECLINED); + return HookResult.declined(); } Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff ============================================================================== --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java Sat Dec 24 21:17:27 2011 @@ -57,6 +57,6 @@ public class SupressDuplicateRcptHandler session.getLogger().debug("Duplicate recipient not add to recipient list: " + rcpt.toString()); return new HookResult(HookReturnCode.OK,SMTPRetCode.MAIL_OK, responseBuffer.toString()); } - return new HookResult(HookReturnCode.DECLINED); + return HookResult.declined(); } } Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java?rev=1223019&r1=1223018&r2=1223019&view=diff ============================================================================== --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java Sat Dec 24 21:17:27 2011 @@ -77,7 +77,7 @@ public class ValidSenderDomainHandler im if (check(session,sender)) { return new HookResult(HookReturnCode.DENY,SMTPRetCode.SYNTAX_ERROR_ARGUMENTS,DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.ADDRESS_SYNTAX_SENDER)+ " sender " + sender + " contains a domain with no valid MX records"); } else { - return new HookResult(HookReturnCode.DECLINED); + return HookResult.declined(); } } } Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookResult.java URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookResult.java?rev=1223019&r1=1223018&r2=1223019&view=diff ============================================================================== --- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookResult.java (original) +++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookResult.java Sat Dec 24 21:17:27 2011 @@ -25,6 +25,12 @@ package org.apache.james.protocols.smtp. */ public final class HookResult { + private static final HookResult DECLINED = new HookResult(HookReturnCode.DECLINED); + private static final HookResult OK = new HookResult(HookReturnCode.OK); + private static final HookResult DENY = new HookResult(HookReturnCode.DENY); + private static final HookResult DENYSOFT = new HookResult(HookReturnCode.DENYSOFT); + private static final HookResult DISCONNECT = new HookResult(HookReturnCode.DISCONNECT); + private int result; private String smtpRetCode; private String smtpDescription; @@ -106,4 +112,24 @@ public final class HookResult { public String getSmtpDescription() { return smtpDescription; } + + public static HookResult declined() { + return DECLINED; + } + + public static HookResult ok() { + return OK; + } + + public static HookResult deny() { + return DENY; + } + + public static HookResult denysoft() { + return DENYSOFT; + } + + public static HookResult disconnect() { + return DISCONNECT; + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
