Active development is moved to Pigeonhole v0.2 for Dovecot v2.0. The v0.1.x 
series for Dovecot v1.2 is maintained for bug fixes and small updates. Check 
http://hg.rename-it.nl/dovecot-2.0-pigeonhole/raw-file/tip/TODO for the most
up-to-date TODO list.

Open TODO issues for this revision:

* Finish body extension:
	- Implement proper :content "multipart" behavior
	- Implement proper :content "message/rfc822" behavior
	- Build test cases for decoding MIME encodings to UTF-8
* Unfinished new extensions:
	- Finish the ereject extension
* Build a sieve tool to filter an entire existing mailbox through a Sieve 
  script:
	- Add commandline options to fully customize execution
	- Write manual page
* Update include extension to latest draft:
	- Implement required ManageSieve behavior
* Vacation extension improvements:
    - Implement configurable sender exclusion list.
    - Implement mechanism for implicitly including an account's aliases in the
      vacation command's :addresses list.
* Improve error handling. 
	- Detect permission errors when writing global script binaries and advise the 
	  administrator on using sievec to precompile the scripts.
	- Avoid reporting user-caused errors to the master log.
	- Implement dropping errors in the user's mailbox as a mail message.
* Improve debugging support in the sieve-test tool:
	- Improve trace debugging towards something more intuitively readable.
	- Give trace debugging multiple levels of verbosity (e.g. to include more 
    messy output like value matching).
* Implement a better way to encode source line numbers into a binary for
  reporting errors at runtime. Currently, this is done explicitly for each 
  command that adds actions to the result. However, some tests, match types etc. 
  will also need this when the variables extension is active. Many of the RFC 
  deviations listed below depend on this. Also trace debugging will benefit.
* Fix remaining RFC deviations:
	- Fix issues listed in doc/rfc/RFC-questions.txt based on answers
	- Allow for the existance of dynamic comparators (i.e. specified by 
	  variables). 
	- Allow for :regex matching with variable key.
	- Detect assignment of too large constant values to variables at compile
	  time.
	- Verify outgoing mail addresses at runtime when necessary
	  (e.g. after variables substitution)
	- Improve handling of invalid addresses in headers (requires Dovecot changes)
* Add normalize() method to comparators to normalize the string before matching
  (for efficiency).
* Properly implement Sieve internationalization support (utf-8 handling), 
  currently it is not complete:
	- Make this implementation fully conform section 2.7.2 of RFC5228 (Comparisons 
	  Across Character Sets). 
	- Verify validity of utf8 where necessary.
	- Implement comparator-i;unicode-casemap.
* Make testsuite much more exhaustive:
	- Add support for testing the content of result actions
	- Test as many error/warning/info conditions as possible. 
	- Review the specification documents and check whether the given conditions
	  are tested at least once.
* Code cleanup:
	- Make address handling more uniform. 
	- Review all FIXMEs 

* Build a server with test mail accounts that processes lots and lots of mail 
  (e.g. spam, mailing lists etc.)

* ## MAKE A SECOND RELEASE (0.2.x) ##

* Implement abstract string list and make matching interface more generic. Use
  this to:
	- Simplify matching API
	- Implement index extension
	- Implement extlists extension
* Enotify extension: detect use of variable values extracted from the message 
  that are used in the method argument. RFC reports this as a security issue.
* Add support for stream matching for handling large values, e.g. from the body
  extension.
* Implement message modification and extraction API in order to:
	- Implement editheader extension
	- Implement replace, enclose, foreverypart, mime and extracttext extensions 
* Provide a solution for mail_get_headers_utf8 reparsing the whole message each
  time it is called (header and address test; Timo might provide solution from
  within Dovecot)
* Optimize code containing true/false tests to omit explicit JMP opcodes
  (i.e. optimize the test away and any code that negatively depends on it)
* Use lib/str-find.h for :contains and :matches match types 
* Warn during compile if using non-existent folders.

* Implement IMAP plugin for IMAPSieve support:
	- This may include support for manually running a script on a set of messages
	  through IMAP (no specification for something like this is available; we will 
	  have to provide our own)
* Variables extension: implement compile time evaluation of constant values
* Add development documentation, i.e. comment on library functions and document
  the binary and byte-code format. 
* Give the byte code format some more thought, it is currently quite rough and
  to the point. 
* Implement SIP notify mechanism.

