Get Source Code

Anonymous Access

The source can be checked out anonymously from GIT with the following command.

$ git clone

$ cd protocols

Developer Access

Everyone can access the GIT repository via HTTP, but Committers must checkout the GIT repository via HTTPS.

$ git clone

$ cd protocols

Build Source Code

You can read a tutorial on how to build Apache James Server on

The GIT URLs and the project names must be adapted, but the requirements and process are the same and you can inspire from the build the Apache James IMAP libraries.

Source Organization


James Protocols API

apache-james-protocols-api contains the interfaces, exceptions and Constants needed by the other projects.

James Protocols Implementation

apache-james-protocols-impl provides common services that can be used by any mail protocol.

James Protocols SMTP

apache-james-protocols-smtp implements the SMTP protocols with hooks for extensions.

IMAP4 Source Code


Apache James IMAP API

apache-james-imap-api contains the interfaces, exceptions and Constants needed by the other projects.

The following diagram represents some key (not all) interfaces of the IMAP API project.

Apache James IMAP Message

apache-james-imap-message allows to encode, decode and structure the IMAP requests and responses.

It will provide among other the ImapRequestMessage and ImapResponseMessage implementation to be processed by the apache-james-imap-processor project.

Apache James IMAP Processor

apache-james-imap-processor implements the Chain Of Responsibility design pattern.

ImapRequestMessage and ImapResponder will be passed to the list of Processors that will execute doProcess if applicable.

Apache James Integration Test

A specific integration project is responsible to test the IMAP protocol in conjunction with the Apache James mailbox components.