[Dovecot] Maildir Subsystems
Greetings - new to the list, so apologies of I'm asking questions that have been brought up before.
I work for a large email provider, currently using qmail, vpopmail and courier-imap. We tend to make fairly regular customizations of the software, and if you folks have any knowledge of courier's code layout, you probably can understand why we hate working on it.
Anyway, I am looking at the possibility of migrating to dovecot, after a quick review of the code layout. It is MUCH nicer to read. But I have a few specific questions:
We customize our maildir system fairly heavily, and I'm wondering where the maildir code is located. Specifically, anywhere the app actually does work on disk related to folders, mail content and quotas. While I have reviewed the code in brief, I thought it would be easier to poke this list to get pointed in the right direction.
Courier works quite well over NFS for us, and I'm curious why your documentation covers NFS more specifically. What aspects of the filesystem are normally used that don't translate easily to work over NFS? Do you use stuff like inotify or atimes?
If anyone has any suggestions on how to migrate tens of thousands of imap users from courier to dovecot in a few hour window, I'd like to hear them :)
Thanks, Aaron Wiebe
On Feb 22, 2008, at 8:23 PM, Aaron Wiebe wrote:
- We customize our maildir system fairly heavily, and I'm wondering where the maildir code is located. Specifically, anywhere the app actually does work on disk related to folders, mail content and quotas. While I have reviewed the code in brief, I thought it would be easier to poke this list to get pointed in the right direction.
src/lib-storage/index/maildir/ has all the maildir specific code. In
v1.1 the mailbox listing is separated from mailbox storage handling to
src/lib-storage/list/. A lot of code is common between all mailbox
backends though.
Quota is implemented as a plugin in src/plugins/quota/ and src/plugins/ imap-quota/.
- Courier works quite well over NFS for us, and I'm curious why your documentation covers NFS more specifically. What aspects of the filesystem are normally used that don't translate easily to work over NFS? Do you use stuff like inotify or atimes?
inotify is used, but not relied on. The main problem anyway with NFS
is its caching. If two servers modify the same mailbox at the same
time, they may return data to Dovecot that had already been changed by
another server. This is more of a problem with Dovecot than with
Courier because Dovecot does more complex file handling than Courier.
Especially Dovecot's index files give easily problems if caching works
unexpectedly.
Dovecot v1.1 handles NFS a lot better than v1.0 and I'd suggest not
bothering with v1.0 anymore if you use NFS.
- If anyone has any suggestions on how to migrate tens of thousands of imap users from courier to dovecot in a few hour window, I'd like to hear them :)
- Call Courier migration script (http://wiki.dovecot.org/Migration/Courier
- from post-login script (http://wiki.dovecot.org/PostLoginScripting)
for the user logging in. - Stop Courier
- Start Dovecot
Downtime: a couple of seconds. :)
Hey Timo, thanks for the quick response...
On Fri, Feb 22, 2008 at 4:50 PM, Timo Sirainen <tss@iki.fi> wrote:
src/lib-storage/index/maildir/ has all the maildir specific code. In v1.1 the mailbox listing is separated from mailbox storage handling to src/lib-storage/list/. A lot of code is common between all mailbox backends though.
Quota is implemented as a plugin in src/plugins/quota/ and src/plugins/ imap-quota/.
I realize I'm probably not looking deep enough, but after a quick scan of how you lay out the different backends, I thought it might be easier for us to actually just implement our own backend rather than modifying the existing maildir implementation. I'd provide more details, but for legal reasons, I can't (yet).
Is there a rough document of the abstraction between the backends that I could read, or can you provide an overview of that layer - or point me in the right direction?
Dovecot v1.1 handles NFS a lot better than v1.0 and I'd suggest not bothering with v1.0 anymore if you use NFS.
Righto, I'll stick to concentrating on 1.1.
- Call Courier migration script (http://wiki.dovecot.org/Migration/Courier
- from post-login script (http://wiki.dovecot.org/PostLoginScripting) for the user logging in.
- Stop Courier
- Start Dovecot
Nifty, that makes life easy. Thanks.
-Aaron
participants (2)
-
Aaron Wiebe
-
Timo Sirainen