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/11/29 15:49:52 UTC
svn commit: r480586 - in /james/server/trunk/src: conf/
java/org/apache/james/ java/org/apache/james/services/
java/org/apache/james/smtpserver/core/filter/
java/org/apache/james/transport/mailets/
test/org/apache/james/imapserver/mock/ test/org/apache...
Author: norman
Date: Wed Nov 29 06:49:51 2006
New Revision: 480586
URL: http://svn.apache.org/viewvc?view=rev&rev=480586
Log:
Allow to specify a defaultDomain which get added to a recipient if no localpart is given
Correct the classes to use the right defaultDomain
Modified:
james/server/trunk/src/conf/james-config.xml
james/server/trunk/src/java/org/apache/james/James.java
james/server/trunk/src/java/org/apache/james/services/MailServer.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/java/org/apache/james/transport/mailets/AbstractVirtualUserTable.java
james/server/trunk/src/test/org/apache/james/imapserver/mock/MockMailServer.java
james/server/trunk/src/test/org/apache/james/test/mock/james/MockMailServer.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=480586&r1=480585&r2=480586
==============================================================================
--- james/server/trunk/src/conf/james-config.xml (original)
+++ james/server/trunk/src/conf/james-config.xml Wed Nov 29 06:49:51 2006
@@ -93,8 +93,14 @@
</inboxRepository>
-->
- <!-- Set to true to support virtualHosting -->
+ <!-- Set to true to support virtualHosting. If virtualHosting support is enabled the server will accept thread every user independ on -->
+ <!-- domain level. -->
<enableVirtualHosting> false </enableVirtualHosting>
+
+ <!-- Set the default domain which will be used if an email is send to a recipient without a domain part -->
+ <!-- If not defaultdomain is set the first domain of the DomainList get used -->
+ <defaultDomain> localhost </defaultDomain>
+
</James>
<!-- Experimental IMAP support -->
Modified: james/server/trunk/src/java/org/apache/james/James.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/James.java?view=diff&rev=480586&r1=480585&r2=480586
==============================================================================
--- james/server/trunk/src/java/org/apache/james/James.java (original)
+++ james/server/trunk/src/java/org/apache/james/James.java Wed Nov 29 06:49:51 2006
@@ -75,6 +75,7 @@
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
+import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Vector;
@@ -175,6 +176,8 @@
private DomainList domains;
private boolean virtualHosting = false;
+
+ private String defaultDomain = null;
/**
@@ -258,6 +261,13 @@
}
getLogger().info("VirtualHosting supported: " + virtualHosting);
+
+ Configuration defaultDomainConfig = conf.getChild("defaultDomain");
+ if (defaultDomainConfig != null ) {
+ defaultDomain = defaultDomainConfig.getValue(null);
+ }
+
+ getLogger().info("Defaultdomain: " + defaultDomain);
// Add this to comp
compMgr.put( MailServer.ROLE, this);
@@ -340,12 +350,20 @@
}
private void initializeServernamesAndPostmaster() throws ConfigurationException, ParseException {
-
+ String defaultDomain = getDefaultDomain();
+ if (domains.containsDomain(defaultDomain) == false) {
+ if (domains instanceof ManageableDomainList) {
+ if(((ManageableDomainList) domains).addDomain(defaultDomain) != false) {
+ throw new ConfigurationException("Configured defaultdomain could not get added to DomainList");
+ }
+ } else {
+ throw new ConfigurationException("Configured defaultDomain not exist in DomainList");
+ }
+ }
serverNames = domains.getDomains();
if (serverNames == null || serverNames.size() == 0) throw new ConfigurationException("No domainnames configured");
- String defaultDomain = (String) serverNames.iterator().next();
// used by RemoteDelivery for HELO
attributes.put(Constants.DEFAULT_DOMAIN, defaultDomain);
@@ -914,5 +932,21 @@
*/
public boolean supportVirtualHosting() {
return virtualHosting;
+ }
+
+ /**
+ * @see org.apache.james.services.MailServer#getDefaultDomain()
+ */
+ public String getDefaultDomain() {
+ if (defaultDomain == null) {
+ List domainList = domains.getDomains();
+ if (domainList == null || domainList.isEmpty()) {
+ return "localhost";
+ } else {
+ return (String) domainList.get(0);
+ }
+ } else {
+ return defaultDomain;
+ }
}
}
Modified: james/server/trunk/src/java/org/apache/james/services/MailServer.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/services/MailServer.java?view=diff&rev=480586&r1=480585&r2=480586
==============================================================================
--- james/server/trunk/src/java/org/apache/james/services/MailServer.java (original)
+++ james/server/trunk/src/java/org/apache/james/services/MailServer.java Wed Nov 29 06:49:51 2006
@@ -143,4 +143,12 @@
* @return true or false
*/
boolean supportVirtualHosting();
+
+ /**
+ * Return the default domain which will get used to deliver mail to if only the localpart
+ * was given on rcpt to.
+ *
+ * @return the defaultdomain
+ */
+ String getDefaultDomain();
}
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=480586&r1=480585&r2=480586
==============================================================================
--- 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 Wed Nov 29 06:49:51 2006
@@ -159,7 +159,7 @@
} else {
if (sender.indexOf("@") < 0) {
- sender = sender + "@localhost";
+ sender = sender + "@" + session.getConfigurationData().getMailServer().getDefaultDomain();
}
try {
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=480586&r1=480585&r2=480586
==============================================================================
--- 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 Wed Nov 29 06:49:51 2006
@@ -118,7 +118,8 @@
}
if (recipient.indexOf("@") < 0) {
- recipient = recipient + "@localhost";
+ // set the default domain
+ recipient = recipient + "@" + session.getConfigurationData().getMailServer().getDefaultDomain();
}
try {
Modified: james/server/trunk/src/java/org/apache/james/transport/mailets/AbstractVirtualUserTable.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/transport/mailets/AbstractVirtualUserTable.java?view=diff&rev=480586&r1=480585&r2=480586
==============================================================================
--- james/server/trunk/src/java/org/apache/james/transport/mailets/AbstractVirtualUserTable.java (original)
+++ james/server/trunk/src/java/org/apache/james/transport/mailets/AbstractVirtualUserTable.java Wed Nov 29 06:49:51 2006
@@ -107,7 +107,7 @@
}
try {
- MailAddress target = (targetAddress.indexOf('@') < 0) ? new MailAddress(targetAddress, "localhost")
+ MailAddress target = (targetAddress.indexOf('@') < 0) ? new MailAddress(targetAddress, (String) getMailetContext().getAttribute(Constants.DEFAULT_DOMAIN))
: new MailAddress(targetAddress);
//Mark this source address as an address to remove from the recipient list
Modified: james/server/trunk/src/test/org/apache/james/imapserver/mock/MockMailServer.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/imapserver/mock/MockMailServer.java?view=diff&rev=480586&r1=480585&r2=480586
==============================================================================
--- james/server/trunk/src/test/org/apache/james/imapserver/mock/MockMailServer.java (original)
+++ james/server/trunk/src/test/org/apache/james/imapserver/mock/MockMailServer.java Wed Nov 29 06:49:51 2006
@@ -65,4 +65,8 @@
return false;
}
+ public String getDefaultDomain() {
+ return "localhost";
+ }
+
}
Modified: james/server/trunk/src/test/org/apache/james/test/mock/james/MockMailServer.java
URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/test/mock/james/MockMailServer.java?view=diff&rev=480586&r1=480585&r2=480586
==============================================================================
--- james/server/trunk/src/test/org/apache/james/test/mock/james/MockMailServer.java (original)
+++ james/server/trunk/src/test/org/apache/james/test/mock/james/MockMailServer.java Wed Nov 29 06:49:51 2006
@@ -195,6 +195,10 @@
public boolean supportVirtualHosting() {
return virtualHosting;
}
+
+ public String getDefaultDomain() {
+ return "localhost";
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org