You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2011/12/24 22:17:28 UTC
svn commit: r1223019 [2/2] - in /james/protocols/trunk:
api/src/main/java/org/apache/james/protocols/api/
pop3/src/main/java/org/apache/james/protocols/pop3/
pop3/src/main/java/org/apache/james/protocols/pop3/core/
smtp/src/main/java/org/apache/james/p...
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: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org