James components are assembled in various way, called packaging.
Thus, one must carefully choose his packaging.
Note: Especially using Guice, one can easily define new modules for existing James components, as well as for third party code. Note that building your own combination of components will lead to an untested and unsupported server.
Packaging | Spring | Cassandra-guice | Distributed Cassandra-rabbitMQ-guice | Jpa-guice | Jpa-smtp | |
---|---|---|---|---|---|---|
IoC framework | Spring | Guice | Guice | Guice | Guice | |
Docker image | Not available. Contributions welcomed for JIB support. | apache/james:cassandra-3.8.1 | apache/james:distributed-3.8.1 | apache/james:jpa-3.8.1 | None | |
Supports SMTP | Yes | Yes | Yes | Yes | Yes | |
Deployment model | Single node | Single node | Multi node | Single node | Single node | |
Supports IMAP | Yes | Yes | Yes | Yes | No | |
Supports JMAP | No | Yes | Yes | No | No | |
Supports POP3 | Yes | Yes | Yes | Yes | No | |
Supports FetchMail | Yes | No | No | No | No | |
Supports CLI | Yes | Yes | Yes | Yes | No | |
Supports WebAdmin | No | Yes | Yes | Yes | Yes | |
Supports Grafana metrics (Prometheus) | No | Yes | Yes | Yes | Yes | |
Mailbox implementation | JPA/MailDir/Memory | Cassandra | Cassandra | JPA | JPA | |
Indexer implementation | Lucene/None | OpenSearch | OpenSearch | Lucene | None | |
Server data implementation | JPA/File | JPA/File | Cassandra | Cassandra | JPA | JPA |
Mail queue implementation | ActiveMQ | ActiveMQ | RabbitMQ | ActiveMQ | ActiveMQ | |
Sieve | Experimental | Experimental | Experimental | Experimental | No | |
User defined mailbox listener registration | No | Yes (master) | Yes (master) | Yes (master) | No | |
Installation instructions | Here | Here | Here | Here | Here |
WARNING: JAMES-3591 Cassandra is not made to store large binary content, its use will be suboptimal compared to alternatives (namely S3 compatible BlobStores backed by for instance S3, MinIO or Ozone)
Image name | Deployment model | General persistence | Blob persistence | Queue type | Search | Supported protocols |
---|---|---|---|---|---|---|
apache/james:distributed-3.8.1 | Multi-node | Cassandra | S3 or Cassandra | RabbitMQ | OpenSearch | SMTP, IMAP, JMAP, POP3, LMTP, WebAdmin |
apache/james:jpa-3.8.1 | Single node | Embedded Derby database (JPA, SQL) | Not applicable | In VM | Index Lucene on the filesystem | SMTP, IMAP, POP3, LMTP, WebAdmin |
apache/james:demo-3.8.1 | Pre-provisioned Single node instance to ease project discovery | Embedded Derby database (JPA, SQL) | Not applicable | In VM | Index Lucene on the filesystem | SMTP, IMAP, POP3, LMTP, WebAdmin |
apache/james:memory-3.8.1 | Single node for test purposes | Memory (no persistence) | Memory (no persistence) | In VM | Scroll on in memory data | SMTP, IMAP, JMAP, POP3, LMTP, WebAdmin |
apache/james:cassandra-3.8.1 | Single node on top of a shared database | Cassandra | Cassandra | In VM | OpenSearch | SMTP, IMAP, JMAP, POP3, LMTP, WebAdmin |
WARNING: JAMES-3591 Cassandra is not made to store large binary content, its use will be suboptimal compared to alternatives (namely S3 compatible BlobStores backed by for instance S3, MinIO or Ozone)