Hi, I just waned to explain the work we (Erwan Guyomarc'h and me) have done on quota so far, and what will follow next.
I will also try to write this kind of mail more often, to offer more readability on my work on James. The goal of our project is to solve most issues related to Sieve : - allow users to manage their sieve scripts - use these Sieve Script upon mail delivery - validate RFC-5228 (http://tools.ietf.org/html/rfc5228) compliance (and by the way have at least tests that validate LocalDelivery ) - Implement RFC-5230 (https://tools.ietf.org/html/rfc5230) : Vacation extension (and document the full process for implementing SIEVE extensions) Why solving these issue ? -> We think Sieve integration in James is a critical blocker for the (upcoming) 3.0 . To sum up, we identified / created the following tickets related to these goals : JAMES-1373 Test and document jsieve in server 3.0b4 JAMES-1614 SieveRepository should be located in the data-* directory JAMES-1615 Write a SieveDefaultRepository that correspond to the today defaut behaviour JAMES-1616 Generalize unit tests for SieveRepository JAMES-1617 Implement a Cassandra SIEVE repository JAMES-1618 Create a manage sieve server JAMES-1619 Write tests for mail delivery JAMES-1620 Proove JSIEVE integration in JAMES works JAMES-1645 As an administrator, I should be able to administrate Sieve Quotas PROTOCOLS-68 Add sievemanager as protocols module PROTOCOLS-112 Manage SIEVE interpreter should be RFC compliant MPT-23 Write MPT tests for Manage SIEVE JSIEVE-94 Nullpointer in SieveMailAdapter#post() JSIEVE-73 Ensure Body Extension Functions As Per Specification JSIEVE-79 Implement a mechanism for users to manage their Sieve scripts via SMTP JSIEVE-96 How to deploy Sieve scripts JSIEVE-86 Potential bidirectional dependency between jsieve manager and server JSIEVE-77 Interfaces describing the operations required for managing per user Sieve Scipts and default implementations. JSIEVE-103 - Implement vacation mode <https://issues.apache.org/jira/browse/JSIEVE-103> So far, we already committed : JAMES-1614 SieveRepository should be located in the data-* directory JAMES-1615 Write a SieveDefaultRepository that correspond to the today default behavior PROTOCOLS-68 Add sievemanager as protocols module We opened reviews for : https://github.com/apache/james-project/pull/20 JAMES-1619 Write tests for mail delivery Comment : The diff is small and reviewing it should not be complicated. https://github.com/apache/james-project/pull/22 https://github.com/apache/james-jsieve/pull/5 JAMES-1615 Write a SieveDefaultRepository that correspond to the today default behavior Comment : Retro compatibility with today behavior. This PR also integrate We want a user to be able to choose his SieveRepository using Spring (still a little work to be done) And we want to use the configured SieveRepository in order to retrieve user script upon mail receival. (Agree ticket is not well named, I gonna fix it) https://github.com/chibenwa/james-project/pull/8 https://github.com/apache/james-jsieve/pull/4 JAMES-1620 Proove JSIEVE integration in JAMES works Comment : To avoid a merging hell, I put all the diffs on the same branch. I opened this PR on my repo in order to allow one to review only this part of the history. I only found two issues with Sieve integration : - on size handling (it is minor) - on address handling (a method name was misinterpreted) https://github.com/apache/james-project/pull/19 JAMES-1618 Create a manage sieve server MPT-23 Write MPT tests for Manage SIEVE Comment : I know this PR is not the more readable in the world. I had really hard time trying to make the code more readable. The history is not clean, I agree, but the final result is. On future PRs I will work on this point. Maybe I should also have shorter iterations, to avoid coming with too huge diffs. I don't like the idea of committing still useless code but maybe I can open intermediary reviews. However, review can still be done using the full diff and by activating the github split view. I don't know if it helps. If you have suggestions... What will follow next ? JAMES-1617 Implement a Cassandra SIEVE repository Erwan is working on it. JAMES-1645 As an administrator, I should be able to administrate Sieve Quotas I am going to do some CLI tomorrow :-) JSIEVE-94 Nullpointer in SieveMailAdapter#post() Definitely this needs to be investigated. It should not take us too much time, so.... JSIEVE-73 Ensure Body Extension Functions As Per Specification Today, Body extension is not RFC-5173 compliant at all. Using MIME4J, something usefull can come out of this with some work so that we can fully support this extension. JSIEVE-103 - Implement vacation mode <https://issues.apache.org/jira/browse/JSIEVE-103> This is more to explore, discover and document how to write Sieve extensions, test it, and integrate it in James JAMES-1373 Test and document jsieve in server 3.0b4 Tests are in review (https://github.com/chibenwa/james-project/pull/8) Documentation will come after the Vacation extension implementation. Benoit