Hi.

We have used Cyrus for some time now, since 1.5.x to 2.0.12
We scale the mailbox servers as we require.
Just a matter of adding another box with Cyrus installed.

Example:  cyrus1 , cyrus2,  cyrus3 etc, etc

Then we have to route mails to the right server.

To achieve this we use LDAP where attributes about users are defined.
For example, a user called aghaffar@domain may have mailbox on cyrus1
which another user called chris may have mailbox on a server called cyrus22

In LDAP we use the maildrop entry to route mails to the correct server.
Example from my entry
------------------
dn: uid=aghaffar_ispman_net, domain=ispman,net, o=ispman
uid: aghaffar_ispman_net
mailacceptinggeneralid: [EMAIL PROTECTED]
mailacceptinggeneralid: [EMAIL PROTECTED]
maildrop: [EMAIL PROTECTED]

In this example, our SMTP servers
accept mails to addresses [EMAIL PROTECTED] and [EMAIL PROTECTED]
and route it to [EMAIL PROTECTED]


As for retrieving mail, we have an attribute called maildrophost defined.
Another look at the example with maildrophost.
dn: uid=aghaffar_ispman_net, domain=ispman,net, o=ispman
uid: aghaffar_ispman_net
mailacceptinggeneralid: [EMAIL PROTECTED]
mailacceptinggeneralid: [EMAIL PROTECTED]
maildrop: [EMAIL PROTECTED]
maildrophost: cyrus1.domain

Now on our main relay servers mail.ispman.net (more than one servers with dns
round robin) we accept IMAP connections
which are handled by a software called perdition
http:;//perdition.sourceforge.net
This software acts as an IMAP/POP proxy and tunnels the connection to the
correct server.

Example: user aghaffar_ispman_net connects to mail.ispman.net
perdition accepts the connection and asks the LDAP server to
retrieve value of maildrophost where uid=aghaffar_ispman_net
LDAP server returns cyrus1.domain
Perdition proxies the connection to cyrus1.domain.

This way
* the users dont have to know where their mailbox is (which server), they just
connect to mail.domain
* Admin can move mailboxes from one server to another and simpy modify the
values in LDAP for the user
* We achieve scaling  as we grow, without investing into large machines.




As for redundancy, you can look into LinuxHA etc. (double the machines)
OR

Setup external Fibrechannel storage that is shared with all boxes using GFS
etc.

Example: you may have something like this on your shared storage
/cyrus1/
/cyrus2/

Each partition / directory acts as the partition for that server.
cyrus1.ispman.net used /cyrus1/var/spool/mail
partition-default: /cyrus1/var/spool/mail

(I havent tried it yet)


now, if cyrus1 (the box) goes down, then any of the cyrus cluster members
(example: cyrus22) can take over the IP address, mount /cyrus1 and fire-up
another master daemon that listens to that specific IP address and serves.



If you want to go in that direction and need some help let me know.

regards


AG











Barbara Greenwood wrote:

> Hi,
>
> I've recently joined a project supporting & developing a web-based email
> system which uses Cyrus (1.5.19) as the mail server. We currently have
> nearly 100,000 accounts (not all of them active) - Cyrus is rapidly becoming
> the bottleneck on the system. We would like to expand to support 500,000
> accounts, maybe even a million eventually.
>
> Does anyone have any experience of supporting systems with these kinds of
> numbers? Is Cyrus appropriate for these volumes? How can we build in
> redundancy (i.e. keeping the system up even if the box goes down)?
>
> Also, some of my colleagues have suggested moving to Courier instead as they
> think this would give advantages in performance. However there would be a
> big hit involved while we migrated. Does anyone have hands-on knowledge of
> both Cyrus and Courier, and could offer any insight?
>
> Thanks,
> Barbara

--
Atif Ghaffar
Internet Development Manager
4unet AG/SA/Ltd.
-------------------------.
        +41 21 351 53 60 ¦ voice

        +41 78 787 51 45 ¦ mobile
        +41 86 0796598972¦ fax
    http://www.4unet.net ¦ www
http://atif.developer.ch ¦ homepage
  [EMAIL PROTECTED] ¦ email



Reply via email to