annotate TODO @ 300:a101127403a7 HEAD

keep exclusive lock while rewriting.
author Timo Sirainen <tss@iki.fi>
date Mon, 23 Sep 2002 14:48:29 +0300
parents 696139d3b8f6
children fd304e62e88a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
1 test:
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2 - make sure mmap()s work properly with NFS
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3 - make sure locking is done properly when opening/switching modifylog
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
4 - make sure SELECT rebuilds index properly when next_uid is near 32bit value
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
5 - make sure rfc822_parse_date() works properly
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
6 - make sure imap_match functions work properly
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
7 - make sure connection limits work
235
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
8 - make sure it's noticed by other processes if a) data file is compressed,
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
9 b) hash is rebuilt
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
10 - make sure the index's ftruncate stuff works
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
11 - make sure modify log works properly, especially switching the files
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
12
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
13 index:
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
14 - optimization:
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
15 - could hash function be better..? like uid*uid? what about changing
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
16 probe strategy from linear to something else?
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
17 - support shrinking hash file when it becomes 99% empty or so
235
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
18 - if first_hole_records == MAIL_INDEX_RECORD_COUNT() -
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
19 header->messages_count, we know we can just skip over the hole and do
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
20 another direct lookup there
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
21 - we could use tree structure to keep track of seqnumbers.. each node
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
22 would store how many subnodes it has. deleting nodes (mails) would just
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
23 update those counts. this increases the cost of lookups/inserts/deletions
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
24 but is faster when more than one hole appears in file.. is it worth it?
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
25 maybe #ifdefed away. except we could get rid of the hash file with this
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
26 as well, since it could be used to look for both sequences and uids. it
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
27 also speeds up UID range lookups when the first UIDs don't exist. use
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
28 right-threaded redblack/avl trees (we need to know all child node counts,
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
29 does that affect redblack's performance?)
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
30 - mbox:
96
fb7500933a11 0.97 released
Timo Sirainen <tss@iki.fi>
parents: 61
diff changeset
31 - if a file isn't valid mbox and it's tried to be opened, say it in one
fb7500933a11 0.97 released
Timo Sirainen <tss@iki.fi>
parents: 61
diff changeset
32 line in error log, not 6..
299
696139d3b8f6 updated
Timo Sirainen <tss@iki.fi>
parents: 293
diff changeset
33 - locking: if we set shared lock to it while we're accessing it, we could
696139d3b8f6 updated
Timo Sirainen <tss@iki.fi>
parents: 293
diff changeset
34 get it pretty reliable. this means that the mbox fd needs to be locked
696139d3b8f6 updated
Timo Sirainen <tss@iki.fi>
parents: 293
diff changeset
35 before sync() and kept locked after that until we're done with it.
696139d3b8f6 updated
Timo Sirainen <tss@iki.fi>
parents: 293
diff changeset
36 problems are:
696139d3b8f6 updated
Timo Sirainen <tss@iki.fi>
parents: 293
diff changeset
37 - we don't have a single open mbox fd, we open it multiple times
696139d3b8f6 updated
Timo Sirainen <tss@iki.fi>
parents: 293
diff changeset
38 - switching to exclusive lock may deadlock
696139d3b8f6 updated
Timo Sirainen <tss@iki.fi>
parents: 293
diff changeset
39 - because mbox-rewrite rename()s the file, the old file gets lost.
696139d3b8f6 updated
Timo Sirainen <tss@iki.fi>
parents: 293
diff changeset
40 if mailer only checks the fd lock, the new mails disappear..
696139d3b8f6 updated
Timo Sirainen <tss@iki.fi>
parents: 293
diff changeset
41 i guess the only way to fix this is to set dotlock before opening
696139d3b8f6 updated
Timo Sirainen <tss@iki.fi>
parents: 293
diff changeset
42 the mbox file.
235
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
43 - maybe support Content-Length for figuring out size of text? at least
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
44 mutt doesn't prefix "From " in outbox.. If we verify that both
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
45 Content-Length and Lines match correctly, there's quite a little chance
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
46 that it could be broken by sending them invalid (doesn't local MTA
299
696139d3b8f6 updated
Timo Sirainen <tss@iki.fi>
parents: 293
diff changeset
47 update them anyway?). Though, this may be a bit difficult to implement,
696139d3b8f6 updated
Timo Sirainen <tss@iki.fi>
parents: 293
diff changeset
48 and now that we verify the From-line better, is this even needed?
235
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
49 - rewriting could try to preserve the locations of fields it changes
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
50 instead of writing them all to end..
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
51 - mbox-rewrite rename()s the file, which breaks if the original was a
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
52 symlink. but how do we fix this? we may not have write-access to the
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
53 directory where it points to, so we'd need to manually copy it..
61
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
54 - read-only support for mailboxes where we don't have write-access? Maybe,
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
55 but don't try to use their indexes since that's way too problematic, and
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
56 probably even impossible since we can't lock it.
235
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
57 - we should try to avoid completely rebuilding indexes unless they're
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
58 corrupted. especially if we later want to support some read-only boxes
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
59 and keep the mail flags only in index file. fsck() could verify that
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
60 records are ok, and that if data file isn't ok the record is deleted.
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
61 - if .customflags is removed and Maildir files have custom flags, add
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
62 "unknown1" "unknown2" etc. flags to .customflags file for each found flag
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
63 - debug: index could be read-only mmaped when it's not locked.
299
696139d3b8f6 updated
Timo Sirainen <tss@iki.fi>
parents: 293
diff changeset
64 - if message text is modified (or indexes are corrupted), this may happen:
696139d3b8f6 updated
Timo Sirainen <tss@iki.fi>
parents: 293
diff changeset
65 Panic: file imap-bodystructure.c: line 179 (part_parse_headers):
696139d3b8f6 updated
Timo Sirainen <tss@iki.fi>
parents: 293
diff changeset
66 assertion failed: (part->physical_pos >= inbuf->offset)
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
67
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
68 lib-storage:
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
69 - support multiple mailbox formats and locations for one user. that would
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
70 require support for multiple MailStorages, and since we're chroot()ed,
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
71 usually the only way to communicate with others would be to create
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
72 RemoteMailStorage which would use TCP/UNIX sockets to connect to another
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
73 imap session.
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
74 - DELETE/RENAME: when someone else had the mailbox open, we should
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
75 disconnect it (when stat() fails with ENOENT while syncing)
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
76 - optimize SEARCH [UN]SEEN, [UN]DELETED and [UN]RECENT. They're able to
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
77 skip lots of messages based on the index header data.
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
78 - use a trie index for fast text searching, like cyrus squat?
61
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
79 - BUG: hardlink-COPY doesn't work right:
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
80 - it should generate new filename for destination folder, so copying
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
81 same message twice won't break it
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
82 - custom flags aren't copied
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
83 - maildir: atomic COPY could be done by setting a "temporary" flag into the
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
84 file's name. once copying is done, set an ignore-temporary field into
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
85 index's header. at next sync the temporary flag will be removed.
61
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
86 - we should probably do some light checking that appended mails actually
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
87 look like valid rfc822 mails..
235
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
88 - SEARCH CHARSET support, iconv()? also means we need to parse the charset
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
89 stuff in headers.
96
fb7500933a11 0.97 released
Timo Sirainen <tss@iki.fi>
parents: 61
diff changeset
90 - SEARCH could optionally support scanning inside file attachments and use
fb7500933a11 0.97 released
Timo Sirainen <tss@iki.fi>
parents: 61
diff changeset
91 plugins to extract text out of them (word, excel, pdf, etc. etc.)
61
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
92 - RENAME INBOX isn't atomic with Maildir. And in general, RENAME can't
235
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
93 move mails between different storages. Maybe support doing also using
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
94 COPY + delete once COPY is atomic?
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
95 - "UID FETCH|SEARCH|STORE *" doesn't work if latest message was deleted.
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
96 - maybe limit the length of custom flags? we don't really have a problem
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
97 with them, but with mbox a long X-IMAPbase could break something.. Maybe
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
98 configurable, default to 50 chars?
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
99 - "APPEND invalid data {5}" - says "+ OK" and after that says it's invalid.
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
100 that "+ OK" shouldn't be sent by imap-parser if LITERAL_SIZE is used..
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
101 - SEARCH should use imap-msgcache, especially for size checking
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
102
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
103 general:
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
104 - capabilities:
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
105 - acl (rfc2086)
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
106 - quota (rfc2087)
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
107 - namespace (rfc2342), id (rfc2971), mailbox-referrals (rfc2193),
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
108 literal+ (rfc2088), idle (rfc2177), uidplus (rfc2359)
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
109 - drafts: listext, children, unselect, multiappend, annotatemore
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
110 - sort, thread: are these really useful for clients? do any actually
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
111 use them? i'd think most clients want to know all the messages
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
112 anyway and can do the sorting/threading themselves.
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
113 - http://www.imc.org/ids.html
235
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
114 - sieve? (rfc-3028)
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
115 - rfc-2231 continuation support
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
116
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
117 - go through .temp files and delete them
61
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
118 - Content-Language isn't parsed correctly
235
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
119 - ulimit / setrlimit() should be set somewhere for imap process
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
120 - create indexer binary
235
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
121 - SIGHUPing master should reload the configuration .. killing imap-auth and
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
122 imap-login processes? or just signal imap-login to stop accepting new
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
123 connections and let it kill itself
61
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
124 - users should always be able to delete mail from mailbox, even if their
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
125 quota is completely full. this would require us to create the indexes
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
126 elsewhere .. in-memory should work fine?
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
127 - if index was rebuilt (because corruption was noticed), the user should be
235
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
128 disconnected because everything might have changed (unless it's noticed
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
129 while just opening the indexes).
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
130 - settings for specifying what sort of data to cache by default
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
131 (index->cache_fields)
299
696139d3b8f6 updated
Timo Sirainen <tss@iki.fi>
parents: 293
diff changeset
132 - setting for choosing mbox locking methods
235
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
133 - maybe a bit more verbose warnings for some errors, like "invalid date:
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
134 <date that was tried>". easier than sniffing the traffic.
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
135 - imap-login writes UTC timestamps to log file .. why is that?
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
136 - imap-login leaks I/O descriptors when killed (ssl_input + plain_input)
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
137 - logins are always sent now using syslog(), we'd need to have i_info()
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
138 or something so they could also be written to log files.. also make it
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
139 possible to log into different log than errors.
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
140 - should we bother checking if there's invalid 8bit headers in
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
141 BODY/BODYSTRUCTURE output and converting them to quoted printable?
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
142 - virtual mail which shows up every time we're out of disk space. but how?..
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
143 - update docs/index.txt
61
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
144
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
145 auth / login:
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
146 - SRP authentication support?
61
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
147 - PAM: support some options so /etc/passwd-lookup isn't needed. uid=x, gid=y,
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
148 mailroot=/var/mail. maildirs should be then created when needed
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
149 - vpopmail support
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
150 - Digest-MD5: support integrity protection, and maybe crypting. Do it
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
151 through imap-login like SSL is done?
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
152 - imap-auth should limit how fast authentication requests are allowed from
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
153 login processes. especially if there's one login/connection the speed
235
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
154 should be something like once/sec. also limit how fast to accept new
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
155 connections.
61
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
156 - HIGH: support executing each login in it's own process, so if an exploit
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
157 is ever found from it, the attacker can't see other users' passwords.
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
158 - master should limit number of login processes to max_logging_users,
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
159 killing old processes when limit is reached
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
160 - master should try to keep login_processes_count extra processes all
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
161 the time
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
162 - login should notify master after it accept()s, and it must close the
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
163 listening socket immediately
18
6491ac40cdf5 updated
Timo Sirainen <tss@iki.fi>
parents: 13
diff changeset
164
6491ac40cdf5 updated
Timo Sirainen <tss@iki.fi>
parents: 13
diff changeset
165 cleanups / checks:
6491ac40cdf5 updated
Timo Sirainen <tss@iki.fi>
parents: 13
diff changeset
166 - grep for FIXME
6491ac40cdf5 updated
Timo Sirainen <tss@iki.fi>
parents: 13
diff changeset
167 - check if t_push()/t_pop() should be added somewhere
61
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
168 - IOBuffer should probably be split into IBuffer and OBuffer, and maybe
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
169 making it's internals hidden .. or at least only partly visible.
18
6491ac40cdf5 updated
Timo Sirainen <tss@iki.fi>
parents: 13
diff changeset
170 - io_buffer_fd_ref() .. unref() and destroy() would close if refcount = 0?
6491ac40cdf5 updated
Timo Sirainen <tss@iki.fi>
parents: 13
diff changeset
171 annoying those close(inbuf->fd)s with open_mail()..
6491ac40cdf5 updated
Timo Sirainen <tss@iki.fi>
parents: 13
diff changeset
172 - allocating readwrite pools now just uses system_pool .. so pool_unref()
6491ac40cdf5 updated
Timo Sirainen <tss@iki.fi>
parents: 13
diff changeset
173 can't free memory used by it .. what to do about it? at least count the
235
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
174 malloc/free calls and complain if at the exit they don't match
61
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
175 - ..wonder what it would look like if I did s/FooBarBaz/struct foo_bar_baz/..
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
176 - HIGH: Make sure messages of size INT_MAX..UINT_MAX (and more) work
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
177 correctly. virtual_size can also overflow making it less than physical_size
2ffff61ee5e1 updated
Timo Sirainen <tss@iki.fi>
parents: 29
diff changeset
178 - verify memory alignment is valid when reading from index files
96
fb7500933a11 0.97 released
Timo Sirainen <tss@iki.fi>
parents: 61
diff changeset
179 - create env_put() and env_clean()
235
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
180 - nearest_power() could be problematic with things that want it for ints,
1fe8eae6fd89 updated
Timo Sirainen <tss@iki.fi>
parents: 96
diff changeset
181 not size_t..
0
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
182
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
183 optional optimizations:
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
184 - provide some helper binary to save new mail into mailboxes with CR+LF
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
185 line breaks?
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
186 - disk I/O is the biggest problem, so split the mail into multiple computers
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
187 based on user and have a proxy in the front redirecting the connection.
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
188 cyrus had something like this except a lot more complicated - it tried
3b1985cbc908 Initial revision
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
189 to fix the problem of having shared mailboxes. we have the same problem
293
21d53f6b38fc updated
Timo Sirainen <tss@iki.fi>
parents: 235
diff changeset
190 with local shared mailboxes as we don't use same UID for everyone's mail
21d53f6b38fc updated
Timo Sirainen <tss@iki.fi>
parents: 235
diff changeset
191 and we may be chrooted, so locally we could communicate with UNIX sockets,
21d53f6b38fc updated
Timo Sirainen <tss@iki.fi>
parents: 235
diff changeset
192 remotely that could be done with TCP sockets.