| 
James
 
Translated
 
Downloads
 
Current Documentation
 
Older Documentation
 
Project
 
Jakarta Information (web)
 
Related Projects (web)
 | 
| The James Server |  
| 
James is an open source project intended to produce a robust, flexible, and powerful 
enterprise class server that provides email and email-related services.  It is also designed to
be highly customizable, allowing administrators to configure James to process email in a 
nearly endless variety of fashions. The James server is built on top of the Avalon Framework.  The standard James distribution 
deploys inside the Phoenix Avalon Framework container.  In addition to providing a robust 
server architecuture for James, the use of Phoenix allows James administrators to deploy 
their own applications inside the container.  These applications can then be accessed during 
mail processing. The James server is implemented as a complete collection of servers and related components that, taken together,
provide an email solution.  These components are described below. |  
| POP3 Service |  
| 
The POP3 protocol allows users to retrieve email messages.  It is the method
most commonly used by email clients to download and manage email messages. The James version of the POP3 service is a simple and straightforward implementation that 
provides full compliance with the specification and maximum compatibility with common
POP3 clients.  In addition, James can be configured to require SSL/TLS connections for
POP3 client connecting to the server. More information on configuring the POP3 service can be found here. |  
| SMTP Service |  
| 
SMTP (Simple Mail Transport Protocol) is the standard method of sending and delivering 
email on the internet.  James provides a full-function implementation of the SMTP specification,
with support for some optional features such as message size limits, SMTP auth, and encrypted 
client/server communication. More information on configuring the SMTP service can be found here. |  
| NNTP Service |  
| 
NNTP is used by clients to store messages on and retrieve messages from news servers.  James provides 
the server side of this interaction by implementing the NNTP specification as well as an appropriate 
repository for storing news messages.  The server implementation is simple and straightforward, but 
supports some additional features such as NNTP authentication and encrypted client/server communication. More information on configuring the NNTP service can be found here. |  
| FetchPOP |  
| 
FetchPOP, unlike the other James components, is not an implementation of an RFC.  Instead, it's a 
component that allows the administrator to configure James to retrieve email from a number of POP3 
servers and deliver them to the local spool.  This is useful for consolidating mail delivered to a
number of accounts on different machines to a single account. More information on configuring FetchPOP can be found here. |  
| The SpoolManager, Matchers, and Mailets |  
| 
James separates the services that deliver mail to James (i.e. SMTP, FetchPOP) 
from the engine that processes mail after it is received by James.  The 
SpoolManager component is James' mail processing engine.  James' SpoolManager component 
is a Mailet container.  It is these mailets and matchers that actually carry out mail processing. More on the structure of the SpoolManager and the Mailet API can be found here. |  
| Repositories |  
| 
James uses a number of different repositories to both store message data (email, news messages) and 
user information.  User repositories store user information, including user names, authentication 
information, and aliases.  Mail repositories store messages that have been delivered locally.  Spool 
repositories store messages that are still being processed.  Finally, news repositories are used to
store news messages.  Aside from what type of data they store, repositories are distinguished by 
where they store data.  There are three types of storage - File, Database, and DBFile. |  
| RemoteManager |  
| 
James provides a simple telnet-based interface for control.  Through this interface you can add 
and delete users, configure per-user aliases and forward addresses, and shut down the server. More on the configuring the RemoteManager can be found here. |  |