= Welcome to Apache James Project


This is a work in progress.
