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 bt...@apache.org on 2019/11/06 06:18:42 UTC

[james-project] branch master updated (4bac9ab -> 2c11c36)

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git.


    from 4bac9ab  JAMES-2962 Check if user exists before getting, setting or removing its sieve quota
     new 8b50ecb  JAMES-2966 bump elastic metrics reporter version to avoid thread leaks
     new eb38a06  JAMES-2956 Add a test to demonstrate html response for bad request instead of json ones. When malformed url.
     new 26993bb  JAMES-2956 Add documentation for html body in response for request using a malformed URL
     new c8b5fd3  JAMES-2947 WebAdmin prevents encoded '/' in a domain name at creation
     new 42c9e10  JAMES-2904 Link documentation within docker configuration files
     new 4198198  JAMES-2904 Remove some uneeded files from docker configuration
     new be9c69f  JAMES-2904 Enhance Cassandra documentation
     new 29e2c44  JAMES-2904 Document missing Cassandra migration
     new 2c11c36  Upgrade Linshare images from 2.2.3 to 2.3.2

The 9 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../main/java/org/apache/james/core/Domain.java    |   4 +-
 .../java/org/apache/james/core/MailAddress.java    |  10 +-
 .../apache/james/domainlist/api/DomainTest.java    |   5 +
 .../destination/conf/blob.properties               |   2 +
 .../destination/conf/cassandra.properties          |   2 +
 .../cassandra-ldap/destination/conf/dnsservice.xml |   2 +
 .../cassandra-ldap/destination/conf/domainlist.xml |   2 +
 .../destination/conf/elasticsearch.properties      |   2 +
 .../cassandra-ldap/destination/conf/imapserver.xml |   1 +
 .../destination/conf/jmap.properties               |   1 +
 .../cassandra-ldap/destination/conf/jmx.properties |   5 +-
 .../cassandra-ldap/destination/conf/listeners.xml  |   2 +
 .../cassandra-ldap/destination/conf/lmtpserver.xml |   2 +
 .../destination/conf/mailetcontainer.xml           |   2 +
 .../destination/conf/mailrepositorystore.xml       |   2 +
 .../cassandra-ldap/destination/conf/pop3server.xml |   1 +
 .../destination/conf/recipientrewritetable.xml     |   2 +
 .../cassandra-ldap/destination/conf/smtpserver.xml |   2 +
 .../destination/conf/tika.properties               |   2 +
 .../destination/conf/usersrepository.xml           |   2 +
 .../destination/conf/webadmin.properties           |   2 +
 .../destination/conf/blob.properties               |   4 +
 .../destination/conf/cassandra.properties          |   2 +
 .../destination/conf/dnsservice.xml                |   2 +
 .../destination/conf/domainlist.xml                |   2 +
 .../destination/conf/elasticsearch.properties      |   1 +
 .../destination/conf/imapserver.xml                |   1 +
 .../destination/conf/jmap.properties               |   1 +
 .../destination/conf/jmx.properties                |   5 +-
 .../destination/conf/listeners.xml                 |   2 +
 .../destination/conf/lmtpserver.xml                |   2 +
 .../destination/conf/mailetcontainer.xml           |   2 +
 .../destination/conf/mailrepositorystore.xml       |   2 +
 .../destination/conf/pop3server.xml                |   1 +
 .../destination/conf/rabbitmq.properties           |   4 +
 .../destination/conf/recipientrewritetable.xml     |   2 +
 .../destination/conf/smtpserver.xml                |   2 +
 .../destination/conf/tika.properties               |   2 +
 .../destination/conf/usersrepository.xml           |   2 +
 .../destination/conf/webadmin.properties           |   2 +
 .../destination/conf/blob.properties               |   4 +
 .../destination/conf/cassandra.properties          |   2 +
 .../destination/conf/dnsservice.xml                |   2 +
 .../destination/conf/domainlist.xml                |   2 +
 .../destination/conf/elasticsearch.properties      |   1 +
 .../destination/conf/imapserver.xml                |   1 +
 .../destination/conf/jmap.properties               |   1 +
 .../destination/conf/jmx.properties                |   5 +-
 .../destination/conf/listeners.xml                 |   2 +
 .../destination/conf/lmtpserver.xml                |   2 +
 .../destination/conf/mailetcontainer.xml           |   2 +
 .../destination/conf/mailrepositorystore.xml       |   2 +
 .../destination/conf/pop3server.xml                |   1 +
 .../destination/conf/rabbitmq.properties           |   4 +
 .../destination/conf/recipientrewritetable.xml     |   2 +
 .../destination/conf/smtpserver.xml                |   2 +
 .../destination/conf/tika.properties               |   2 +
 .../destination/conf/usersrepository.xml           |   2 +
 .../destination/conf/webadmin.properties           |   2 +
 .../cassandra/destination/conf/blob.properties     |   2 +
 .../destination/conf/cassandra.properties          |   4 +-
 .../cassandra/destination/conf/dnsservice.xml      |   2 +
 .../cassandra/destination/conf/domainlist.xml      |   2 +
 .../destination/conf/elasticsearch.properties      |   2 +
 .../cassandra/destination/conf/imapserver.xml      |   1 +
 .../cassandra/destination/conf/jmap.properties     |   1 +
 .../cassandra/destination/conf/jmx.properties      |   5 +-
 .../guice/cassandra/destination/conf/listeners.xml |   2 +
 .../cassandra/destination/conf/lmtpserver.xml      |   2 +
 .../cassandra/destination/conf/mailetcontainer.xml |   2 +
 .../destination/conf/mailrepositorystore.xml       |   2 +
 .../cassandra/destination/conf/pop3server.xml      |   1 +
 .../destination/conf/recipientrewritetable.xml     |   2 +
 .../cassandra/destination/conf/smtpserver.xml      |   2 +
 .../cassandra/destination/conf/tika.properties     |   2 +
 .../cassandra/destination/conf/usersrepository.xml |   2 +
 .../cassandra/destination/conf/webadmin.properties |   2 +
 .../guice/jpa-smtp/destination/conf/dnsservice.xml |   2 +
 .../guice/jpa-smtp/destination/conf/domainlist.xml |   1 +
 .../destination/conf/james-database.properties     |   2 +-
 .../guice/jpa-smtp/destination/conf/jmx.properties |   5 +-
 .../jpa-smtp/destination/conf/mailetcontainer.xml  |   2 +
 .../destination/conf/mailrepositorystore.xml       |   2 +
 .../destination/conf/recipientrewritetable.xml     |   2 +
 .../guice/jpa-smtp/destination/conf/smtpserver.xml |   2 +
 .../jpa-smtp/destination/conf/usersrepository.xml  |   2 +
 .../run/guice/jpa/destination/conf/dnsservice.xml  |   2 +
 .../run/guice/jpa/destination/conf/domainlist.xml  |   2 +
 .../run/guice/jpa/destination/conf/imapserver.xml  |   2 +
 .../jpa/destination/conf/james-database.properties |   2 +-
 .../run/guice/jpa/destination/conf/jmx.properties  |   5 +-
 .../run/guice/jpa/destination/conf/listeners.xml   |   2 +
 .../run/guice/jpa/destination/conf/lmtpserver.xml  |   2 +
 .../guice/jpa/destination/conf/mailetcontainer.xml |   2 +
 .../jpa/destination/conf/mailrepositorystore.xml   |   2 +
 .../jpa/destination/conf/managesieve.help.txt      | 112 ---------------------
 .../run/guice/jpa/destination/conf/pop3server.xml  |   1 +
 .../jpa/destination/conf/recipientrewritetable.xml |   2 +
 .../run/guice/jpa/destination/conf/smtpserver.xml  |   2 +
 .../guice/jpa/destination/conf/usersrepository.xml |   2 +
 .../memory/destination/conf/batchsizes.properties  |  10 --
 .../guice/memory/destination/conf/dnsservice.xml   |   1 +
 .../guice/memory/destination/conf/domainlist.xml   |   2 +
 .../destination/conf/elasticsearch.properties      |   2 +
 .../guice/memory/destination/conf/imapserver.xml   |   2 +
 .../guice/memory/destination/conf/jmap.properties  |   1 +
 .../guice/memory/destination/conf/jmx.properties   |   5 +-
 .../guice/memory/destination/conf/listeners.xml    |   2 +
 .../memory/destination/conf/mailetcontainer.xml    |   2 +
 .../destination/conf/mailrepositorystore.xml       |   2 +
 .../guice/memory/destination/conf/pop3server.xml   |   1 +
 .../destination/conf/recipientrewritetable.xml     |   2 +
 .../guice/memory/destination/conf/smtpserver.xml   |   2 +
 .../memory/destination/conf/usersrepository.xml    |   2 +
 .../memory/destination/conf/webadmin.properties    |   2 +
 pom.xml                                            |   2 +-
 .../james/webadmin/routes/DomainsRoutes.java       |  21 +++-
 .../routes/DLPConfigurationRoutesTest.java         |   6 +-
 .../james/webadmin/routes/DomainsRoutesTest.java   |  40 +++++++-
 .../webadmin/routes/MalformedUrlRoutesTest.java    | 107 ++++++++++++++++++++
 src/site/markdown/server/manage-webadmin.md        |   2 +
 src/site/xdoc/server/config-cassandra.xml          |  39 +++++--
 .../java/org/apache/james/linshare/Linshare.java   |   4 +-
 .../linshare/src/test/resources/backend/Dockerfile |   2 +-
 124 files changed, 419 insertions(+), 177 deletions(-)
 delete mode 100644 dockerfiles/run/guice/jpa/destination/conf/managesieve.help.txt
 delete mode 100644 dockerfiles/run/guice/memory/destination/conf/batchsizes.properties
 create mode 100644 server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MalformedUrlRoutesTest.java


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


[james-project] 09/09: Upgrade Linshare images from 2.2.3 to 2.3.2

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 2c11c3670385e691f079e8b7d866b9180b10b3ad
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Fri Sep 13 16:57:54 2019 +0700

    Upgrade Linshare images from 2.2.3 to 2.3.2
---
 .../linshare/src/test/java/org/apache/james/linshare/Linshare.java    | 4 ++--
 third-party/linshare/src/test/resources/backend/Dockerfile            | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/third-party/linshare/src/test/java/org/apache/james/linshare/Linshare.java b/third-party/linshare/src/test/java/org/apache/james/linshare/Linshare.java
index 5a7cf0a..53da4eb 100644
--- a/third-party/linshare/src/test/java/org/apache/james/linshare/Linshare.java
+++ b/third-party/linshare/src/test/java/org/apache/james/linshare/Linshare.java
@@ -94,7 +94,7 @@ public class Linshare {
 
     @SuppressWarnings("resource")
     private GenericContainer<?> createDockerDatabase() {
-        return new GenericContainer<>("linagora/linshare-database:2.2")
+        return new GenericContainer<>("linagora/linshare-database:2.3.2")
             .withLogConsumer(frame -> LOGGER.debug("<linshare-database> " + frame.getUtf8String()))
             .withNetworkAliases("database", "linshare_database")
             .withEnv("PGDATA", "/var/lib/postgresql/data/pgdata")
@@ -155,7 +155,7 @@ public class Linshare {
 
     @SuppressWarnings("resource")
     private GenericContainer<?> createLinshareBackendInit() {
-        return new GenericContainer<>("linagora/linshare-init:2.2")
+        return new GenericContainer<>("linagora/linshare-init:2.3.2")
             .withNetworkAliases("init")
             .withLogConsumer(frame -> LOGGER.debug("<linshare-init> " + frame.getUtf8String()))
             .withEnv("LS_HOST", "backend")
diff --git a/third-party/linshare/src/test/resources/backend/Dockerfile b/third-party/linshare/src/test/resources/backend/Dockerfile
index 9ae8c83..1e9fc33 100644
--- a/third-party/linshare/src/test/resources/backend/Dockerfile
+++ b/third-party/linshare/src/test/resources/backend/Dockerfile
@@ -1,4 +1,4 @@
-FROM linagora/linshare-backend:2.2.3
+FROM linagora/linshare-backend:2.3.2
 
 COPY conf/catalina.properties /usr/local/tomcat/conf/catalina.properties
 COPY conf/log4j.properties /etc/linshare/log4j.properties


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


[james-project] 08/09: JAMES-2904 Document missing Cassandra migration

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 29e2c44eb0a1aa04c14e890a972413fec26aee81
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Oct 30 10:47:51 2019 +0700

    JAMES-2904 Document missing Cassandra migration
---
 src/site/xdoc/server/config-cassandra.xml | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/src/site/xdoc/server/config-cassandra.xml b/src/site/xdoc/server/config-cassandra.xml
index a418eea..d951fe8 100644
--- a/src/site/xdoc/server/config-cassandra.xml
+++ b/src/site/xdoc/server/config-cassandra.xml
@@ -206,6 +206,21 @@
 
     </subsection>
 
+    <subsection name="From V5 to V6">
+
+      <p>Goal is to no longer rely on an UDT partition key for mailboxPath tables. Entries will be migrated to mailboxPathV2 table relying on a composite primary key</p>
+
+    </subsection>
+
+    <subsection name="From V6 to V7">
+
+      <p>Goal is to populate mapping_sources projection table. This table allows finding the source of a given redirection, which is
+      handy for things like mail aliases (I want to list aliases rewritting things to bob). Without this projection table being available,
+      (ie we rely on schema version 6 or less) such information is obtained through a full table scan, unoptimized. From schema version 7,
+      the optimized projection can safely be used.</p>
+
+    </subsection>
+
   </section>
 
 </body>


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


[james-project] 03/09: JAMES-2956 Add documentation for html body in response for request using a malformed URL

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 26993bb6c62f7d3da2afc1943df6df741b8c116a
Author: Rémi KOWALSKI <rk...@linagora.com>
AuthorDate: Tue Nov 5 15:49:40 2019 +0100

    JAMES-2956 Add documentation for html body in response for request using a malformed URL
---
 src/site/markdown/server/manage-webadmin.md | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/site/markdown/server/manage-webadmin.md b/src/site/markdown/server/manage-webadmin.md
index 2fb39ba..1f6aac7 100644
--- a/src/site/markdown/server/manage-webadmin.md
+++ b/src/site/markdown/server/manage-webadmin.md
@@ -24,6 +24,8 @@ In case of any error, the system will return an error message which is json form
 Also be aware that, in case things go wrong, all endpoints might return a 500 internal error (with a JSON body formatted
 as exposed above). To avoid information duplication, this is ommited on endpoint specific documentation.
 
+Finally, please note that in case of a malformed URL the 400 bad request response will contains an HTML body.
+
 ## Navigation menu
 
  - [HealthCheck](#HealthCheck)


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


[james-project] 01/09: JAMES-2966 bump elastic metrics reporter version to avoid thread leaks

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 8b50ecbc85bcf18b947271e19aa21ca74b7d73b1
Author: Rémi KOWALSKI <rk...@linagora.com>
AuthorDate: Tue Nov 5 15:15:22 2019 +0100

    JAMES-2966 bump elastic metrics reporter version to avoid thread leaks
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index cf6d86a..5d57f19 100644
--- a/pom.xml
+++ b/pom.xml
@@ -623,7 +623,7 @@
         <testcontainers.version>1.12.0</testcontainers.version>
         <assertj.version>3.3.0</assertj.version>
         <es.version>2.2.1</es.version>
-        <es-reporter.version>6.0.0-RC2</es-reporter.version>
+        <es-reporter.version>6.0.0-RC3</es-reporter.version>
         <guava.version>25.1-jre</guava.version>
 
         <jutf7.version>1.0.0</jutf7.version>


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


[james-project] 05/09: JAMES-2904 Link documentation within docker configuration files

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 42c9e10cf920741f34b1f342efa39c7e2c7dd72f
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Oct 30 10:21:26 2019 +0700

    JAMES-2904 Link documentation within docker configuration files
---
 .../run/guice/cassandra-ldap/destination/conf/blob.properties        | 2 ++
 .../run/guice/cassandra-ldap/destination/conf/cassandra.properties   | 2 ++
 dockerfiles/run/guice/cassandra-ldap/destination/conf/dnsservice.xml | 2 ++
 dockerfiles/run/guice/cassandra-ldap/destination/conf/domainlist.xml | 2 ++
 .../guice/cassandra-ldap/destination/conf/elasticsearch.properties   | 2 ++
 dockerfiles/run/guice/cassandra-ldap/destination/conf/imapserver.xml | 1 +
 .../run/guice/cassandra-ldap/destination/conf/jmap.properties        | 1 +
 dockerfiles/run/guice/cassandra-ldap/destination/conf/jmx.properties | 5 +----
 dockerfiles/run/guice/cassandra-ldap/destination/conf/listeners.xml  | 2 ++
 dockerfiles/run/guice/cassandra-ldap/destination/conf/lmtpserver.xml | 2 ++
 .../run/guice/cassandra-ldap/destination/conf/mailetcontainer.xml    | 2 ++
 .../guice/cassandra-ldap/destination/conf/mailrepositorystore.xml    | 2 ++
 dockerfiles/run/guice/cassandra-ldap/destination/conf/pop3server.xml | 1 +
 .../guice/cassandra-ldap/destination/conf/recipientrewritetable.xml  | 2 ++
 dockerfiles/run/guice/cassandra-ldap/destination/conf/smtpserver.xml | 2 ++
 .../run/guice/cassandra-ldap/destination/conf/tika.properties        | 2 ++
 .../run/guice/cassandra-ldap/destination/conf/usersrepository.xml    | 2 ++
 .../run/guice/cassandra-ldap/destination/conf/webadmin.properties    | 2 ++
 .../guice/cassandra-rabbitmq-ldap/destination/conf/blob.properties   | 4 ++++
 .../cassandra-rabbitmq-ldap/destination/conf/cassandra.properties    | 2 ++
 .../guice/cassandra-rabbitmq-ldap/destination/conf/dnsservice.xml    | 2 ++
 .../guice/cassandra-rabbitmq-ldap/destination/conf/domainlist.xml    | 2 ++
 .../destination/conf/elasticsearch.properties                        | 1 +
 .../guice/cassandra-rabbitmq-ldap/destination/conf/imapserver.xml    | 1 +
 .../guice/cassandra-rabbitmq-ldap/destination/conf/jmap.properties   | 1 +
 .../guice/cassandra-rabbitmq-ldap/destination/conf/jmx.properties    | 5 +----
 .../run/guice/cassandra-rabbitmq-ldap/destination/conf/listeners.xml | 2 ++
 .../guice/cassandra-rabbitmq-ldap/destination/conf/lmtpserver.xml    | 2 ++
 .../cassandra-rabbitmq-ldap/destination/conf/mailetcontainer.xml     | 2 ++
 .../cassandra-rabbitmq-ldap/destination/conf/mailrepositorystore.xml | 2 ++
 .../guice/cassandra-rabbitmq-ldap/destination/conf/pop3server.xml    | 1 +
 .../cassandra-rabbitmq-ldap/destination/conf/rabbitmq.properties     | 4 ++++
 .../destination/conf/recipientrewritetable.xml                       | 2 ++
 .../guice/cassandra-rabbitmq-ldap/destination/conf/smtpserver.xml    | 2 ++
 .../guice/cassandra-rabbitmq-ldap/destination/conf/tika.properties   | 2 ++
 .../cassandra-rabbitmq-ldap/destination/conf/usersrepository.xml     | 2 ++
 .../cassandra-rabbitmq-ldap/destination/conf/webadmin.properties     | 2 ++
 .../run/guice/cassandra-rabbitmq/destination/conf/blob.properties    | 4 ++++
 .../guice/cassandra-rabbitmq/destination/conf/cassandra.properties   | 2 ++
 .../run/guice/cassandra-rabbitmq/destination/conf/dnsservice.xml     | 2 ++
 .../run/guice/cassandra-rabbitmq/destination/conf/domainlist.xml     | 2 ++
 .../cassandra-rabbitmq/destination/conf/elasticsearch.properties     | 1 +
 .../run/guice/cassandra-rabbitmq/destination/conf/imapserver.xml     | 1 +
 .../run/guice/cassandra-rabbitmq/destination/conf/jmap.properties    | 1 +
 .../run/guice/cassandra-rabbitmq/destination/conf/jmx.properties     | 5 +----
 .../run/guice/cassandra-rabbitmq/destination/conf/listeners.xml      | 2 ++
 .../run/guice/cassandra-rabbitmq/destination/conf/lmtpserver.xml     | 2 ++
 .../guice/cassandra-rabbitmq/destination/conf/mailetcontainer.xml    | 2 ++
 .../cassandra-rabbitmq/destination/conf/mailrepositorystore.xml      | 2 ++
 .../run/guice/cassandra-rabbitmq/destination/conf/pop3server.xml     | 1 +
 .../guice/cassandra-rabbitmq/destination/conf/rabbitmq.properties    | 4 ++++
 .../cassandra-rabbitmq/destination/conf/recipientrewritetable.xml    | 2 ++
 .../run/guice/cassandra-rabbitmq/destination/conf/smtpserver.xml     | 2 ++
 .../run/guice/cassandra-rabbitmq/destination/conf/tika.properties    | 2 ++
 .../guice/cassandra-rabbitmq/destination/conf/usersrepository.xml    | 2 ++
 .../guice/cassandra-rabbitmq/destination/conf/webadmin.properties    | 2 ++
 dockerfiles/run/guice/cassandra/destination/conf/blob.properties     | 2 ++
 .../run/guice/cassandra/destination/conf/cassandra.properties        | 4 +++-
 dockerfiles/run/guice/cassandra/destination/conf/dnsservice.xml      | 2 ++
 dockerfiles/run/guice/cassandra/destination/conf/domainlist.xml      | 2 ++
 .../run/guice/cassandra/destination/conf/elasticsearch.properties    | 2 ++
 dockerfiles/run/guice/cassandra/destination/conf/imapserver.xml      | 1 +
 dockerfiles/run/guice/cassandra/destination/conf/jmap.properties     | 1 +
 dockerfiles/run/guice/cassandra/destination/conf/jmx.properties      | 5 +----
 dockerfiles/run/guice/cassandra/destination/conf/listeners.xml       | 2 ++
 dockerfiles/run/guice/cassandra/destination/conf/lmtpserver.xml      | 2 ++
 dockerfiles/run/guice/cassandra/destination/conf/mailetcontainer.xml | 2 ++
 .../run/guice/cassandra/destination/conf/mailrepositorystore.xml     | 2 ++
 dockerfiles/run/guice/cassandra/destination/conf/pop3server.xml      | 1 +
 .../run/guice/cassandra/destination/conf/recipientrewritetable.xml   | 2 ++
 dockerfiles/run/guice/cassandra/destination/conf/smtpserver.xml      | 2 ++
 dockerfiles/run/guice/cassandra/destination/conf/tika.properties     | 2 ++
 dockerfiles/run/guice/cassandra/destination/conf/usersrepository.xml | 2 ++
 dockerfiles/run/guice/cassandra/destination/conf/webadmin.properties | 2 ++
 dockerfiles/run/guice/jpa-smtp/destination/conf/dnsservice.xml       | 2 ++
 dockerfiles/run/guice/jpa-smtp/destination/conf/domainlist.xml       | 1 +
 .../run/guice/jpa-smtp/destination/conf/james-database.properties    | 2 +-
 dockerfiles/run/guice/jpa-smtp/destination/conf/jmx.properties       | 5 +----
 dockerfiles/run/guice/jpa-smtp/destination/conf/mailetcontainer.xml  | 2 ++
 .../run/guice/jpa-smtp/destination/conf/mailrepositorystore.xml      | 2 ++
 .../run/guice/jpa-smtp/destination/conf/recipientrewritetable.xml    | 2 ++
 dockerfiles/run/guice/jpa-smtp/destination/conf/smtpserver.xml       | 2 ++
 dockerfiles/run/guice/jpa-smtp/destination/conf/usersrepository.xml  | 2 ++
 dockerfiles/run/guice/jpa/destination/conf/dnsservice.xml            | 2 ++
 dockerfiles/run/guice/jpa/destination/conf/domainlist.xml            | 2 ++
 dockerfiles/run/guice/jpa/destination/conf/imapserver.xml            | 2 ++
 dockerfiles/run/guice/jpa/destination/conf/james-database.properties | 2 +-
 dockerfiles/run/guice/jpa/destination/conf/jmx.properties            | 5 +----
 dockerfiles/run/guice/jpa/destination/conf/listeners.xml             | 2 ++
 dockerfiles/run/guice/jpa/destination/conf/lmtpserver.xml            | 2 ++
 dockerfiles/run/guice/jpa/destination/conf/mailetcontainer.xml       | 2 ++
 dockerfiles/run/guice/jpa/destination/conf/mailrepositorystore.xml   | 2 ++
 dockerfiles/run/guice/jpa/destination/conf/pop3server.xml            | 1 +
 dockerfiles/run/guice/jpa/destination/conf/recipientrewritetable.xml | 2 ++
 dockerfiles/run/guice/jpa/destination/conf/smtpserver.xml            | 2 ++
 dockerfiles/run/guice/jpa/destination/conf/usersrepository.xml       | 2 ++
 dockerfiles/run/guice/memory/destination/conf/dnsservice.xml         | 1 +
 dockerfiles/run/guice/memory/destination/conf/domainlist.xml         | 2 ++
 .../run/guice/memory/destination/conf/elasticsearch.properties       | 2 ++
 dockerfiles/run/guice/memory/destination/conf/imapserver.xml         | 2 ++
 dockerfiles/run/guice/memory/destination/conf/jmap.properties        | 1 +
 dockerfiles/run/guice/memory/destination/conf/jmx.properties         | 5 +----
 dockerfiles/run/guice/memory/destination/conf/listeners.xml          | 2 ++
 dockerfiles/run/guice/memory/destination/conf/mailetcontainer.xml    | 2 ++
 .../run/guice/memory/destination/conf/mailrepositorystore.xml        | 2 ++
 dockerfiles/run/guice/memory/destination/conf/pop3server.xml         | 1 +
 .../run/guice/memory/destination/conf/recipientrewritetable.xml      | 2 ++
 dockerfiles/run/guice/memory/destination/conf/smtpserver.xml         | 2 ++
 dockerfiles/run/guice/memory/destination/conf/usersrepository.xml    | 2 ++
 dockerfiles/run/guice/memory/destination/conf/webadmin.properties    | 2 ++
 110 files changed, 201 insertions(+), 31 deletions(-)

diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/blob.properties b/dockerfiles/run/guice/cassandra-ldap/destination/conf/blob.properties
index ac9f64d..4600510 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/blob.properties
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/blob.properties
@@ -1,4 +1,6 @@
 # ============================================ Blobs Exporting ==============================================
+# Read https://james.apache.org/server/config-blob-export.html for further details
+
 # Choosing blob exporting mechanism, allowed mechanism are: localFile, linshare
 # LinShare is a file sharing service, will be explained in the below section
 # Optional, default is localFile
diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/cassandra.properties b/dockerfiles/run/guice/cassandra-ldap/destination/conf/cassandra.properties
index 026f698..ea199db 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/cassandra.properties
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/cassandra.properties
@@ -1,4 +1,6 @@
 # Configuration file for cassandra mailbox
+# Read https://james.apache.org/server/config-cassandra.html for further details
+
 cassandra.nodes=cassandra
 cassandra.keyspace=apache_james
 cassandra.replication.factor=1
diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/dnsservice.xml b/dockerfiles/run/guice/cassandra-ldap/destination/conf/dnsservice.xml
index 0978a00..92896a1 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/dnsservice.xml
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/dnsservice.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-dnsservice.html for further details -->
+
 <dnsservice>
   <servers>
     <server>8.8.8.8</server>
diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/domainlist.xml b/dockerfiles/run/guice/cassandra-ldap/destination/conf/domainlist.xml
index ad37476..851e7cc 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/domainlist.xml
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/domainlist.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-domainlist.html for further details -->
+
 <domainlist>
     <domainnames>
         <domainname>james.linagora.com</domainname>
diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/elasticsearch.properties b/dockerfiles/run/guice/cassandra-ldap/destination/conf/elasticsearch.properties
index 1ab3ef5..af93aa9 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/elasticsearch.properties
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/elasticsearch.properties
@@ -20,6 +20,8 @@
 
 # Configuration file for ElasticSearch
 
+# Read https://james.apache.org/server/config-elasticsearch.html for further details
+
 elasticsearch.masterHost=elasticsearch
 elasticsearch.port=9200
 
diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/imapserver.xml b/dockerfiles/run/guice/cassandra-ldap/destination/conf/imapserver.xml
index 6616d24..48e552c 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/imapserver.xml
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/imapserver.xml
@@ -19,6 +19,7 @@ specific language governing permissions and limitations
 under the License.
 -->
 
+<!-- Read https://james.apache.org/server/config-imap4.html for further details -->
 
 <imapservers>
     <imapserver enabled="true">
diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/jmap.properties b/dockerfiles/run/guice/cassandra-ldap/destination/conf/jmap.properties
index 63e6702..53bc403 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/jmap.properties
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/jmap.properties
@@ -1,4 +1,5 @@
 # Configuration file for JMAP
+# Read https://james.apache.org/server/config-jmap.html for further details
 
 enabled=true
 
diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/jmx.properties b/dockerfiles/run/guice/cassandra-ldap/destination/conf/jmx.properties
index 1c39a17..e56235f 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/jmx.properties
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/jmx.properties
@@ -19,10 +19,7 @@
 #  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
+# Read https://james.apache.org/server/config-system.html#jmx.properties for further details
 
 jmx.enabled=true
 jmx.address=127.0.0.1
diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/listeners.xml b/dockerfiles/run/guice/cassandra-ldap/destination/conf/listeners.xml
index 5ca68a4..8b217db 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/listeners.xml
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/listeners.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-listeners.html for further details -->
+
 <listeners>
   <listener>
     <class>org.apache.james.mailbox.spamassassin.SpamAssassinListener</class>
diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/lmtpserver.xml b/dockerfiles/run/guice/cassandra-ldap/destination/conf/lmtpserver.xml
index ce079b0..723da3f 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/lmtpserver.xml
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/lmtpserver.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-smtp-lmtp.html#LMTP_Configuration for further details -->
+
 <lmtpservers>
 
     <lmtpserver enabled="false">
diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/mailetcontainer.xml b/dockerfiles/run/guice/cassandra-ldap/destination/conf/mailetcontainer.xml
index 3839b39..2972e3d 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/mailetcontainer.xml
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/mailetcontainer.xml
@@ -19,6 +19,8 @@
   under the License.
  -->
 
+<!-- Read https://james.apache.org/server/config-mailetcontainer.html for further details -->
+
 <mailetcontainer enableJmx="true">
 
     <context>
diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/mailrepositorystore.xml b/dockerfiles/run/guice/cassandra-ldap/destination/conf/mailrepositorystore.xml
index 29df751..00ed3f7 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/mailrepositorystore.xml
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/mailrepositorystore.xml
@@ -19,6 +19,8 @@
   under the License.
  -->
 
+<!-- Read https://james.apache.org/server/config-mailrepositorystore.html for further details -->
+
 <mailrepositorystore>
     <defaultProtocol>cassandra</defaultProtocol>
     <mailrepositories>
diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/pop3server.xml b/dockerfiles/run/guice/cassandra-ldap/destination/conf/pop3server.xml
index df8fbef..10a2e08 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/pop3server.xml
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/pop3server.xml
@@ -18,6 +18,7 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-pop3.html for further details -->
 
 <pop3servers>
     <pop3server enabled="false">
diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/recipientrewritetable.xml b/dockerfiles/run/guice/cassandra-ldap/destination/conf/recipientrewritetable.xml
index 3d44578..1a512c6 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/recipientrewritetable.xml
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/recipientrewritetable.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-recipientrewritetable.html for further details -->
+
 <!-- The default table for storing James' RecipientRewriteTable mappings. -->
 <recipientrewritetable>
   <recursiveMapping>true</recursiveMapping>
diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/smtpserver.xml b/dockerfiles/run/guice/cassandra-ldap/destination/conf/smtpserver.xml
index e464ca6..a95140d 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/smtpserver.xml
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/smtpserver.xml
@@ -19,6 +19,8 @@
   under the License.
  -->
 
+<!-- Read https://james.apache.org/server/config-smtp-lmtp.html#SMTP_Configuration for further details -->
+
 <smtpservers>
     <smtpserver enabled="true">
         <jmxName>smtpserver-global</jmxName>
diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/tika.properties b/dockerfiles/run/guice/cassandra-ldap/destination/conf/tika.properties
index 5e0229a..1fb9956 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/tika.properties
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/tika.properties
@@ -15,6 +15,8 @@
 #  specific language governing permissions and limitations
 #  under the License.
 
+# Read https://james.apache.org/server/config-elasticsearch.html#Tika_Configuration for further details
+
 tika.enabled=true
 tika.host=tika
 tika.port=9998
diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/usersrepository.xml b/dockerfiles/run/guice/cassandra-ldap/destination/conf/usersrepository.xml
index afb53f9..0f90679 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/usersrepository.xml
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/usersrepository.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-users.html for further details -->
+
 <repository name="LocalUsers"
     ldapHost="ldap://myldapserver:389" 
     principal="uid=ldapUser,ou=system" 
diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/webadmin.properties b/dockerfiles/run/guice/cassandra-ldap/destination/conf/webadmin.properties
index 4d5cd80..ec014ea 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/webadmin.properties
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/webadmin.properties
@@ -18,6 +18,8 @@
 #  This template file can be used as example for James Server configuration
 #  DO NOT USE IT AS SUCH AND ADAPT IT TO YOUR NEEDS
 
+# Read https://james.apache.org/server/config-webadmin.html for further details
+
 enabled=true
 port=8000
 host=localhost
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/blob.properties b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/blob.properties
index e92c045..b7085a1 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/blob.properties
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/blob.properties
@@ -1,4 +1,6 @@
 # ============================================= BlobStore Implementation ==================================
+# Read https://james.apache.org/server/config-blobstore.html for further details
+
 # Choose your BlobStore implementation
 # Mandatory, allowed values are: cassandra, objectstorage, union
 # union is using both objectstorage as the current BlobStore & cassandra as the legacy BlobStore
@@ -104,6 +106,8 @@ objectstorage.swift.tempauth.userheadername=X-Storage-User
 # objectstorage.s3.secretKey=secretKey
 
 # ============================================ Blobs Exporting ==============================================
+# Read https://james.apache.org/server/config-blob-export.html for further details
+
 # Choosing blob exporting mechanism, allowed mechanism are: localFile, linshare
 # LinShare is a file sharing service, will be explained in the below section
 # Optional, default is localFile
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/cassandra.properties b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/cassandra.properties
index 69aaadf..1c63f7e 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/cassandra.properties
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/cassandra.properties
@@ -1,4 +1,6 @@
 # Configuration file for cassandra mailbox
+# Read https://james.apache.org/server/config-cassandra.html for further details
+
 cassandra.nodes=cassandra
 cassandra.keyspace=apache_james
 cassandra.replication.factor=1
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/dnsservice.xml b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/dnsservice.xml
index 0978a00..92896a1 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/dnsservice.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/dnsservice.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-dnsservice.html for further details -->
+
 <dnsservice>
   <servers>
     <server>8.8.8.8</server>
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/domainlist.xml b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/domainlist.xml
index ad37476..851e7cc 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/domainlist.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/domainlist.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-domainlist.html for further details -->
+
 <domainlist>
     <domainnames>
         <domainname>james.linagora.com</domainname>
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/elasticsearch.properties b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/elasticsearch.properties
index 1ab3ef5..3c6d201 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/elasticsearch.properties
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/elasticsearch.properties
@@ -19,6 +19,7 @@
 #  DO NOT USE IT AS SUCH AND ADAPT IT TO YOUR NEEDS
 
 # Configuration file for ElasticSearch
+# Read https://james.apache.org/server/config-elasticsearch.html for further details
 
 elasticsearch.masterHost=elasticsearch
 elasticsearch.port=9200
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/imapserver.xml b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/imapserver.xml
index 6616d24..48e552c 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/imapserver.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/imapserver.xml
@@ -19,6 +19,7 @@ specific language governing permissions and limitations
 under the License.
 -->
 
+<!-- Read https://james.apache.org/server/config-imap4.html for further details -->
 
 <imapservers>
     <imapserver enabled="true">
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/jmap.properties b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/jmap.properties
index 63e6702..53bc403 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/jmap.properties
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/jmap.properties
@@ -1,4 +1,5 @@
 # Configuration file for JMAP
+# Read https://james.apache.org/server/config-jmap.html for further details
 
 enabled=true
 
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/jmx.properties b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/jmx.properties
index 1c39a17..e56235f 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/jmx.properties
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/jmx.properties
@@ -19,10 +19,7 @@
 #  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
+# Read https://james.apache.org/server/config-system.html#jmx.properties for further details
 
 jmx.enabled=true
 jmx.address=127.0.0.1
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/listeners.xml b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/listeners.xml
index 5ca68a4..8b217db 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/listeners.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/listeners.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-listeners.html for further details -->
+
 <listeners>
   <listener>
     <class>org.apache.james.mailbox.spamassassin.SpamAssassinListener</class>
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/lmtpserver.xml b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/lmtpserver.xml
index ce079b0..723da3f 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/lmtpserver.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/lmtpserver.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-smtp-lmtp.html#LMTP_Configuration for further details -->
+
 <lmtpservers>
 
     <lmtpserver enabled="false">
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/mailetcontainer.xml b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/mailetcontainer.xml
index 04d0459..794f325 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/mailetcontainer.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/mailetcontainer.xml
@@ -19,6 +19,8 @@
   under the License.
  -->
 
+<!-- Read https://james.apache.org/server/config-mailetcontainer.html for further details -->
+
 <mailetcontainer enableJmx="true">
 
     <context>
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/mailrepositorystore.xml b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/mailrepositorystore.xml
index 29df751..00ed3f7 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/mailrepositorystore.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/mailrepositorystore.xml
@@ -19,6 +19,8 @@
   under the License.
  -->
 
+<!-- Read https://james.apache.org/server/config-mailrepositorystore.html for further details -->
+
 <mailrepositorystore>
     <defaultProtocol>cassandra</defaultProtocol>
     <mailrepositories>
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/pop3server.xml b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/pop3server.xml
index df8fbef..10a2e08 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/pop3server.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/pop3server.xml
@@ -18,6 +18,7 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-pop3.html for further details -->
 
 <pop3servers>
     <pop3server enabled="false">
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/rabbitmq.properties b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/rabbitmq.properties
index ff1f2a4..3d34884 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/rabbitmq.properties
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/rabbitmq.properties
@@ -1,3 +1,7 @@
+# RabbitMQ configuration
+
+# Read https://james.apache.org/server/config-rabbitmq.html for further details
+
 # Mandatory
 uri=amqp://rabbitmq:5672
 
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/recipientrewritetable.xml b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/recipientrewritetable.xml
index 3d44578..1a512c6 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/recipientrewritetable.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/recipientrewritetable.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-recipientrewritetable.html for further details -->
+
 <!-- The default table for storing James' RecipientRewriteTable mappings. -->
 <recipientrewritetable>
   <recursiveMapping>true</recursiveMapping>
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/smtpserver.xml b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/smtpserver.xml
index e464ca6..a95140d 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/smtpserver.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/smtpserver.xml
@@ -19,6 +19,8 @@
   under the License.
  -->
 
+<!-- Read https://james.apache.org/server/config-smtp-lmtp.html#SMTP_Configuration for further details -->
+
 <smtpservers>
     <smtpserver enabled="true">
         <jmxName>smtpserver-global</jmxName>
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/tika.properties b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/tika.properties
index 5e0229a..1fb9956 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/tika.properties
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/tika.properties
@@ -15,6 +15,8 @@
 #  specific language governing permissions and limitations
 #  under the License.
 
+# Read https://james.apache.org/server/config-elasticsearch.html#Tika_Configuration for further details
+
 tika.enabled=true
 tika.host=tika
 tika.port=9998
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/usersrepository.xml b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/usersrepository.xml
index 17aa06b..e907fb5 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/usersrepository.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/usersrepository.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-users.html for further details -->
+
 <repository name="LocalUsers"
     ldapHost="ldap://myldapserver:389"
     principal="uid=ldapUser,ou=system"
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/webadmin.properties b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/webadmin.properties
index 4d5cd80..ec014ea 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/webadmin.properties
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/webadmin.properties
@@ -18,6 +18,8 @@
 #  This template file can be used as example for James Server configuration
 #  DO NOT USE IT AS SUCH AND ADAPT IT TO YOUR NEEDS
 
+# Read https://james.apache.org/server/config-webadmin.html for further details
+
 enabled=true
 port=8000
 host=localhost
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/blob.properties b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/blob.properties
index e92c045..b7085a1 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/blob.properties
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/blob.properties
@@ -1,4 +1,6 @@
 # ============================================= BlobStore Implementation ==================================
+# Read https://james.apache.org/server/config-blobstore.html for further details
+
 # Choose your BlobStore implementation
 # Mandatory, allowed values are: cassandra, objectstorage, union
 # union is using both objectstorage as the current BlobStore & cassandra as the legacy BlobStore
@@ -104,6 +106,8 @@ objectstorage.swift.tempauth.userheadername=X-Storage-User
 # objectstorage.s3.secretKey=secretKey
 
 # ============================================ Blobs Exporting ==============================================
+# Read https://james.apache.org/server/config-blob-export.html for further details
+
 # Choosing blob exporting mechanism, allowed mechanism are: localFile, linshare
 # LinShare is a file sharing service, will be explained in the below section
 # Optional, default is localFile
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/cassandra.properties b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/cassandra.properties
index 69aaadf..1c63f7e 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/cassandra.properties
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/cassandra.properties
@@ -1,4 +1,6 @@
 # Configuration file for cassandra mailbox
+# Read https://james.apache.org/server/config-cassandra.html for further details
+
 cassandra.nodes=cassandra
 cassandra.keyspace=apache_james
 cassandra.replication.factor=1
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/dnsservice.xml b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/dnsservice.xml
index 0978a00..92896a1 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/dnsservice.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/dnsservice.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-dnsservice.html for further details -->
+
 <dnsservice>
   <servers>
     <server>8.8.8.8</server>
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/domainlist.xml b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/domainlist.xml
index ad37476..851e7cc 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/domainlist.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/domainlist.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-domainlist.html for further details -->
+
 <domainlist>
     <domainnames>
         <domainname>james.linagora.com</domainname>
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/elasticsearch.properties b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/elasticsearch.properties
index 1ab3ef5..3c6d201 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/elasticsearch.properties
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/elasticsearch.properties
@@ -19,6 +19,7 @@
 #  DO NOT USE IT AS SUCH AND ADAPT IT TO YOUR NEEDS
 
 # Configuration file for ElasticSearch
+# Read https://james.apache.org/server/config-elasticsearch.html for further details
 
 elasticsearch.masterHost=elasticsearch
 elasticsearch.port=9200
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/imapserver.xml b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/imapserver.xml
index 6616d24..48e552c 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/imapserver.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/imapserver.xml
@@ -19,6 +19,7 @@ specific language governing permissions and limitations
 under the License.
 -->
 
+<!-- Read https://james.apache.org/server/config-imap4.html for further details -->
 
 <imapservers>
     <imapserver enabled="true">
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/jmap.properties b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/jmap.properties
index 63e6702..53bc403 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/jmap.properties
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/jmap.properties
@@ -1,4 +1,5 @@
 # Configuration file for JMAP
+# Read https://james.apache.org/server/config-jmap.html for further details
 
 enabled=true
 
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/jmx.properties b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/jmx.properties
index 1c39a17..e56235f 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/jmx.properties
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/jmx.properties
@@ -19,10 +19,7 @@
 #  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
+# Read https://james.apache.org/server/config-system.html#jmx.properties for further details
 
 jmx.enabled=true
 jmx.address=127.0.0.1
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/listeners.xml b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/listeners.xml
index 5ca68a4..8b217db 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/listeners.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/listeners.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-listeners.html for further details -->
+
 <listeners>
   <listener>
     <class>org.apache.james.mailbox.spamassassin.SpamAssassinListener</class>
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/lmtpserver.xml b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/lmtpserver.xml
index ce079b0..723da3f 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/lmtpserver.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/lmtpserver.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-smtp-lmtp.html#LMTP_Configuration for further details -->
+
 <lmtpservers>
 
     <lmtpserver enabled="false">
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/mailetcontainer.xml b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/mailetcontainer.xml
index 04d0459..794f325 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/mailetcontainer.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/mailetcontainer.xml
@@ -19,6 +19,8 @@
   under the License.
  -->
 
+<!-- Read https://james.apache.org/server/config-mailetcontainer.html for further details -->
+
 <mailetcontainer enableJmx="true">
 
     <context>
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/mailrepositorystore.xml b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/mailrepositorystore.xml
index 29df751..00ed3f7 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/mailrepositorystore.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/mailrepositorystore.xml
@@ -19,6 +19,8 @@
   under the License.
  -->
 
+<!-- Read https://james.apache.org/server/config-mailrepositorystore.html for further details -->
+
 <mailrepositorystore>
     <defaultProtocol>cassandra</defaultProtocol>
     <mailrepositories>
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/pop3server.xml b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/pop3server.xml
index df8fbef..10a2e08 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/pop3server.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/pop3server.xml
@@ -18,6 +18,7 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-pop3.html for further details -->
 
 <pop3servers>
     <pop3server enabled="false">
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/rabbitmq.properties b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/rabbitmq.properties
index ff1f2a4..3d34884 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/rabbitmq.properties
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/rabbitmq.properties
@@ -1,3 +1,7 @@
+# RabbitMQ configuration
+
+# Read https://james.apache.org/server/config-rabbitmq.html for further details
+
 # Mandatory
 uri=amqp://rabbitmq:5672
 
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/recipientrewritetable.xml b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/recipientrewritetable.xml
index 3d44578..1a512c6 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/recipientrewritetable.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/recipientrewritetable.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-recipientrewritetable.html for further details -->
+
 <!-- The default table for storing James' RecipientRewriteTable mappings. -->
 <recipientrewritetable>
   <recursiveMapping>true</recursiveMapping>
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/smtpserver.xml b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/smtpserver.xml
index e464ca6..a95140d 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/smtpserver.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/smtpserver.xml
@@ -19,6 +19,8 @@
   under the License.
  -->
 
+<!-- Read https://james.apache.org/server/config-smtp-lmtp.html#SMTP_Configuration for further details -->
+
 <smtpservers>
     <smtpserver enabled="true">
         <jmxName>smtpserver-global</jmxName>
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/tika.properties b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/tika.properties
index 5e0229a..1fb9956 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/tika.properties
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/tika.properties
@@ -15,6 +15,8 @@
 #  specific language governing permissions and limitations
 #  under the License.
 
+# Read https://james.apache.org/server/config-elasticsearch.html#Tika_Configuration for further details
+
 tika.enabled=true
 tika.host=tika
 tika.port=9998
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/usersrepository.xml b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/usersrepository.xml
index c745677..8b3e8e1 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/usersrepository.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/usersrepository.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-users.html for further details -->
+
 <usersrepository name="LocalUsers">
     <algorithm>MD5</algorithm>
     <enableVirtualHosting>true</enableVirtualHosting>    
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/webadmin.properties b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/webadmin.properties
index 4d5cd80..ec014ea 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/webadmin.properties
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/webadmin.properties
@@ -18,6 +18,8 @@
 #  This template file can be used as example for James Server configuration
 #  DO NOT USE IT AS SUCH AND ADAPT IT TO YOUR NEEDS
 
+# Read https://james.apache.org/server/config-webadmin.html for further details
+
 enabled=true
 port=8000
 host=localhost
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/blob.properties b/dockerfiles/run/guice/cassandra/destination/conf/blob.properties
index ac9f64d..4600510 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/blob.properties
+++ b/dockerfiles/run/guice/cassandra/destination/conf/blob.properties
@@ -1,4 +1,6 @@
 # ============================================ Blobs Exporting ==============================================
+# Read https://james.apache.org/server/config-blob-export.html for further details
+
 # Choosing blob exporting mechanism, allowed mechanism are: localFile, linshare
 # LinShare is a file sharing service, will be explained in the below section
 # Optional, default is localFile
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/cassandra.properties b/dockerfiles/run/guice/cassandra/destination/conf/cassandra.properties
index 69aaadf..2cf6a10 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/cassandra.properties
+++ b/dockerfiles/run/guice/cassandra/destination/conf/cassandra.properties
@@ -1,4 +1,6 @@
-# Configuration file for cassandra mailbox
+## Configuration file for cassandra mailbox
+# Read https://james.apache.org/server/config-cassandra.html for further details
+
 cassandra.nodes=cassandra
 cassandra.keyspace=apache_james
 cassandra.replication.factor=1
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/dnsservice.xml b/dockerfiles/run/guice/cassandra/destination/conf/dnsservice.xml
index 0978a00..92896a1 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/dnsservice.xml
+++ b/dockerfiles/run/guice/cassandra/destination/conf/dnsservice.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-dnsservice.html for further details -->
+
 <dnsservice>
   <servers>
     <server>8.8.8.8</server>
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/domainlist.xml b/dockerfiles/run/guice/cassandra/destination/conf/domainlist.xml
index ad37476..851e7cc 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/domainlist.xml
+++ b/dockerfiles/run/guice/cassandra/destination/conf/domainlist.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-domainlist.html for further details -->
+
 <domainlist>
     <domainnames>
         <domainname>james.linagora.com</domainname>
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/elasticsearch.properties b/dockerfiles/run/guice/cassandra/destination/conf/elasticsearch.properties
index 1ab3ef5..af93aa9 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/elasticsearch.properties
+++ b/dockerfiles/run/guice/cassandra/destination/conf/elasticsearch.properties
@@ -20,6 +20,8 @@
 
 # Configuration file for ElasticSearch
 
+# Read https://james.apache.org/server/config-elasticsearch.html for further details
+
 elasticsearch.masterHost=elasticsearch
 elasticsearch.port=9200
 
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/imapserver.xml b/dockerfiles/run/guice/cassandra/destination/conf/imapserver.xml
index 6616d24..48e552c 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/imapserver.xml
+++ b/dockerfiles/run/guice/cassandra/destination/conf/imapserver.xml
@@ -19,6 +19,7 @@ specific language governing permissions and limitations
 under the License.
 -->
 
+<!-- Read https://james.apache.org/server/config-imap4.html for further details -->
 
 <imapservers>
     <imapserver enabled="true">
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/jmap.properties b/dockerfiles/run/guice/cassandra/destination/conf/jmap.properties
index 63e6702..53bc403 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/jmap.properties
+++ b/dockerfiles/run/guice/cassandra/destination/conf/jmap.properties
@@ -1,4 +1,5 @@
 # Configuration file for JMAP
+# Read https://james.apache.org/server/config-jmap.html for further details
 
 enabled=true
 
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/jmx.properties b/dockerfiles/run/guice/cassandra/destination/conf/jmx.properties
index 1c39a17..e56235f 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/jmx.properties
+++ b/dockerfiles/run/guice/cassandra/destination/conf/jmx.properties
@@ -19,10 +19,7 @@
 #  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
+# Read https://james.apache.org/server/config-system.html#jmx.properties for further details
 
 jmx.enabled=true
 jmx.address=127.0.0.1
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/listeners.xml b/dockerfiles/run/guice/cassandra/destination/conf/listeners.xml
index 5ca68a4..8b217db 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/listeners.xml
+++ b/dockerfiles/run/guice/cassandra/destination/conf/listeners.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-listeners.html for further details -->
+
 <listeners>
   <listener>
     <class>org.apache.james.mailbox.spamassassin.SpamAssassinListener</class>
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/lmtpserver.xml b/dockerfiles/run/guice/cassandra/destination/conf/lmtpserver.xml
index ce079b0..723da3f 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/lmtpserver.xml
+++ b/dockerfiles/run/guice/cassandra/destination/conf/lmtpserver.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-smtp-lmtp.html#LMTP_Configuration for further details -->
+
 <lmtpservers>
 
     <lmtpserver enabled="false">
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/mailetcontainer.xml b/dockerfiles/run/guice/cassandra/destination/conf/mailetcontainer.xml
index 04d0459..794f325 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/mailetcontainer.xml
+++ b/dockerfiles/run/guice/cassandra/destination/conf/mailetcontainer.xml
@@ -19,6 +19,8 @@
   under the License.
  -->
 
+<!-- Read https://james.apache.org/server/config-mailetcontainer.html for further details -->
+
 <mailetcontainer enableJmx="true">
 
     <context>
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/mailrepositorystore.xml b/dockerfiles/run/guice/cassandra/destination/conf/mailrepositorystore.xml
index 29df751..00ed3f7 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/mailrepositorystore.xml
+++ b/dockerfiles/run/guice/cassandra/destination/conf/mailrepositorystore.xml
@@ -19,6 +19,8 @@
   under the License.
  -->
 
+<!-- Read https://james.apache.org/server/config-mailrepositorystore.html for further details -->
+
 <mailrepositorystore>
     <defaultProtocol>cassandra</defaultProtocol>
     <mailrepositories>
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/pop3server.xml b/dockerfiles/run/guice/cassandra/destination/conf/pop3server.xml
index df8fbef..10a2e08 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/pop3server.xml
+++ b/dockerfiles/run/guice/cassandra/destination/conf/pop3server.xml
@@ -18,6 +18,7 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-pop3.html for further details -->
 
 <pop3servers>
     <pop3server enabled="false">
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/recipientrewritetable.xml b/dockerfiles/run/guice/cassandra/destination/conf/recipientrewritetable.xml
index 3d44578..1a512c6 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/recipientrewritetable.xml
+++ b/dockerfiles/run/guice/cassandra/destination/conf/recipientrewritetable.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-recipientrewritetable.html for further details -->
+
 <!-- The default table for storing James' RecipientRewriteTable mappings. -->
 <recipientrewritetable>
   <recursiveMapping>true</recursiveMapping>
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/smtpserver.xml b/dockerfiles/run/guice/cassandra/destination/conf/smtpserver.xml
index e464ca6..a95140d 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/smtpserver.xml
+++ b/dockerfiles/run/guice/cassandra/destination/conf/smtpserver.xml
@@ -19,6 +19,8 @@
   under the License.
  -->
 
+<!-- Read https://james.apache.org/server/config-smtp-lmtp.html#SMTP_Configuration for further details -->
+
 <smtpservers>
     <smtpserver enabled="true">
         <jmxName>smtpserver-global</jmxName>
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/tika.properties b/dockerfiles/run/guice/cassandra/destination/conf/tika.properties
index 5e0229a..1fb9956 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/tika.properties
+++ b/dockerfiles/run/guice/cassandra/destination/conf/tika.properties
@@ -15,6 +15,8 @@
 #  specific language governing permissions and limitations
 #  under the License.
 
+# Read https://james.apache.org/server/config-elasticsearch.html#Tika_Configuration for further details
+
 tika.enabled=true
 tika.host=tika
 tika.port=9998
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/usersrepository.xml b/dockerfiles/run/guice/cassandra/destination/conf/usersrepository.xml
index c745677..8b3e8e1 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/usersrepository.xml
+++ b/dockerfiles/run/guice/cassandra/destination/conf/usersrepository.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-users.html for further details -->
+
 <usersrepository name="LocalUsers">
     <algorithm>MD5</algorithm>
     <enableVirtualHosting>true</enableVirtualHosting>    
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/webadmin.properties b/dockerfiles/run/guice/cassandra/destination/conf/webadmin.properties
index 4d5cd80..ec014ea 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/webadmin.properties
+++ b/dockerfiles/run/guice/cassandra/destination/conf/webadmin.properties
@@ -18,6 +18,8 @@
 #  This template file can be used as example for James Server configuration
 #  DO NOT USE IT AS SUCH AND ADAPT IT TO YOUR NEEDS
 
+# Read https://james.apache.org/server/config-webadmin.html for further details
+
 enabled=true
 port=8000
 host=localhost
diff --git a/dockerfiles/run/guice/jpa-smtp/destination/conf/dnsservice.xml b/dockerfiles/run/guice/jpa-smtp/destination/conf/dnsservice.xml
index 0978a00..92896a1 100644
--- a/dockerfiles/run/guice/jpa-smtp/destination/conf/dnsservice.xml
+++ b/dockerfiles/run/guice/jpa-smtp/destination/conf/dnsservice.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-dnsservice.html for further details -->
+
 <dnsservice>
   <servers>
     <server>8.8.8.8</server>
diff --git a/dockerfiles/run/guice/jpa-smtp/destination/conf/domainlist.xml b/dockerfiles/run/guice/jpa-smtp/destination/conf/domainlist.xml
index fc64fd2..d897f06 100644
--- a/dockerfiles/run/guice/jpa-smtp/destination/conf/domainlist.xml
+++ b/dockerfiles/run/guice/jpa-smtp/destination/conf/domainlist.xml
@@ -17,6 +17,7 @@
   specific language governing permissions and limitations      
   under the License.                                           
  -->
+<!-- Read https://james.apache.org/server/config-domainlist.html for further details -->
 
 <domainlist class="org.apache.james.domainlist.jpa.JPADomainList">
     <domainnames>
diff --git a/dockerfiles/run/guice/jpa-smtp/destination/conf/james-database.properties b/dockerfiles/run/guice/jpa-smtp/destination/conf/james-database.properties
index 22770d0..0da699d 100644
--- a/dockerfiles/run/guice/jpa-smtp/destination/conf/james-database.properties
+++ b/dockerfiles/run/guice/jpa-smtp/destination/conf/james-database.properties
@@ -18,7 +18,7 @@
 #  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
+# Read https://james.apache.org/server/config-system.html#james-database.properties for further details
 
 # Use derby as default
 database.driverClassName=org.apache.derby.jdbc.EmbeddedDriver
diff --git a/dockerfiles/run/guice/jpa-smtp/destination/conf/jmx.properties b/dockerfiles/run/guice/jpa-smtp/destination/conf/jmx.properties
index 1c39a17..e56235f 100644
--- a/dockerfiles/run/guice/jpa-smtp/destination/conf/jmx.properties
+++ b/dockerfiles/run/guice/jpa-smtp/destination/conf/jmx.properties
@@ -19,10 +19,7 @@
 #  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
+# Read https://james.apache.org/server/config-system.html#jmx.properties for further details
 
 jmx.enabled=true
 jmx.address=127.0.0.1
diff --git a/dockerfiles/run/guice/jpa-smtp/destination/conf/mailetcontainer.xml b/dockerfiles/run/guice/jpa-smtp/destination/conf/mailetcontainer.xml
index c1e2dd5..e873098 100644
--- a/dockerfiles/run/guice/jpa-smtp/destination/conf/mailetcontainer.xml
+++ b/dockerfiles/run/guice/jpa-smtp/destination/conf/mailetcontainer.xml
@@ -19,6 +19,8 @@
   under the License.
  -->
 
+<!-- Read https://james.apache.org/server/config-mailetcontainer.html for further details -->
+
 <mailetcontainer enableJmx="true">
 
     <context>
diff --git a/dockerfiles/run/guice/jpa-smtp/destination/conf/mailrepositorystore.xml b/dockerfiles/run/guice/jpa-smtp/destination/conf/mailrepositorystore.xml
index 099710e..1e04a5f 100644
--- a/dockerfiles/run/guice/jpa-smtp/destination/conf/mailrepositorystore.xml
+++ b/dockerfiles/run/guice/jpa-smtp/destination/conf/mailrepositorystore.xml
@@ -19,6 +19,8 @@
   under the License.
  -->
 
+<!-- Read https://james.apache.org/server/config-mailrepositorystore.html for further details -->
+
 <mailrepositorystore>
     <defaultProtocol>file</defaultProtocol>
     <mailrepositories>
diff --git a/dockerfiles/run/guice/jpa-smtp/destination/conf/recipientrewritetable.xml b/dockerfiles/run/guice/jpa-smtp/destination/conf/recipientrewritetable.xml
index 7e7f586..40ad418 100644
--- a/dockerfiles/run/guice/jpa-smtp/destination/conf/recipientrewritetable.xml
+++ b/dockerfiles/run/guice/jpa-smtp/destination/conf/recipientrewritetable.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-recipientrewritetable.html for further details -->
+
 <!-- The default table for storing James' RecipientRewriteTable mappings. -->
 <recipientrewritetable class="org.apache.james.rrt.jpa.JPARecipientRewriteTable">
   <recursiveMapping>true</recursiveMapping>
diff --git a/dockerfiles/run/guice/jpa-smtp/destination/conf/smtpserver.xml b/dockerfiles/run/guice/jpa-smtp/destination/conf/smtpserver.xml
index e464ca6..a95140d 100644
--- a/dockerfiles/run/guice/jpa-smtp/destination/conf/smtpserver.xml
+++ b/dockerfiles/run/guice/jpa-smtp/destination/conf/smtpserver.xml
@@ -19,6 +19,8 @@
   under the License.
  -->
 
+<!-- Read https://james.apache.org/server/config-smtp-lmtp.html#SMTP_Configuration for further details -->
+
 <smtpservers>
     <smtpserver enabled="true">
         <jmxName>smtpserver-global</jmxName>
diff --git a/dockerfiles/run/guice/jpa-smtp/destination/conf/usersrepository.xml b/dockerfiles/run/guice/jpa-smtp/destination/conf/usersrepository.xml
index e1f1b08..82bca15 100644
--- a/dockerfiles/run/guice/jpa-smtp/destination/conf/usersrepository.xml
+++ b/dockerfiles/run/guice/jpa-smtp/destination/conf/usersrepository.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-users.html for further details -->
+
 <usersrepository name="LocalUsers" class="org.apache.james.user.jpa.JPAUsersRepository">
     <destination URL="file://users/"/>
     <algorithm>SHA-512</algorithm>
diff --git a/dockerfiles/run/guice/jpa/destination/conf/dnsservice.xml b/dockerfiles/run/guice/jpa/destination/conf/dnsservice.xml
index 0978a00..88ee0ef 100644
--- a/dockerfiles/run/guice/jpa/destination/conf/dnsservice.xml
+++ b/dockerfiles/run/guice/jpa/destination/conf/dnsservice.xml
@@ -17,6 +17,8 @@
   specific language governing permissions and limitations      
   under the License.                                           
  -->
+<!-- Read https://james.apache.org/server/config-dnsservice.html for further details -->
+
 
 <dnsservice>
   <servers>
diff --git a/dockerfiles/run/guice/jpa/destination/conf/domainlist.xml b/dockerfiles/run/guice/jpa/destination/conf/domainlist.xml
index ad37476..851e7cc 100644
--- a/dockerfiles/run/guice/jpa/destination/conf/domainlist.xml
+++ b/dockerfiles/run/guice/jpa/destination/conf/domainlist.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-domainlist.html for further details -->
+
 <domainlist>
     <domainnames>
         <domainname>james.linagora.com</domainname>
diff --git a/dockerfiles/run/guice/jpa/destination/conf/imapserver.xml b/dockerfiles/run/guice/jpa/destination/conf/imapserver.xml
index 6616d24..a1306fa 100644
--- a/dockerfiles/run/guice/jpa/destination/conf/imapserver.xml
+++ b/dockerfiles/run/guice/jpa/destination/conf/imapserver.xml
@@ -19,6 +19,8 @@ specific language governing permissions and limitations
 under the License.
 -->
 
+<!-- Read https://james.apache.org/server/config-imap4.html for further details -->
+
 
 <imapservers>
     <imapserver enabled="true">
diff --git a/dockerfiles/run/guice/jpa/destination/conf/james-database.properties b/dockerfiles/run/guice/jpa/destination/conf/james-database.properties
index 22770d0..0da699d 100644
--- a/dockerfiles/run/guice/jpa/destination/conf/james-database.properties
+++ b/dockerfiles/run/guice/jpa/destination/conf/james-database.properties
@@ -18,7 +18,7 @@
 #  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
+# Read https://james.apache.org/server/config-system.html#james-database.properties for further details
 
 # Use derby as default
 database.driverClassName=org.apache.derby.jdbc.EmbeddedDriver
diff --git a/dockerfiles/run/guice/jpa/destination/conf/jmx.properties b/dockerfiles/run/guice/jpa/destination/conf/jmx.properties
index 1c39a17..e56235f 100644
--- a/dockerfiles/run/guice/jpa/destination/conf/jmx.properties
+++ b/dockerfiles/run/guice/jpa/destination/conf/jmx.properties
@@ -19,10 +19,7 @@
 #  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
+# Read https://james.apache.org/server/config-system.html#jmx.properties for further details
 
 jmx.enabled=true
 jmx.address=127.0.0.1
diff --git a/dockerfiles/run/guice/jpa/destination/conf/listeners.xml b/dockerfiles/run/guice/jpa/destination/conf/listeners.xml
index ae5937f..ffe9605 100644
--- a/dockerfiles/run/guice/jpa/destination/conf/listeners.xml
+++ b/dockerfiles/run/guice/jpa/destination/conf/listeners.xml
@@ -18,5 +18,7 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-listeners.html for further details -->
+
 <listeners>
 </listeners>
\ No newline at end of file
diff --git a/dockerfiles/run/guice/jpa/destination/conf/lmtpserver.xml b/dockerfiles/run/guice/jpa/destination/conf/lmtpserver.xml
index ce079b0..723da3f 100644
--- a/dockerfiles/run/guice/jpa/destination/conf/lmtpserver.xml
+++ b/dockerfiles/run/guice/jpa/destination/conf/lmtpserver.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-smtp-lmtp.html#LMTP_Configuration for further details -->
+
 <lmtpservers>
 
     <lmtpserver enabled="false">
diff --git a/dockerfiles/run/guice/jpa/destination/conf/mailetcontainer.xml b/dockerfiles/run/guice/jpa/destination/conf/mailetcontainer.xml
index 642bea4..6d91a78 100644
--- a/dockerfiles/run/guice/jpa/destination/conf/mailetcontainer.xml
+++ b/dockerfiles/run/guice/jpa/destination/conf/mailetcontainer.xml
@@ -19,6 +19,8 @@
   under the License.
  -->
 
+<!-- Read https://james.apache.org/server/config-mailetcontainer.html for further details -->
+
 <mailetcontainer enableJmx="true">
 
     <context>
diff --git a/dockerfiles/run/guice/jpa/destination/conf/mailrepositorystore.xml b/dockerfiles/run/guice/jpa/destination/conf/mailrepositorystore.xml
index 099710e..1e04a5f 100644
--- a/dockerfiles/run/guice/jpa/destination/conf/mailrepositorystore.xml
+++ b/dockerfiles/run/guice/jpa/destination/conf/mailrepositorystore.xml
@@ -19,6 +19,8 @@
   under the License.
  -->
 
+<!-- Read https://james.apache.org/server/config-mailrepositorystore.html for further details -->
+
 <mailrepositorystore>
     <defaultProtocol>file</defaultProtocol>
     <mailrepositories>
diff --git a/dockerfiles/run/guice/jpa/destination/conf/pop3server.xml b/dockerfiles/run/guice/jpa/destination/conf/pop3server.xml
index df8fbef..10a2e08 100644
--- a/dockerfiles/run/guice/jpa/destination/conf/pop3server.xml
+++ b/dockerfiles/run/guice/jpa/destination/conf/pop3server.xml
@@ -18,6 +18,7 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-pop3.html for further details -->
 
 <pop3servers>
     <pop3server enabled="false">
diff --git a/dockerfiles/run/guice/jpa/destination/conf/recipientrewritetable.xml b/dockerfiles/run/guice/jpa/destination/conf/recipientrewritetable.xml
index 3d44578..1a512c6 100644
--- a/dockerfiles/run/guice/jpa/destination/conf/recipientrewritetable.xml
+++ b/dockerfiles/run/guice/jpa/destination/conf/recipientrewritetable.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-recipientrewritetable.html for further details -->
+
 <!-- The default table for storing James' RecipientRewriteTable mappings. -->
 <recipientrewritetable>
   <recursiveMapping>true</recursiveMapping>
diff --git a/dockerfiles/run/guice/jpa/destination/conf/smtpserver.xml b/dockerfiles/run/guice/jpa/destination/conf/smtpserver.xml
index e464ca6..a95140d 100644
--- a/dockerfiles/run/guice/jpa/destination/conf/smtpserver.xml
+++ b/dockerfiles/run/guice/jpa/destination/conf/smtpserver.xml
@@ -19,6 +19,8 @@
   under the License.
  -->
 
+<!-- Read https://james.apache.org/server/config-smtp-lmtp.html#SMTP_Configuration for further details -->
+
 <smtpservers>
     <smtpserver enabled="true">
         <jmxName>smtpserver-global</jmxName>
diff --git a/dockerfiles/run/guice/jpa/destination/conf/usersrepository.xml b/dockerfiles/run/guice/jpa/destination/conf/usersrepository.xml
index c745677..8b3e8e1 100644
--- a/dockerfiles/run/guice/jpa/destination/conf/usersrepository.xml
+++ b/dockerfiles/run/guice/jpa/destination/conf/usersrepository.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-users.html for further details -->
+
 <usersrepository name="LocalUsers">
     <algorithm>MD5</algorithm>
     <enableVirtualHosting>true</enableVirtualHosting>    
diff --git a/dockerfiles/run/guice/memory/destination/conf/dnsservice.xml b/dockerfiles/run/guice/memory/destination/conf/dnsservice.xml
index 0978a00..f7decd0 100644
--- a/dockerfiles/run/guice/memory/destination/conf/dnsservice.xml
+++ b/dockerfiles/run/guice/memory/destination/conf/dnsservice.xml
@@ -17,6 +17,7 @@
   specific language governing permissions and limitations      
   under the License.                                           
  -->
+<!-- Read https://james.apache.org/server/config-dnsservice.html for further details -->
 
 <dnsservice>
   <servers>
diff --git a/dockerfiles/run/guice/memory/destination/conf/domainlist.xml b/dockerfiles/run/guice/memory/destination/conf/domainlist.xml
index ad37476..851e7cc 100644
--- a/dockerfiles/run/guice/memory/destination/conf/domainlist.xml
+++ b/dockerfiles/run/guice/memory/destination/conf/domainlist.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-domainlist.html for further details -->
+
 <domainlist>
     <domainnames>
         <domainname>james.linagora.com</domainname>
diff --git a/dockerfiles/run/guice/memory/destination/conf/elasticsearch.properties b/dockerfiles/run/guice/memory/destination/conf/elasticsearch.properties
index 9988aa2..6ec2428 100644
--- a/dockerfiles/run/guice/memory/destination/conf/elasticsearch.properties
+++ b/dockerfiles/run/guice/memory/destination/conf/elasticsearch.properties
@@ -17,6 +17,8 @@
 
 #  This template file can be used as example for James Server configuration
 #  DO NOT USE IT AS SUCH AND ADAPT IT TO YOUR NEEDS
+# Read https://james.apache.org/server/config-elasticsearch.html for further details (metrics only)
+
 
 # Configuration file for ElasticSearch
 
diff --git a/dockerfiles/run/guice/memory/destination/conf/imapserver.xml b/dockerfiles/run/guice/memory/destination/conf/imapserver.xml
index 6616d24..a1306fa 100644
--- a/dockerfiles/run/guice/memory/destination/conf/imapserver.xml
+++ b/dockerfiles/run/guice/memory/destination/conf/imapserver.xml
@@ -19,6 +19,8 @@ specific language governing permissions and limitations
 under the License.
 -->
 
+<!-- Read https://james.apache.org/server/config-imap4.html for further details -->
+
 
 <imapservers>
     <imapserver enabled="true">
diff --git a/dockerfiles/run/guice/memory/destination/conf/jmap.properties b/dockerfiles/run/guice/memory/destination/conf/jmap.properties
index 63e6702..53bc403 100644
--- a/dockerfiles/run/guice/memory/destination/conf/jmap.properties
+++ b/dockerfiles/run/guice/memory/destination/conf/jmap.properties
@@ -1,4 +1,5 @@
 # Configuration file for JMAP
+# Read https://james.apache.org/server/config-jmap.html for further details
 
 enabled=true
 
diff --git a/dockerfiles/run/guice/memory/destination/conf/jmx.properties b/dockerfiles/run/guice/memory/destination/conf/jmx.properties
index 1c39a17..e56235f 100644
--- a/dockerfiles/run/guice/memory/destination/conf/jmx.properties
+++ b/dockerfiles/run/guice/memory/destination/conf/jmx.properties
@@ -19,10 +19,7 @@
 #  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
+# Read https://james.apache.org/server/config-system.html#jmx.properties for further details
 
 jmx.enabled=true
 jmx.address=127.0.0.1
diff --git a/dockerfiles/run/guice/memory/destination/conf/listeners.xml b/dockerfiles/run/guice/memory/destination/conf/listeners.xml
index 6e0c14c..2eed880 100644
--- a/dockerfiles/run/guice/memory/destination/conf/listeners.xml
+++ b/dockerfiles/run/guice/memory/destination/conf/listeners.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-listeners.html for further details -->
+
 <listeners>
   <listener>
     <class>org.apache.james.mailbox.spamassassin.SpamAssassinListener</class>
diff --git a/dockerfiles/run/guice/memory/destination/conf/mailetcontainer.xml b/dockerfiles/run/guice/memory/destination/conf/mailetcontainer.xml
index fa76a80..c6c86a8 100644
--- a/dockerfiles/run/guice/memory/destination/conf/mailetcontainer.xml
+++ b/dockerfiles/run/guice/memory/destination/conf/mailetcontainer.xml
@@ -19,6 +19,8 @@
   under the License.
  -->
 
+<!-- Read https://james.apache.org/server/config-mailetcontainer.html for further details -->
+
 <mailetcontainer enableJmx="true">
 
     <context>
diff --git a/dockerfiles/run/guice/memory/destination/conf/mailrepositorystore.xml b/dockerfiles/run/guice/memory/destination/conf/mailrepositorystore.xml
index 2f4ca6a..c7f22b9 100644
--- a/dockerfiles/run/guice/memory/destination/conf/mailrepositorystore.xml
+++ b/dockerfiles/run/guice/memory/destination/conf/mailrepositorystore.xml
@@ -19,6 +19,8 @@
   under the License.
  -->
 
+<!-- Read https://james.apache.org/server/config-mailrepositorystore.html for further details -->
+
 <mailrepositorystore>
     <defaultProtocol>memory</defaultProtocol>
     <mailrepositories>
diff --git a/dockerfiles/run/guice/memory/destination/conf/pop3server.xml b/dockerfiles/run/guice/memory/destination/conf/pop3server.xml
index df8fbef..10a2e08 100644
--- a/dockerfiles/run/guice/memory/destination/conf/pop3server.xml
+++ b/dockerfiles/run/guice/memory/destination/conf/pop3server.xml
@@ -18,6 +18,7 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-pop3.html for further details -->
 
 <pop3servers>
     <pop3server enabled="false">
diff --git a/dockerfiles/run/guice/memory/destination/conf/recipientrewritetable.xml b/dockerfiles/run/guice/memory/destination/conf/recipientrewritetable.xml
index 3d44578..1a512c6 100644
--- a/dockerfiles/run/guice/memory/destination/conf/recipientrewritetable.xml
+++ b/dockerfiles/run/guice/memory/destination/conf/recipientrewritetable.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-recipientrewritetable.html for further details -->
+
 <!-- The default table for storing James' RecipientRewriteTable mappings. -->
 <recipientrewritetable>
   <recursiveMapping>true</recursiveMapping>
diff --git a/dockerfiles/run/guice/memory/destination/conf/smtpserver.xml b/dockerfiles/run/guice/memory/destination/conf/smtpserver.xml
index e464ca6..a95140d 100644
--- a/dockerfiles/run/guice/memory/destination/conf/smtpserver.xml
+++ b/dockerfiles/run/guice/memory/destination/conf/smtpserver.xml
@@ -19,6 +19,8 @@
   under the License.
  -->
 
+<!-- Read https://james.apache.org/server/config-smtp-lmtp.html#SMTP_Configuration for further details -->
+
 <smtpservers>
     <smtpserver enabled="true">
         <jmxName>smtpserver-global</jmxName>
diff --git a/dockerfiles/run/guice/memory/destination/conf/usersrepository.xml b/dockerfiles/run/guice/memory/destination/conf/usersrepository.xml
index c745677..8b3e8e1 100644
--- a/dockerfiles/run/guice/memory/destination/conf/usersrepository.xml
+++ b/dockerfiles/run/guice/memory/destination/conf/usersrepository.xml
@@ -18,6 +18,8 @@
   under the License.                                           
  -->
 
+<!-- Read https://james.apache.org/server/config-users.html for further details -->
+
 <usersrepository name="LocalUsers">
     <algorithm>MD5</algorithm>
     <enableVirtualHosting>true</enableVirtualHosting>    
diff --git a/dockerfiles/run/guice/memory/destination/conf/webadmin.properties b/dockerfiles/run/guice/memory/destination/conf/webadmin.properties
index ccff1f3..52cfffd 100644
--- a/dockerfiles/run/guice/memory/destination/conf/webadmin.properties
+++ b/dockerfiles/run/guice/memory/destination/conf/webadmin.properties
@@ -18,6 +18,8 @@
 #  This template file can be used as example for James Server configuration
 #  DO NOT USE IT AS SUCH AND ADAPT IT TO YOUR NEEDS
 
+# Read https://james.apache.org/server/config-webadmin.html for further details
+
 enabled=true
 port=8000
 host=localhost


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


[james-project] 06/09: JAMES-2904 Remove some uneeded files from docker configuration

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 419819851622834dc44f6dc04bc324f30836161f
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Oct 30 10:23:01 2019 +0700

    JAMES-2904 Remove some uneeded files from docker configuration
---
 .../jpa/destination/conf/managesieve.help.txt      | 112 ---------------------
 .../memory/destination/conf/batchsizes.properties  |  10 --
 2 files changed, 122 deletions(-)

diff --git a/dockerfiles/run/guice/jpa/destination/conf/managesieve.help.txt b/dockerfiles/run/guice/jpa/destination/conf/managesieve.help.txt
deleted file mode 100644
index f45c78d..0000000
--- a/dockerfiles/run/guice/jpa/destination/conf/managesieve.help.txt
+++ /dev/null
@@ -1,112 +0,0 @@
-managesieve implements the commands defined by RFC 5804 ((http://tools.ietf.org/html/rfc5804) to manage sieve scripts via mail messages. A mail is sent to the managesieve user with the command and parameters in the subject header. Sieve scripts are exchanged as mail attachments.
-
-Consult your mail administrator for the name of the managesieve user configured for your installation.
-
-Users MUST be SMTP authenticated to execute all except the CAPABILITY and HELP commands (see note (1) below).
-
-Commands are executed and answered within the namespace of the sending user as denoted by the sender header of the mail. Thus, a command such as LISTSCRIPTS lists the scripts within namespace of the user identified by the sender header.
-
-The supported commands are summarised in "Command Summary" below. Generally the responses are self describing. For full details see RFC 5804 - Commands (http://tools.ietf.org/html/rfc5804#section-2).
-
-In these descriptions the following keywords apply:
-
-- sieve-name
-    The name of a sieve script enclosed in parentheses, eg: "my script". An empty name is not allowed.
-- active-sieve-name
-    As sieve-name, except an empty name, eg: "", is allowed.
-- old-sieve-name
-    As sieve-name
-- new-sieve-name
-    As sieve-name    
-- sieve-script
-    A mail attachment recognised as a sieve script. This is the first attachment in a mail satisfying any of these characteristics:
-        - A MIME type of "application/sieve"
-        - A filename with the suffix ".sieve"
-        - A filename with the suffix ".siv"
-    Returned sieve-scripts always have the MIME type of "application/sieve"
-
-Command Summary
----------------
-
-CAPABILITY
-    Subject:
-        CAPABILITY
-    Attachments: 
-        none
-Answers the capabilities of the underlying sieve inplementation.
-
-CHECKSCRIPT
-    Subject:
-        CHECKSCRIPT
-    Attachments: 
-        sieve-script
-Verifies the attached sieve-script without storing it on the server.
-
-DELETESCRIPT
-    Subject: 
-        DELETESCRIPT sieve-name
-    Attachments: 
-        none
-Deletes the named sieve script.
-
-GETACTIVE
-    Subject: 
-        GETACTIVE
-    Attachments: 
-        none
-Answers the active sieve script as an attachment.
-
-GETSCRIPT
-    Subject: 
-        GETSCRIPT sieve-name
-    Attachments: 
-        none
-Answers the named sieve script as an attachment.
-
-HAVESPACE
-    Subject: 
-        HAVESPACE sieve-name number
-    Attachments: 
-        none
-Answers OK if there is available space to store a script with the given name of the given size, else NO.
-
-HELP
-    Subject: 
-        HELP
-    Attachments: 
-        none
-Answers this text.
-
-LISTSCRIPTS
-    Subject: 
-        LISTSCRIPTS
-    Attachments: 
-        none
-Answers a list of the sieve scripts stored on the server, indicating which, if any, is the active script.
-
-PUTSCRIPT
-    Subject: 
-        PUTSCRIPT sieve-name
-    Attachments: 
-        sieve-script
-Verifies the attached sieve-script and if there are no errors stores it on the server using the given name.
-
-RENAMESCRIPT
-    Subject: 
-        RENAMESCRIPT old-sieve-name new-sieve-name
-    Attachments: 
-        none
-Renames the script stored on the server named old-sieve-name to new-sieve-name.
-
-SETACTIVE
-    Subject: 
-        SETACTIVE active-sieve-name
-    Attachments: 
-        none
-Sets the active script on the server to the given name. Use an empty string, "", to deactivate all scripts.
-
-Notes
------
-1) Some mail servers optionally allow configurations that enable local clients to post without SMTP authentication, such configurations will fail as managesieve requires SMTP authentication in all circumstances. To repeat, users MUST be SMTP authenticated to execute all except the CAPABILITY and HELP commands.
-
-
diff --git a/dockerfiles/run/guice/memory/destination/conf/batchsizes.properties b/dockerfiles/run/guice/memory/destination/conf/batchsizes.properties
deleted file mode 100644
index 47da2c5..0000000
--- a/dockerfiles/run/guice/memory/destination/conf/batchsizes.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-# 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


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


[james-project] 07/09: JAMES-2904 Enhance Cassandra documentation

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit be9c69f18d1495ea298777c594fadeac9c7b21f5
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Oct 30 10:39:16 2019 +0700

    JAMES-2904 Enhance Cassandra documentation
---
 src/site/xdoc/server/config-cassandra.xml | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/src/site/xdoc/server/config-cassandra.xml b/src/site/xdoc/server/config-cassandra.xml
index 53f47c6..a418eea 100644
--- a/src/site/xdoc/server/config-cassandra.xml
+++ b/src/site/xdoc/server/config-cassandra.xml
@@ -36,10 +36,11 @@
         <dd>List of some nodes of the cassandra's cluster in following format host:port or host, if the port is not specified we use 9042</dd>
 
         <dt><strong>cassandra.keyspace</strong></dt>
-        <dd>Is the name of the keyspace used by James.</dd>
+        <dd>Is the name of the keyspace used by James. Optional, default value: <b>apache_james</b></dd>
 
         <dt><strong>cassandra.replication.factor</strong></dt>
-        <dd>Is the replication factor. (should be 1, as cluster is not yet supported)</dd>
+        <dd>Is the replication factor used upon keyspace creation. Modifying this property while the keyspace already exists
+        will have no effect. Optional. Default value 1.</dd>
 
         <dt><strong>cassandra.query.logger.constant.threshold</strong></dt>
         <dd>Optional.
@@ -67,16 +68,17 @@
         <dd>Optional.
           If specified defines the Cassandra <a href="https://docs.datastax.com/en/developer/java-driver/3.5/manual/socket_options/">driver read timeout</a>.</dd>
 
-        # Read com.datastax.driver.core.PoolingOptions for knowing defaults value
-        # No value here will default to driver's default value
 
-        # cassandra.pooling.local.max.connections=8
-        # cassandra.pooling.local.max.requests=128
-        ## In ms. Should be higher than socket read timeout
-        # cassandra.pooling.timeout=5000
-        ## In seconds.
-        # cassandra.pooling.heartbeat.timeout=30
-        # cassandra.pooling.max.queue.size=256
+        <pre><code># Read com.datastax.driver.core.PoolingOptions for knowing defaults value
+# No value here will default to driver's default value
+
+# cassandra.pooling.local.max.connections=8
+# cassandra.pooling.local.max.requests=128
+## In ms. Should be higher than socket read timeout
+# cassandra.pooling.timeout=5000
+## In seconds.
+# cassandra.pooling.heartbeat.timeout=30
+# cassandra.pooling.max.queue.size=256</code></pre>
 
         <dt><strong>cassandra.pooling.local.max.connections</strong></dt>
         <dd>Optional. Defaults to 8.<br/>


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


[james-project] 02/09: JAMES-2956 Add a test to demonstrate html response for bad request instead of json ones. When malformed url.

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit eb38a065127d0eb39aa2419ee95a85cd183fa00d
Author: Rémi KOWALSKI <rk...@linagora.com>
AuthorDate: Thu Oct 31 16:06:53 2019 +0100

    JAMES-2956 Add a test to demonstrate html response for bad request instead of json ones. When malformed url.
---
 .../webadmin/routes/MalformedUrlRoutesTest.java    | 107 +++++++++++++++++++++
 1 file changed, 107 insertions(+)

diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MalformedUrlRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MalformedUrlRoutesTest.java
new file mode 100644
index 0000000..854c96d
--- /dev/null
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/MalformedUrlRoutesTest.java
@@ -0,0 +1,107 @@
+/****************************************************************
+ * 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.webadmin.routes;
+
+import static org.apache.james.webadmin.Constants.SEPARATOR;
+import static org.apache.james.webadmin.routes.UserMailboxesRoutes.USERS_BASE;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.net.InetAddress;
+import java.net.Socket;
+import java.nio.charset.StandardCharsets;
+
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
+import org.apache.james.user.api.UsersRepository;
+import org.apache.james.webadmin.WebAdminServer;
+import org.apache.james.webadmin.WebAdminUtils;
+import org.apache.james.webadmin.service.UserMailboxesService;
+import org.apache.james.webadmin.utils.JsonTransformer;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+class MalformedUrlRoutesTest {
+    private static final String USERNAME = "username";
+    private static final String MALFORMED_MAILBOX_NAME = "inbox%work";
+
+    private WebAdminServer webAdminServer;
+    private UsersRepository usersRepository;
+
+    private void createServer(MailboxManager mailboxManager) throws Exception {
+        usersRepository = mock(UsersRepository.class);
+        when(usersRepository.contains(USERNAME)).thenReturn(true);
+
+        webAdminServer = WebAdminUtils.createWebAdminServer(
+            new UserMailboxesRoutes(new UserMailboxesService(mailboxManager, usersRepository), new JsonTransformer()))
+            .start();
+    }
+
+    @AfterEach
+    void tearDown() {
+        webAdminServer.destroy();
+    }
+
+    @BeforeEach
+    void setUp() throws Exception {
+        createServer(InMemoryIntegrationResources.defaultResources().getMailboxManager());
+    }
+
+    @Test
+    @Disabled()
+    void getMailboxesShouldReturnJsonErrorWhenMalformedUrl() throws Exception {
+        String response = executeRawPUT(USERS_BASE + SEPARATOR + USERNAME + SEPARATOR + MALFORMED_MAILBOX_NAME);
+        assertThat(response).doesNotContain("<h1>Bad Message 400</h1><pre>reason: Bad Request</pre>");
+    }
+
+    private String executeRawPUT(String path) throws Exception {
+        String hostname = "localhost";
+        int port = webAdminServer.getPort().getValue();
+
+        InetAddress addr = InetAddress.getByName(hostname);
+        try (Socket socket = new Socket(addr, port);
+             BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.UTF_8));
+             BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream()))) {
+
+            // Send request
+            wr.write("PUT " + path + " HTTP/1.1\r\n");
+            wr.write("Host: " + hostname + "\r\n");
+            wr.write("Content-Type: " + "application/json" + "\r\n");
+            wr.write("Accept: " + "application/json" + "\r\n");
+            wr.write("\r\n");
+            wr.flush();
+
+            // Get response
+            StringBuffer response = new StringBuffer();
+            rd.lines().forEach(line -> response.append(line + "\r\n"));
+
+            return response.toString();
+
+        }
+    }
+
+}


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


[james-project] 04/09: JAMES-2947 WebAdmin prevents encoded '/' in a domain name at creation

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit c8b5fd3fbd4cdaca7e173a673004a37e7ac29c33
Author: Gautier DI FOLCO <gd...@linagora.com>
AuthorDate: Wed Oct 30 13:45:24 2019 +0100

    JAMES-2947 WebAdmin prevents encoded '/' in a domain name at creation
---
 .../main/java/org/apache/james/core/Domain.java    |  4 +--
 .../java/org/apache/james/core/MailAddress.java    | 10 +++++-
 .../apache/james/domainlist/api/DomainTest.java    |  5 +++
 .../james/webadmin/routes/DomainsRoutes.java       | 21 ++++++++++--
 .../routes/DLPConfigurationRoutesTest.java         |  6 ++--
 .../james/webadmin/routes/DomainsRoutesTest.java   | 40 +++++++++++++++++++++-
 6 files changed, 77 insertions(+), 9 deletions(-)

diff --git a/core/src/main/java/org/apache/james/core/Domain.java b/core/src/main/java/org/apache/james/core/Domain.java
index 3bf831a..2be5e13 100644
--- a/core/src/main/java/org/apache/james/core/Domain.java
+++ b/core/src/main/java/org/apache/james/core/Domain.java
@@ -39,8 +39,8 @@ public class Domain implements Serializable {
 
     public static Domain of(String domain) {
         Preconditions.checkNotNull(domain, "Domain can not be null");
-        Preconditions.checkArgument(!domain.isEmpty() && !domain.contains("@"),
-            "Domain can not be empty nor contain `@`");
+        Preconditions.checkArgument(!domain.isEmpty() && !domain.contains("@") && !domain.contains("/"),
+            "Domain can not be empty nor contain `@` nor `/`");
         Preconditions.checkArgument(domain.length() <= MAXIMUM_DOMAIN_LENGTH,
             "Domain name length should not exceed " + MAXIMUM_DOMAIN_LENGTH + " characters");
         return new Domain(domain);
diff --git a/core/src/main/java/org/apache/james/core/MailAddress.java b/core/src/main/java/org/apache/james/core/MailAddress.java
index 0d4cbc9..beba6bf 100644
--- a/core/src/main/java/org/apache/james/core/MailAddress.java
+++ b/core/src/main/java/org/apache/james/core/MailAddress.java
@@ -232,7 +232,15 @@ public class MailAddress implements java.io.Serializable {
         }
 
         localPart = localPartSB.toString();
-        domain = Domain.of(domainSB.toString());
+        domain = createDomain(domainSB.toString());
+    }
+
+    private Domain createDomain(String domain) throws AddressException {
+        try {
+            return Domain.of(domain);
+        } catch (IllegalArgumentException e) {
+            throw new AddressException(e.getMessage());
+        }
     }
 
     private int parseUnquotedLocalPartOrThrowException(StringBuffer localPartSB, String address, int pos)
diff --git a/core/src/test/java/org/apache/james/domainlist/api/DomainTest.java b/core/src/test/java/org/apache/james/domainlist/api/DomainTest.java
index 1abffc6..3618943 100644
--- a/core/src/test/java/org/apache/james/domainlist/api/DomainTest.java
+++ b/core/src/test/java/org/apache/james/domainlist/api/DomainTest.java
@@ -93,6 +93,11 @@ class DomainTest {
     }
 
     @Test
+    void shouldThrowWhenDomainContainUrlOperatorSymbol() {
+        assertThatThrownBy(() -> Domain.of("Dom/in")).isInstanceOf(IllegalArgumentException.class);
+    }
+
+    @Test
     void shouldThrowWhenDomainIsEmpty() {
         assertThatThrownBy(() -> Domain.of("")).isInstanceOf(IllegalArgumentException.class);
     }
diff --git a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainsRoutes.java b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainsRoutes.java
index 936b3ea..e0d70fa 100644
--- a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainsRoutes.java
+++ b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainsRoutes.java
@@ -21,6 +21,9 @@ package org.apache.james.webadmin.routes;
 
 import static org.apache.james.webadmin.Constants.SEPARATOR;
 
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.nio.charset.StandardCharsets;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -265,13 +268,27 @@ public class DomainsRoutes implements Routes {
     }
 
     private Domain checkValidDomain(String domainName) {
+        String urlDecodedDomainName = urlDecodeDomain(domainName);
         try {
-            return Domain.of(domainName);
+            return Domain.of(urlDecodedDomainName);
         } catch (IllegalArgumentException e) {
             throw ErrorResponder.builder()
                 .statusCode(HttpStatus.BAD_REQUEST_400)
                 .type(ErrorType.INVALID_ARGUMENT)
-                .message("Invalid request for domain creation " + domainName)
+                .message("Invalid request for domain creation " + urlDecodedDomainName)
+                .cause(e)
+                .haltError();
+        }
+    }
+
+    private String urlDecodeDomain(String domainName) {
+        try {
+            return URLDecoder.decode(domainName, StandardCharsets.UTF_8.toString());
+        } catch (IllegalArgumentException | UnsupportedEncodingException e) {
+            throw ErrorResponder.builder()
+                .statusCode(HttpStatus.BAD_REQUEST_400)
+                .type(ErrorType.INVALID_ARGUMENT)
+                .message("Invalid request for domain creation " + domainName + " unable to url decode some characters")
                 .cause(e)
                 .haltError();
         }
diff --git a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DLPConfigurationRoutesTest.java b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DLPConfigurationRoutesTest.java
index 10710a8..151f622 100644
--- a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DLPConfigurationRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DLPConfigurationRoutesTest.java
@@ -326,7 +326,7 @@ class DLPConfigurationRoutesTest {
                 .body("statusCode", is(HttpStatus.BAD_REQUEST_400))
                 .body("type", is("InvalidArgument"))
                 .body("message", is("Invalid request for domain: dr@strange.com"))
-                .body("details", is("Domain can not be empty nor contain `@`"));
+                .body("details", is("Domain can not be empty nor contain `@` nor `/`"));
         }
 
         @Test
@@ -643,7 +643,7 @@ class DLPConfigurationRoutesTest {
                 .body("statusCode", is(HttpStatus.BAD_REQUEST_400))
                 .body("type", is("InvalidArgument"))
                 .body("message", is("Invalid request for domain: dr@strange.com"))
-                .body("details", is("Domain can not be empty nor contain `@`"));
+                .body("details", is("Domain can not be empty nor contain `@` nor `/`"));
         }
     }
 
@@ -856,7 +856,7 @@ class DLPConfigurationRoutesTest {
                 .body("statusCode", is(HttpStatus.BAD_REQUEST_400))
                 .body("type", is("InvalidArgument"))
                 .body("message", is("Invalid request for domain: dr@strange.com"))
-                .body("details", is("Domain can not be empty nor contain `@`"));
+                .body("details", is("Domain can not be empty nor contain `@` nor `/`"));
         }
     }
     
diff --git a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DomainsRoutesTest.java b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DomainsRoutesTest.java
index 185cabb..607f166 100644
--- a/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DomainsRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-data/src/test/java/org/apache/james/webadmin/routes/DomainsRoutesTest.java
@@ -23,6 +23,7 @@ import static io.restassured.RestAssured.given;
 import static io.restassured.RestAssured.when;
 import static io.restassured.RestAssured.with;
 import static org.apache.james.webadmin.Constants.SEPARATOR;
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.Matchers.contains;
 import static org.hamcrest.Matchers.containsInAnyOrder;
@@ -33,6 +34,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 import java.net.InetAddress;
+import java.util.Map;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.james.core.Domain;
@@ -154,7 +156,43 @@ class DomainsRoutesTest {
         }
 
         @Test
-        void putShouldReturnNotFoundWhenDomainNameContainsUrlSeparator() {
+        void putShouldReturnUserErrorWhenNameContainsUrlEncodedUrlOperator() {
+            Map<String, Object> errors = when()
+                .put(DOMAIN + "%2F" + DOMAIN)
+            .then()
+                .statusCode(HttpStatus.BAD_REQUEST_400)
+                .contentType(ContentType.JSON)
+                .extract()
+                .body()
+                .jsonPath()
+                .getMap(".");
+
+            assertThat(errors)
+                .containsEntry("statusCode", HttpStatus.BAD_REQUEST_400)
+                .containsEntry("type", "InvalidArgument")
+                .containsEntry("message", "Invalid request for domain creation domain/domain");
+        }
+
+        @Test
+        void putShouldReturnUserErrorWhenNameContainsInvalidUrlEncodedCharacters() {
+            Map<String, Object> errors = when()
+                .put(DOMAIN + "%GG" + DOMAIN)
+            .then()
+                .statusCode(HttpStatus.BAD_REQUEST_400)
+                .contentType(ContentType.JSON)
+                .extract()
+                .body()
+                .jsonPath()
+                .getMap(".");
+
+            assertThat(errors)
+                .containsEntry("statusCode", HttpStatus.BAD_REQUEST_400)
+                .containsEntry("type", "InvalidArgument")
+                .containsEntry("message", "Invalid request for domain creation domain%GGdomain unable to url decode some characters");
+        }
+
+        @Test
+        void putShouldReturnUserErrorWhenNameContainsUrlSeparator() {
             when()
                 .put(DOMAIN + "/" + DOMAIN)
             .then()


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