Apple Mail.app not playing nicely with Cyrus on large mailboxes

Gregory Harris gharris at math.ku.edu
Wed Jan 19 15:56:42 EST 2005


Hi.  Last Sunday I migrated all of my users mailboxes from a traditional 
BSD unix mail setup to Cyrus-IMAP.  The majority of my users use the 
Apple Mail.app client.  I am having problems with a couple of them (one 
in particular that has a huge INBOX, some with attachments).  When she 
opens her e-mail, the client fails to retreive her mail, and drops the 
connection.  The logs say something similar to:

Jan 18 15:31:32 bayes imap[31658]: accepted connection
Jan 18 15:31:33 bayes imap[31539]: accepted connection
Jan 18 15:31:33 bayes imap[31539]: login: bozenna.math.ku.edu 
[129.237.130.170] bozenna GSSAPI User logged in
Jan 18 15:31:33 bayes imap[31539]: open: user bozenna opened INBOX
Jan 18 15:31:33 bayes imap[31539]: open: user bozenna opened INBOX
Jan 18 15:31:33 bayes imap[31658]: accepted connection
Jan 18 15:31:33 bayes imap[31658]: login: bozenna.math.ku.edu 
[129.237.130.170] bozenna GSSAPI User logged in
Jan 18 15:31:33 bayes master[4894]: process 31539 exited, signaled to 
death by 6
Jan 18 15:31:33 bayes master[4894]: service imap pid 31539 in BUSY 
state: terminated abnormally

I increased the prefork value from 5 to 50 (in slow increments) and it 
appears to be able to download more headers but still drops the 
connection.  The version of Mail.app that I used was earlier version and 
up to the latest, 1.3.9 (v619).

I have had a similar problem with one user that uses Ximian Evolution 
1.4.6.  Same error message on the server side, on the client side, says 
something to the effect of "connection unexpectedly dropped".  I know 
this is probably related to bad IMAP programming on the client side, but 
since most of my users (including my boss) use Mail.app to read mail I 
want to make sure this is going to continue to work for everyone as the 
spam levels and sizes of INBOXes rise.  What puzzles me even more is 
that MacOS X Server 10.3 uses Cyrus-IMAP, and I found some of the 
settings to make Cyrus work better with Mail.app in configuration files 
on my XServe, but my real mail server is actually on a Red Hat 
Enterprise 3 box.

I would greatly appreciate any help you could provide on this matter.

Here are my /etc/imapd.conf and /etc/cyrus.conf files for reference:

/etc/imapd.conf:

altnamespace: yes
configdirectory: /var/lib/imap
partition-default: /var/spool/imap
admins: cyrus
sievedir: /var/lib/imap/sieve
sendmail: /usr/sbin/sendmail
hashimapspool: true
sasl_pwcheck_method: saslauthd
sasl_mech_list: PLAIN GSSAPI
timeout: 30
poptimeout: 10
reject8bit: no
tls_cert_file: /usr/share/ssl/certs/mail.math.ku.edu.crt
tls_key_file: /usr/share/ssl/certs/mail.math.ku.edu.key
tls_ca_file: /usr/share/ssl/certs/sf_issuing.crt

/etc/cyrus.conf:

# standard standalone server implementation
 
START {
  # do not delete this entry!
  recover       cmd="ctl_cyrusdb -r"
 
  # this is only necessary if using idled for IMAP IDLE
#  idled                cmd="idled"
}
 
# UNIX sockets start with a slash and are put into /var/lib/imap/sockets
SERVICES {
  # add or remove based on preferences
  imap          cmd="imapd" listen="imap" prefork=50
  imaps         cmd="imapd -s" listen="imaps" prefork=3
  pop3          cmd="pop3d" listen="pop3" prefork=3
  pop3s         cmd="pop3d -s" listen="pop3s" prefork=1
  sieve         cmd="timsieved" listen="sieve" prefork=0
 
  # these are only necessary if receiving/exporting usenet via NNTP
#  nntp         cmd="nntpd" listen="nntp" prefork=3
#  nntps                cmd="nntpd -s" listen="nntps" prefork=1
 
  # at least one LMTP is required for delivery
#  lmtp         cmd="lmtpd" listen="lmtp" prefork=0
  lmtpunix      cmd="lmtpd" listen="/var/lib/imap/socket/lmtp" prefork=1
 
  # this is only necessary if using notifications
#  notify       cmd="notifyd" listen="/var/lib/imap/socket/notify" 
proto="udp" prefork=1
}
 
EVENTS {
  # this is required
  checkpoint    cmd="ctl_cyrusdb -c" period=30
 
  # this is only necessary if using duplicate delivery suppression,
  # Sieve or NNTP
  delprune      cmd="cyr_expire -E 3" at=0400
 
  # this is only necessary if caching TLS sessions
  tlsprune      cmd="tls_prune" at=0400
}
 
LIMITS {
  imaplimit     value=0
}
 

-- 

Gregory Harris
Network Specialist
Department of Mathematics
The University of Kansas
gharris at math.ku.edu
(785) 864-7311


---
Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html




More information about the Info-cyrus mailing list