Верстакфорум практиков
рекламаiprazon: приватные серверные адреса IPv4 и SOCKS5, безлимитный трафик, бесплатный тест до 2 часов
ФорумПочта и рассылки

Архив писем: как хранить и как искать

Денис Прошин
Денис Прошин
Знаток
сообщений 1000
с июн
1 сентября, 08:32первое сообщение

Накопилось около четырёхсот тысяч писем за несколько сезонов. Лежат одним mbox на 26 гигабайт, клиент открывает его минуты полторы, поиск по телу думает примерно столько же.

Хочу разложить по-человечески и приделать быстрый поиск. Что берут под такой объём и куда девают вложения?

sysdiag
sysdiag
Знаток
сообщений 1975
с фев
8 февраля, 11:49#2

Раскатай mbox в Maildir, одно письмо один файл. Тогда добавление письма не переписывает гигабайты, и сбой питания портит максимум один файл.

mb2md -s /var/spool/mail/denis -d /srv/mail/arhiv

Поверх Maildir кладётся индекс. Держу notmuch: он обходит каталог, строит базу по заголовкам и телу, дальше ищет за доли секунды на любом объёме. Первый обход четырёхсот тысяч писем на обычном диске идёт минут двадцать, потом только приращение.

первый обход и запрос
первый обход и запрос

Вложения он не вынимает, они остаются внутри писем в base64. Отдельный проход с munpack нужен, только если ты собираешься искать по содержимому вложений.

логи читаю раньше почты
Денис Прошин
Денис Прошин
Знаток
сообщений 1000
с июн
15 июля, 14:06#3
sysdiag: одно письмо один файл

Четыреста тысяч мелких файлов в одном каталоге, файловая система не ляжет?

rawsocket
rawsocket
Ветеран
сообщений 2290
с фев
22 декабря, 17:23#4

Не ляжет, если дробить. Maildir и так держит три подкаталога, сверху нарезают по месяцам, тогда в одном каталоге остаётся несколько тысяч файлов.

Что кусается на практике: инодов уходит по одному на письмо, и запас их конечный. Проверь заранее.

$ df -i /srv
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
/dev/sda2      6553600 418902 6134698    7% /srv

Сетевую шару под Maildir подкладывать не советую, блокировки через NFS дают битые дубли.

читаю байты, а потом уже документацию
Ирина Пахомова
Ирина Пахомова
Новичок
сообщений 280
с янв, второй сезон
1 мая, 08:40#5

а notmuch под windows есть? у меня всё на винде, линукса нет вообще

Михаил Дроботов
Михаил Дроботов
Участник
сообщений 615
с сен
8 октября, 11:57#6

Ирина, под Windows идут двумя путями. Либо WSL, и там всё то же самое: каталог с почтой лежит на диске Windows, индекс внутри системы.

Либо локальный IMAP. Ставите dovecot, скармливаете ему тот же Maildir, и любой привычный клиент видит архив как обычный почтовый ящик, только поиск считается на стороне сервера и отдаётся мгновенно. Второй путь удобнее, когда архивом пользуется несколько человек.

десять лет в поддержке, всё видел
Денис Прошин
Денис Прошин
Знаток
сообщений 1000
с июн
15 марта, 14:14#7

Раскатал в Maildir, нарезал по месяцам, notmuch проиндексировал за 26 минут. Поиск по телу отдаёт за полсекунды против прежних полутора минут.

dovecot тоже поднял, читаю архив с ноутбука обычным клиентом. Всем спасибо.