This is an automated email from the ASF dual-hosted git repository.
aduprat pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
The following commit(s) were added to refs/heads/master by this push:
new 50a7eae JAMES-2726 Add In-memory image creation
new b941483 Merge remote-tracking branch
'gdifolco/JAMES-2726-docker-inmemory-image'
50a7eae is described below
commit 50a7eaec0d4f8dbc55a077ee45fb6d18d7d7ddbd
Author: Gautier DI FOLCO <[email protected]>
AuthorDate: Tue Apr 2 17:38:38 2019 +0200
JAMES-2726 Add In-memory image creation
---
dockerfiles/compilation/java-8/compile.sh | 11 +-
dockerfiles/run/guice/memory/Dockerfile | 32 +++++
.../memory/destination/conf/batchsizes.properties | 10 ++
.../conf/deletedMessageVault.properties | 1 +
.../guice/memory/destination/conf/dnsservice.xml | 29 +++++
.../guice/memory/destination/conf/domainlist.xml | 28 ++++
.../destination/conf/elasticsearch.properties | 29 +++++
.../guice/memory/destination/conf/imapserver.xml | 62 +++++++++
.../guice/memory/destination/conf/jmap.properties | 13 ++
.../guice/memory/destination/conf/jmx.properties | 29 +++++
.../guice/memory/destination/conf/jwt_publickey | 9 ++
.../guice/memory/destination/conf/listeners.xml | 29 +++++
.../run/guice/memory/destination/conf/logback.xml | 47 +++++++
.../memory/destination/conf/mailetcontainer.xml | 144 +++++++++++++++++++++
.../destination/conf/mailrepositorystore.xml | 31 +++++
.../memory/destination/conf/managesieveserver.xml | 65 ++++++++++
.../guice/memory/destination/conf/pop3server.xml | 42 ++++++
.../destination/conf/recipientrewritetable.xml | 26 ++++
.../guice/memory/destination/conf/smtpserver.xml | 105 +++++++++++++++
.../memory/destination/conf/usersrepository.xml | 26 ++++
.../memory/destination/conf/webadmin.properties | 41 ++++++
.../memory/destination/extensions-jars/README.md | 5 +
server/container/guice/memory-guice/pom.xml | 5 +-
.../org/apache/james/FakeMessageSearchIndex.java | 94 ++++++++++++++
.../org/apache/james/FakeSearchMailboxModule.java | 40 ++++++
.../org/apache/james/MemoryJamesServerMain.java | 1 +
.../james/modules/data/MemoryDataModule.java | 10 +-
27 files changed, 956 insertions(+), 8 deletions(-)
diff --git a/dockerfiles/compilation/java-8/compile.sh
b/dockerfiles/compilation/java-8/compile.sh
index f08f6ec..fff263f 100755
--- a/dockerfiles/compilation/java-8/compile.sh
+++ b/dockerfiles/compilation/java-8/compile.sh
@@ -18,6 +18,7 @@ CASSANDRA_RABBITMQ_DESTINATION=/cassandra-rabbitmq/destination
CASSANDRA_RABBITMQ_LDAP_DESTINATION=/cassandra-rabbitmq-ldap/destination
JPA_DESTINATION=/jpa/destination
JPA_SMTP_DESTINATION=/jpa-smpt/destination
+MEMORY_DESTINATION=/memory/destination
SPRING_DESTINATION=/spring/destination
SWAGGER_DESTINATION=/swagger
@@ -104,6 +105,14 @@ if [ $? -eq 0 ]; then
cp -r server/container/cli/target/james-server-cli.lib
$JPA_SMTP_DESTINATION || true
fi
+ if [ -d "$MEMORY_DESTINATION" ]; then
+ echo "Copying memory JARs"
+ cp
server/container/guice/memory-guice/target/james-server-memory-guice.jar
$MEMORY_DESTINATION || true
+ cp -r
server/container/guice/memory-guice/target/james-server-memory-guice.lib
$MEMORY_DESTINATION || true
+ cp server/container/cli/target/james-server-cli.jar $MEMORY_DESTINATION
|| true
+ cp -r server/container/cli/target/james-server-cli.lib
$MEMORY_DESTINATION || true
+ fi
+
if [ -d "$SPRING_DESTINATION" ]; then
echo "Copying SPRING jars"
cp server/app/target/james-server-app-*-app.zip $SPRING_DESTINATION
@@ -114,4 +123,4 @@ if [ $? -eq 0 ]; then
cp
server/protocols/webadmin/webadmin-mailbox/target/webadmin-mailbox.json
$SWAGGER_DESTINATION || true
cp
server/protocols/webadmin/webadmin-swagger/target/webadmin-swagger.json
$SWAGGER_DESTINATION || true
fi
-fi
\ No newline at end of file
+fi
diff --git a/dockerfiles/run/guice/memory/Dockerfile
b/dockerfiles/run/guice/memory/Dockerfile
new file mode 100644
index 0000000..e969bf8
--- /dev/null
+++ b/dockerfiles/run/guice/memory/Dockerfile
@@ -0,0 +1,32 @@
+# Run James
+#
+# VERSION 1.0
+
+FROM openjdk:8u181-jre
+
+# Ports that are used
+#
+# 25 SMTP without authentication
+# 110 POP3
+# 143 IMAP with startTLS enabled
+# 465 SMTP with authentication and socketTLS enabled
+# 587 SMTP with authentication and startTLS enabled
+# 993 IMAP with socketTLS enabled
+# 8000 Web Admin interface (unsecured: expose at your own risks)
+
+EXPOSE 25 110 143 465 587 993 8000
+
+WORKDIR /root
+
+# Get data we need to run James : build results and configuration
+ADD destination/james-server-memory-guice.jar /root/james-server.jar
+ADD destination/james-server-memory-guice.lib
/root/james-server-memory-guice.lib
+ADD destination/james-server-cli.jar /root/james-cli.jar
+ADD destination/james-server-cli.lib /root/james-server-cli.lib
+ADD destination/conf /root/conf
+
+VOLUME /logs
+VOLUME /root/conf
+
+ENV JVM_OPTIONS=""
+ENTRYPOINT java -Dlogback.configurationFile=/root/conf/logback.xml
-Dworking.directory=/root/ $JVM_OPTIONS -jar james-server.jar
diff --git
a/dockerfiles/run/guice/memory/destination/conf/batchsizes.properties
b/dockerfiles/run/guice/memory/destination/conf/batchsizes.properties
new file mode 100644
index 0000000..47da2c5
--- /dev/null
+++ b/dockerfiles/run/guice/memory/destination/conf/batchsizes.properties
@@ -0,0 +1,10 @@
+# Those properties let you configure the number of messages queried at the
same time.
+# IMAP FETCH command
+fetch.metadata=200
+fetch.headers=200
+fetch.body=100
+fetch.full=50
+# IMAP COPY command
+copy=100
+# IMAP MOVE command
+move=100
diff --git
a/dockerfiles/run/guice/memory/destination/conf/deletedMessageVault.properties
b/dockerfiles/run/guice/memory/destination/conf/deletedMessageVault.properties
new file mode 100644
index 0000000..56942d0
--- /dev/null
+++
b/dockerfiles/run/guice/memory/destination/conf/deletedMessageVault.properties
@@ -0,0 +1 @@
+urlPrefix=memory://var/deletedMessages/vault
diff --git a/dockerfiles/run/guice/memory/destination/conf/dnsservice.xml
b/dockerfiles/run/guice/memory/destination/conf/dnsservice.xml
new file mode 100644
index 0000000..0978a00
--- /dev/null
+++ b/dockerfiles/run/guice/memory/destination/conf/dnsservice.xml
@@ -0,0 +1,29 @@
+<?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.
+ -->
+
+<dnsservice>
+ <servers>
+ <server>8.8.8.8</server>
+ <server>62.210.16.6</server>
+ </servers>
+ <autodiscover>false</autodiscover>
+ <authoritative>false</authoritative>
+ <maxcachesize>50000</maxcachesize>
+</dnsservice>
diff --git a/dockerfiles/run/guice/memory/destination/conf/domainlist.xml
b/dockerfiles/run/guice/memory/destination/conf/domainlist.xml
new file mode 100644
index 0000000..ad37476
--- /dev/null
+++ b/dockerfiles/run/guice/memory/destination/conf/domainlist.xml
@@ -0,0 +1,28 @@
+<?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.
+ -->
+
+<domainlist>
+ <domainnames>
+ <domainname>james.linagora.com</domainname>
+ </domainnames>
+ <autodetect>true</autodetect>
+ <autodetectIP>true</autodetectIP>
+ <defaultDomain>localhost</defaultDomain>
+</domainlist>
diff --git
a/dockerfiles/run/guice/memory/destination/conf/elasticsearch.properties
b/dockerfiles/run/guice/memory/destination/conf/elasticsearch.properties
new file mode 100644
index 0000000..9988aa2
--- /dev/null
+++ b/dockerfiles/run/guice/memory/destination/conf/elasticsearch.properties
@@ -0,0 +1,29 @@
+# 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.
+
+# This template file can be used as example for James Server configuration
+# DO NOT USE IT AS SUCH AND ADAPT IT TO YOUR NEEDS
+
+# Configuration file for ElasticSearch
+
+# Reports for metrics into ElasticSearch
+# Defaults to elasticsearch.masterHost : on which server to publish metrics
+elasticsearch.http.host=elasticsearch
+elasticsearch.http.port=9200
+elasticsearch.metrics.reports.enabled=true
+elasticsearch.metrics.reports.period=30
+elasticsearch.metrics.reports.index=james-metrics
diff --git a/dockerfiles/run/guice/memory/destination/conf/imapserver.xml
b/dockerfiles/run/guice/memory/destination/conf/imapserver.xml
new file mode 100644
index 0000000..6616d24
--- /dev/null
+++ b/dockerfiles/run/guice/memory/destination/conf/imapserver.xml
@@ -0,0 +1,62 @@
+<?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:143</bind>
+ <connectionBacklog>200</connectionBacklog>
+ <tls socketTLS="false" startTLS="true">
+ <!-- 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>
+ <idleTimeInterval>120</idleTimeInterval>
+ <idleTimeIntervalUnit>SECONDS</idleTimeIntervalUnit>
+ <disabledCaps>ACL|MOVE</disabledCaps>
+ <enableIdle>true</enableIdle>
+ </imapserver>
+ <imapserver enabled="true">
+ <jmxName>imapserver-ssl</jmxName>
+ <bind>0.0.0.0:993</bind>
+ <connectionBacklog>200</connectionBacklog>
+ <tls socketTLS="true" 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>
+ <idleTimeInterval>120</idleTimeInterval>
+ <idleTimeIntervalUnit>SECONDS</idleTimeIntervalUnit>
+ <disabledCaps>ACL|MOVE</disabledCaps>
+ <enableIdle>true</enableIdle>
+ </imapserver>
+</imapservers>
diff --git a/dockerfiles/run/guice/memory/destination/conf/jmap.properties
b/dockerfiles/run/guice/memory/destination/conf/jmap.properties
new file mode 100644
index 0000000..63e6702
--- /dev/null
+++ b/dockerfiles/run/guice/memory/destination/conf/jmap.properties
@@ -0,0 +1,13 @@
+# Configuration file for JMAP
+
+enabled=true
+
+tls.keystoreURL=file://conf/keystore
+tls.secret=james72laBalle
+
+#
+# If you wish to use OAuth authentication, you should provide a valid JWT
public key.
+# The following entry specify the link to the URL of the public key file,
+# which should be a PEM format file.
+#
+jwt.publickeypem.url=file://conf/jwt_publickey
diff --git a/dockerfiles/run/guice/memory/destination/conf/jmx.properties
b/dockerfiles/run/guice/memory/destination/conf/jmx.properties
new file mode 100644
index 0000000..1c39a17
--- /dev/null
+++ b/dockerfiles/run/guice/memory/destination/conf/jmx.properties
@@ -0,0 +1,29 @@
+# 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.
+#
+
+# This template file can be used as example for James Server configuration
+# DO NOT USE IT AS SUCH AND ADAPT IT TO YOUR NEEDS
+
+# This template file can be used as example for James Server configuration
+# DO NOT USE IT AS SUCH AND ADAPT IT TO YOUR NEEDS
+
+# See http://james.apache.org/server/3/config.html for usage
+
+jmx.enabled=true
+jmx.address=127.0.0.1
+jmx.port=9999
diff --git a/dockerfiles/run/guice/memory/destination/conf/jwt_publickey
b/dockerfiles/run/guice/memory/destination/conf/jwt_publickey
new file mode 100644
index 0000000..53914e0
--- /dev/null
+++ b/dockerfiles/run/guice/memory/destination/conf/jwt_publickey
@@ -0,0 +1,9 @@
+-----BEGIN PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtlChO/nlVP27MpdkG0Bh
+16XrMRf6M4NeyGa7j5+1UKm42IKUf3lM28oe82MqIIRyvskPc11NuzSor8HmvH8H
+lhDs5DyJtx2qp35AT0zCqfwlaDnlDc/QDlZv1CoRZGpQk1Inyh6SbZwYpxxwh0fi
++d/4RpE3LBVo8wgOaXPylOlHxsDizfkL8QwXItyakBfMO6jWQRrj7/9WDhGf4Hi+
+GQur1tPGZDl9mvCoRHjFrD5M/yypIPlfMGWFVEvV5jClNMLAQ9bYFuOc7H1fEWw6
+U1LZUUbJW9/CH45YXz82CYqkrfbnQxqRb2iVbVjs/sHopHd1NTiCfUtwvcYJiBVj
+kwIDAQAB
+-----END PUBLIC KEY-----
diff --git a/dockerfiles/run/guice/memory/destination/conf/listeners.xml
b/dockerfiles/run/guice/memory/destination/conf/listeners.xml
new file mode 100644
index 0000000..6e0c14c
--- /dev/null
+++ b/dockerfiles/run/guice/memory/destination/conf/listeners.xml
@@ -0,0 +1,29 @@
+<?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.
+ -->
+
+<listeners>
+ <listener>
+ <class>org.apache.james.mailbox.spamassassin.SpamAssassinListener</class>
+ <async>true</async>
+ </listener>
+ <preDeletionHook>
+ <class>org.apache.james.vault.DeletedMessageVaultHook</class>
+ </preDeletionHook>
+</listeners>
diff --git a/dockerfiles/run/guice/memory/destination/conf/logback.xml
b/dockerfiles/run/guice/memory/destination/conf/logback.xml
new file mode 100644
index 0000000..275b806
--- /dev/null
+++ b/dockerfiles/run/guice/memory/destination/conf/logback.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+ -->
+
+<configuration>
+
+ <contextListener
class="ch.qos.logback.classic.jul.LevelChangePropagator">
+ <resetJUL>true</resetJUL>
+ </contextListener>
+
+ <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} %highlight([%-5level])
%logger{15} - %msg%n%rEx</pattern>
+ <immediateFlush>false</immediateFlush>
+ </encoder>
+ </appender>
+
+ <appender name="LOG_FILE" class="ch.qos.logback.core.FileAppender">
+ <file>/logs/james.log</file>
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} [%-5level] %logger{15} -
%msg%n%rEx</pattern>
+ <immediateFlush>false</immediateFlush>
+ </encoder>
+ </appender>
+
+ <root level="INFO">
+ <appender-ref ref="CONSOLE" />
+ <appender-ref ref="LOG_FILE" />
+ </root>
+
+</configuration>
diff --git a/dockerfiles/run/guice/memory/destination/conf/mailetcontainer.xml
b/dockerfiles/run/guice/memory/destination/conf/mailetcontainer.xml
new file mode 100644
index 0000000..fa76a80
--- /dev/null
+++ b/dockerfiles/run/guice/memory/destination/conf/mailetcontainer.xml
@@ -0,0 +1,144 @@
+<?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.
+ -->
+
+<mailetcontainer enableJmx="true">
+
+ <context>
+ <postmaster>[email protected]</postmaster>
+ </context>
+
+ <spooler>
+ <threads>20</threads>
+ </spooler>
+
+ <processors>
+ <processor state="root" enableJmx="true">
+ <mailet match="All" class="PostmasterAlias"/>
+ <mailet match="RelayLimit=30" class="Null"/>
+ <mailet match="All" class="ToProcessor">
+ <processor>transport</processor>
+ </mailet>
+ </processor>
+
+ <processor state="error" enableJmx="true">
+ <mailet match="All" class="MetricsMailet">
+ <metricName>mailetContainerErrors</metricName>
+ </mailet>
+ <mailet match="All" class="Bounce"/>
+ <mailet match="All" class="ToRepository">
+ <repositoryPath>memory://var/mail/error/</repositoryPath>
+ </mailet>
+ </processor>
+
+ <processor state="transport" enableJmx="true">
+ <matcher name="relay-allowed"
match="org.apache.james.mailetcontainer.impl.matchers.Or">
+ <matcher match="SMTPAuthSuccessful"/>
+ <matcher match="SMTPIsAuthNetwork"/>
+ <matcher match="SentByMailet"/>
+ <matcher match="org.apache.james.jmap.mailet.SentByJmap"/>
+ </matcher>
+
+ <mailet match="All" class="RemoveMimeHeader">
+ <name>bcc</name>
+ <onMailetException>ignore</onMailetException>
+ </mailet>
+ <mailet match="All" class="RecipientRewriteTable">
+ <errorProcessor>rrt-error</errorProcessor>
+ </mailet>
+ <mailet match="RecipientIsLocal"
class="org.apache.james.jmap.mailet.VacationMailet"/>
+ <mailet match="RecipientIsLocal" class="Sieve"/>
+ <mailet match="RecipientIsLocal" class="AddDeliveredToHeader"/>
+ <mailet match="RecipientIsLocal"
class="org.apache.james.jmap.mailet.filter.JMAPFiltering"/>
+ <mailet match="RecipientIsLocal" class="LocalDelivery"/>
+ <mailet match="HostIsLocal" class="ToProcessor">
+ <processor>local-address-error</processor>
+ <notice>550 - Requested action not taken: no such user
here</notice>
+ </mailet>
+
+ <mailet match="relay-allowed" class="ToProcessor">
+ <processor>relay</processor>
+ </mailet>
+
+ <mailet match="All" class="ToProcessor">
+ <processor>relay-denied</processor>
+ </mailet>
+ </processor>
+
+ <processor state="relay" enableJmx="true">
+ <mailet match="All" class="RemoteDelivery">
+ <outgoingQueue>outgoing</outgoingQueue>
+ <delayTime>5000, 100000, 500000</delayTime>
+ <maxRetries>25</maxRetries>
+ <maxDnsProblemRetries>0</maxDnsProblemRetries>
+ <deliveryThreads>10</deliveryThreads>
+ <sendpartial>true</sendpartial>
+ <bounceProcessor>bounces</bounceProcessor>
+ </mailet>
+ </processor>
+
+ <processor state="local-address-error" enableJmx="true">
+ <mailet match="All" class="MetricsMailet">
+ <metricName>mailetContainerLocalAddressError</metricName>
+ </mailet>
+ <mailet match="All" class="Bounce">
+ <attachment>none</attachment>
+ </mailet>
+ <mailet match="All" class="ToRepository">
+
<repositoryPath>memory://var/mail/address-error/</repositoryPath>
+ </mailet>
+ </processor>
+
+ <processor state="relay-denied" enableJmx="true">
+ <mailet match="All" class="MetricsMailet">
+ <metricName>mailetContainerRelayDenied</metricName>
+ </mailet>
+ <mailet match="All" class="Bounce">
+ <attachment>none</attachment>
+ </mailet>
+ <mailet match="All" class="ToRepository">
+
<repositoryPath>memory://var/mail/relay-denied/</repositoryPath>
+ <notice>Warning: You are sending an e-mail to a remote server.
You must be authenticated to perform such an operation</notice>
+ </mailet>
+ </processor>
+
+ <processor state="bounces" enableJmx="true">
+ <mailet match="All" class="MetricsMailet">
+ <metricName>bounces</metricName>
+ </mailet>
+ <mailet match="All" class="DSNBounce">
+ <passThrough>false</passThrough>
+ </mailet>
+ </processor>
+
+ <processor state="rrt-error" enableJmx="false">
+ <mailet match="All" class="ToRepository">
+ <repositoryPath>memory://var/mail/rrt-error/</repositoryPath>
+ <passThrough>true</passThrough>
+ </mailet>
+ <mailet match="IsSenderInRRTLoop" class="Null"/>
+ <mailet match="All" class="Bounce"/>
+ </processor>
+
+ </processors>
+
+</mailetcontainer>
+
+
diff --git
a/dockerfiles/run/guice/memory/destination/conf/mailrepositorystore.xml
b/dockerfiles/run/guice/memory/destination/conf/mailrepositorystore.xml
new file mode 100644
index 0000000..2f4ca6a
--- /dev/null
+++ b/dockerfiles/run/guice/memory/destination/conf/mailrepositorystore.xml
@@ -0,0 +1,31 @@
+<?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.
+ -->
+
+<mailrepositorystore>
+ <defaultProtocol>memory</defaultProtocol>
+ <mailrepositories>
+ <mailrepository
class="org.apache.james.mailrepository.memory.MemoryMailRepository">
+ <protocols>
+ <protocol>memory</protocol>
+ </protocols>
+ </mailrepository>
+ </mailrepositories>
+</mailrepositorystore>
diff --git
a/dockerfiles/run/guice/memory/destination/conf/managesieveserver.xml
b/dockerfiles/run/guice/memory/destination/conf/managesieveserver.xml
new file mode 100644
index 0000000..7b0b85a
--- /dev/null
+++ b/dockerfiles/run/guice/memory/destination/conf/managesieveserver.xml
@@ -0,0 +1,65 @@
+<?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.
+ -->
+
+<!--
+ This template file can be used as example for James Server configuration
+ DO NOT USE IT AS SUCH AND ADAPT IT TO YOUR NEEDS
+-->
+
+<!-- See http://james.apache.org/server/3/config.html for usage -->
+
+<managesieveservers>
+
+ <managesieveserver enabled="false">
+
+ <jmxName>managesieveserver</jmxName>
+
+ <bind>0.0.0.0:4190</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>
+ <!-- The algorithm is optional and only needs to be specified when
using something other
+ than the Sun JCE provider - You could use IbmX509 with IBM Java
runtime. -->
+ <algorithm>SunX509</algorithm>
+ </tls>
+
+ <!-- connection timeout in secconds -->
+ <connectiontimeout>360</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>
+ <maxmessagesize>0</maxmessagesize>
+ <addressBracketsEnforcement>true</addressBracketsEnforcement>
+
+ </managesieveserver>
+
+</managesieveservers>
+
+
diff --git a/dockerfiles/run/guice/memory/destination/conf/pop3server.xml
b/dockerfiles/run/guice/memory/destination/conf/pop3server.xml
new file mode 100644
index 0000000..df8fbef
--- /dev/null
+++ b/dockerfiles/run/guice/memory/destination/conf/pop3server.xml
@@ -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="false">
+ <jmxName>pop3server</jmxName>
+ <bind>0.0.0.0:110</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>
diff --git
a/dockerfiles/run/guice/memory/destination/conf/recipientrewritetable.xml
b/dockerfiles/run/guice/memory/destination/conf/recipientrewritetable.xml
new file mode 100644
index 0000000..3d44578
--- /dev/null
+++ b/dockerfiles/run/guice/memory/destination/conf/recipientrewritetable.xml
@@ -0,0 +1,26 @@
+<?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.
+ -->
+
+<!-- The default table for storing James' RecipientRewriteTable mappings. -->
+<recipientrewritetable>
+ <recursiveMapping>true</recursiveMapping>
+ <mappingLimit>10</mappingLimit>
+</recipientrewritetable>
+
diff --git a/dockerfiles/run/guice/memory/destination/conf/smtpserver.xml
b/dockerfiles/run/guice/memory/destination/conf/smtpserver.xml
new file mode 100644
index 0000000..e464ca6
--- /dev/null
+++ b/dockerfiles/run/guice/memory/destination/conf/smtpserver.xml
@@ -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:25</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>127.0.0.0/8</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:465</bind>
+ <connectionBacklog>200</connectionBacklog>
+ <tls socketTLS="true" 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>127.0.0.0/8</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:587</bind>
+ <connectionBacklog>200</connectionBacklog>
+ <tls socketTLS="false" startTLS="true">
+ <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>127.0.0.0/8</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>
+
+
diff --git a/dockerfiles/run/guice/memory/destination/conf/usersrepository.xml
b/dockerfiles/run/guice/memory/destination/conf/usersrepository.xml
new file mode 100644
index 0000000..c745677
--- /dev/null
+++ b/dockerfiles/run/guice/memory/destination/conf/usersrepository.xml
@@ -0,0 +1,26 @@
+<?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.
+ -->
+
+<usersrepository name="LocalUsers">
+ <algorithm>MD5</algorithm>
+ <enableVirtualHosting>true</enableVirtualHosting>
+ <enableForwarding>true</enableForwarding>
+</usersrepository>
+
diff --git a/dockerfiles/run/guice/memory/destination/conf/webadmin.properties
b/dockerfiles/run/guice/memory/destination/conf/webadmin.properties
new file mode 100644
index 0000000..36b6f1e
--- /dev/null
+++ b/dockerfiles/run/guice/memory/destination/conf/webadmin.properties
@@ -0,0 +1,41 @@
+# 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.
+
+# This template file can be used as example for James Server configuration
+# DO NOT USE IT AS SUCH AND ADAPT IT TO YOUR NEEDS
+
+enabled=true
+port=8000
+host=localhost
+
+# Defaults to false
+https.enabled=false
+
+# Compulsory when enabling HTTPS
+#https.keystore=/path/to/keystore
+#https.password=password
+
+# Optional when enabling HTTPS (self signed)
+#https.trust.keystore
+#https.trust.password
+
+# Defaults to false
+#jwt.enabled=true
+
+# Defaults to false
+#cors.enable=true
+#cors.origin
\ No newline at end of file
diff --git a/dockerfiles/run/guice/memory/destination/extensions-jars/README.md
b/dockerfiles/run/guice/memory/destination/extensions-jars/README.md
new file mode 100644
index 0000000..2cea759
--- /dev/null
+++ b/dockerfiles/run/guice/memory/destination/extensions-jars/README.md
@@ -0,0 +1,5 @@
+# Adding Jars to JAMES
+
+The jar in this folder will be added to JAMES classpath when mounted under
/root/extensions-jars inside the running container.
+
+You can use it to add you customs Mailets/Matchers.
diff --git a/server/container/guice/memory-guice/pom.xml
b/server/container/guice/memory-guice/pom.xml
index 6e3ae2f..b322d03 100644
--- a/server/container/guice/memory-guice/pom.xml
+++ b/server/container/guice/memory-guice/pom.xml
@@ -220,7 +220,7 @@
<configuration>
<includeScope>compile</includeScope>
<includeScope>runtime</includeScope>
-
<outputDirectory>${project.build.directory}/${project.build.finalName}.lib</outputDirectory>
+
<outputDirectory>${project.build.directory}/${project.artifactId}.lib</outputDirectory>
</configuration>
</execution>
</executions>
@@ -235,10 +235,11 @@
<goal>jar</goal>
</goals>
<configuration>
+ <finalName>${project.artifactId}</finalName>
<archive>
<manifest>
<addClasspath>true</addClasspath>
-
<classpathPrefix>${project.build.finalName}.lib/</classpathPrefix>
+
<classpathPrefix>${project.artifactId}.lib/</classpathPrefix>
<mainClass>org.apache.james.MemoryJamesServerMain</mainClass>
<useUniqueVersions>false</useUniqueVersions>
</manifest>
diff --git
a/server/container/guice/memory-guice/src/main/java/org/apache/james/FakeMessageSearchIndex.java
b/server/container/guice/memory-guice/src/main/java/org/apache/james/FakeMessageSearchIndex.java
new file mode 100644
index 0000000..fdd7cea
--- /dev/null
+++
b/server/container/guice/memory-guice/src/main/java/org/apache/james/FakeMessageSearchIndex.java
@@ -0,0 +1,94 @@
+/****************************************************************
+ * 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;
+
+import java.util.Collection;
+import java.util.EnumSet;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.commons.lang.NotImplementedException;
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.events.Group;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.Mailbox;
+import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.mailbox.model.MessageId;
+import org.apache.james.mailbox.model.SearchQuery;
+import org.apache.james.mailbox.model.UpdatedFlags;
+import org.apache.james.mailbox.store.mail.model.MailboxMessage;
+import org.apache.james.mailbox.store.search.ListeningMessageSearchIndex;
+
+public class FakeMessageSearchIndex extends ListeningMessageSearchIndex {
+ private static class FakeMessageSearchIndexGroup extends Group {}
+
+ private static final FakeMessageSearchIndexGroup GROUP = new
FakeMessageSearchIndexGroup();
+
+ public FakeMessageSearchIndex() {
+ super(null, null);
+ }
+
+ @Override
+ public void add(MailboxSession session, Mailbox mailbox, MailboxMessage
message) throws Exception {
+ throw new NotImplementedException();
+ }
+
+ @Override
+ public void delete(MailboxSession session, Mailbox mailbox,
Collection<MessageUid> expungedUids) throws Exception {
+ throw new NotImplementedException();
+ }
+
+ @Override
+ public void deleteAll(MailboxSession session, Mailbox mailbox) throws
Exception {
+ throw new NotImplementedException();
+ }
+
+ @Override
+ public void update(MailboxSession session, Mailbox mailbox,
List<UpdatedFlags> updatedFlagsList) throws Exception {
+ throw new NotImplementedException();
+ }
+
+ @Override
+ public Group getDefaultGroup() {
+ return GROUP;
+ }
+
+ @Override
+ public Iterator<MessageUid> search(MailboxSession session, Mailbox
mailbox, SearchQuery searchQuery) throws MailboxException {
+ throw new NotImplementedException();
+ }
+
+ @Override
+ public List<MessageId> search(MailboxSession session,
Collection<MailboxId> mailboxIds, SearchQuery searchQuery, long limit) throws
MailboxException {
+ throw new NotImplementedException();
+ }
+
+ @Override
+ public EnumSet<MailboxManager.SearchCapabilities>
getSupportedCapabilities(EnumSet<MailboxManager.MessageCapabilities>
messageCapabilities) {
+ throw new NotImplementedException();
+ }
+
+ @Override
+ public ExecutionMode getExecutionMode() {
+ throw new NotImplementedException();
+ }
+}
diff --git
a/server/container/guice/memory-guice/src/main/java/org/apache/james/FakeSearchMailboxModule.java
b/server/container/guice/memory-guice/src/main/java/org/apache/james/FakeSearchMailboxModule.java
new file mode 100644
index 0000000..ec25c30
--- /dev/null
+++
b/server/container/guice/memory-guice/src/main/java/org/apache/james/FakeSearchMailboxModule.java
@@ -0,0 +1,40 @@
+/****************************************************************
+ * 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;
+
+import org.apache.james.mailbox.events.MailboxListener;
+import org.apache.james.mailbox.store.search.ListeningMessageSearchIndex;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Scopes;
+import com.google.inject.multibindings.Multibinder;
+
+public class FakeSearchMailboxModule extends AbstractModule {
+
+ @Override
+ protected void configure() {
+ bind(FakeMessageSearchIndex.class).in(Scopes.SINGLETON);
+
bind(ListeningMessageSearchIndex.class).to(FakeMessageSearchIndex.class);
+
+ Multibinder.newSetBinder(binder(),
MailboxListener.GroupMailboxListener.class)
+ .addBinding()
+ .to(FakeMessageSearchIndex.class);
+ }
+}
diff --git
a/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java
b/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java
index c885f49..7ea6499 100644
---
a/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java
+++
b/server/container/guice/memory-guice/src/main/java/org/apache/james/MemoryJamesServerMain.java
@@ -115,6 +115,7 @@ public class MemoryJamesServerMain {
.build();
GuiceJamesServer.forConfiguration(configuration)
+ .combineWith(new FakeSearchMailboxModule())
.combineWith(IN_MEMORY_SERVER_AGGREGATE_MODULE, new
JMXServerModule())
.start();
}
diff --git
a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/data/MemoryDataModule.java
b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/data/MemoryDataModule.java
index a4eec3e..d6f47bb 100644
---
a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/data/MemoryDataModule.java
+++
b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/data/MemoryDataModule.java
@@ -32,8 +32,8 @@ import org.apache.james.lifecycle.api.Startable;
import org.apache.james.mailrepository.api.MailRepositoryProvider;
import org.apache.james.mailrepository.api.MailRepositoryUrlStore;
import org.apache.james.mailrepository.api.Protocol;
-import org.apache.james.mailrepository.file.FileMailRepository;
import org.apache.james.mailrepository.memory.MailRepositoryStoreConfiguration;
+import org.apache.james.mailrepository.memory.MemoryMailRepository;
import org.apache.james.mailrepository.memory.MemoryMailRepositoryProvider;
import org.apache.james.mailrepository.memory.MemoryMailRepositoryUrlStore;
import org.apache.james.modules.server.MailStoreRepositoryModule;
@@ -53,9 +53,9 @@ import com.google.inject.Singleton;
import com.google.inject.multibindings.Multibinder;
public class MemoryDataModule extends AbstractModule {
- private static final MailRepositoryStoreConfiguration.Item
FILE_MAILREPOSITORY_DEFAULT_DECLARATION = new
MailRepositoryStoreConfiguration.Item(
- ImmutableList.of(new Protocol("file")),
- FileMailRepository.class.getName(),
+ private static final MailRepositoryStoreConfiguration.Item
MEMORY_MAILREPOSITORY_DEFAULT_DECLARATION = new
MailRepositoryStoreConfiguration.Item(
+ ImmutableList.of(new Protocol("memory")),
+ MemoryMailRepository.class.getName(),
new HierarchicalConfiguration());
@Override
@@ -82,7 +82,7 @@ public class MemoryDataModule extends AbstractModule {
Multibinder.newSetBinder(binder(),
ConfigurationPerformer.class).addBinding().to(MemoryDataConfigurationPerformer.class);
-
bind(MailStoreRepositoryModule.DefaultItemSupplier.class).toInstance(() ->
FILE_MAILREPOSITORY_DEFAULT_DECLARATION);
+
bind(MailStoreRepositoryModule.DefaultItemSupplier.class).toInstance(() ->
MEMORY_MAILREPOSITORY_DEFAULT_DECLARATION);
Multibinder<MailRepositoryProvider> multibinder =
Multibinder.newSetBinder(binder(), MailRepositoryProvider.class);
multibinder.addBinding().to(MemoryMailRepositoryProvider.class);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]