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