Skip to content
Snippets Groups Projects
TODO 4.29 KiB
Newer Older
Stephan Bosch's avatar
Stephan Bosch committed
Current activities:

Stephan Bosch's avatar
Stephan Bosch committed
* Rework string matching:
Stephan Bosch's avatar
Stephan Bosch committed
	- Give Sieve its own runtime string type, rather than (ab)using string_t.
Stephan Bosch's avatar
Stephan Bosch committed
	- Add support for stream matching for handling large values, e.g. from the
	  body extension.
Stephan Bosch's avatar
Stephan Bosch committed
	- Improve efficiency of :matches and :contains match types.
Stephan Bosch's avatar
Stephan Bosch committed
* Build proper comparator support:
	- Add normalize() method to comparators to normalize the string before
	  matching (for efficiency).
	- Allow for the existence of dynamic comparators (i.e. specified by
	  variables).
	- Implement comparator-i;unicode-casemap.
Parallel plugin-based efforts (on hold at the moment):
Stephan Bosch's avatar
Stephan Bosch committed

* Implement enotify xmpp method as a plugin.

Stephan Bosch's avatar
Stephan Bosch committed
Next (mostly in order of descending priority/precedence):
Stephan Bosch's avatar
Stephan Bosch committed

Stephan Bosch's avatar
Stephan Bosch committed
* Implement message modification and extraction API in order to:
	- Properly implement the interaction between editheader and foreverypart/mime.
Stephan Bosch's avatar
Stephan Bosch committed
	- Implement replace, enclose extensions.
* 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.
Stephan Bosch's avatar
Stephan Bosch committed
* Further develop regex extension and update it to the latest draft:
	- Implement the :quoteregex set modifier
	- Investigate the use of the TRE regexp library to gain UTF-8 capability
	  (posix regexes actually do support utf8, but only when locale is set
	  accordingly)
Stephan Bosch's avatar
Stephan Bosch committed
* Finish LDAP Sieve script storage for read-only access.
	- Consolidate LDAP connections when more than a single Sieve script must be
	  loaded from different storages linked to the same LDAP server.
	- Adjust Sieve script API to support asynchronous script retrieval to
	  retrieve scripts in parallel when possible.
* Improve error handling.
Stephan Bosch's avatar
Stephan Bosch committed
	- Implement dropping errors in the user's mailbox as a mail message.
Stephan Bosch's avatar
Stephan Bosch committed
* Finish body extension:
	- Build test cases for decoding MIME encodings to UTF-8
* Cleanup the test suite
	- Restructure test scripts
	- Add more comment on purpose of tests
* Finish the ereject extension
Stephan Bosch's avatar
Stephan Bosch committed
* Vacation extension improvements:
	- Implement configurable sender exclusion list.
	- Implement mechanism for implicitly including an account's aliases in the
	  vacation command's :addresses list.
Stephan Bosch's avatar
Stephan Bosch committed
* Fix remaining RFC deviations:
Stephan Bosch's avatar
Stephan Bosch committed
	- Fix issues listed in doc/rfc/RFC-questions.txt based on answers
Stephan Bosch's avatar
Stephan Bosch committed
	- Verify outgoing mail addresses at runtime when necessary
	  (e.g. after variables substitution)
	- Improve handling of invalid addresses in headers (requires Dovecot changes)
* Improve sieve_extprograms plugin:
	- Redesign (forcible) local script termination. It should use SIGCHLD and
	  a ioloop-based timeout.
	- Add facility to trigger a temporary failure condition when a program
	  fails rather than an implicit keep.
	- Add a method to implicitly pass environment variables such as SENDER and
	  RECIPIENT through the script socket service.
Stephan Bosch's avatar
Stephan Bosch committed
* Make testsuite much more exhaustive:
Stephan Bosch's avatar
Stephan Bosch committed
	- 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 requirements
	  are tested at least once.
* Fix ManageSieve proxy to recognize response codes from the backend and forward
  them to the user if appropriate/safe. Probably means implementing a proper
  ManageSieve client library.
* Test ManageSieve behavior thoroughly:
	- Test pipelined behavior
	- Test proxy authentication
	- Make address handling more uniform.
	- Review all FIXMEs
* Build a server with test mail accounts that processes lots and lots of mail
Stephan Bosch's avatar
Stephan Bosch committed
  (e.g. spam, mailing lists etc.)

Low priority items:
* Implement extlists extension as a plugin
* Enotify extension: detect use of variable values extracted from the message
Stephan Bosch's avatar
Stephan Bosch committed
  that are used in the method argument. RFC reports this as a security issue.
Stephan Bosch's avatar
Stephan Bosch committed
* 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)
Stephan Bosch's avatar
Stephan Bosch committed
* Warn during compile if using non-existent folders.
* Variables extension: implement compile time evaluation of constant values
Stephan Bosch's avatar
Stephan Bosch committed
	- Detect assignment of too large constant values to variables at compile
	  time.
Stephan Bosch's avatar
Stephan Bosch committed
* Add development documentation, i.e. comment on library functions and document
  the binary and byte-code format.
Stephan Bosch's avatar
Stephan Bosch committed
* Implement sip-message notify mechanism.

Consent

On this website, we use the web analytics service Matomo to analyze and review the use of our website. Through the collected statistics, we can improve our offerings and make them more appealing for you. Here, you can decide whether to allow us to process your data and set corresponding cookies for these purposes, in addition to technically necessary cookies. Further information on data protection—especially regarding "cookies" and "Matomo"—can be found in our privacy policy. You can withdraw your consent at any time.