what you have run into is a limit in the ext2/3 fs on the max number of
directory entries you can have.

there are patches out there for cyrus to create a second tier of
directories rather then having all mailboxes in the user directory you
have user/a user/b user/c etc (or in your case /1 /2 /3 etc) to avoid not
only these problems, but also the problem that ext2/3 does sequential
seaches through the directory so with this many entries you will already
be very slow.

also take a look at reiserfs and XFS as possible candidates for you to use
for your mailboxes, both of them have very different structures that are
designed to handle the large numbers of directories problem better.

David Lang


On Sun, 24 Feb 2002, Andres Maduro wrote:

> Date: Sun, 24 Feb 2002 23:16:06 -0800
> From: Andres Maduro <[EMAIL PROTECTED]>
> To: [EMAIL PROTECTED]
> Subject: Too many users with Cyrus IMAP
>
> Hi,
>
> I have installed Cyrus 2.0.16 on Red Hat 7.2 with the standard SASL
> cyrus-sasl-1.5.  I have been able to use it successfully and create perl web
> administration tools for managing mailboxes.
>
> I am currently doing a stress test, I need to be able to handle more than
> 100 thousand users on this server.  I modified Cyrus Imap code so it can
> accept numeric accounts which I need as I am creating emails for a cellular
> company ([EMAIL PROTECTED]).  I made a perl script to create 100000
> accounts.  I am using ext3 filesystem under linux.  After the user number
> 31948 was created, no more accounts where created.  Examining the imapd.log,
> I found that it was complaining about "too many links error", see below
> extract from imapd.log:
>
> Feb 24 22:45:54 mail imapd[22212]: abort_txn: aborting txn 2147683085
> Feb 24 22:45:54 mail imapd[22212]: myfetch: starting txn 2147683086
> Feb 24 22:45:54 mail imapd[22212]: myfetch: reusing txn 2147683086
> Feb 24 22:45:54 mail imapd[22212]: mystore: reusing txn 2147683086
> Feb 24 22:45:54 mail imapd[22212]: IOERROR: creating directory
> /var/spool/imap/user/01000032123: Too many links
>
> Any help is greatly appreciated.
>
> It would be nice if we could split /var/spool/imap/user on several
> partitions, is this possible ?  What options do I have ?
>
> Following I will show several configurations files I am using:
>
> /etc/imapd.conf -----------------------------
> configdirectory: /var/imap
> partition-default: /var/spool/imap
> admins: cyrus root apache andres
> sasl_pwcheck_method: sasldb
> #sasl_auto_transition: yes
> sendmail: /usr/sbin/sendmail
> ----------------------------------------------
>
> /etc/cyrus.conf  -------------------------------------
> # standard standalone server implementation
>
> START {
>   # 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
> SERVICES {
>   # 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
> #  lmtp         cmd="lmtpd" listen="lmtp" prefork=0
>   lmtpunix      cmd="lmtpd" listen="/var/imap/socket/lmtp" prefork=0
> }
>
> EVENTS {
>   # 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
> }
> ----------------------------------------------------------------------------
>
> Best regards,
>                         Andres Maduro
>

Reply via email to