Well, a colleague here reported spurious disconnects when attempting to check his mail via Outlook Express. I noticed that a number of his telemetry logs ended with:
03ZJ OK Completed (0.000 sec) <1076565897<03ZK IDLE >1076565897>+ idling >1076565897>* BYE Connection reset by peer Yeah, I know that a "reset by peer" means the client went away, but he was not experiencing any network connectivity problems what so ever. OK, so after searching the archives, I thought I'd try adding these two lines to our imapd.conf: timeout: 60 imapidlepoll: 0 I then did a "touch" of all our Cyrus binaries so I wouldn't have to wait for the max use limit to get reached. (Handy little feature of 2.2.3, I might add.) This morning I checked with him, and he reports that Outlook Express is now working much more smoothly. No spurious disconnects. The end? Hardly. I just now happened to notice that the load on the box was reaching levels I've never seen before. I did a truss on one of these processes, and this is what I saw: 13397: read(0, " 4 4 Z P I D L E\r\n", 4096) = 11 13397: open("/po/var/imap/msg/shutdown", O_RDONLY) Err#2 ENOENT 13397: poll(0xFFBEDD58, 1, 0) = 0 13397: fd=0 ev=POLLRDNORM rev=0 13397: write(1, 0x00151408, 31) = 31 13397: 4 4 Z P B A D U n r e c o g n i z e d c o m m a n d\r\n 13397: time() = 1076608804 13397: poll(0xFFBEDD58, 1, 40000) = 1 13397: fd=0 ev=POLLRDNORM rev=POLLRDNORM 13397: time() = 1076608804 13397: read(0, " 4 4 Z Q I D L E\r\n", 4096) = 11 13397: open("/po/var/imap/msg/shutdown", O_RDONLY) Err#2 ENOENT 13397: poll(0xFFBEDD58, 1, 0) = 0 13397: fd=0 ev=POLLRDNORM rev=0 13397: write(1, 0x00151408, 31) = 31 13397: 4 4 Z Q B A D U n r e c o g n i z e d c o m m a n d\r\n 13397: time() = 1076608804 13397: poll(0xFFBEDD58, 1, 40000) = 1 13397: fd=0 ev=POLLRDNORM rev=POLLRDNORM 13397: time() = 1076608804 13397: read(0, " 4 4 Z R I D L E\r\n", 4096) = 11 13397: open("/po/var/imap/msg/shutdown", O_RDONLY) Err#2 ENOENT 13397: poll(0xFFBEDD58, 1, 0) = 0 13397: fd=0 ev=POLLRDNORM rev=0 13397: write(1, 0x00151408, 31) = 31 13397: 4 4 Z R B A D U n r e c o g n i z e d c o m m a n d\r\n 13397: time() = 1076608804 13397: poll(0xFFBEDD58, 1, 40000) = 1 13397: fd=0 ev=POLLRDNORM rev=POLLRDNORM 13397: time() = 1076608804 13397: read(0, " 4 4 Z S I D L E\r\n", 4096) = 11 13397: open("/po/var/imap/msg/shutdown", O_RDONLY) Err#2 ENOENT 13397: poll(0xFFBEDD58, 1, 0) = 0 13397: fd=0 ev=POLLRDNORM rev=0 13397: write(1, 0x00151408, 31) = 31 13397: 4 4 Z S B A D U n r e c o g n i z e d c o m m a n d\r\n 13397: time() = 1076608804 13397: poll(0xFFBEDD58, 1, 40000) = 1 13397: fd=0 ev=POLLRDNORM rev=POLLRDNORM 13397: time() = 1076608804 13397: read(0, " 4 4 Z T I D L E\r\n", 4096) = 11 13397: open("/po/var/imap/msg/shutdown", O_RDONLY) Err#2 ENOENT Sigh. Damn, I know people like this client, but I am so friggin' sick and tired of it. So much pandering to this empire. Anyway... any thoughts as to what to try now? Should I recompile with --with-idle=no, or should I try --with-idle=idled? Would idled pose the same problems he was originally seeing with the default, using poll? Maybe in the future Cyrus should keep track of the number of errors, then forcibly disconnect if that error count went beyond a certain number? -- Amos --- Home Page: http://asg.web.cmu.edu/cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html