summaryrefslogtreecommitdiffstats
path: root/pigeonhole/TODO
blob: 39420b58d97922b950adc5589dc8074987b49240 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
Current activities:

* Rework string matching:
	- Give Sieve its own runtime string type, rather than (ab)using string_t.
	- Add support for stream matching for handling large values, e.g. from the
	  body extension.
	- Improve efficiency of :matches and :contains match types.
* 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):

* Implement enotify xmpp method as a plugin.

Next (mostly in order of descending priority/precedence):

* Implement message modification and extraction API in order to:
	- Properly implement the interaction between editheader and foreverypart/mime.
	- 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.
* 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)
* 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.
	- Implement dropping errors in the user's mailbox as a mail message.
* 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
* Vacation extension improvements:
	- Implement configurable sender exclusion list.
	- Implement mechanism for implicitly including an account's aliases in the
	  vacation command's :addresses list.
* Fix remaining RFC deviations:
	- Fix issues listed in doc/rfc/RFC-questions.txt based on answers
	- 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.
* 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 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
* 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.)

Low priority items:

* Implement extlists extension as a plugin
* 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.
* 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)
* Warn during compile if using non-existent folders.

* Variables extension: implement compile time evaluation of constant values
	- Detect assignment of too large constant values to variables at compile
	  time.
* Add development documentation, i.e. comment on library functions and document
  the binary and byte-code format.
* Implement sip-message notify mechanism.