[Dovecot] Quick and dirty server optimized for IMAP upload speed?

Adam McDougall mcdouga9 at egr.msu.edu
Sun Aug 30 11:07:15 EEST 2009


Adam McDougall wrote:
> Timo Sirainen wrote:
>> On Aug 28, 2009, at 8:38 PM, Adam McDougall wrote:
>>
>>> Early next week I need to upload over 100,000 emails to an IMAP 
>>> server as quickly as possible from an Outlook client. I am looking 
>>> for any methods I can use to (temporarily?) speed up the rate at 
>>> which dovecot can accept and store IMAP uploads, whether it be 
>>> storing on local disk, ram disk, etc.  I can setup a temporary 
>>> server on a laptop for example and once the upload has finished I 
>>> can use standard file copying methods to transfer the mail to 
>>> stable, permanent storage.  I haven't been able to see over about 7 
>>> msgs/sec upload speed from a local folder in any mail client to 
>>> dovecot (only NFS or ZFS backend tested so far with Maildir).  Is 
>>> there something horribly wrong with the speed I am seeing or are 
>>> there just tricks I can try?  Any tips?  I'll be working on it all 
>>> weekend until I find something satisfactory.  It seems like I can 
>>> upload mails to an Exchange server quicker.  I'll setup just about 
>>> anything that my experience allows me to, I can be very resourceful 
>>> with adhoc hardware and software.
>>
>> From Dovecot's side the only thing you can do is fsync_disable=yes. 
>> The main problem is probably network latency, because Outlook doesn't 
>> support MULTIAPPEND extension (and perhaps not even LITERAL+ 
>> extension?) Did you already try running Dovecot on the same computer 
>> as Outlook (some virtual thingy or maybe it works in cygwin)?
>>
> I just tried fsync_disable=yes but with NFS and had to turn off 
> mail_nfs_index = yes as well but the speed was the same.  Do you think 
> it would be different with a UFS or ZFS backend with fsync_disable?  I 
> have not tried running dovecot on the same computer. When you mention 
> dovecot+cygwin I think of the reported issues in the past on the 
> mailing list and don't know if they were resolved.  I could try 
> dovecot in virtualbox I suppose (I put it on my list to try).
I did a lot of testing today and found some things.

The two biggest real bottlenecks:
- Thunderbird is just slow at uploading to IMAP.  With a bunch of small 
msgs it only does a few per second and you can tell the server is 
waiting for something to do.  Outlook is considerably faster.  Other 
clients not tested.
- Perdition (IMAP proxy), at least in my current setup, slows down the 
mail upload speed around 50%.

Non-bottlenecks:
- fsync (I can't measure the difference at the client, but on the server 
I can see the behavior change)
- filesystem (nfs/ufs/zfs all performed about the same)
- server cpu
- imap server being over the local network as opposed to running inside 
virtualbox on the same pc

I think I am satisfied with the speeds I am seeing now for the needs I 
have next week.  Depending on the resulting speed across campus, I may 
run dovecot on a portable laptop for the upload; I'll just go around the 
perdition proxy (plan to retire that in a few weeks). 

During my testing I did notice an issue with Outlook 2003 on dovecot 1.2 
that I don't have with 1.1, I cannot delete an IMAP folder (maybe after 
clicking on it first).  I get an error about 'folder is open in another 
session'.  It happens on a Maildir store on a local filesystem or NFS 
and I only have one client accessing it.  I might have time to look into 
it properly tomorrow, but if not, probably not for a few days at least.

Unrelated:  Outlook 2003 running on Windows 7 seems to abort the upload 
after just a few hundred messages with an error message. Works on XP.

>>> Alternatively I'll take a fast way of converting Exchange email to a 
>>> tree of local mbox files which I can then run mb2md on.
>>
>> If the mails are in Exchange, can't you connect to it using IMAP?
>>
> In theory yes, but I don't have access to the actual Exchange server 
> until Monday at the earliest, and the user is using "cached exchange 
> mode" which in past experience leaves the possibility of local mail 
> which is not actually on the server due to a desync.  Unless I am sure 
> it is perfectly in sync, I've seen a second Outlook connect to 
> Exchange using the native protocols and it initiated a massive 
> deletion of mail which we had to toil to recover from obscure cache 
> files on the original client.  I don't know if an IMAP connection 
> might trigger the same issue.  For performance testing's sake, I'll 
> see if I can upload some mail to our own Exchange server and see how 
> fast an mbox capable mail client can download it.  I can do some 
> limited testing in the real environment on Monday but I'm expected to 
> do the real migration on Tuesday unless I have to cancel.  Thanks for 
> the ideas.
>



More information about the dovecot mailing list