Я ищу сервер imap, который работает быстро с большими папками. Скажем, 20 000–100 000 писем в папке.
В настоящее время я использую dovecot, и открытие папки может занять 10 секунд, а индикатор HD на сервере imap мигает как сумасшедший.
Я использую alpine в качестве клиента, и по умолчанию он перечисляет только самые новые сообщения, поэтому мой клиент не пытается передать все при открытии почтового ящика. Это можно увидеть в том, что когда я прокручиваю, он должен загружать строки темы для следующей страницы (когда я прокручиваю ее в первый раз).
Я использую maildir на XFS.
Редактировать: Я спрашиваю, поскольку данных по большому счету не так уж и много. Если бы это было в базе данных SQL, то получение строк темы последних 40 сообщений было бы не займет 10 секунд для папки из 40 000 писем. Единственные необходимые данные:
SELECT date, from, subject FROM emails ORDER BY date DESC LIMIT 40;
Любые идеи?
Dovecot на самом деле довольно хорош с точки зрения производительности. Dovecot's Вики-страница по настройке производительности есть несколько советов и приемов для дальнейшего повышения производительности. Хранение индексов и maildirs на отдельных дисках - это хорошо для начала, если это вообще возможно для вас. Вы также можете оценить переход на Dovecot's формат хранения dbox.
Возможно, вы могли бы попробовать использовать ядро базы данных для хранения сообщений вместо почтовых ящиков Maildir / Maildir ++. Это можно сделать с помощью dbmail.
Я не знаю, насколько надежен dbmail для производственной среды, но поскольку у вас уже работает виртуализация, вы можете настроить его на другой виртуальной машине для целей тестирования и посмотреть, как он работает в вашей среде.
Вот обзор архитектуры dbmail:
(источник: dbmail.org)
Вы не упоминаете спецификации сервера ... сколько памяти вы используете, процессор, сетевая карта / коммутаторы гигабитные? А если вы посмотрите на сервер, то сможете ли вы сказать, что уже исчерпано? Если дело в пропускной способности диска, вы далеко не уйдете с заменой серверного ПО.
Я клонировал системы по сети и был озадачен тем, что две системы на гигабитном коммутаторе потребляют всего около 15 МБ / с, когда я знал, что моя система способна создавать пакеты в диапазоне 50 МБ / с. Оказалось, что это узкие места в конечных системах из-за дисков (я подключил диск ко второму каналу IDE и выполнил прямой DD, получил те же скорости передачи).
Возможно, вы захотите проверить использование процессора / диска / сети, а также коммутатор и посмотреть, не вызывает ли что-либо из них проблем. Если бы не эти, вы могли бы поискать способы увеличения пропускной способности с помощью отдельных дисков, разделения почтовых ящиков на разные шпиндели, проверить и посмотреть, можете ли вы получить лучшую пропускную способность с помощью аппаратного зеркалирования RAID (я не уверен, насколько сильно увеличится время чтения с дисков, которые вы можете получить) или, возможно, переход на более производительные жесткие диски с меньшей задержкой и большим кешем.
Поскольку вы используете dovecot, я полагаю, вы уже используете его функции индексации? Я ничего не знаю (по крайней мере, ничего бесплатного), это быстрее, чем dovecot.