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 2009/11/29 16:09:12 UTC
svn commit: r885237 - in /james/server/trunk: ./
imapserver-function/src/main/java/org/apache/james/imapserver/
imapserver-function/src/main/java/org/apache/james/imapserver/sieve/
phoenix-deployment/src/conf/ stage/org.apache.james/jars/
Author: norman
Date: Sun Nov 29 15:09:11 2009
New Revision: 885237
URL: http://svn.apache.org/viewvc?rev=885237&view=rev
Log:
SieveMailet now handle virtualhosting which allows the usage of IMAP when virtualhosting is enabled (JAMES-938)
Remove unused repository in config
Added:
james/server/trunk/stage/org.apache.james/jars/apache-jsieve-0.4-SNAPSHOT.jar (with props)
james/server/trunk/stage/org.apache.james/jars/apache-jsieve-mailet-0.4-SNAPSHOT.jar (with props)
Removed:
james/server/trunk/stage/org.apache.james/jars/apache-jsieve-0.3.jar
james/server/trunk/stage/org.apache.james/jars/apache-jsieve-mailet-0.3.jar
Modified:
james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/ImapServerProtocolHandlerFactory.java
james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/sieve/ResourceLocatorImpl.java
james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/sieve/SieveMailet.java
james/server/trunk/include.properties
james/server/trunk/phoenix-deployment/src/conf/james-config.xml
james/server/trunk/pom.xml
Modified: james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/ImapServerProtocolHandlerFactory.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/ImapServerProtocolHandlerFactory.java?rev=885237&r1=885236&r2=885237&view=diff
==============================================================================
--- james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/ImapServerProtocolHandlerFactory.java (original)
+++ james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/ImapServerProtocolHandlerFactory.java Sun Nov 29 15:09:11 2009
@@ -38,6 +38,7 @@
import org.apache.james.imap.mailbox.MailboxSession;
import org.apache.james.imap.main.ImapRequestHandler;
import org.apache.james.services.FileSystem;
+import org.apache.james.services.MailServer;
import org.apache.james.socket.api.ProtocolHandler;
import org.apache.james.socket.shared.AbstractProtocolHandlerFactory;
import org.apache.jsieve.mailet.Poster;
@@ -63,6 +64,8 @@
private FileSystem fSystem;
+ private MailServer mailServer;
+
@Resource(name="org.apache.james.api.user.UsersRepository")
public void setUsersRepository(UsersRepository usersRepos) {
this.usersRepos = usersRepos;
@@ -73,6 +76,11 @@
this.fSystem = fSystem;
}
+ @Resource(name="org.apache.james.services.MailServer")
+ public void setMailSerer(MailServer mailServer) {
+ this.mailServer = mailServer;
+ }
+
@PostConstruct
@Override
@@ -139,11 +147,12 @@
// TODO: when user missing, append to a default location
throw new MessagingException("Shared mailbox is not supported");
} else {
- final String user = url.substring(startOfUser, endOfUser);
+ String user = url.substring(startOfUser, endOfUser);
final int startOfHost = endOfUser + 1;
final int endOfHost = url.indexOf('/', startOfHost);
final String host = url.substring(startOfHost, endOfHost);
- if (!"localhost".equals(host)) {
+ //if (!"localhost".equals(host)) {
+ if (mailServer.isLocalServer(host) == false) {
//TODO: possible support for clustering?
throw new MessagingException("Only local mailboxes are supported");
} else {
@@ -154,6 +163,12 @@
} else {
urlPath = url.substring(endOfHost, length);
}
+
+ // check if we should use the full emailaddress as username
+ if (mailServer.supportVirtualHosting()) {
+ user = user + "@" + host;
+ }
+
final MailboxManager mailboxManager = factory.getMailbox();
final MailboxSession session = mailboxManager.createSystemSession(user, getLogger());
// This allows Sieve scripts to use a standard delimiter regardless of mailbox implementation
Modified: james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/sieve/ResourceLocatorImpl.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/sieve/ResourceLocatorImpl.java?rev=885237&r1=885236&r2=885237&view=diff
==============================================================================
--- james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/sieve/ResourceLocatorImpl.java (original)
+++ james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/sieve/ResourceLocatorImpl.java Sun Nov 29 15:09:11 2009
@@ -32,9 +32,24 @@
*/
public class ResourceLocatorImpl implements ResourceLocator {
+ private boolean virtualHosting;
+
+ public ResourceLocatorImpl(boolean virtualHosting) {
+ this.virtualHosting = virtualHosting;
+ }
+
public InputStream get(String uri) throws IOException {
// This is a toy implementation
- String username = uri.substring(2, uri.indexOf('@'));
+
+ // Use the complete emailaddress for finding the sieve file
+ uri = uri.substring(2);
+
+ String username;
+ if (virtualHosting) {
+ username = uri.substring(0,uri.indexOf("/"));
+ } else {
+ username = uri.substring(0,uri.indexOf("@"));
+ }
String sieveFileName = "../apps/james/var/sieve/"+username+".sieve";
return new FileInputStream(sieveFileName);
}
Modified: james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/sieve/SieveMailet.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/sieve/SieveMailet.java?rev=885237&r1=885236&r2=885237&view=diff
==============================================================================
--- james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/sieve/SieveMailet.java (original)
+++ james/server/trunk/imapserver-function/src/main/java/org/apache/james/imapserver/sieve/SieveMailet.java Sun Nov 29 15:09:11 2009
@@ -20,19 +20,43 @@
package org.apache.james.imapserver.sieve;
import javax.annotation.Resource;
+import javax.mail.MessagingException;
+import org.apache.james.services.MailServer;
import org.apache.jsieve.mailet.Poster;
import org.apache.jsieve.mailet.SieveMailboxMailet;
+import org.apache.mailet.MailAddress;
+import org.apache.mailet.MailetConfig;
/**
* Contains resource bindings.
*/
public class SieveMailet extends SieveMailboxMailet {
+ private MailServer mailServer;
+
+ @Resource(name="org.apache.james.services.MailServer")
+ public void setMailSerer(MailServer mailServer) {
+ this.mailServer = mailServer;
+ }
+
+
+
+
+ @Override
+ public void init(MailetConfig config) throws MessagingException {
+ // ATM Fixed implementation
+ setLocator(new ResourceLocatorImpl(mailServer.supportVirtualHosting()));
+
+ super.init(config);
+ }
+
+
+
+
public SieveMailet() {
super();
- // ATM Fixed implementation
- setLocator(new ResourceLocatorImpl());
+
}
@Resource(name="org.apache.jsieve.mailet.Poster")
@@ -40,5 +64,15 @@
public void setPoster(Poster poster) {
super.setPoster(poster);
}
+
+ /**
+ * Return the username to use for sieve processing for the given MailAddress
+ *
+ * @param m
+ * @return username
+ */
+ protected String getUsername(MailAddress m) {
+ return m.toString();
+ }
}
Modified: james/server/trunk/include.properties
URL: http://svn.apache.org/viewvc/james/server/trunk/include.properties?rev=885237&r1=885236&r2=885237&view=diff
==============================================================================
--- james/server/trunk/include.properties (original)
+++ james/server/trunk/include.properties Sun Nov 29 15:09:11 2009
@@ -271,9 +271,9 @@
javax.management=${path.lib.mx4j}/${jarname.javax.management}
# ----- sieve-----
-jarname.jsieve.jar=apache-jsieve-0.3.jar
+jarname.jsieve.jar=apache-jsieve-0.4-SNAPSHOT.jar
jsieve.jar=${path.lib.james}/${jarname.jsieve.jar}
-jarname.jsieve-mailet.jar=apache-jsieve-mailet-0.3.jar
+jarname.jsieve-mailet.jar=apache-jsieve-mailet-0.4-SNAPSHOT.jar
jsieve-mailet.jar=${path.lib.james}/${jarname.jsieve-mailet.jar}
jarname.commons-digester.jar=commons-digester-1.8.jar
commons-digester.jar=${path.lib.commonsdigester}/${jarname.commons-digester.jar}
Modified: james/server/trunk/phoenix-deployment/src/conf/james-config.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/phoenix-deployment/src/conf/james-config.xml?rev=885237&r1=885236&r2=885237&view=diff
==============================================================================
--- james/server/trunk/phoenix-deployment/src/conf/james-config.xml (original)
+++ james/server/trunk/phoenix-deployment/src/conf/james-config.xml Sun Nov 29 15:09:11 2009
@@ -1242,17 +1242,6 @@
<!-- The Mailstore block -->
<mailstore>
<repositories>
- <repository class="org.apache.james.mailboxmanager.repository.MailboxManagerMailRepository">
- <protocols>
- <protocol>mailboxmanager</protocol>
- </protocols>
- <types>
- <type>MAIL</type>
- </types>
- <config>
- <sqlFile>file://conf/mailboxManagerSqlResources.xml</sqlFile>
- </config>
- </repository>
<!-- File based repositories. These repositories store all message data -->
<!-- in the file system. -->
<repository class="org.apache.james.mailrepository.FileMailRepository">
Modified: james/server/trunk/pom.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/pom.xml?rev=885237&r1=885236&r2=885237&view=diff
==============================================================================
--- james/server/trunk/pom.xml (original)
+++ james/server/trunk/pom.xml Sun Nov 29 15:09:11 2009
@@ -606,12 +606,12 @@
<dependency>
<groupId>org.apache.james</groupId>
<artifactId>apache-jsieve</artifactId>
- <version>0.3</version>
+ <version>0.4-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
<artifactId>apache-jsieve-mailet</artifactId>
- <version>0.3</version>
+ <version>0.4-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.james</groupId>
Added: james/server/trunk/stage/org.apache.james/jars/apache-jsieve-0.4-SNAPSHOT.jar
URL: http://svn.apache.org/viewvc/james/server/trunk/stage/org.apache.james/jars/apache-jsieve-0.4-SNAPSHOT.jar?rev=885237&view=auto
==============================================================================
Binary file - no diff available.
Propchange: james/server/trunk/stage/org.apache.james/jars/apache-jsieve-0.4-SNAPSHOT.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: james/server/trunk/stage/org.apache.james/jars/apache-jsieve-mailet-0.4-SNAPSHOT.jar
URL: http://svn.apache.org/viewvc/james/server/trunk/stage/org.apache.james/jars/apache-jsieve-mailet-0.4-SNAPSHOT.jar?rev=885237&view=auto
==============================================================================
Binary file - no diff available.
Propchange: james/server/trunk/stage/org.apache.james/jars/apache-jsieve-mailet-0.4-SNAPSHOT.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org