Поиск по всем папкам SOGo: как найти письмо в архиве
АйТи Фреш
Linux, Docker и DevOps

Как искать письмо сразу во всех папках SOGo, включая архив по годам

Автор: , директор ООО «АйТи-Фреш» · · ~13 мин чтения
Иллюстрация: поиск в SOGo проверяет только одну открытую папку, а архив писем по годам остаётся недоступен без расширенного поиска
Быстрый поиск видит только открытую папку

Обычная строка поиска SOGo ищет только в открытой папке и по умолчанию — лишь по теме и отправителю. Поэтому письмо из архивной подпапки «2024» из «Входящих» не находится, и это легко принять за потерю. Поиск по всему ящику в SOGo есть — в расширенном поиске. Показываю, где он, что выбрать и как ускорить поиск по большому архиву.

Симптом: письмо точно было, а поиск ничего не находит

Ситуация типична для компаний, которые годами держат почтовую переписку в корпоративной почте на mailcow и организуют архив вручную — по годам, по отделам, по проектам, раскладывая старые письма в подпапки внутри ящика вместо удаления. Сотрудник открывает SOGo, вводит в строку поиска имя клиента или номер договора — и получает пустой список, хотя письмо точно было и никуда не удалялось.

Причина не в том, что письмо потерялось, а в области поиска. Быстрый поиск над списком писем работает только внутри той папки, что открыта сейчас, — обычно это «Входящие». И второе ограничение: в выпадающем списке рядом со строкой по умолчанию выбрано «Тема или Отправитель», а не «Сообщение целиком». Если письмо давно перенесено в годовую подпапку или искомое слово есть только в тексте, быстрый поиск его не увидит — не потому, что индекс сломан, а потому, что смотрит не туда.

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

Почему поиск SOGo по умолчанию не смотрит в подпапки

Поведение не случайное. В шаблоне почтового интерфейса SOGo у быстрого поиска есть селектор области (Search scope) с вариантами вроде «Тема или Отправитель», «Сообщение целиком», и первым выбран именно первый вариант. Сам запрос при этом выполняется в выбранной папке. То есть быстрый поиск задуман как фильтр текущего списка, а не как поиск по ящику: набрал фамилию — список сузился.

Практическая причина тоже понятна: поиск по всем папкам сразу — это отдельный IMAP-запрос к каждой папке, и при архиве с тысячами писем в каждой годовой подпапке он заметно тяжелее. Поэтому SOGo выносит его в расширенный поиск: там пользователь явно выбирает, где искать и по каким полям. Это не прячет функцию, а разделяет два сценария — «отфильтровать открытую папку» и «найти письмо где угодно».

Мелкая, но полезная деталь: в папке «Отправленные» быстрый поиск по умолчанию предлагает «Тема или Получатель» вместо «Тема или Отправитель» — в отправленных вы всегда отправитель, и искать по себе бессмысленно. Это ещё одно подтверждение, что быстрый поиск SOGo заточен под конкретную открытую папку. Если нужно найти всю переписку с клиентом — и входящие, и ответы, — удобнее расширенный поиск по корню ящика с его адресом в поле «От» или «Кому» и условием «любое из условий».

Схема: быстрый поиск SOGo ищет в открытой папке, расширенный поиск по корню ящика охватывает все папки и архив
Область поиска выбирают явно

Как искать сразу во всех папках: расширенный поиск и «Искать во вложенных папках»

Расширенный поиск в SOGo открывается тремя путями: кнопкой «Расширенный поиск» рядом со строкой поиска над списком писем, пунктом «Search» в меню с тремя точками у адреса ящика в левой панели или тем же пунктом в меню конкретной папки. Открывается окно с полями «От», «Кому», «Тема», «Тело», фильтрами по дате (последние 7 дней, 30 дней, полгода, до/после/между датами), размеру, вложениям и непрочитанным.

Внизу окна — поле «Искать сообщения в» (Search messages in). Если выбрать в нём сам ящик (первая строка с именем учётной записи), SOGo ищет по всем папкам ящика — включая архив по годам. Если выбрать конкретную папку, например «Архив», в игру вступает значок шестерёнки рядом с полем: в его меню есть флажок «Искать во вложенных папках» (Search subfolders), а также выбор «совпадают все условия» или «любое из условий». В SOGo 5.12, который идёт в составе mailcow, этот флажок по умолчанию включён.

Отсюда практическое правило: для поиска по всему архиву выбирайте в «Искать сообщения в» корень ящика, а если хотите ограничиться архивом — папку «Архив» с включённым флажком подпапок. Если результатов подозрительно мало, первым делом загляните в меню шестерёнки: флажок мог снять сам пользователь в прошлом поиске. После поиска SOGo показывает результаты в виртуальной папке, а кнопка «Назад» возвращает к той папке, что была открыта.

Пошаговая инструкция: как искать письмо во всех папках SOGo через расширенный поиск
Корень ящика охватывает весь архив

Почему это не баг и не запрос в поддержку, а известное ограничение

Узкая область быстрого поиска — не единичная жалоба конкретного клиента. В трекере mailcow есть feature request #6567 от 30.05.2025 «Implement Full Text Search Across All Mailcow SOGO Folders»: автор просит, чтобы SOGo по умолчанию сразу искал по содержимому во всех папках. Сейчас issue закрыт, а быстрый поиск в SOGo 5.12 по-прежнему работает в текущей папке. Важно понимать суть запроса: это пожелание изменить стартовую область поиска, а не сообщение о том, что поиск по всем папкам не работает, — через расширенный поиск он доступен уже сейчас.

Отдельно стоит понимать разницу между охватом и полями. Выбор корня ящика или флажок подпапок отвечает за то, где искать. Поля «От», «Тема», «Тело» — за то, что искать. Чтобы найти фразу из текста письма в архиве, нужно и выбрать правильную область, и заполнить поле «Тело». Типичная ошибка — выбрать корень ящика, но вбить слово в «Тему», а потом удивляться, что письмо с этим словом только в тексте не нашлось.

Есть и третья причина пустого результата, о которой вспоминают последней: папка может быть не подписана. SOGo по умолчанию может показывать только подписанные папки (настройка SOGoMailShowSubscribedFoldersOnly), и архивная папка, созданная когда-то в Thunderbird или перенесённая imapsync, может просто не отображаться в дереве. Письма в ней лежат, но в списке «Искать сообщения в» её нет. Лечится это в SOGo через управление подписками на папки у ящика — после подписки папка появляется и в дереве, и в поиске.

Как организовать архив, чтобы поиск по нему не превращался в квест

Если архив переписки растёт годами и в одной подпапке уже тысячи писем, стоит сразу закладывать структуру, которая не усложняет поиск. Не делайте слишком глубокую вложенность: «год → клиент → проект» — это три уровня, которые поиск по подпапкам пройдёт, но результат будет труднее разбирать. И не полагайтесь на память сотрудников о том, в каком году искать: расширенный поиск по корню ящика снимает эту зависимость, а фильтр по датам сужает выдачу без выбора конкретной годовой папки.

Второй практический момент — производительность. Поиск по телу во всех папках — это IMAP SEARCH BODY на стороне Dovecot по каждой папке. В mailcow с января 2025 года полнотекстовый поиск реализован движком Flatcurve (вместо Solr), индексы лежат в томе vmail-index, а индексация папки запускается автоматически, когда в неё пришло 20 и больше писем или по ней выполнили полнотекстовый поиск. Поэтому первый поиск по давно не трогавшейся годовой подпапке может быть медленным, а следующие — быстрыми. Если в mailcow.conf выставлено SKIP_FTS=y, поиск по телу будет идти без индекса, перебором писем.

Если сотрудник жалуется, что поиск по архиву «висит» или находит не всё, я проверяю индекс его ящика. Сначала сверка индекса с реальными письмами: docker compose exec dovecot-mailcow doveadm fts rescan -u user@example.com, затем доиндексация: docker compose exec dovecot-mailcow doveadm index -u user@example.com '*'. Документация mailcow предупреждает, что индексация может сильно нагрузить сервер, поэтому я запускаю её вечером и для одного ящика, а не -A для всех сразу. Число параллельных процессов индексации задаёт FTS_PROCS в mailcow.conf, по умолчанию 1.

Кейс «Плацдарм для идей»: архив на 32 рабочих места и потерянное письмо о согласовании

У клиента — инкубатор стартапов «Плацдарм для идей», 32 рабочих места. Руководители проектов годами хранят переписку с резидентами и партнёрами в подпапках по годам внутри «Входящих»: 2022, 2023, 2024, 2025, без удаления и без внешнего архива. У одного менеджера в подпапке «2024» скопилось около 6 тысяч писем, и когда понадобилось письмо с согласованием условий гранта полуторагодовой давности, быстрый поиск по слову «грант» из «Входящих» не нашёл ничего. Сотрудник решил, что письмо удалено, и уже собирался просить партнёра переслать переписку заново.

Прежде чем беспокоить партнёра, открыли расширенный поиск через три точки у адреса ящика, в «Искать сообщения в» выбрали корень ящика, слово «грант» вписали в поле «Тело» и ограничили период полугодом по датам. Первый запуск по подпапке «2024» шёл секунд двадцать — Flatcurve строил индекс, повторные поиски отвечали почти мгновенно. Письмо нашлось в «2024»: слово «грант» было только в тексте, в теме стояло «Условия участия», поэтому быстрый поиск не нашёл бы его даже в правильной папке. На всё ушло меньше пяти минут вместо ожидания ответа партнёра.

После этого случая провели 15-минутный инструктаж для всех 32 сотрудников: показали кнопку расширенного поиска, поле «Искать сообщения в» и разницу между «Темой» и «Телом». На сервере проверили, что SKIP_FTS=n, и вечером проиндексировали ящики пяти руководителей с самыми большими архивами. Руководству предложили со временем вынести годовые папки из «Входящих» в отдельную папку «Архив» верхнего уровня — механику поиска это не меняет, но упрощает навигацию и позволяет искать только по архиву, выбрав одну папку с флажком подпапок.

Сравнение поиска письма в архиве SOGo до и после включения Search subfolders
Правильная область и поле решают всё

Чек-лист: поиск письма в архиве SOGo

Когда нужно найти письмо, а быстрый поиск ничего не дал, я прохожу по одному порядку и советую его же сотрудникам клиентов. Сначала — не делать вывод, что письмо потеряно, по одному пустому результату: быстрый поиск смотрит только в открытую папку и по умолчанию только в тему и отправителя. Затем — открыть расширенный поиск (кнопка у строки поиска или три точки у ящика), в «Искать сообщения в» выбрать корень ящика и заполнить нужное поле — «Тема», «От» или «Тело».

Дальше — сузить условия (отправитель, период по датам, «с вложениями»), если ящик большой: результат придёт быстрее и будет точнее. Если поиск по телу подозрительно медленный или неполный — проверить на сервере SKIP_FTS и состояние индекса ящика через doveadm fts rescan. И последнее — если поиск по архиву в компании нужен часто, один раз показать всем сотрудникам кнопку расширенного поиска и поле «Искать сообщения в», а не оставлять каждого разбираться при первой «потере». Это часть общего регламента эксплуатации mailcow, куда у меня входит и обучение базовым приёмам работы с SOGo. Короткую памятку со скриншотами стоит положить в базу знаний компании: через пару месяцев без напоминания жалобы на «пропавшие» письма возвращаются.

Для администратора в чек-листе есть ещё два пункта. Первый — после миграции ящиков проверить подписку на архивные папки, чтобы они были видны в дереве и в списке «Искать сообщения в». Второй — раз в квартал смотреть, не отключён ли полнотекстовый индекс и не выросла ли нагрузка от индексации: большие архивы — как раз те ящики, где разница между поиском с индексом и без него измеряется минутами.

Частые вопросы

Почему поиск в SOGo не находит письмо, которое точно есть в ящике?

Скорее всего, письмо лежит не в той папке, которая открыта сейчас. Обычная строка поиска по умолчанию ищет только в текущей папке, а не во всём ящике и не в архивных подпапках — нужно включить расширенный поиск с опцией поиска по подпапкам.

Где находится настройка поиска по всем папкам в SOGo?

В расширенном поиске: кнопка у строки поиска или пункт «Search» в меню с тремя точками у ящика. В поле «Искать сообщения в» выберите корень ящика — поиск пойдёт по всем папкам. Для отдельной папки с подпапками есть флажок «Искать во вложенных папках» в меню шестерёнки.

Можно ли сделать поиск по всем папкам поведением по умолчанию, чтобы не включать его каждый раз?

Быстрый поиск над списком писем всегда работает в текущей папке — это не настраивается. Но в расширенном поиске флажок «Искать во вложенных папках» в SOGo 5.12 включён по умолчанию, а выбор корня ящика охватывает все папки. Запрос #6567 сделать поиск по всем папкам поведением по умолчанию в mailcow закрыт.

Почему поиск по всему архиву работает медленнее, чем по одной папке?

Потому что SOGo делает отдельный IMAP-поиск в каждой папке. Поиск по телу ускоряет полнотекстовый индекс Flatcurve в mailcow: первый поиск по давно не открывавшейся папке строит индекс и идёт медленнее, следующие — быстро. При SKIP_FTS=y индекса нет совсем.

Поиск по подпапкам ищет и в теле письма, или только по теме и отправителю?

Охват и поля — разные настройки. «Искать сообщения в» и флажок подпапок определяют, где искать, а поля «От», «Тема», «Тело» — что искать. Чтобы найти фразу из текста письма в архиве, выберите корень ящика и заполните поле «Тело».

Как организовать архив в SOGo, чтобы поиск по нему был проще?

Стоит избегать слишком глубокой вложенности подпапок (больше двух-трёх уровней) и, если объём переписки большой, сужать условия поиска — например, диапазоном дат или именем отправителя — вместо самого широкого полнотекстового поиска по всему архиву каждый раз.

Столкнулись с похожей задачей? Обращайтесь — решим

Если у вас происходит что-то из описанного в этой статье — или любая другая проблема с ИТ-инфраструктурой, — обращайтесь в любое время. Мои специалисты и я лично разберём ситуацию, найдём настоящую причину и доведём до решения.

Возьмёмся и за разовую задачу, и за постоянное обслуживание. Первичная консультация — бесплатно и без обязательств.

📞 +7 903 729-62-41 ✈ Telegram @ITfresh_Boss

С уважением, Семёнов Евгений Сергеевич, директор «АйТи Фреш» — IT-аутсорсинг для компаний до 50 рабочих мест, 15+ лет практики

Источники

© ООО «АйТи-Фреш» · Москва · Все статьи