Apache James Project
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, JMAP, POP3 and more…
The Distributed server focuses on delivering an easy-to-operate scalable mail server based on modern technologies (Cassandra, S3, ElasticSearch and RabbitMQ).
Read more on our website.
How to contribute?
James is a project that lives from the contributions of its community! Anyone can contribute!
Read how to contribute.
Documentation is an easy way to get started, and more than wanted! Check out the ~documentation label on JIRA.
There is many other ways one can help us: packaging, communication, etc …
How to try James
Here you will try James server version 3.7.0 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: firstname.lastname@example.org, email@example.com, firstname.lastname@example.org, 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:
$ docker run -p "465:465" -p "993:993" apache/james:demo-3.7.0
Then, connect this image with for instance, Thunderbird. This tutorial covers more in depth user and domain creation, as well as Thunderbird setup.
Instructions that do not imply
docker are also available here.
Instructions for the distributed server can be found here.
How to check the compilation
We require maven version 3.6.1 minimum to build the project.
mvn clean install within this directory to compile the project.
Useful options includes:
-DskipTeststo skip the long to execute resource consuming test suite that requires a docker daemon.
-T 4to parallelize the build on several CPUs.
How to run James in Docker
We maintain docker distribution for our Guice based applications:
Using the CLI
See Manage James via the Command Line for more info.