Apache James Project
====================

:latest_james_version: 3.8.0

image:https://img.shields.io/badge/Join%20us-Mailing%20lists-purple.svg[link="https://james.apache.org/mail.html"]
link:https://gitter.im/apache/james-project[image:https://badges.gitter.im/apache/james-project.svg[Join the chat at link:https://gitter.im/apache/james-project]]
image:https://img.shields.io/badge/CI-Jenkins-blue.svg[link="https://ci-builds.apache.org/job/james/job/ApacheJames/"]
image:https://img.shields.io/badge/Documentation-green.svg[link="https://james.apache.org/documentation.html"]
image:https://img.shields.io/badge/Downloads-{latest_james_version}-yellow.svg[link="https://james.apache.org/download.cgi"]
image:https://img.shields.io/badge/Images-docker-blue.svg[link="https://hub.docker.com/r/apache/james"]
image:https://img.shields.io/badge/License-ApacheV2-orange.svg[link="https://www.apache.org/licenses/"]
image:https://img.shields.io/badge/Latests-news-red.svg[link="https://james.apache.org/index.html#posts"]

image::james-logo.png[link="https://james.apache.org"]

*James* stands for *Java Apache Mail Enterprise Server!*

It has a modular architecture based on a rich set of *modern* and *efficient* components which provides at the end
*complete, stable, secure and extendable Mail Servers running on the JVM*.

Create your *own personal solution* for emails treatment by assembling the components you need thanks to the Inversion
of Control mail platform offered and  go further customizing filtering and routing rules using *James Mailet Container*.

Supported protocols are: IMAP, SMTP, link:https://jmap.io[JMAP], POP3 and more...

The link:https://james.staged.apache.org/james-distributed-app/{latest_james_version}/index.html[*Distributed server*] focuses on delivering an easy-to-operate scalable mail server based on modern technologies
(Cassandra, S3, OpenSearch and RabbitMQ).

Read more on https://james.apache.org/[our website].

== How to contribute?

.Read more...
[%collapsible]
====
James is a project that lives from the contributions of its community! Anyone can contribute!

Read https://james.apache.org/index.html#third[how to contribute].

We more than welcome *articles* and *blog posts* about James. Contact us by https://james.apache.org/mail.html[email]
or on https://gitter.im/apache/james-project[Gitter] to share your experiences.

*Documentation* is an easy way to get started, and more than wanted! Check out the https://issues.apache.org/jira/issues/?jql=project%20%3D%20JAMES%20AND%20resolution%20%3D%20Unresolved%20AND%20labels%20%3D%20documentation%20ORDER%20BY%20priority%20DESC%2C%20updated%20DESC[~documentation] label on JIRA.

And to get started with *code contributions*, search out the
https://issues.apache.org/jira/issues/?jql=project%20%3D%20JAMES%20AND%20resolution%20%3D%20Unresolved%20AND%20labels%20%3D%20newbie%20ORDER%20BY%20priority%20DESC%2C%20updated%20DESC[~newbie],
https://issues.apache.org/jira/issues/?jql=project%20%3D%20JAMES%20AND%20resolution%20%3D%20Unresolved%20AND%20labels%20%3D%20easyfix%20ORDER%20BY%20priority%20DESC%2C%20updated%20DESC[~easyfix],
https://issues.apache.org/jira/issues/?jql=project%20%3D%20JAMES%20AND%20resolution%20%3D%20Unresolved%20AND%20labels%20%3D%20feature%20ORDER%20BY%20priority%20DESC%2C%20updated%20DESC[~feature] labels on JIRA.

There is many other ways one can help us: packaging, communication, etc ...
====

== How to try James

.Read more...
[%collapsible]
====
Requirements: `docker` installed.

Here you will try James server version {latest_james_version} thanks to a docker image. This James image has a default configuration using JPA
(hsqldb) and Lucene. It also includes a default domain named james.local and three default users: user01@james.local,
user02@james.local, user03@james.local, with their default password being 1234.

Note: this James server will respond to IMAPS port 993 and SMTPS port 465.

Pull and run the James image with the following single command:

[subs="attributes"]
----
    $ docker run -p "465:465" -p "993:993" apache/james:demo-{latest_james_version}
----

Then, connect this image with for instance, Thunderbird.
link:https://james.apache.org/howTo/imap-server.html[This tutorial] covers more in depth user and domain creation, as well as Thunderbird setup.

Instructions that do not imply `docker` are also available link:https://james.apache.org/server/install.html[here].

Instructions for the distributed server can be found link:server/apps/distributed-app/docs/modules/ROOT/pages/run/run-docker.adoc[here].
====

== How to check the compilation

.Read more...
[%collapsible]
====
We require link:https://maven.apache.org[maven] version 3.6.1 minimum to build the project.

First, clone the repository locally:
----
    $ git clone git@github.com:apache/james-project.git
----

Then simply run `mvn clean install` within this directory to compile the project.

Useful options includes:

 - `-DskipTests` to skip the long to execute resource consuming test suite that requires a docker daemon.
 - `-T 4` to parallelize the build on several CPUs.
 - `-Dmaven.javadoc.skip=true` to skip the javadoc generation.
====

== How to run James in Docker

.Read more...
[%collapsible]
====
We maintain docker distribution for our link:https://github.com/google/guice[Guice] based applications:

 * link:https://github.com/apache/james-project/blob/master/server/apps/distributed-app/README.adoc[Guice + Cassandra + RabbitMQ + S3 + OpenSearch (distributed)]
 * link:https://github.com/apache/james-project/blob/master/server/apps/cassandra-app/README.adoc[Guice + Cassandra + OpenSearch]
 * link:https://github.com/apache/james-project/blob/master/server/apps/jpa-app/README.adoc[Guice + JPA + Lucene]
 * link:https://github.com/apache/james-project/blob/master/server/apps/memory-app/README.md[Guice + Memory (testing)]
====

== Using the CLI

See https://james.apache.org/server/manage-cli.html[Manage James via the Command Line] for more info.

== Develop on James

James requires at least JDK 11 and Maven 3.6.1 to build.
Some parts of James are written in Scala so one might need to enable Scala plugin in IDE.

We maintain link:examples/README.md[code examples] to help you write your own extensions and wire your own servers.

link:docs/modules/development/pages/deployment-tests.adoc[This page] details how to run deployment Tests.

== Know more about James design

James comes with a https://james.apache.org/documentation.html[Documentation] and https://github.com/linagora/james-project/tree/master/src/adr[Architectural Decision Records].

A more precise description of the *Distributed Server* architecture can be found
link:https://james.staged.apache.org/james-distributed-app/{latest_james_version}/architecture/index.html[here].

== Articles for James community

* link:docs/modules/community/pages/website.adoc[How to build and publish the website]
* link:docs/modules/community/pages/release.adoc[How to release via maven release plugin]
