On Tue, 2009-08-25 at 12:41 -0300, fernando@dfcom.com.br wrote:
I´m suggesting the opposite, to not have an abstraction layer. The abstraction layer would be the proxy - dovecot does the abstraction layer. When I´m telling 'proxy' I meaning something like the proxy feature of the dovecot.
Dovecot needs to read/write data, so the part of Dovecot that does that is the filesystem abstraction layer. Or if you'd prefer it could be called I/O layer. On top of that you could build all kinds of I/O accesses (all running in Dovecot processes):
- regular filesystem
- database
- your proxy thingy
And in my head the final solution is very 'simple' (despite of its hard programming work). Dovecot just access 'in parallel' a set of servers, requesting their informations (really, with imap connection) and caches them - the results (maybe in some database, as you suggested). It would be an extension of the proxy feature that already exists at dovecot.
Well.. This is what I initially thought you might have meant, but.. You wanted to distribute one user's mails across multiple servers, right? So they would exist in multiple different servers and Dovecot would access them via IMAP and somehow gather them together and show to user? That would be horribly difficult to implement via IMAP.
I have thought about implementing a caching IMAP proxy though. But the main use of that would be if the primary server was somewhere with higher latency or lower bandwidth. And implementing even that is going to take a lot of work.