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 2006/10/13 08:20:47 UTC
svn commit: r463571 - in /james/server/trunk/src: conf/
java/org/apache/james/smtpserver/
java/org/apache/james/smtpserver/core/filter/
test/org/apache/james/smtpserver/
Author: norman
Date: Thu Oct 12 23:20:46 2006
New Revision: 463571
URL: http://svn.apache.org/viewvc?view=rev&rev=463571
Log:
Allow disabling if bracketsEnforcement. See JAMES-642
Modified:
james/server/trunk/src/conf/james-config.xml
james/server/trunk/src/java/org/apache/james/smtpserver/SMTPHandlerConfigurationData.java
james/server/trunk/src/java/org/apache/james/smtpserver/SMTPServer.java
james/server/trunk/src/java/org/apache/james/smtpserver/core/filter/MailFilterCmdHandler.java
james/server/trunk/src/java/org/apache/james/smtpserver/core/filter/RcptFilterCmdHandler.java
james/server/trunk/src/test/org/apache/james/smtpserver/SMTPServerTest.java
james/server/trunk/src/test/org/apache/james/smtpserver/SMTPTestConfiguration.java
james/server/trunk/src/test/org/apache/james/smtpserver/ValidRcptHandlerTest.java
Modified: james/server/trunk/src/conf/james-config.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/src/conf/james-config.xml?view=diff&rev=463571&r1=463570&r2=463571
==============================================================================
--- james/server/trunk/src/conf/james-config.xml (original)
+++ james/server/trunk/src/conf/james-config.xml Thu Oct 12 23:20:46 2006
@@ -918,6 +918,11 @@
<heloEhloEnforcement>true</heloEhloEnforcement>
-->
+ <!-- WARNING: This is Non-RFC compliant (default value: true) -->
+ <!-- See: http://wiki.apache.org/james/StandardsComplianceStatement -->
+ <!-- TODO: CHANGE TO OFFICIAL URL LATER -->
+ <addressBracketsEnforcement>true</addressBracketsEnforcement>
+
<!-- This sets the SMTPGreeting which will be used when connect to the smtpserver -->
<!-- If none is specified a default is generated -->
<!--
Modified: james/server/trunk/src/java/org/apache/james/smtpserver/SMTPHandlerConfigurationData.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/smtpserver/SMTPHandlerConfigurationData.java?view=diff&rev=463571&r1=463570&r2=463571
==============================================================================
--- james/server/trunk/src/java/org/apache/james/smtpserver/SMTPHandlerConfigurationData.java (original)
+++ james/server/trunk/src/java/org/apache/james/smtpserver/SMTPHandlerConfigurationData.java Thu Oct 12 23:20:46 2006
@@ -113,5 +113,12 @@
* @return the local users repository
*/
UsersRepository getUsersRepository();
+
+ /**
+ * Return wheter the mailserver will accept addresses without brackets enclosed.
+ *
+ * @return true or false
+ */
+ boolean useAddressBracketsEnforcement();
}
Modified: james/server/trunk/src/java/org/apache/james/smtpserver/SMTPServer.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/smtpserver/SMTPServer.java?view=diff&rev=463571&r1=463570&r2=463571
==============================================================================
--- james/server/trunk/src/java/org/apache/james/smtpserver/SMTPServer.java (original)
+++ james/server/trunk/src/java/org/apache/james/smtpserver/SMTPServer.java Thu Oct 12 23:20:46 2006
@@ -129,6 +129,7 @@
private ServiceManager serviceManager;
+ private boolean addressBracketsEnforcement = true;
/**
* @see org.apache.avalon.framework.service.Serviceable#service(ServiceManager)
@@ -221,6 +222,8 @@
// get the smtpGreeting
smtpGreeting = handlerConfiguration.getChild("smtpGreeting").getValue(null);
+
+ addressBracketsEnforcement = handlerConfiguration.getChild("addressBracketsEnforcement").getValueAsBoolean(true);
//set the logger
ContainerUtil.enableLogging(handlerChain,getLogger());
@@ -376,6 +379,14 @@
public String getSMTPGreeting() {
return SMTPServer.this.smtpGreeting;
}
+
+ /**
+ * @see org.apache.james.smtpserver.SMTPHandlerConfigurationData#useAddressBracketsEnforcement()
+ */
+ public boolean useAddressBracketsEnforcement() {
+ // TODO Auto-generated method stub
+ return SMTPServer.this.addressBracketsEnforcement;
+ }
//TODO: IF we create here an interface to get DNSServer
// we should access it from the SMTPHandlers
Modified: james/server/trunk/src/java/org/apache/james/smtpserver/core/filter/MailFilterCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/smtpserver/core/filter/MailFilterCmdHandler.java?view=diff&rev=463571&r1=463570&r2=463571
==============================================================================
--- james/server/trunk/src/java/org/apache/james/smtpserver/core/filter/MailFilterCmdHandler.java (original)
+++ james/server/trunk/src/java/org/apache/james/smtpserver/core/filter/MailFilterCmdHandler.java Thu Oct 12 23:20:46 2006
@@ -131,7 +131,7 @@
}
}
}
- if (!sender.startsWith("<") || !sender.endsWith(">")) {
+ if ( session.getConfigurationData().useAddressBracketsEnforcement() && (!sender.startsWith("<") || !sender.endsWith(">"))) {
responseString = "501 "+DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.ADDRESS_SYNTAX_SENDER)+" Syntax error in MAIL command";
session.writeResponse(responseString);
if (getLogger().isErrorEnabled()) {
@@ -148,8 +148,12 @@
return;
}
MailAddress senderAddress = null;
- //Remove < and >
- sender = sender.substring(1, sender.length() - 1);
+
+ if (session.getConfigurationData().useAddressBracketsEnforcement() || (sender.startsWith("<") && sender.endsWith(">"))) {
+ //Remove < and >
+ sender = sender.substring(1, sender.length() - 1);
+ }
+
if (sender.length() == 0) {
//This is the <> case. Let senderAddress == null
} else {
Modified: james/server/trunk/src/java/org/apache/james/smtpserver/core/filter/RcptFilterCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/smtpserver/core/filter/RcptFilterCmdHandler.java?view=diff&rev=463571&r1=463570&r2=463571
==============================================================================
--- james/server/trunk/src/java/org/apache/james/smtpserver/core/filter/RcptFilterCmdHandler.java (original)
+++ james/server/trunk/src/java/org/apache/james/smtpserver/core/filter/RcptFilterCmdHandler.java Thu Oct 12 23:20:46 2006
@@ -94,7 +94,7 @@
// Remove the options from the recipient
recipient = recipient.substring(0, lastChar + 1);
}
- if (!recipient.startsWith("<") || !recipient.endsWith(">")) {
+ if (session.getConfigurationData().useAddressBracketsEnforcement() && (!recipient.startsWith("<") || !recipient.endsWith(">"))) {
responseString = "501 "+DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.DELIVERY_SYNTAX)+" Syntax error in parameters or arguments";
session.writeResponse(responseString);
if (getLogger().isErrorEnabled()) {
@@ -113,7 +113,10 @@
}
MailAddress recipientAddress = null;
//Remove < and >
- recipient = recipient.substring(1, recipient.length() - 1);
+ if (session.getConfigurationData().useAddressBracketsEnforcement() || (recipient.startsWith("<") && recipient.endsWith(">"))) {
+ recipient = recipient.substring(1, recipient.length() - 1);
+ }
+
if (recipient.indexOf("@") < 0) {
recipient = recipient + "@localhost";
}
Modified: james/server/trunk/src/test/org/apache/james/smtpserver/SMTPServerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/smtpserver/SMTPServerTest.java?view=diff&rev=463571&r1=463570&r2=463571
==============================================================================
--- james/server/trunk/src/test/org/apache/james/smtpserver/SMTPServerTest.java (original)
+++ james/server/trunk/src/test/org/apache/james/smtpserver/SMTPServerTest.java Thu Oct 12 23:20:46 2006
@@ -1399,4 +1399,54 @@
assertNull("mail reject by mail server", m_mailServer
.getLastMail());
}
+
+
+ public void testAddressBracketsEnforcementDisabled() throws Exception {
+ m_testConfiguration.setAddressBracketsEnforcement(false);
+ finishSetUp(m_testConfiguration);
+ SMTPClient smtpProtocol = new SMTPClient();
+ smtpProtocol.connect("127.0.0.1", m_smtpListenerPort);
+
+ smtpProtocol.sendCommand("ehlo", InetAddress.getLocalHost().toString());
+
+ smtpProtocol.sendCommand("mail from:", "test@localhost");
+ assertEquals("accept", 250,smtpProtocol.getReplyCode());
+
+ smtpProtocol.sendCommand("rcpt to:", "mail@sample.com");
+ assertEquals("accept", 250,smtpProtocol.getReplyCode());
+
+ smtpProtocol.quit();
+
+ smtpProtocol.connect("127.0.0.1", m_smtpListenerPort);
+
+ smtpProtocol.sendCommand("ehlo", InetAddress.getLocalHost().toString());
+
+ smtpProtocol.sendCommand("mail from:", "<te...@localhost>");
+ assertEquals("accept", 250,smtpProtocol.getReplyCode());
+
+ smtpProtocol.sendCommand("rcpt to:", "<ma...@sample.com>");
+ assertEquals("accept", 250,smtpProtocol.getReplyCode());
+
+ smtpProtocol.quit();
+ }
+
+ public void testAddressBracketsEnforcementEnabled() throws Exception {
+ finishSetUp(m_testConfiguration);
+ SMTPClient smtpProtocol = new SMTPClient();
+ smtpProtocol.connect("127.0.0.1", m_smtpListenerPort);
+
+ smtpProtocol.sendCommand("ehlo", InetAddress.getLocalHost().toString());
+
+ smtpProtocol.sendCommand("mail from:", "test@localhost");
+ assertEquals("reject", 501,smtpProtocol.getReplyCode());
+ smtpProtocol.sendCommand("mail from:", "<te...@localhost>");
+ assertEquals("accept", 250,smtpProtocol.getReplyCode());
+
+ smtpProtocol.sendCommand("rcpt to:", "mail@sample.com");
+ assertEquals("reject", 501,smtpProtocol.getReplyCode());
+ smtpProtocol.sendCommand("rcpt to:", "<ma...@sample.com>");
+ assertEquals("accept", 250,smtpProtocol.getReplyCode());
+
+ smtpProtocol.quit();
+ }
}
Modified: james/server/trunk/src/test/org/apache/james/smtpserver/SMTPTestConfiguration.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/smtpserver/SMTPTestConfiguration.java?view=diff&rev=463571&r1=463570&r2=463571
==============================================================================
--- james/server/trunk/src/test/org/apache/james/smtpserver/SMTPTestConfiguration.java (original)
+++ james/server/trunk/src/test/org/apache/james/smtpserver/SMTPTestConfiguration.java Thu Oct 12 23:20:46 2006
@@ -50,6 +50,7 @@
private boolean m_reverseEqualsEhlo = false;
private int m_maxRcpt = 0;
private boolean m_useRBL = false;
+ private boolean m_addressBracketsEnforcement = true;
public SMTPTestConfiguration(int smtpListenerPort) {
@@ -134,6 +135,10 @@
public void useRBL(boolean useRBL) {
m_useRBL = useRBL;
}
+
+ public void setAddressBracketsEnforcement(boolean addressBracketsEnforcement) {
+ this.m_addressBracketsEnforcement = addressBracketsEnforcement;
+ }
public void init() throws ConfigurationException {
@@ -149,6 +154,7 @@
handlerConfig.addChild(Util.getValuedConfiguration("maxmessagesize", "" + m_maxMessageSizeKB));
handlerConfig.addChild(Util.getValuedConfiguration("authRequired", m_authorizingMode));
handlerConfig.addChild(Util.getValuedConfiguration("heloEhloEnforcement", m_heloEhloEnforcement+""));
+ handlerConfig.addChild(Util.getValuedConfiguration("addressBracketsEnforcement", m_addressBracketsEnforcement+""));
if (m_verifyIdentity) handlerConfig.addChild(Util.getValuedConfiguration("verifyIdentity", "" + m_verifyIdentity));
DefaultConfiguration config = new DefaultConfiguration("handlerchain");
Modified: james/server/trunk/src/test/org/apache/james/smtpserver/ValidRcptHandlerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/smtpserver/ValidRcptHandlerTest.java?view=diff&rev=463571&r1=463570&r2=463571
==============================================================================
--- james/server/trunk/src/test/org/apache/james/smtpserver/ValidRcptHandlerTest.java (original)
+++ james/server/trunk/src/test/org/apache/james/smtpserver/ValidRcptHandlerTest.java Thu Oct 12 23:20:46 2006
@@ -140,6 +140,10 @@
public boolean useHeloEhloEnforcement() {
throw new UnsupportedOperationException("Unimplemented Stub Method");
}
+
+ public boolean useAddressBracketsEnforcement() {
+ return true;
+ }
};
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org