Guidance on Use of Reconstruct

Jim Brett jimbrett099 at
Sat Aug 26 14:04:14 EDT 2006

I'm looking into an i/o bound situation and I found that we're running 
reconstruct on new primary IMAP server after a failover i.e. batch file 
when secondary becomes primary runs reconstruct and then runs quota 
(while that server is under relatively high load handling emails).  
Original developer no longer with company but comment indicates that 
it's for a "sanity check".  We're testing internally on large system 
with 10,000 + subscribers and it takes quite a bit of time (over and 
hour) and appears to cause high %wio resulting in our system sending 
warning alarms. Is it overkill to run reconstruct (and quota) after 
every failover (which so far has never been due to cyrus being 
corrupted).  Is there a better way to check health of cyrus and, if 
doesn't look right, then run reconstruct?  Could it be a simple as our 
manual install test: telnet to port 143, login, select inbox and, if 
successful, logout and presume okay?  Is even that overkill?  Primary 
and secondary IMAP servers accessed via virtual IP and using RAID 
device.  Cyrus 2.2.12 on SunOS  5.8 Generic_117350-13 sun4u sparc 

// - - -

// contents of cyrus.conf

bash-2.03# cat ./usr/local/imapldap/util/cyrus.conf
 # do not delete these entries!
 mboxlist      cmd="ctl_mboxlist -r"
 deliver       cmd="ctl_deliver -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/imap/socket
 # add or remove based on preferences
 imap          cmd="imapd" listen="imap" prefork=0
#  imaps         cmd="imapd -s" listen="imaps" prefork=0
#  pop3          cmd="pop3d" listen="pop3" prefork=0
#  pop3s         cmd="pop3d -s" listen="pop3s" prefork=0
#  sieve         cmd="timsieved" listen="sieve" prefork=0
 # at least one LMTP is required for delivery
 lmtpunix      cmd="lmtpd" listen="/var/spool/postfix/public/lmtp" 

 # this is required
 checkpoint    cmd="ctl_mboxlist -c" period=30
  # this is only necessary if using duplicate delivery suppression
 delprune      cmd="ctl_deliver -E 3" period=1440
  # Uncomment the next entry, if you want to automatically remove
 # old messages of EVERY user.
 # This example calls ipurge every 60 minutes and ipurge will delete
 # ALL messages older then 30 days.
# enter 'man 8 ipurge' for more details
 # cleanup      cmd="ipurge -d 30" period=60

// - - -

// contents of imapd.conf

bash-2.03# cat ./usr/local/imapldap/util/imapd.conf
admins: cyrus
allowanonymouslogin: no
autocreatequota: 10240
reject8bit: no
quotawarn: 90
timeout: 30
poptimeout: 10
hashimapspool: yes
sieveuserhomedir: no
sievedir: /store/spool/sieve
configdirectory: /store/imap
partition-default: /store/spool/imap
sasl_pwcheck_method: saslauthd
mboxlist_db: skiplist
duplicate_db: skiplist
subscription_db: flat
seenstate_db: skiplist
fulldirhash: yes
lmtpsocket: /var/spool/postfix/public/lmtp
#tls_cert_file: /usr/ssl/certs/cert.pem
#tls_key_file: /usr/ssl/certs/skey.pem
#tls_ca_file: /usr/ssl/CA/usedCA.pem
#tls_ca_path: /usr/ssl/CA
duplicatesuppression: yes

More information about the Info-cyrus mailing list