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 ma...@apache.org on 2015/11/03 17:48:57 UTC

svn commit: r1712334 - in /james/project/trunk/server/container: cassandra-guice/src/main/java/org/apache/james/ cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ cassandra-guice/src/main/java/org/apache/james/modules/protocols/ cassandra...

Author: matthieu
Date: Tue Nov  3 16:48:56 2015
New Revision: 1712334

URL: http://svn.apache.org/viewvc?rev=1712334&view=rev
Log:
JAMES-1626 support IMAP, SMTP, POP and LMTP protocols in cassandra-guice application

Added:
    james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/
    james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/IMAPServerModule.java
    james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/LMTPServerModule.java
    james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/POP3ServerModule.java
    james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/ProtocolHandlerModule.java
      - copied, changed from r1712333, james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java
    james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/SMTPServerModule.java
    james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/FileSystemModule.java
      - copied, changed from r1712333, james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java
    james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/QuotaModule.java
      - copied, changed from r1712333, james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java
    james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/utils/GuiceProtocolHandlerLoader.java
    james/project/trunk/server/container/cassandra-guice/src/test/resources/imapserver.xml
    james/project/trunk/server/container/cassandra-guice/src/test/resources/lmtpserver.xml
    james/project/trunk/server/container/cassandra-guice/src/test/resources/pop3server.xml
    james/project/trunk/server/container/cassandra-guice/src/test/resources/smtpserver.xml
Modified:
    james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
    james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
    james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java
    james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java

Modified: james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java?rev=1712334&r1=1712333&r2=1712334&view=diff
==============================================================================
--- james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java (original)
+++ james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java Tue Nov  3 16:48:56 2015
@@ -25,9 +25,16 @@ import org.apache.james.modules.data.Cas
 import org.apache.james.modules.mailbox.CassandraMailboxModule;
 import org.apache.james.modules.mailbox.CassandraSessionModule;
 import org.apache.james.modules.mailbox.ElasticSearchMailboxModule;
+import org.apache.james.modules.protocols.IMAPServerModule;
+import org.apache.james.modules.protocols.LMTPServerModule;
+import org.apache.james.modules.protocols.POP3ServerModule;
+import org.apache.james.modules.protocols.ProtocolHandlerModule;
+import org.apache.james.modules.protocols.SMTPServerModule;
 import org.apache.james.modules.server.ActiveMQQueueModule;
 import org.apache.james.modules.server.ConfigurationPerformerModule;
 import org.apache.james.modules.server.DNSServiceModule;
+import org.apache.james.modules.server.FileSystemModule;
+import org.apache.james.modules.server.QuotaModule;
 
 import com.google.inject.Module;
 import com.google.inject.util.Modules;
@@ -43,7 +50,14 @@ public class CassandraJamesServerMain {
             new CassandraDomainListModule(),
             new CassandraRecipientRewriteTableModule(),
             new DNSServiceModule(),
-            new ActiveMQQueueModule());
+            new IMAPServerModule(),
+            new ProtocolHandlerModule(),
+            new POP3ServerModule(),
+            new SMTPServerModule(),
+            new LMTPServerModule(),
+            new ActiveMQQueueModule(),
+            new QuotaModule(),
+            new FileSystemModule());
 
     public static void main(String[] args) throws Exception {
         CassandraJamesServer server = new CassandraJamesServer(defaultModule);

Modified: james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java?rev=1712334&r1=1712333&r2=1712334&view=diff
==============================================================================
--- james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java (original)
+++ james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java Tue Nov  3 16:48:56 2015
@@ -34,6 +34,7 @@ import org.apache.james.mailbox.cassandr
 import org.apache.james.mailbox.elasticsearch.events.ElasticSearchListeningMessageSearchIndex;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.store.Authenticator;
+import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.NoMailboxPathLocker;
 import org.apache.james.mailbox.store.mail.MessageMapperFactory;
 import org.apache.james.mailbox.store.mail.ModSeqProvider;
@@ -56,7 +57,8 @@ public class CassandraMailboxModule exte
 
         bind(SubscriptionManager.class).to(CassandraSubscriptionManager.class);
         bind(new TypeLiteral<MessageMapperFactory<CassandraId>>(){}).to(CassandraMailboxSessionMapperFactory.class);
-
+        bind(MailboxSessionMapperFactory.class).to(CassandraMailboxSessionMapperFactory.class);
+        
         bind(MailboxPathLocker.class).to(NoMailboxPathLocker.class);
         bind(Authenticator.class).to(UserRepositoryAuthenticator.class);
 

Added: james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/IMAPServerModule.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/IMAPServerModule.java?rev=1712334&view=auto
==============================================================================
--- james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/IMAPServerModule.java (added)
+++ james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/IMAPServerModule.java Tue Nov  3 16:48:56 2015
@@ -0,0 +1,103 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+package org.apache.james.modules.protocols;
+
+import com.google.inject.Inject;
+import com.google.inject.Provides;
+import com.google.inject.Singleton;
+import com.google.inject.multibindings.Multibinder;
+import com.google.inject.name.Named;
+import org.apache.james.imap.api.process.ImapProcessor;
+import org.apache.james.imap.decode.ImapDecoder;
+import org.apache.james.imap.encode.ImapEncoder;
+import org.apache.james.imap.encode.main.DefaultImapEncoderFactory;
+import org.apache.james.imap.main.DefaultImapDecoderFactory;
+import org.apache.james.imap.processor.main.DefaultImapProcessorFactory;
+import org.apache.james.imapserver.netty.IMAPServerFactory;
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.SubscriptionManager;
+import org.apache.james.mailbox.quota.QuotaManager;
+import org.apache.james.mailbox.quota.QuotaRootResolver;
+import org.apache.james.modules.mailbox.CassandraMailboxModule;
+import org.apache.james.utils.ClassPathConfigurationProvider;
+import org.apache.james.utils.ConfigurationPerformer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.inject.AbstractModule;
+
+public class IMAPServerModule extends AbstractModule {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(IMAPServerModule.class);
+
+    @Override
+    protected void configure() {
+        Multibinder.newSetBinder(binder(), ConfigurationPerformer.class).addBinding().to(IMAPModuleConfigurationPerformer.class);
+    }
+
+    @Provides
+    @Singleton
+    ImapProcessor provideImapProcessor(
+            @Named(CassandraMailboxModule.MAILBOXMANAGER_NAME)MailboxManager mailboxManager, 
+            SubscriptionManager subscriptionManager,
+            QuotaManager quotaManager,
+            QuotaRootResolver quotaRootResolver) {
+        return DefaultImapProcessorFactory.createXListSupportingProcessor(
+                mailboxManager,
+                subscriptionManager,
+                null,
+                quotaManager,
+                quotaRootResolver,
+                120,
+                ImmutableSet.of("ACL", "MOVE"));
+    }
+
+    @Provides
+    @Singleton
+    ImapDecoder provideImapDecoder() {
+        return DefaultImapDecoderFactory.createDecoder();
+    }
+
+    @Provides
+    @Singleton
+    ImapEncoder provideImapEncoder() {
+        return new DefaultImapEncoderFactory().buildImapEncoder();
+    }
+
+    @Singleton
+    public static class IMAPModuleConfigurationPerformer implements ConfigurationPerformer {
+
+        private final ClassPathConfigurationProvider classPathConfigurationProvider;
+        private final IMAPServerFactory imapServerFactory;
+
+        @Inject
+        public IMAPModuleConfigurationPerformer(ClassPathConfigurationProvider classPathConfigurationProvider, IMAPServerFactory imapServerFactory) {
+            this.classPathConfigurationProvider = classPathConfigurationProvider;
+            this.imapServerFactory = imapServerFactory;
+        }
+
+        @Override
+        public void initModule() throws Exception {
+            imapServerFactory.setLog(LOGGER);
+            imapServerFactory.configure(classPathConfigurationProvider.getConfiguration("imapserver"));
+            imapServerFactory.init();
+        }
+    }
+}
\ No newline at end of file

Added: james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/LMTPServerModule.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/LMTPServerModule.java?rev=1712334&view=auto
==============================================================================
--- james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/LMTPServerModule.java (added)
+++ james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/LMTPServerModule.java Tue Nov  3 16:48:56 2015
@@ -0,0 +1,61 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.modules.protocols;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import com.google.inject.multibindings.Multibinder;
+import org.apache.james.lmtpserver.netty.LMTPServerFactory;
+import org.apache.james.utils.ClassPathConfigurationProvider;
+import org.apache.james.utils.ConfigurationPerformer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class LMTPServerModule extends AbstractModule {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(LMTPServerModule.class);
+
+    @Override
+    protected void configure() {
+        Multibinder.newSetBinder(binder(), ConfigurationPerformer.class).addBinding().to(LMTPModuleConfigurationPerformer.class);
+    }
+
+    @Singleton
+    public static class LMTPModuleConfigurationPerformer implements ConfigurationPerformer {
+
+        private final ClassPathConfigurationProvider classPathConfigurationProvider;
+        private final LMTPServerFactory lmtpServerFactory;
+
+        @Inject
+        public LMTPModuleConfigurationPerformer(ClassPathConfigurationProvider classPathConfigurationProvider, LMTPServerFactory lmtpServerFactory) {
+            this.classPathConfigurationProvider = classPathConfigurationProvider;
+            this.lmtpServerFactory = lmtpServerFactory;
+        }
+
+        @Override
+        public void initModule() throws Exception {
+            lmtpServerFactory.setLog(LOGGER);
+            lmtpServerFactory.configure(classPathConfigurationProvider.getConfiguration("lmtpserver"));
+            lmtpServerFactory.init();
+        }
+    }
+
+}

Added: james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/POP3ServerModule.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/POP3ServerModule.java?rev=1712334&view=auto
==============================================================================
--- james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/POP3ServerModule.java (added)
+++ james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/POP3ServerModule.java Tue Nov  3 16:48:56 2015
@@ -0,0 +1,61 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.modules.protocols;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import com.google.inject.multibindings.Multibinder;
+import org.apache.james.pop3server.netty.POP3ServerFactory;
+import org.apache.james.utils.ClassPathConfigurationProvider;
+import org.apache.james.utils.ConfigurationPerformer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class POP3ServerModule extends AbstractModule {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(POP3ServerModule.class);
+
+    @Override
+    protected void configure() {
+        Multibinder.newSetBinder(binder(), ConfigurationPerformer.class).addBinding().to(POP3ModuleConfigurationPerformer.class);
+    }
+
+    @Singleton
+    public static class POP3ModuleConfigurationPerformer implements ConfigurationPerformer {
+
+        private final ClassPathConfigurationProvider classPathConfigurationProvider;
+        private final POP3ServerFactory pop3ServerFactory;
+
+        @Inject
+        public POP3ModuleConfigurationPerformer(ClassPathConfigurationProvider classPathConfigurationProvider, POP3ServerFactory pop3ServerFactory) {
+            this.classPathConfigurationProvider = classPathConfigurationProvider;
+            this.pop3ServerFactory = pop3ServerFactory;
+        }
+
+        @Override
+        public void initModule() throws Exception {
+            pop3ServerFactory.setLog(LOGGER);
+            pop3ServerFactory.configure(classPathConfigurationProvider.getConfiguration("pop3server"));
+            pop3ServerFactory.init();
+        }
+    }
+
+}

Copied: james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/ProtocolHandlerModule.java (from r1712333, james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java)
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/ProtocolHandlerModule.java?p2=james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/ProtocolHandlerModule.java&p1=james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java&r1=1712333&r2=1712334&rev=1712334&view=diff
==============================================================================
--- james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java (original)
+++ james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/ProtocolHandlerModule.java Tue Nov  3 16:48:56 2015
@@ -16,42 +16,22 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.core.filesystem;
 
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
+package org.apache.james.modules.protocols;
 
+import org.apache.james.core.filesystem.FileSystemImpl;
 import org.apache.james.filesystem.api.FileSystem;
-import org.apache.james.filesystem.api.JamesDirectoriesProvider;
+import org.apache.james.protocols.lib.handler.ProtocolHandlerLoader;
+import org.apache.james.utils.GuiceProtocolHandlerLoader;
 
-public class FileSystemImpl implements FileSystem {
+import com.google.inject.AbstractModule;
 
-    private final JamesDirectoriesProvider directoryProvider;
-    private final ResourceFactory resourceLoader;
-
-    public FileSystemImpl(JamesDirectoriesProvider directoryProvider) {
-        this.directoryProvider = directoryProvider;
-        this.resourceLoader = new ResourceFactory(directoryProvider);
-    }
+public class ProtocolHandlerModule extends AbstractModule {
 
     @Override
-    public File getBasedir() throws FileNotFoundException {
-        return new File(directoryProvider.getRootDirectory());
+    protected void configure() {
+        bind(FileSystem.class).to(FileSystemImpl.class);
+        bind(ProtocolHandlerLoader.class).to(GuiceProtocolHandlerLoader.class);
     }
 
-    @Override
-    public InputStream getResource(String url) throws IOException {
-        return resourceLoader.getResource(url).getInputStream();
-    }
-
-    @Override
-    public File getFile(String fileURL) throws FileNotFoundException {
-        try {
-            return resourceLoader.getResource(fileURL).getFile();
-        } catch (IOException e) {
-            throw new FileNotFoundException(e.getMessage());
-        }
-    }
-}
+}
\ No newline at end of file

Added: james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/SMTPServerModule.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/SMTPServerModule.java?rev=1712334&view=auto
==============================================================================
--- james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/SMTPServerModule.java (added)
+++ james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/protocols/SMTPServerModule.java Tue Nov  3 16:48:56 2015
@@ -0,0 +1,68 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.modules.protocols;
+
+import org.apache.james.smtpserver.SendMailHandler;
+import org.apache.james.smtpserver.netty.SMTPServerFactory;
+import org.apache.james.utils.ClassPathConfigurationProvider;
+import org.apache.james.utils.ConfigurationPerformer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import com.google.inject.multibindings.Multibinder;
+
+public class SMTPServerModule extends AbstractModule {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(SMTPServerModule.class);
+
+    @Override
+    protected void configure() {
+        Multibinder.newSetBinder(binder(), ConfigurationPerformer.class).addBinding().to(SMTPModuleConfigurationPerformer.class);
+    }
+
+    @Singleton
+    public static class SMTPModuleConfigurationPerformer implements ConfigurationPerformer {
+
+        private final ClassPathConfigurationProvider classPathConfigurationProvider;
+        private final SMTPServerFactory smtpServerFactory;
+        private final SendMailHandler sendMailHandler;
+
+        @Inject
+        public SMTPModuleConfigurationPerformer(ClassPathConfigurationProvider classPathConfigurationProvider,
+                SMTPServerFactory smtpServerFactory,
+                SendMailHandler sendMailHandler) {
+            this.classPathConfigurationProvider = classPathConfigurationProvider;
+            this.smtpServerFactory = smtpServerFactory;
+            this.sendMailHandler = sendMailHandler;
+        }
+
+        @Override
+        public void initModule() throws Exception {
+            smtpServerFactory.setLog(LOGGER);
+            smtpServerFactory.configure(classPathConfigurationProvider.getConfiguration("smtpserver"));
+            smtpServerFactory.init();
+            sendMailHandler.init(null);
+        }
+    }
+
+}

Copied: james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/FileSystemModule.java (from r1712333, james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java)
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/FileSystemModule.java?p2=james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/FileSystemModule.java&p1=james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java&r1=1712333&r2=1712334&rev=1712334&view=diff
==============================================================================
--- james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java (original)
+++ james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/FileSystemModule.java Tue Nov  3 16:48:56 2015
@@ -16,42 +16,21 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.core.filesystem;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
+package org.apache.james.modules.server;
 
+import org.apache.james.core.JamesServerResourceLoader;
+import org.apache.james.core.filesystem.FileSystemImpl;
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.filesystem.api.JamesDirectoriesProvider;
 
-public class FileSystemImpl implements FileSystem {
-
-    private final JamesDirectoriesProvider directoryProvider;
-    private final ResourceFactory resourceLoader;
-
-    public FileSystemImpl(JamesDirectoriesProvider directoryProvider) {
-        this.directoryProvider = directoryProvider;
-        this.resourceLoader = new ResourceFactory(directoryProvider);
-    }
+import com.google.inject.AbstractModule;
 
-    @Override
-    public File getBasedir() throws FileNotFoundException {
-        return new File(directoryProvider.getRootDirectory());
-    }
+public class FileSystemModule extends AbstractModule {
 
     @Override
-    public InputStream getResource(String url) throws IOException {
-        return resourceLoader.getResource(url).getInputStream();
+    public void configure() {
+        bind(JamesDirectoriesProvider.class).to(JamesServerResourceLoader.class);
+        bind(FileSystem.class).to(FileSystemImpl.class);
     }
 
-    @Override
-    public File getFile(String fileURL) throws FileNotFoundException {
-        try {
-            return resourceLoader.getResource(fileURL).getFile();
-        } catch (IOException e) {
-            throw new FileNotFoundException(e.getMessage());
-        }
-    }
 }

Copied: james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/QuotaModule.java (from r1712333, james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java)
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/QuotaModule.java?p2=james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/QuotaModule.java&p1=james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java&r1=1712333&r2=1712334&rev=1712334&view=diff
==============================================================================
--- james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java (original)
+++ james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/modules/server/QuotaModule.java Tue Nov  3 16:48:56 2015
@@ -16,42 +16,22 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.core.filesystem;
 
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
+package org.apache.james.modules.server;
 
-import org.apache.james.filesystem.api.FileSystem;
-import org.apache.james.filesystem.api.JamesDirectoriesProvider;
+import org.apache.james.mailbox.quota.QuotaManager;
+import org.apache.james.mailbox.quota.QuotaRootResolver;
+import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.NoQuotaManager;
 
-public class FileSystemImpl implements FileSystem {
+import com.google.inject.AbstractModule;
 
-    private final JamesDirectoriesProvider directoryProvider;
-    private final ResourceFactory resourceLoader;
-
-    public FileSystemImpl(JamesDirectoriesProvider directoryProvider) {
-        this.directoryProvider = directoryProvider;
-        this.resourceLoader = new ResourceFactory(directoryProvider);
-    }
-
-    @Override
-    public File getBasedir() throws FileNotFoundException {
-        return new File(directoryProvider.getRootDirectory());
-    }
-
-    @Override
-    public InputStream getResource(String url) throws IOException {
-        return resourceLoader.getResource(url).getInputStream();
-    }
+public class QuotaModule extends AbstractModule {
 
     @Override
-    public File getFile(String fileURL) throws FileNotFoundException {
-        try {
-            return resourceLoader.getResource(fileURL).getFile();
-        } catch (IOException e) {
-            throw new FileNotFoundException(e.getMessage());
-        }
+    protected void configure() {
+        bind(QuotaManager.class).to(NoQuotaManager.class);
+        bind(QuotaRootResolver.class).to(DefaultQuotaRootResolver.class);
     }
+    
 }

Added: james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/utils/GuiceProtocolHandlerLoader.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/utils/GuiceProtocolHandlerLoader.java?rev=1712334&view=auto
==============================================================================
--- james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/utils/GuiceProtocolHandlerLoader.java (added)
+++ james/project/trunk/server/container/cassandra-guice/src/main/java/org/apache/james/utils/GuiceProtocolHandlerLoader.java Tue Nov  3 16:48:56 2015
@@ -0,0 +1,59 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.utils;
+
+import com.google.common.base.Throwables;
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.james.protocols.api.handler.ProtocolHandler;
+import org.apache.james.protocols.lib.handler.ProtocolHandlerLoader;
+
+public class GuiceProtocolHandlerLoader implements ProtocolHandlerLoader {
+
+    private final Injector injector;
+
+    @Inject
+    public GuiceProtocolHandlerLoader(Injector injector) {
+        this.injector = injector;
+    }
+
+    @Override
+    public ProtocolHandler load(String name, Configuration config) throws LoadingException {
+        ProtocolHandler handler = createProtocolHandler(name);
+        try {
+            handler.init(config);
+        } catch (ConfigurationException e) {
+            throw Throwables.propagate(e);
+        }
+        return handler;
+    }
+
+    private ProtocolHandler createProtocolHandler(String name) throws LoadingException {
+        try {
+            Class<ProtocolHandler> clazz = (Class<ProtocolHandler>) ClassLoader.getSystemClassLoader().loadClass(name);
+            return injector.getInstance(clazz);
+        } catch (ClassNotFoundException e) {
+            throw new LoadingException("Can not load " + name);
+        }
+    }
+
+}

Modified: james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java?rev=1712334&r1=1712333&r2=1712334&view=diff
==============================================================================
--- james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java (original)
+++ james/project/trunk/server/container/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java Tue Nov  3 16:48:56 2015
@@ -18,12 +18,13 @@
  ****************************************************************/
 package org.apache.james;
 
-import java.util.Properties;
+import static org.assertj.core.api.Assertions.assertThat;
 
-import javax.mail.AuthenticationFailedException;
-import javax.mail.NoSuchProviderException;
-import javax.mail.Session;
-import javax.mail.Store;
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.nio.ByteBuffer;
+import java.nio.channels.SocketChannel;
+import java.nio.charset.Charset;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.components.CassandraModule;
@@ -44,10 +45,16 @@ import com.google.inject.util.Modules;
 public class CassandraJamesServerTest {
 
     private static final int IMAP_PORT = 1143; // You need to be root (superuser) to bind to ports under 1024.
+    private static final int IMAP_PORT_SSL = 1993;
+    private static final int POP3_PORT = 1110;
+    private static final int SMTP_PORT = 1025;
+    private static final int LMTP_PORT = 1024;
+    public static final int BUFFER_SIZE = 1000;
 
     private CassandraJamesServer server;
     private TemporaryFolder temporaryFolder = new TemporaryFolder();
     private EmbeddedElasticSearch embeddedElasticSearch = new EmbeddedElasticSearch(temporaryFolder);
+    private SocketChannel socketChannel;
 
     @Rule
     public RuleChain chain = RuleChain.outerRule(temporaryFolder).around(embeddedElasticSearch);
@@ -70,6 +77,7 @@ public class CassandraJamesServerTest {
                     }
 
                 }));
+        socketChannel = SocketChannel.open();
         server.start();
     }
 
@@ -78,17 +86,41 @@ public class CassandraJamesServerTest {
         server.stop();
     }
 
-    @Test (expected = AuthenticationFailedException.class)
-    public void connectIMAPServerShouldThrowWhenNoCredentials() throws Exception {
-        store().connect();
+    @Test
+    public void connectIMAPServerShouldSendShabangOnConnect() throws Exception {
+        socketChannel.connect(new InetSocketAddress("127.0.0.1", IMAP_PORT));
+        assertThat(getServerConnectionResponse(socketChannel)).startsWith("* OK JAMES IMAP4rev1 Server");
     }
 
-    private Store store() throws NoSuchProviderException {
-        Properties properties = new Properties();
-        properties.put("mail.imap.host", "localhost");
-        properties.put("mail.imap.port", String.valueOf(IMAP_PORT));
-        Session session = Session.getDefaultInstance(properties);
-        session.setDebug(true);
-        return session.getStore("imap");
+    @Test
+    public void connectOnSecondaryIMAPServerIMAPServerShouldSendShabangOnConnect() throws Exception {
+        socketChannel.connect(new InetSocketAddress("127.0.0.1", IMAP_PORT_SSL));
+        assertThat(getServerConnectionResponse(socketChannel)).startsWith("* OK JAMES IMAP4rev1 Server");
     }
+
+    @Test
+    public void connectPOP3ServerShouldSendShabangOnConnect() throws Exception {
+        socketChannel.connect(new InetSocketAddress("127.0.0.1", POP3_PORT));
+        assertThat(getServerConnectionResponse(socketChannel)).contains("POP3 server (JAMES POP3 Server ) ready");
+    }
+
+    @Test
+    public void connectSMTPServerShouldSendShabangOnConnect() throws Exception {
+        socketChannel.connect(new InetSocketAddress("127.0.0.1", SMTP_PORT));
+        assertThat(getServerConnectionResponse(socketChannel)).startsWith("220 JAMES Linagora's SMTP awesome Server");
+    }
+
+    @Test
+    public void connectLMTPServerShouldSendShabangOnConnect() throws Exception {
+        socketChannel.connect(new InetSocketAddress("127.0.0.1", LMTP_PORT));
+        assertThat(getServerConnectionResponse(socketChannel)).contains("LMTP Server (JAMES Protocols Server) ready");
+    }
+
+    private String getServerConnectionResponse(SocketChannel socketChannel) throws IOException {
+        ByteBuffer byteBuffer = ByteBuffer.allocate(1000);
+        socketChannel.read(byteBuffer);
+        byte[] bytes = byteBuffer.array();
+        return new String(bytes, Charset.forName("UTF-8"));
+    }
+
 }

Added: james/project/trunk/server/container/cassandra-guice/src/test/resources/imapserver.xml
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/test/resources/imapserver.xml?rev=1712334&view=auto
==============================================================================
--- james/project/trunk/server/container/cassandra-guice/src/test/resources/imapserver.xml (added)
+++ james/project/trunk/server/container/cassandra-guice/src/test/resources/imapserver.xml Tue Nov  3 16:48:56 2015
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+
+<imapservers>
+	<imapserver enabled="true">
+		<jmxName>imapserver</jmxName>
+		<bind>0.0.0.0:1143</bind>
+		<connectionBacklog>200</connectionBacklog>
+		<tls socketTLS="false" startTLS="false">
+			<!-- To create a new keystore execute:
+            keytool -genkey -alias james -keyalg RSA -keystore /path/to/james/conf/keystore
+              -->
+			<keystore>file://conf/keystore</keystore>
+			<secret>james72laBalle</secret>
+			<provider>org.bouncycastle.jce.provider.BouncyCastleProvider</provider>
+		</tls>
+		<connectionLimit>0</connectionLimit>
+		<connectionLimitPerIP>0</connectionLimitPerIP>
+	</imapserver>
+	<imapserver enabled="true">
+		<jmxName>imapserver-ssl</jmxName>
+		<bind>0.0.0.0:1993</bind>
+		<connectionBacklog>200</connectionBacklog>
+		<tls socketTLS="false" startTLS="false">
+			<!-- To create a new keystore execute:
+              keytool -genkey -alias james -keyalg RSA -keystore /path/to/james/conf/keystore
+             -->
+			<keystore>file://conf/keystore</keystore>
+			<secret>james72laBalle</secret>
+			<provider>org.bouncycastle.jce.provider.BouncyCastleProvider</provider>
+		</tls>
+		<connectionLimit>0</connectionLimit>
+		<connectionLimitPerIP>0</connectionLimitPerIP>
+	</imapserver>
+</imapservers>

Added: james/project/trunk/server/container/cassandra-guice/src/test/resources/lmtpserver.xml
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/test/resources/lmtpserver.xml?rev=1712334&view=auto
==============================================================================
--- james/project/trunk/server/container/cassandra-guice/src/test/resources/lmtpserver.xml (added)
+++ james/project/trunk/server/container/cassandra-guice/src/test/resources/lmtpserver.xml Tue Nov  3 16:48:56 2015
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one   
+  or more contributor license agreements.  See the NOTICE file 
+  distributed with this work for additional information        
+  regarding copyright ownership.  The ASF licenses this file   
+  to you under the Apache License, Version 2.0 (the            
+  "License"); you may not use this file except in compliance   
+  with the License.  You may obtain a copy of the License at   
+                                                               
+    http://www.apache.org/licenses/LICENSE-2.0                 
+                                                               
+  Unless required by applicable law or agreed to in writing,   
+  software distributed under the License is distributed on an  
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       
+  KIND, either express or implied.  See the License for the    
+  specific language governing permissions and limitations      
+  under the License.                                           
+ -->
+
+<lmtpservers>
+
+    <lmtpserver enabled="true">
+        <jmxName>lmtpserver</jmxName>
+        <!-- LMTP should not be reachable from outside your network so bind it to loopback-->
+        <bind>127.0.0.1:1024</bind>
+        <connectionBacklog>200</connectionBacklog>
+        <connectiontimeout>1200</connectiontimeout>
+        <!-- Set the maximum simultaneous incoming connections for this service -->
+        <connectionLimit>0</connectionLimit>
+        <!-- Set the maximum simultaneous incoming connections per IP for this service -->
+        <connectionLimitPerIP>0</connectionLimitPerIP>
+        <!--  This sets the maximum allowed message size (in kilobytes) for this -->
+        <!--  LMTP service. If unspecified, the value defaults to 0, which means no limit. -->
+        <maxmessagesize>0</maxmessagesize>
+        <handlerchain>
+            <handler class="org.apache.james.lmtpserver.CoreCmdHandlerLoader"/>
+        </handlerchain>
+    </lmtpserver>
+
+</lmtpservers>

Added: james/project/trunk/server/container/cassandra-guice/src/test/resources/pop3server.xml
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/test/resources/pop3server.xml?rev=1712334&view=auto
==============================================================================
--- james/project/trunk/server/container/cassandra-guice/src/test/resources/pop3server.xml (added)
+++ james/project/trunk/server/container/cassandra-guice/src/test/resources/pop3server.xml Tue Nov  3 16:48:56 2015
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one   
+  or more contributor license agreements.  See the NOTICE file 
+  distributed with this work for additional information        
+  regarding copyright ownership.  The ASF licenses this file   
+  to you under the Apache License, Version 2.0 (the            
+  "License"); you may not use this file except in compliance   
+  with the License.  You may obtain a copy of the License at   
+                                                               
+    http://www.apache.org/licenses/LICENSE-2.0                 
+                                                               
+  Unless required by applicable law or agreed to in writing,   
+  software distributed under the License is distributed on an  
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       
+  KIND, either express or implied.  See the License for the    
+  specific language governing permissions and limitations      
+  under the License.                                           
+ -->
+
+
+<pop3servers>
+    <pop3server enabled="true">
+        <jmxName>pop3server</jmxName>
+        <bind>0.0.0.0:1110</bind>
+        <connectionBacklog>200</connectionBacklog>
+        <tls socketTLS="false" startTLS="false">
+            <!-- To create a new keystore execute:
+                  keytool -genkey -alias james -keyalg RSA -keystore /path/to/james/conf/keystore
+             -->
+            <keystore>file://conf/keystore</keystore>
+            <secret>james72laBalle</secret>
+            <provider>org.bouncycastle.jce.provider.BouncyCastleProvider</provider>
+        </tls>
+        <connectiontimeout>1200</connectiontimeout>
+        <connectionLimit>0</connectionLimit>
+        <connectionLimitPerIP>0</connectionLimitPerIP>
+        <handlerchain>
+            <handler class="org.apache.james.pop3server.core.CoreCmdHandlerLoader"/>
+        </handlerchain>
+    </pop3server>
+</pop3servers>

Added: james/project/trunk/server/container/cassandra-guice/src/test/resources/smtpserver.xml
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/cassandra-guice/src/test/resources/smtpserver.xml?rev=1712334&view=auto
==============================================================================
--- james/project/trunk/server/container/cassandra-guice/src/test/resources/smtpserver.xml (added)
+++ james/project/trunk/server/container/cassandra-guice/src/test/resources/smtpserver.xml Tue Nov  3 16:48:56 2015
@@ -0,0 +1,105 @@
+<?xml version="1.0"?>
+
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+ -->
+
+<smtpservers>
+    <smtpserver enabled="true">
+        <jmxName>smtpserver-global</jmxName>
+        <bind>0.0.0.0:1025</bind>
+        <connectionBacklog>200</connectionBacklog>
+        <tls socketTLS="false" startTLS="false">
+            <keystore>file://conf/keystore</keystore>
+            <secret>james72laBalle</secret>
+            <provider>org.bouncycastle.jce.provider.BouncyCastleProvider</provider>
+            <algorithm>SunX509</algorithm>
+        </tls>
+        <connectiontimeout>360</connectiontimeout>
+        <connectionLimit>0</connectionLimit>
+        <connectionLimitPerIP>0</connectionLimitPerIP>
+        <authRequired>false</authRequired>
+        <authorizedAddresses>0.0.0.0/0</authorizedAddresses>
+        <verifyIdentity>true</verifyIdentity>
+        <maxmessagesize>0</maxmessagesize>
+        <addressBracketsEnforcement>true</addressBracketsEnforcement>
+        <smtpGreeting>JAMES Linagora's SMTP awesome Server</smtpGreeting>
+        <handlerchain>
+            <handler class="org.apache.james.smtpserver.fastfail.ValidRcptHandler"/>
+            <handler class="org.apache.james.smtpserver.CoreCmdHandlerLoader"/>
+        </handlerchain>
+    </smtpserver>
+    <smtpserver enabled="true">
+        <jmxName>smtpserver-TLS</jmxName>
+        <bind>0.0.0.0:10465</bind>
+        <connectionBacklog>200</connectionBacklog>
+        <tls socketTLS="false" startTLS="false">
+            <keystore>file://conf/keystore</keystore>
+            <secret>james72laBalle</secret>
+            <provider>org.bouncycastle.jce.provider.BouncyCastleProvider</provider>
+            <algorithm>SunX509</algorithm>
+        </tls>
+        <connectiontimeout>360</connectiontimeout>
+        <connectionLimit>0</connectionLimit>
+        <connectionLimitPerIP>0</connectionLimitPerIP>
+        <!--
+           Authorize only local users
+        -->
+        <authRequired>true</authRequired>
+        <authorizedAddresses>0.0.0.0/0</authorizedAddresses>
+        <!-- Trust authenticated users -->
+        <verifyIdentity>false</verifyIdentity>
+        <maxmessagesize>0</maxmessagesize>
+        <addressBracketsEnforcement>true</addressBracketsEnforcement>
+        <smtpGreeting>JAMES Linagora's SMTP awesome Server</smtpGreeting>
+        <handlerchain>
+            <handler class="org.apache.james.smtpserver.fastfail.ValidRcptHandler"/>
+            <handler class="org.apache.james.smtpserver.CoreCmdHandlerLoader"/>
+        </handlerchain>
+    </smtpserver>
+    <smtpserver enabled="true">
+        <jmxName>smtpserver-authenticated</jmxName>
+        <bind>0.0.0.0:1587</bind>
+        <connectionBacklog>200</connectionBacklog>
+        <tls socketTLS="false" startTLS="false">
+            <keystore>file://conf/keystore</keystore>
+            <secret>james72laBalle</secret>
+            <provider>org.bouncycastle.jce.provider.BouncyCastleProvider</provider>
+            <algorithm>SunX509</algorithm>
+        </tls>
+        <connectiontimeout>360</connectiontimeout>
+        <connectionLimit>0</connectionLimit>
+        <connectionLimitPerIP>0</connectionLimitPerIP>
+        <!--
+           Authorize only local users
+        -->
+        <authRequired>true</authRequired>
+        <authorizedAddresses>0.0.0.0/0</authorizedAddresses>
+        <!-- Trust authenticated users -->
+        <verifyIdentity>false</verifyIdentity>
+        <maxmessagesize>0</maxmessagesize>
+        <addressBracketsEnforcement>true</addressBracketsEnforcement>
+        <smtpGreeting>JAMES Linagora's SMTP awesome Server</smtpGreeting>
+        <handlerchain>
+            <handler class="org.apache.james.smtpserver.fastfail.ValidRcptHandler"/>
+            <handler class="org.apache.james.smtpserver.CoreCmdHandlerLoader"/>
+        </handlerchain>
+    </smtpserver>
+</smtpservers>
+
+

Modified: james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java?rev=1712334&r1=1712333&r2=1712334&view=diff
==============================================================================
--- james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java (original)
+++ james/project/trunk/server/container/core/src/main/java/org/apache/james/core/filesystem/FileSystemImpl.java Tue Nov  3 16:48:56 2015
@@ -23,6 +23,8 @@ import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
 
+import javax.inject.Inject;
+
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.filesystem.api.JamesDirectoriesProvider;
 
@@ -31,6 +33,7 @@ public class FileSystemImpl implements F
     private final JamesDirectoriesProvider directoryProvider;
     private final ResourceFactory resourceLoader;
 
+    @Inject
     public FileSystemImpl(JamesDirectoriesProvider directoryProvider) {
         this.directoryProvider = directoryProvider;
         this.resourceLoader = new ResourceFactory(directoryProvider);



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org