Mercurial > dovecot > original-hg > dovecot-1.2
annotate TODO @ 526:ab394352fcb3 HEAD
updated
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 27 Oct 2002 09:13:34 +0200 |
parents | 4ff240ec007a |
children | fe8a014a479e |
rev | line source |
---|---|
526 | 1 - bugs |
2 - fix update_by_replace | |
3 - RENAME: If the name has inferior hierarchical names, then the inferior | |
4 hierarchical names MUST also be renamed (ie. foo -> bar renames | |
5 also foo/bar -> bar/bar). (and RENAME INBOX!) | |
6 - passwd-file doesn't notice changes in the file | |
7 - tree has some locking issues while opening it | |
8 - maildir: if mail file isn't found, it may be because it was renamed | |
9 (flag changed). we must then sync the directory and see again if the mail | |
10 is found | |
11 - mail-lockdir.c isn't 100% safe.. stale locks are detected by checking | |
12 that hard link count is 1, then it's unlink()ed. but what if another | |
13 process did the same unlink() + creat() in the middle of our | |
14 stat()..unlink()? | |
15 - SEARCH FROM/TO/CC/BCC now generates the field from ENVELOPE which it | |
16 uses for matching. This however gives different results than when | |
17 matching from headers. | |
18 - mbox: what if 1 msg is deleted is x-imapbase rewritten? | |
19 | |
20 - reliability fixes: | |
21 - if we deleted mail but didn't write modify log, other dovecots don't | |
22 handle it properly. they either assert at index-sync.c:42 or if new | |
23 mails have also been added since, they don't notice it at all | |
24 actually, that breaks reads as well since we get expunges only from | |
25 the old file.. and check that deleting file does "inconsistency error" | |
26 - if imap process notices that both modify logs are getting full because | |
27 it's client isn't syncing, the client should be disconnected | |
28 - TempString and temp. mempool could make sure the stack frame stays same | |
29 for every allocation | |
30 - if opening indexes fails because we timeout while trying to lock it, we | |
31 recreate the indexes. that's not very good idea .. also does it do that | |
32 even if .customflags can't be locked? it's not really related to | |
33 indexes.. | |
474 | 34 |
526 | 35 - checks: |
36 - if we have entries in modifylog with UID 10..11, 9..12, 8..13 etc. | |
37 do they work correctly? | |
38 - check that search message-id worked properly always | |
39 - check that search's OR and () work properly | |
40 - Should SEARCH SENT* apply timezone? | |
41 - make sure SELECT rebuilds index properly when next_uid is near 32bit value | |
42 - make sure connection limits work | |
43 | |
44 - cleanups: | |
45 - iobuffers could do blocking reads/writes and use alarm() to timeout. | |
46 faster than tons of poll() + gettimeofday() calls. | |
47 - are the lowwater marks always reset to 0 when they don't exist? could be | |
48 just as well set to next_uid.. | |
49 - i_buffer_seek() could maybe be void and errors would be shown at read() | |
50 time like with skip().. | |
51 - use EOVERFLOW instead of EINVAL wherever appropriate | |
52 | |
53 - enhancements: | |
54 - "* NO Mailbox is locked, will override in xx seconds" | |
55 - UW-IMAP doesn't send it's fields to client: X-IMAPbase, Status, X-Status, | |
56 X-Keywords, X-UID.. should we? probably just makes things more difficult | |
57 - search: support having longer keywords than buffer block | |
58 - use mmap() vs. read() to access mails. read() seems to be a bit | |
59 faster with linux/x86. | |
60 - when fetching body/envelope we could try to cache it immediately if | |
61 we can get lock with try_lock. | |
62 - optionally use only in-memory indexes | |
63 - maildir could support also the dirty-flag in messages. files would be | |
64 renamed "whenever there's time" (that'd require the indexer program, or | |
65 forking and doing it in background) | |
66 - optionally keep the message file name as it's UID. Then we don't have to | |
67 save the filename anywhere. | |
68 | |
480 | 69 - allow index files to be in completely separate location than mail data. |
70 mails could be read through slow NFS access but indexes from fast local | |
71 disk. with this thinking it makes more sense to create larger index files | |
72 to save for example mail headers. also index rebuilding should be very | |
73 light operation, the indexes would be filled while the data is being | |
74 accessed by the imap client. of course all this should be optional so | |
75 we don't slow down when mails and indexes are stored in same disk. | |
526 | 76 |
497 | 77 - we need permanent storage for UIDs. with mbox use X-UID like UW-IMAP, |
78 with maildir a) file:2,flags,Uuid b) file,U=uid:2,flags. uid validity | |
79 would be in .uidvalidity file. the b-case would require that to be done | |
80 by the client moving it from new/ to cur/ | |
81 - other possible maildir flags to use in filename: S=size (file size, | |
82 for maildir++ quota), W=size (rfc822.size by some uw-imap patch) | |
0 | 83 |
84 index: | |
85 - mbox: | |
96 | 86 - if a file isn't valid mbox and it's tried to be opened, say it in one |
87 line in error log, not 6.. | |
304 | 88 - empty lines at beginning of file still aren't ignored |
474 | 89 - UW-IMAPd writes empty spaces after X-Keywords which it uses so that |
90 it doesn't have to rewrite the whole file if status flags changed | |
91 in the beginning of it. We could do that too. | |
526 | 92 - we need either From-line escaping or writing Content-Length when saving |
93 mails. | |
94 - read-only support for mailboxes where we don't have write-access | |
235 | 95 - we should try to avoid completely rebuilding indexes unless they're |
96 corrupted. especially if we later want to support some read-only boxes | |
97 and keep the mail flags only in index file. fsck() could verify that | |
98 records are ok, and that if data file isn't ok the record is deleted. | |
99 - if .customflags is removed and Maildir files have custom flags, add | |
100 "unknown1" "unknown2" etc. flags to .customflags file for each found flag | |
101 - debug: index could be read-only mmaped when it's not locked. | |
376
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
102 - when index is being rebuilt, it always complains about tree/modifylog |
313 | 103 having wrong indexid.. |
376
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
104 - we sometimes leave some space in the index files (memory alignment, |
337 | 105 extra_space). we should keep those bytes zeroed to make sure nothing |
106 sensitive is left there. | |
474 | 107 - log transferred amount of bytes. just a bit problematic who logs it, since |
108 imap-login does SSL transfers but not unencrypted.. could also log SSL | |
109 settings (especially compression). | |
110 - if we wanted to support huge mailboxes with small memory usage, it'd now | |
111 be possible if we just instead of mmap()ing the whole index files would | |
112 have maybe 3-4 256k mmap()ed areas which we move based on the need. | |
113 - should work fine with .imap.index and .imap.index.data | |
114 - log files aren't affected by mailbox size | |
115 - if the tree file also kept constantly moving the nodes so that | |
116 tree's root was at the beginning of the file, we could use this mmap | |
117 caching with it too | |
118 - but, is it worth the trouble really? the OS can do all this itself, | |
119 only thing we're doing is keeping the processes virtual memory usage | |
120 small. | |
0 | 121 |
122 lib-storage: | |
123 - support multiple mailbox formats and locations for one user. that would | |
124 require support for multiple MailStorages, and since we're chroot()ed, | |
125 usually the only way to communicate with others would be to create | |
126 RemoteMailStorage which would use TCP/UNIX sockets to connect to another | |
127 imap session. | |
376
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
128 - SEARCH: |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
129 - CHARSET support, iconv()? also means we need to parse the charset stuff |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
130 in headers. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
131 - could optionally support scanning inside file attachments and use |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
132 plugins to extract text out of them (word, excel, pdf, etc. etc.) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
133 - use a trie index for fast text searching, like cyrus squat? |
0 | 134 - DELETE/RENAME: when someone else had the mailbox open, we should |
135 disconnect it (when stat() fails with ENOENT while syncing) | |
376
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
136 - RENAME INBOX isn't atomic with Maildir. And in general, RENAME can't |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
137 move mails between different storages. Maybe support doing also using |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
138 COPY + delete once COPY is atomic? |
337 | 139 - maildir: atomic COPY could be done by having transaction directories. |
140 Make a "tra" directory at the same level as cur/new/tmp, and make it | |
141 have subdirectories in the same way as tmp has temp files. Directory | |
142 begins with a "." as long as transaction isn't finished, rename()ing | |
143 it away finishes it. All mails under finished dirs must be moved into | |
144 new/ directory and the directory removed by any process who notices them. | |
61 | 145 - we should probably do some light checking that appended mails actually |
146 look like valid rfc822 mails.. | |
235 | 147 - maybe limit the length of custom flags? we don't really have a problem |
148 with them, but with mbox a long X-IMAPbase could break something.. Maybe | |
149 configurable, default to 50 chars? | |
337 | 150 - we could send flag changes after all commands by making expunge/flags sync |
151 counters separate for modify log. flags would need to update the seq | |
152 though, too slow? | |
153 - things calling message_send() could verify that it wrote enough data. | |
480 | 154 if not, fill the rest with spaces and return failure. -1 = error, |
155 0 = filled, 1 = ok. | |
0 | 156 |
157 general: | |
474 | 158 - sieve (rfc3028) |
337 | 159 - rfc2231 continuation support |
0 | 160 |
526 | 161 - ulimit / setrlimit() should be set somewhere for imap process. and maybe |
162 also separate limits for data stack and mem pools | |
0 | 163 - create indexer binary |
235 | 164 - SIGHUPing master should reload the configuration .. killing imap-auth and |
165 imap-login processes? or just signal imap-login to stop accepting new | |
166 connections and let it kill itself | |
299 | 167 - setting for choosing mbox locking methods |
376
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
168 - imap-login leaks I/O descriptors when killed, that's because the SSL |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
169 fds are destroyed lazily.. should we bother fixing..? |
235 | 170 - logins are always sent now using syslog(), we'd need to have i_info() |
171 or something so they could also be written to log files.. also make it | |
172 possible to log into different log than errors. | |
173 - should we bother checking if there's invalid 8bit headers in | |
340 | 174 BODY/BODYSTRUCTURE output and converting them to quoted printable? well, |
175 several of them are now but not all.. | |
235 | 176 - update docs/index.txt |
337 | 177 - support Maildir++ quota |
178 - maybe give more untagged NO/ALERT replies? like when mailbox is in | |
474 | 179 inconsistent state. and when UIDs are reordered because they're too large. |
497 | 180 - *_strdup_printf() functions could use C99 compatible vsnprintf() instead of |
181 printf_string_upper_bound(). | |
182 - imap/ and lib-imap/ should allow infinite number of custom flags, it's | |
183 storage's problem if it can't handle too many of them. | |
61 | 184 |
185 auth / login: | |
337 | 186 - kchuid, SRP, anonymous SASL |
61 | 187 - PAM: support some options so /etc/passwd-lookup isn't needed. uid=x, gid=y, |
188 mailroot=/var/mail. maildirs should be then created when needed | |
0 | 189 - Digest-MD5: support integrity protection, and maybe crypting. Do it |
190 through imap-login like SSL is done? | |
191 - imap-auth should limit how fast authentication requests are allowed from | |
192 login processes. especially if there's one login/connection the speed | |
235 | 193 should be something like once/sec. also limit how fast to accept new |
194 connections. | |
376
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
195 - Diffie Hellman parameters should be regenerated once in a while |
61 | 196 - HIGH: support executing each login in it's own process, so if an exploit |
197 is ever found from it, the attacker can't see other users' passwords. | |
376
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
198 - master should limit number of login processes to max_logging_users, |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
199 killing old processes when limit is reached |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
200 - master should try to keep login_processes_count extra processes all |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
201 the time |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
202 - login should notify master after it accept()s, and it must close the |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
203 listening socket immediately |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
204 - Diffie Hellman parameters for SSL need to be somehow transferred |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
205 between login processes. It's too slow if they're generated every time, |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
206 and I'd rather not link SSL libs to imap-master. |
18 | 207 |
208 cleanups / checks: | |
209 - grep for FIXME | |
210 - check if t_push()/t_pop() should be added somewhere | |
211 - allocating readwrite pools now just uses system_pool .. so pool_unref() | |
212 can't free memory used by it .. what to do about it? at least count the | |
235 | 213 malloc/free calls and complain if at the exit they don't match |
61 | 214 - ..wonder what it would look like if I did s/FooBarBaz/struct foo_bar_baz/.. |
215 - HIGH: Make sure messages of size INT_MAX..UINT_MAX (and more) work | |
376
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
216 correctly with 32bit file offsets. virtual_size can also overflow making |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
217 it less than physical_size. |
96 | 218 - create env_put() and env_clean() |
235 | 219 - nearest_power() could be problematic with things that want it for ints, |
220 not size_t.. | |
474 | 221 - when sending lots of data with io_buffer_send(), it does a lot of |
222 io_add() and io_remove()s. and io_remove() just marks it destroyed, so | |
223 it may creates lots of IOs before the next ioloop run.. Though now it | |
224 doesn't matter much since we're corked and we don't create the IOs, | |
225 but ioloop should probably be fixed anyway. | |
0 | 226 |
227 optional optimizations: | |
228 - provide some helper binary to save new mail into mailboxes with CR+LF | |
229 line breaks? | |
230 - disk I/O is the biggest problem, so split the mail into multiple computers | |
231 based on user and have a proxy in the front redirecting the connection. | |
232 cyrus had something like this except a lot more complicated - it tried | |
233 to fix the problem of having shared mailboxes. we have the same problem | |
293 | 234 with local shared mailboxes as we don't use same UID for everyone's mail |
235 and we may be chrooted, so locally we could communicate with UNIX sockets, | |
236 remotely that could be done with TCP sockets. | |
376
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
237 |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
238 capabilities: |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
239 - preferrably all should be possible to #ifdef away by a configure |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
240 option (--without-capabilities=acl,namespace,...) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
241 - possibility to disable them from config file |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
242 - acl (rfc2086, draft-ietf-imapext-acl), namespace (rfc2342) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
243 - probably do it like cyrus. "user.<username>" to access other |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
244 users, with "" defaulting to "user.<myself>". these should be |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
245 configurable however. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
246 - shared namespaces? maybe configurable in config file |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
247 - easiest way to do ACL would be to use unix modes, but is that |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
248 useful at all? Well, ACL2 has a bit better support for that, so |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
249 maybe we could support it. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
250 - otherwise gets a bit trickly, we could keep all mail in "imapmail" |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
251 group and 0600/0700 mode by default, but when mail is shared to others, |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
252 the group read/write access bits would be set. or alternatively we |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
253 could launch another imap process to handle it, which we should support |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
254 anyway. ACLs could be stored into ".acl" ascii file in each folder. |
480 | 255 - support for private and shared flags, configurable by mailbox admin. |
256 this isn't in any draft yet, but ACL2 author was going to create one. | |
257 [SHAREDFLAGS (...)] would specify which ones are shared, don't know yet | |
258 how they would be configured. | |
376
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
259 - quota (rfc2087, draft-cridland-imap-quota) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
260 - give filesystem values only to admins |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
261 - support for Maildir++, probably no need to support more. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
262 quota capability supports complex quota configuration, but if |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
263 no mailer supports them we probably shouldn't bother either |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
264 - id (rfc2971) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
265 - must be configurable what gets sent, default to only name=Dovecot |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
266 - separate pre/post-login settings |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
267 - optionally log configured parts of the client information, but only |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
268 once, probably at the same time as logging "Logged in", |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
269 "Disconnected", etc. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
270 - remember to force truncating values longer than 30 chars, |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
271 especially before logging |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
272 - mailbox-referrals (rfc2193) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
273 - this is useful whenever we would otherwise need to make the |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
274 connection ourself. for example load balancing and shared mailboxes |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
275 requiring another UID to run. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
276 - this rfc defines no exact way for server to detect if client |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
277 supports referrals or not. I don't think there's much point in |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
278 supporting only referrals, as most clients don't support them. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
279 Instead we should return referrals when we know that client |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
280 supports them, otherwise do the connecting ourself. If client |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
281 issues RLIST or RLSUB command, it's safe to assume it supports |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
282 referrals. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
283 - for load balancing this works just fine, but what about shared |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
284 mailboxes which require different UID? If we login with our own |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
285 username, we end up with our own UID instead of what we wanted. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
286 IMAP URLs don't support separated authorization id which would |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
287 have made this very easy.. We could give the "userid@group" as |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
288 userid, but clients probably treat it as different userid and |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
289 ask the password again. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
290 - problems, problems, .. maybe not worth the trouble. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
291 - literal+ (rfc2088) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
292 - simple. in case of invalid data, just disconnect client. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
293 - idle (rfc2177) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
294 - just call the syncing every few seconds (configurable) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
295 - with Linux we can use fcntl() and F_SETSIG to provide fast checks. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
296 just make sure sync() still won't be called more than once in a |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
297 few seconds |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
298 - uidplus (rfc2359) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
299 - uid expunge: no problem |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
300 - append, copy: oh no. these would slow down things and make |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
301 handling them much more difficult. currently we just store the |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
302 mails to destination mailbox without touching the indexes. since |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
303 we'd need to know their final UID, we'd have to lock the indexes |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
304 and mbox) fsck() first and append() next to find out the uid, |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
305 maildir) move the mail directly into cur/ and index it. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
306 - unselect (no draft or anything AFAIK) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
307 - like CLOSE, but doesn't expunge mails. easy. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
308 - drafts: |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
309 - http://www.imc.org/ids.html |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
310 - multiappend (draft-crispin-imap-multiappend) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
311 - shouldn't have any problems |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
312 - listext (draft-ietf-imapext-list-extensions) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
313 - well, it expired January 2002.. I like it though. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
314 - children (draft-gahrns-imap-child-mailbox) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
315 - I like listext more.. They have the same functionality though, |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
316 so pretty easy to support both if needed |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
317 - annotate (draft-ietf-imapext-annotate) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
318 - per-message annotations. this will be major change. especially |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
319 because currently there's no suitable storage for them, and |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
320 they'll probably change all the time.. maybe if we moved into |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
321 berkeley db to store the .data file and these annotations. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
322 - annotatemore (draft-daboo-imap-annotatemore) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
323 - server and per-mailbox annotations. much easier than |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
324 per-message annotations, but they'd be easier to place into |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
325 db as well. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
326 - binary (draft-nerenberg-imap-binary) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
327 - perhaps not too useful. I'd like to make Dovecot fully |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
328 binary-safe though. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
329 - sort (draft-ietf-imapext-sort) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
330 - basically sorted SEARCH, requiring CHARSET support for |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
331 UTF-8 and ASCII |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
332 - we could create alternative binary tree file(s) for different sort |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
333 conditions, ".tree-sort" or something. or if we decide to just |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
334 keep it in memory, btree could still be best choice. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
335 - required by squirrelmail (webmail) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
336 - thread (draft-ietf-imapext-thread) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
337 - basically SORT but reply with thread lists |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
338 - possibly use a binary tree too .. or maybe it's enough to use the |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
339 sort-tree and then just pick up the references separately? have to |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
340 check more carefully later. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
341 - view (draft-ietf-imapext-view) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
342 - slow, complex, luckily draft expired almost two years ago. |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
343 i hope i don't have to implement this :) |
fd1fc4cf11b7
updated with lots of new capability comments
Timo Sirainen <tss@iki.fi>
parents:
340
diff
changeset
|
344 - can be done client-side just fine (evolution's virtual folders) |