Timo Sirainen schrieb:
- Mail processes talk to storage processes via some protocol. They can talk via UNIX socket or TCP/IP. If an existing connection can't handle the target UID, a new connection is made that either reuses an existing storage proces or creates a new one.
This sounds really, really cool! I am thinking of the possibilities of separating storage to frontend. That way one could build dynamically distributing mailboxes. Use local ressources of many storage boxes instead of using FC storages all the way. Or just "replicate" mails twice to have them redundantly stored (hadn't you the idea of a replication part, anyway?).
The big problem is what the protocol should be. Use some existing RPC protocol? It should be something extensible so that a plugin in imap process can talk to a plugin in storage process, without the base processes knowing anything about the details (e.g. imap-quota plugin asking quota usage from storage's quota plugin). In any case the client side API should be asynchronous. That can make it annoyingly difficult to use though. Wonder if I could switch to erlang or something for the imap/pop3 processes :)
Maybe one could "lend" some parts of erlang based database http://couchdb.apache.org/ ... :)
Regards, Sebastian