The Apache Software Foundation


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 of 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.

James from a technical point of view

Complete portability (100% pure Java)
Running on Java 6 onwards and on the JVM. Some optional components might require Java 8.

James Components:
- Emailing protocols: SMTP, LMTP, POP3, IMAP, ManageSieve, JMAP
- Mailet container: independent, extensible and pluggable email processing agents
- Storage API: Mailbox API / Search API / User API
- Storage Implementations: Cassandra / PostgreSQL / HSQLDB / MySQL / ElasticSearch...
- Administration: JMX / REST / Command Line
- James Core

Your James server can also be used as Mail Transfer Agent, by enabling only SMTP or as a IMAP Mail Delivery Agent.

james general architecture using james as smtp relay using james as an imap server

James is a living Open Source project (all developments and implementations are based on open technical standards), any function which is not already available from can be developed!

Get Started With James

    Here you will try James server v 3.0 thanks to an 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, user02, user03, with their default password being 1234.
    Note: this James server will respond to IMAP port 143 and SMTP port 25.
    Pull and run the James image with the following single command:

    docker run -p "25:25" -p "143:143" linagora/james-jpa-sample

    Then, connect this image with for instance, Thunderbird.
    Notes: for more information about James CLI, have a look at 'Useful commands section README.txt'.

Last Posts


Apache James Project is an Open Source all-volunteer project obtaining its strength from its Community made of developers and users. All are welcome to the Community!
That way, we recommend that Users, Developers, Curious and Fans join the James Community.
Here are the different ways of contributing sorted in order of increasing level of expertise you need to use them:

  • Mailing list:
    Subscribe to the appropriate Mailing Lists according to your interests and your profile.
    Mail guidelines explain you more precisely how it works.
  • Gitter chat room:
    Chat in live with the community on Gitter chat room.
  • Bug tracker:
    You can here enter bug encountered, share your point of view about a specific feature or anything else...
    Each subproject has its own bug tracker.
    Go to James Server project bugtracker.
    For other projects click on the appropriate links mentioned in the concerned subproject. Finally, create your issue.
  • Sources on Git:
    Read our sources from the Apache Git.
    You can also come and interact with us on GitHub.
  • Get started and contribute to this project:
    James is a project that lives from the contributions of its community! Read the contributing guidelines.
    We more than welcome articles and blog posts about James. Contact us by email or on Gitter to share your experiences.
    Documentation is an easy way to get started, and more than wanted! Check out the ~documentation label on JIRA.
    And to get started with code contributions, search out the ~newbie, ~easyfix, ~feature labels on JIRA.
    There is many other ways one can help us: packaging, communication, etc . . .
  • Twitter:
    Express yourself and follow us @ApacheJames.
  • Professional support:
    Find a list of companies which can provide you some support on James.

James use-cases

At LINAGORA, we chose JAMES as the Mail Delivery Agent of our  OpenPaaS product:

  • For easy administration of email load balancing and high availability
  • To allow email interactions with the platform
  • To use the JMAP protocol (the browser interacts directly with the mail server)

Our deployment currently allows serving a hundred user over JMAP, SMTP and IMAP.

Some statistics...

  • Contributors
  • Last year commits
  • Forks
  • Stars

...and contributors