[Dovecot] maildirsize quota counting locking account?

Daniel Watts d at nielwatts.com
Wed Dec 19 13:42:20 EET 2007


Hi,

I've just straced a dovecot imap process and found one thread sitting 
there doing hundreds and hundreds of maildirsize updates as follows:

> 
> open("/home/virtual/mydomain.com/home/admin/Maildir/maildirsize", O_RDWR|O_APPEND) = 7
> read(7, "10485760000S\n1562717408 107547\n-"..., 5120) = 2446
> read(7, "", 2674)                       = 0
> write(1, "* 1810 FETCH (UID 1815 RFC822.SI"..., 2031) = 2031
> setsockopt(1, SOL_TCP, TCP_CORK, [0], 4) = 0
> epoll_wait(4, {{EPOLLIN, {u32=101056896, u64=2370923004288}}}, 5, 2584) = 1
> read(0, "2838 UID fetch 1816 (UID RFC822."..., 2974) = 51
> setsockopt(1, SOL_TCP, TCP_CORK, [1], 4) = 0
> close(7)                                = 0
> open("/home/virtual/mydomain.com/home/admin/Maildir/maildirsize", O_RDWR|O_APPEND) = 7
> read(7, "10485760000S\n1562717408 107547\n-"..., 5120) = 2446
> read(7, "", 2674)                       = 0
> open("/home/virtual/mydomain.com/home/admin/Maildir/.Folders.ALERTS.Payments/cur/1195331425.M52296P11937V0000000000000807I000000001015A5EB_0.tg3,S=2079:2,Sa", O_RDONLY) = 10
> fstat(10, {st_mode=S_IFREG|0600, st_size=2079, ...}) = 0
> pread(10, "Return-Path: <apache at tg7.alumina"..., 4096, 0) = 2079
> pread(10, "", 2017, 2079)               = 0
> pread(10, "Return-Path: <apache at tg7.alumina"..., 4096, 0) = 2079
> write(1, "* 1811 FETCH (UID 1816 RFC822.SI"..., 2180) = 2180
> close(10)                               = 0
> stat("/home/virtual/mydomain.com/home/admin/Maildir/.Folders.ALERTS.Payments/new", {st_mode=S_IFDIR|0700, st_size=6, ...}) = 0
> stat("/home/virtual/mydomain.com/home/admin/Maildir/.Folders.ALERTS.Payments/cur", {st_mode=S_IFDIR|0700, st_size=618496, ...}) = 0
> close(7)                                = 0
> open("/home/virtual/mydomain.com/home/admin/Maildir/maildirsize", O_RDWR|O_APPEND) = 7
> read(7, "10485760000S\n1562717408 107547\n-"..., 5120) = 2446
> read(7, "", 2674)                       = 0
> write(1, "2838 OK Fetch completed.\r\n", 26) = 26
> setsockopt(1, SOL_TCP, TCP_CORK, [0], 4) = 0
> epoll_wait(4, {}, 5, 800)               = 0
> epoll_wait(4, {{EPOLLIN, {u32=101056896, u64=2370923004288}}}, 5, 5000) = 1
> read(0, "2839 UID fetch 1817 (UID RFC822."..., 2923) = 51
> setsockopt(1, SOL_TCP, TCP_CORK, [1], 4) = 0
> close(7)                                = 0
> open("/home/virtual/mydomain.com/home/admin/Maildir/maildirsize", O_RDWR|O_APPEND) = 7

During this time (at least 5-10 minutes) , I could not check the account 
via my email client Thunderbird. Clicking on an email would just sit 
there as if it is loading but nothing would happen - the read pane just 
remains blank.

Is Dovecot going through every email (of many 10,000's) and counting up 
the sizes? Could this be made more efficient so it doesn't lock the account?

This could I guess be a Thunderbird issue - it is a disappointingly 
imperfect client.

Dan



More information about the dovecot mailing list