What is jSieve?
---------------

jSieve is a Java implementation of the Sieve mail filtering language defined by 
RFC 3028. jSieve is implemented as a langauge processor that can be plugged into any
internet mail application to add Sieve support.

Getting Started
---------------

Until these pages are fleshed out, the best way to understand jSieve is read the 
Javadocs and look at the source code. 

- To understand how to invoke jSieve, see org.apache.jsieve.SieveFactory.
- To understand how to implement a MailAdapter for jSieve, see
  org.apache.jsieve.mail.MailAdapter.
- To understand how to add a custom extension to jSieve, see
  org.apache.jsieve.commands.extensions.Log.
- The jUnit tests in org.apache.jsieve.junit illustrate many aspects
  of the implementation.
- To build jSieve, read BUILDING.txt

Comments, Questions and Issues
------------------------------

jSieve is a sub-project of Apache James. Please direct your comments and questions to 
the relevant James list.

To report issues, such as bugs, go to 
http://issues.apache.org/jira/browse/JSIEVE
As jSieve comes with a fairly extensive suite of jUnit Tests, it would be most 
helpful for bug reports to be accompanied by an illustrative jUnit test case.


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

For legal and licensing issues, please look in the legal section of
the documentation or read the LICENSE and NOTICE files.