The Java Apache Mail Enterprise Server (a.k.a. James) is a 100% pure Java SMTP and POP3 Mail server and NNTP News server designed to be a complete and portable enterprise mail engine solution. James is based on currently available open protocols.

Apache James is released under the Apache Software License, Version 1.1.

More information about Apache James can be found at: http://james.apache.org/

The latest Apache James version can be downloaded from: http://james.apache.org/download.cgi

Explanation message processing flow

James message processing flow.

  1. All mail goes through the root processor first.
    All processors can have one or more matcher/mailets.

    A matcher selects or filters specific mail messages (e.g.: message size, subject, recipients) before it is passed to its coresponding mailet. The matcher returns a collection of recipients (or an empty colection). A matcher never modifies the message.

    A mailet (= mail servlet) is changing the mail message, e.g.: adding footer or forwarding the message to another processor.

  2. This processor handles messages where the sender is not associated with an valid domain.

  3. This processor handles messages for local or remote delivery.

  4. This processor handles messages that did not get locally delivered, for example an invalid recipient.

  5. This processor handles messages that are for foreign domains, where relaying is denied.

  6. The error processor is generally invoked when there is an unexpected error either in the mailet chain or internal to James.