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 9d217f1998d47f9631e12856719d70e2962a5710
Author: Benoit Tellier <btell...@linagora.com>
AuthorDate: Fri Jul 10 17:31:47 2020 +0700

    JAMES-3302 Write more about Architecture for Distributed server
    
     - Mention protocols
     - List (and detail some) components
---
 .../servers/pages/distributed/architecture.adoc    | 81 +++++++++++++++++++++-
 1 file changed, 80 insertions(+), 1 deletion(-)

diff --git a/docs/modules/servers/pages/distributed/architecture.adoc 
b/docs/modules/servers/pages/distributed/architecture.adoc
index d4e1678..cb4b33c 100644
--- a/docs/modules/servers/pages/distributed/architecture.adoc
+++ b/docs/modules/servers/pages/distributed/architecture.adoc
@@ -17,6 +17,20 @@ In order to deliver its promises, the Distributed Server 
leverages the following
  * *Tika* (optional) enables text extraction from attachments, thus improving 
full text search results.
  * *SpamAssassin* (optional) can be used for Spam detection and user feedback 
is supported.
 
+== Protocols
+
+The following protocols are supported and can be used to interact with the 
Distributed Server:
+
+* *SMTP*
+* *IMAP*
+* link:operate/webadmin.adoc[WebAdmin] REST Administration API
+* *LMTP*
+
+The following protocols should be considered experimental
+
+* *JMAP* (draft specification as defined 
link:https://github.com/apache/james-project/tree/master/server/protocols/jmap-draft/doc[here])
+* *POP3*
+
 == Components
 
 This section presents the various components of the Distributed server, 
providing context about
@@ -108,7 +122,25 @@ delivery retries, or
 
 === Mailbox
 
-(TODO)
+Storage for emails belonging for users.
+
+Metadata are stored in Cassandra while headers, bodies and attachments are 
stored
+within the xref:#_blobstore[BlobStore].
+
+==== Search index
+
+Emails are indexed asynchronously in ElasticSearch via the 
xref:#_event_bus[EventBus]
+in order to enpower advanced and fast email full text search.
+
+Text extraction can be set up using link:https://tika.apache.org/[Tika], 
allowing
+to extract the text from attachment, allowing to search your emails based on 
the attachment
+textual content. In such case, the ElasticSearch indexer will call a Tika 
server prior
+indexing.
+
+==== Quotas
+
+Current Quotas of users are hold in a Cassandra projection. Limitations can be 
defined via
+user, domain or globally.
 
 ==== Event Bus
 
@@ -163,3 +195,50 @@ However, mails are not retained forever as you have to 
configure a
 retention period before using it (with one-year retention by default if
 not defined). It’s also possible to permanently delete a mail if needed.
 
+=== Data
+
+(TODO)
+
+=== Recipient rewrite tables
+
+(TODO)
+
+=== BlobStore
+
+Stores potentially large binary data.
+
+Mailbox component, Mail Queue component, Deleted Message Vault
+component relies on it.
+
+Supported backends includes ObjectStorage 
(link:https://wiki.openstack.org/wiki/Swift[Swift], S3 API).
+
+Encryption can be configured on top of ObjectStorage.
+
+Blobs are currently deduplicated in order to reduce storage space. This means 
that two blobs with
+the same content will be stored one once.
+
+The downside is that deletion is more complicated, and a garbage collection 
needs to be run. This is a work
+in progress. See 
link:https://issues.apache.org/jira/browse/JAMES-3150[JAMES-3150].
+
+=== Task Manager
+
+Allows to control and schedule long running tasks run by other
+components. Among other it enables scheduling, progress monitoring,
+cancelation of long running tasks.
+
+Distributed James leverage a task manager using Event Sourcing and RabbitMQ 
for messaging.
+
+=== Event sourcing
+
+link:https://martinfowler.com/eaaDev/EventSourcing.html[Event sourcing] 
implementation
+for the Distributed server stores events in Cassandra. It enables components
+to rely on event sourcing technics for taking decisions.
+
+A short list of usage are:
+
+* Data leak prevention storage
+* JMAP filtering rules storage
+* Validation of the MailQueue configuration
+* Sending email warnings to user close to their quota
+* Implementation of the TaskManager
+


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

Reply via email to