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. :)