

    _J_A_K_A_R_T_A__J_A_M_E_S___M_A_I_L__S_E_R_V_E_R
    

  What is it?
  -----------

  JAMES is a 100% pure Java server application designed to be a complete,
  portable and powerful enterprise mail engine solution based on currently
  available open protocols  (SMTP, POP3, IMAP, NNTP etc).

  JAMES was formerly known as the Java Apache Mail Enterprise Server.

  Development Status for JAMES 1.2.2
  ----------------------------------
  
  SMTP Server: Stable 
  POP3 Server: Beta 
  IMAP Server: 
  NNTP Server:
  
  Current Feature
  ----------------

  These are some JAMES features:
  
    o  complete portability:  Apache James is a 100% pure Java(tm) application
       based on the Java 2 platform and the JavaMail 1.1 API.
       
    o  protocol abstraction:  unlike other mail engines, protocols are seen only
       like "communication languages" ruling communications between clients and
       the server. Apache James is not be tied to any particular protocol but
       follow an abstracted server design (almost like JavaMail did on the
       client side)
       
    o  complete solution:  the mail system is able to handle both mail
       transport and storage in a single server application. Apache James
       works alone without the need for any other server or solution.
       
    o  mailet support:  Apache James supports the Apache Mailet API. A Mailet
       is a discrete piece of mail-processing logic which is incorporated into
       a Mailet-compliant mail-server's processing. This easy-to-write,
       easy-to-use pattern allows developers to build powerful customized mail
       systems. Examples of the services a Mailet might provide include: a
       mail-to-fax or mail-to-phone transformer, a filter, a language
       translator, a mailing list manager, etc.
       Several Mailets are included in the JAMES distribution (see
       docs/Configuration.html).
    
    o  resource abstraction:  like protocols, resources are abstracted and,
       accessed through defined interfaces (JavaMail for transport, JDBC for
       storage in RDBMS's, Apache Mailet API), the server is highly modular
       and can reuse solutions from other projects or applications.  
       
    o  secure and multi-threaded design:  based on the technology developed for
       the Apache JServ servlet engine, Apache James has a careful, 
       security-oriented, full multi-threaded design, to allow performance, 
       scalability and mission-critical use.
       
    o  Currently JAMES support SMTP, POP3 and a simple remote administration
       facility.
       

  Planned Features
  ----------------

    o  IMAP support.
    
    o  IMAP server side filtering.

    o  Download remote inbox to your local inbox.
    
    o  More powerful remote admin protocol and tool.
    
    o  Extended set of Mailet to easily support most mail system request.
    
    o  anything else you may want if you help us writing it :-)
       

  Requirements
  ------------

  - JAMES.sar (required)
  - Phoenix server (Jakarta-Avalon-Phoenix) (required)

  JAMES distribution includes both required items.
  
  To recompile James from sources you should use org.apache.tools.ant and its 
  needed packages (ant.jar, javac.jar, xml.jar).

  Up and working...
  -----------------

Step 1: installation.

    Download distibution. Extract all files in your favorite folder. You've
    probably done that if you are reading this file!


Step 2: start phoenix.

    M$ users should just run /bin/run.bat. Unix users will find run.sh
    under the same folder - you may need to chmod +x run.sh. A JVM must be in
    the path.

    Phoenix will unpack the james.sar into apps/james. Note that port 1111
    must be available for Phoenix to run (used by RMI server).

    Most UNIX systems require superuser privileges to open sockets below 1024,
    which includes the IANA-standard SMTP (on port 25), POP3 (on port 110),
    IMAP (port ) and NNTP (port ).  You will get an error message with
      'org.apache.avalon.framework.atlantis.ApplicationException: Failed to
       load block imapserver'
    or something similar if you have not got the right privileges.

    If you have the right privileges,  you should see

      'Phoenix 3.1a1-dev

       James James 1.2.2 Alpha
       Started IMAP Server plain:143
       Started NNTP Server plain:119
       Started SMTP Server plain:25
       Started POP3 Server plain:110'

    Congratulations! You have James up and running.

Step 3: Adding users

    Once James is running, telnet to port 4555.  You will see somthing like:
      'JAMES RemoteAdministration Tool 1.2.2alpha
       Please enter your login and password
       Login id:'

    The defaul id and password are both 'root'. These can be changed in
    the  configuration file (see Step 4).
    
    To get help for the RemoteAdmin tool, type help. To add a user, type
    adduser [username] [password] .
    Eg: adduser test test


Step 4: Test James

    Once you have some users entered, you can test James by sending mail to
    them.  Note that for mail to get to your machine, you need MX records in
    the DNS system.  You will see files materialise in
    apps/james/var/mail/inboxes.

    Retrieve the mail by configuring your POP client to get mail (inbound mail
    server) from James.

    Test outbound mail handling by configuring your client to use James smtp.
    (By default, you can only send mail from the machine on which James is
    running. This is to stop spam relaying. This can be changed in config
    file.)

    Trace out JAMES actions in /logs/*info.log.
    Action that will be taken by JAMES on incoming mail are configurated in
    the mailet pipe line (/conf/james.conf.xml). Look at it if you want to
    understand what's happening.

Step 5: configuration.

    The configuration files are in apps/james/conf.  For new users, the only
    elements you need to worry about are in config.xml. You probably want to
    change the root password in the remote manager section and to add your
    local network's IP address to the anti-spam mailet.


  
  Good luck :)  


  Licensing and legal issues
  --------------------------

  For legal and licensing issues, please look in the legal section of
  the documentation or read the LICENSE file.
  
  A licence covering the use of mm.mysql JDBC drivers will be unpacked into ./apps/james/SAR-INF/lib
  
  

  Thanks.

                                           The Jakarta Project
                                           http://jakarta.apache.org/
