Назад | Перейти на главную страницу

Обновите cyrus и разделенные почтовые ящики

Я пытаюсь обновить Cyrus IMAP-сервер с 2.2.12 до 2.4.12 / 13.

Знаю, я ищу хорошее руководство, чтобы сделать это, так как моя текущая версия - это старый выпуск. Думаю, это будет не просто обновление версии или установка новой и импорт конфигурации, я ошибаюсь? Я предполагаю, что мне нужно будет перенести информацию из базы данных, но не знаю, как это сделать.

Наш основной и уникальный сервер Cyrus управляет более чем 10000 пользователями и их почтовыми ящиками. В новой миграции мы хотим разделить этот главный сервер на меньшие серверы, чтобы разделить почтовые ящики по клиентам. Как мне экспортировать всего несколько почтовых ящиков из Cyrus 2.2.12? Я хочу выборочно экспортировать почтовые ящики.

Я нашел инструменты "Mailsync", но не похоже, что они могут быть избирательными с почтовым ящиком. Есть ли способ правильно перейти на новую версию Cyrus?

(Около восьми лет назад я перенес более 50 000 учетных записей пользователей со старого почтового сервера (работающего под управлением uw-imapd) на новую «ферму» серверов, состоящую из трех серверов и работающую под управлением Cyrus. В то время я использовал свои навыки l337 Perl для создания сценарий миграции, который будет входить в систему на старый сервер и копировать почту на новый сервер через IMAP по одной учетной записи за раз. Сервер OpenLDAP + Perdition стоял перед этим, решая, куда следует перенаправить пользователя (на старый сервер или на новый сервер). Операция была проведена в режиме онлайн без простоев. Это не по теме, поэтому я продолжу свой ответ.)

Предупреждение: работа, которую вы собираетесь выполнить, может быть немного утомительной, и набрать достаточно короткий ответ для вас тоже непросто. :-) Вот несколько моментов, которые вам следует учесть.

У тебя есть дела. Само обновление Cyrus не так уж и невозможно, но разделение пользователей с одного сервера на несколько серверов одновременно требует планирования. Просто скопировать все со старого сервера на новый не получится, поскольку формат BerkeleyDB / skiplist был изменен посередине, а старые файлы данных нельзя использовать сразу после установки.

Когда дело доходит до списка пользователей / почтовых ящиков, лучше использовать ctl_mboxlist -d переключитесь, чтобы выгрузить информацию о пользователе / ​​почтовом ящике на старом сервере в текстовый файл, а затем ctl_mboxlist -u чтобы загрузить содержимое на новый сервер. Это тот случай, если вы только обновили Cyrus и в то же время перешли на более мощный, но единственный сервер. Почтовые ящики можно скопировать с помощью rsync, с последующим reconstruct -rfx user/* команда в Кире.

Если вы хотите сделать разделение одновременно, вы можете попробовать, если xfermailbox командовать в cyradm в настоящее время фактически позволяет перемещать почтовые ящики с одного сервера на другой. Если это так, вы можете просто создать скрипт, который вызывает xfermailbox 10 000 раз и перемещает ваши учетные записи пользователей куда угодно.

Еще один совет: вам, вероятно, понадобится reconstruct -rfx user/someaccount , если вы обнаружите, что после миграции какой-либо пользователь не может найти почтовые папки / письма.

До этого все в порядке, но учли ли вы следующее:

  • Если вы собираетесь разделить пользователей между несколькими серверами, у вас есть что-то вроде Perdition или Cyrus Murder позаботились о перенаправлении логинов POP / IMAP на правильный почтовый сервер?
  • В случае разделения используется ли у вас OpenLDAP или какой-либо другой централизованный механизм аутентификации / управления пользователями?
  • В случае разделения настроили ли вы свой Postfix или какой-либо другой SMTP-сервер, чтобы выяснить, где на самом деле находится учетная запись пользователя?
  • У вас сейчас проблемы с производительностью? 10 000 учетных записей пользователей - это не так уж и много, и если у вас действительно нет серьезных причин для разделения учетных записей пользователей на несколько серверов, вам следует тщательно пересмотреть это. Централизованное хранилище какого-либо типа + два полумощных сервера, настроенных в режиме активного / пассивного переключения при отказе, могут быть более разумными и более простыми с точки зрения системного администрирования. Конечно, наличие нескольких небольших серверов с локальными дисками может помочь распределить нагрузку ввода-вывода, но Сайрус говорит: «Спасибо», если вы дадите ему достаточно оперативной памяти, и ввод-вывод не должен быть реальной проблемой.
  • Если причиной вашего решения разделить нагрузку между несколькими серверами являются проблемы с производительностью, пожалуйста, дважды проверьте, использует ли ваш Cyrus BerkeleyDB или Skiplist для mailboxes.db и т. д. BerkeleyDB без хорошо настроенной DB_CONFIG может легко снизить производительность и / или привести к тупикам. Skiplist более спокойный. Также реализация POP3 в Cyrus очень требовательна к энтропии, и если ваш сервер не имеет аппаратного генератора случайных чисел, вход в систему может быть ОЧЕНЬ медленным без rngd демон, или Cyrus настроен на использование /dev/urandom вместо того /dev/random на случайность.

Надеюсь, это вам немного поможет.

Вы дали мне хороший ключ к пониманию.

В любом случае я отвечу на идеи, которые следует рассмотреть:

  • У нас есть гибель, но мы рассматриваем возможность оставить ее или перейти на nginx.
  • У нас есть LDAP
  • Прямо сейчас я не уверен в этом, и я должен проверить это и исследовать
  • В настоящее время у нас нет проблем с производительностью, но мы растем, и к нашей системе обращается все больше клиентов. Мы думаем, что разделение по клиентам или группам клиентов должно быть хорошим вариантом. Это может быть утомительной работой с точки зрения системного администратора, но может быть полезно для бизнеса и SLA. Любой другой вариант будет хорошо получен :)
  • Как я уже говорил ранее, у нас нет проблем с преформой, в любом случае мы используем BerkeleyDB.

В любом случае, я точно знаю, что я делаю схему того, что мы должны делать для успешного выполнения или миграции, поэтому я не могу попробовать команды, которые вы мне предоставляете.

Я вернусь, когда проверю их.

Большое спасибо!