升级赛勒斯和拆分邮箱

我试图从2.2.12升级到2.4.12 / 13的赛勒斯IMAP服务器。

知道我正在寻找一个很好的指导来做到这一点,因为我的实际版本是旧版本。 我想这不会只是升级版本或安装新的导入configuration,我错了吗? 我假设我需要迁移数据库信息,但不知道如何去做。

我们的主要和独特的赛勒斯服务器pipe理着超过10000个用户及其相应的邮箱。 通过新的迁移,我们希望将这个主服务器拆分成更小的服务器,以便客户端拆分邮箱。 怎样才能从Cyrus 2.2.12中导出几个邮箱呢? 我想select性地导出邮箱。

我发现“Mailsync”工具,但它看起来不像邮箱有select性。 有没有办法正确地迁移到新版本的Cyrus?

(大约八年前,我从一台旧的邮件服务器(运行uw-imapd)迁移了5万多个用户帐户到一个由三台服务器组成的新服务器“农场”,并运行了Cyrus,那时我用我的l337 Perl技术创build了一个迁移脚本,它将login到旧服务器,并通过IMAP一个用户帐户一次性复制新服务器的邮件。OpenLDAP服务器+ Perdition在这个事情的前面,决定用户应该转发到哪里(旧服务器或新服务器),这个操作是在线完成的,没有任何停机时间,这是脱节的,所以我会继续回答。)

一句警告:你要做的工作可能有点乏味,给你打一个足够短的答复也不容易。 :-)这里有几点要考虑。

你有一些工作要做。 升级赛勒斯本身并不是不可能的,但同时需要将用户从一台服务器分解到多台服务器。 从旧服务器复制到新服务器的所有内容都不起作用,因为BerkeleyDB / skiplist格式已经在中间改变了,旧的数据文件不能用于开箱即用。

当涉及到用户/邮箱列表时,最好使用ctl_mboxlist -d开关将旧服务器上的用户/邮箱信息转储为文本文件,然后使用ctl_mboxlist -u将内容加载到新服务器。 如果您只升级Cyrus,同时转移到更强大,但只有一台服务器,则情况就是如此。 可以使用rsync复制邮箱,然后在Cyrus中reconstruct -rfx user/*命令。

如果你想同时进行拆分,你可能会想尝试一下, xfermailbox命令实际上可以让你将邮箱从一台服务器移动到另一台。 如果是这样,你可以创build一个脚本,调用xfermailbox 10000次,并移动你的用户帐户,无论你想要的。

另一个提示:如果您发现迁移后某些用户找不到邮件文件夹/邮件,您可能需要reconstruct -rfx user/someaccount命令。

一切都很好,直到这,但你有没有考虑以下几点:

  • 如果你打算在多台服务器之间拆分用户,你是否有类似于Perdition或者Cyrus Murder东西来处理redirectPOP / IMAPlogin到正确的邮件服务器?
  • 如果分裂,你有OpenLDAP或其他一些集中authentication/用户pipe理?
  • 如果分裂,你有没有configuration你的Postfix或任何SMTP服务器来确定用户帐户的实际位置?
  • 你目前有性能问题吗? 10 000个用户帐户不是很多,除非你真的有一些严重的理由将用户帐户分割到多个服务器上,否则你应该仔细重新考虑这个问题。 在主动/被动故障转移模式下configuration的某种+两个半功率服务器的集中式存储在系统pipe理方面可能更为明智和简单。 当然,使用本地磁盘的多个小型服务器可能有助于传播I / O负载,但赛勒斯说'谢谢',如果你给它足够的内存和I / O不应该是一个真正的问题。
  • 如果您决定将负载拆分到多个服务器的原因是由于性能问题,请仔细检查您的Cyrus是否使用了BerkeleyDB或Skiplist for mailboxes.db等。没有经过良好调整的DB_CONFIG可能会轻易地导致性能DB_CONFIG /或导致僵局。 Skiplist更加无忧。 另外,Cyrus中的POP3实现非常rngd ,如果您的服务器没有基于硬件的随机数生成器,则在没有rngd守护进程的情况下,login可能非常慢,或者Cyrusconfiguration为使用/dev/urandom而不是/dev/random随机性。

我希望这能帮助你一点。

你给了我很好的线索跟随。

无论如何,我会回答我应该考虑的想法:

  • 我们有灭亡,但是我们正在考虑保持沉溺或者改变为nginx。
  • 我们有LDAP
  • 现在我不确定这是否应该检查并调查
  • 现在我们没有性能问题,但是我们正在增长,越来越多的客户来到我们的系统。 我们虽然这可能是由客户或客户群体分裂应该是一个很好的select。 从SysAdmin的angular度来看,这是一项繁琐的工作,但对商务和SLA来说可能是好事。 任何其他选项将收到好:)
  • 正如我以前所说,我们没有性能问题,无论如何我们正在使用BerkeleyDB

无论如何,我知道我正在做一个我们应该怎么做才能成功或迁移的计划,所以我不能尝试你提供给我的命令。

当我检查他们时我会回来的。

非常感谢!