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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]