Как искать письмо сразу во всех папках SOGo, включая архив по годам
Обычная строка поиска SOGo ищет только в открытой папке и по умолчанию — лишь по теме и отправителю. Поэтому письмо из архивной подпапки «2024» из «Входящих» не находится, и это легко принять за потерю. Поиск по всему ящику в SOGo есть — в расширенном поиске. Показываю, где он, что выбрать и как ускорить поиск по большому архиву.
Симптом: письмо точно было, а поиск ничего не находит
Ситуация типична для компаний, которые годами держат почтовую переписку в корпоративной почте на mailcow и организуют архив вручную — по годам, по отделам, по проектам, раскладывая старые письма в подпапки внутри ящика вместо удаления. Сотрудник открывает SOGo, вводит в строку поиска имя клиента или номер договора — и получает пустой список, хотя письмо точно было и никуда не удалялось.
Причина не в том, что письмо потерялось, а в области поиска. Быстрый поиск над списком писем работает только внутри той папки, что открыта сейчас, — обычно это «Входящие». И второе ограничение: в выпадающем списке рядом со строкой по умолчанию выбрано «Тема или Отправитель», а не «Сообщение целиком». Если письмо давно перенесено в годовую подпапку или искомое слово есть только в тексте, быстрый поиск его не увидит — не потому, что индекс сломан, а потому, что смотрит не туда.
Я вижу эту жалобу почти в каждой компании, где сотрудники раскладывают почту вручную. Обычно она звучит как «письмо пропало» или «почта удалила старые письма», и первой реакцией бывает запрос на восстановление из бэкапа. Восстанавливать ничего не нужно: в девяти случаях из десяти письмо на месте, а пятиминутный разбор того, как искать, экономит и время администратора, и нервы сотрудника.
Почему поиск SOGo по умолчанию не смотрит в подпапки
Поведение не случайное. В шаблоне почтового интерфейса SOGo у быстрого поиска есть селектор области (Search scope) с вариантами вроде «Тема или Отправитель», «Сообщение целиком», и первым выбран именно первый вариант. Сам запрос при этом выполняется в выбранной папке. То есть быстрый поиск задуман как фильтр текущего списка, а не как поиск по ящику: набрал фамилию — список сузился.
Практическая причина тоже понятна: поиск по всем папкам сразу — это отдельный IMAP-запрос к каждой папке, и при архиве с тысячами писем в каждой годовой подпапке он заметно тяжелее. Поэтому SOGo выносит его в расширенный поиск: там пользователь явно выбирает, где искать и по каким полям. Это не прячет функцию, а разделяет два сценария — «отфильтровать открытую папку» и «найти письмо где угодно».
Мелкая, но полезная деталь: в папке «Отправленные» быстрый поиск по умолчанию предлагает «Тема или Получатель» вместо «Тема или Отправитель» — в отправленных вы всегда отправитель, и искать по себе бессмысленно. Это ещё одно подтверждение, что быстрый поиск SOGo заточен под конкретную открытую папку. Если нужно найти всю переписку с клиентом — и входящие, и ответы, — удобнее расширенный поиск по корню ящика с его адресом в поле «От» или «Кому» и условием «любое из условий».
Как искать сразу во всех папках: расширенный поиск и «Искать во вложенных папках»
Расширенный поиск в SOGo открывается тремя путями: кнопкой «Расширенный поиск» рядом со строкой поиска над списком писем, пунктом «Search» в меню с тремя точками у адреса ящика в левой панели или тем же пунктом в меню конкретной папки. Открывается окно с полями «От», «Кому», «Тема», «Тело», фильтрами по дате (последние 7 дней, 30 дней, полгода, до/после/между датами), размеру, вложениям и непрочитанным.
Внизу окна — поле «Искать сообщения в» (Search messages in). Если выбрать в нём сам ящик (первая строка с именем учётной записи), SOGo ищет по всем папкам ящика — включая архив по годам. Если выбрать конкретную папку, например «Архив», в игру вступает значок шестерёнки рядом с полем: в его меню есть флажок «Искать во вложенных папках» (Search subfolders), а также выбор «совпадают все условия» или «любое из условий». В SOGo 5.12, который идёт в составе mailcow, этот флажок по умолчанию включён.
Отсюда практическое правило: для поиска по всему архиву выбирайте в «Искать сообщения в» корень ящика, а если хотите ограничиться архивом — папку «Архив» с включённым флажком подпапок. Если результатов подозрительно мало, первым делом загляните в меню шестерёнки: флажок мог снять сам пользователь в прошлом поиске. После поиска 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
Когда нужно найти письмо, а быстрый поиск ничего не дал, я прохожу по одному порядку и советую его же сотрудникам клиентов. Сначала — не делать вывод, что письмо потеряно, по одному пустому результату: быстрый поиск смотрит только в открытую папку и по умолчанию только в тему и отправителя. Затем — открыть расширенный поиск (кнопка у строки поиска или три точки у ящика), в «Искать сообщения в» выбрать корень ящика и заполнить нужное поле — «Тема», «От» или «Тело».
Дальше — сузить условия (отправитель, период по датам, «с вложениями»), если ящик большой: результат придёт быстрее и будет точнее. Если поиск по телу подозрительно медленный или неполный — проверить на сервере SKIP_FTS и состояние индекса ящика через doveadm fts rescan. И последнее — если поиск по архиву в компании нужен часто, один раз показать всем сотрудникам кнопку расширенного поиска и поле «Искать сообщения в», а не оставлять каждого разбираться при первой «потере». Это часть общего регламента эксплуатации mailcow, куда у меня входит и обучение базовым приёмам работы с SOGo. Короткую памятку со скриншотами стоит положить в базу знаний компании: через пару месяцев без напоминания жалобы на «пропавшие» письма возвращаются.
Для администратора в чек-листе есть ещё два пункта. Первый — после миграции ящиков проверить подписку на архивные папки, чтобы они были видны в дереве и в списке «Искать сообщения в». Второй — раз в квартал смотреть, не отключён ли полнотекстовый индекс и не выросла ли нагрузка от индексации: большие архивы — как раз те ящики, где разница между поиском с индексом и без него измеряется минутами.
Частые вопросы
Почему поиск в SOGo не находит письмо, которое точно есть в ящике?
Скорее всего, письмо лежит не в той папке, которая открыта сейчас. Обычная строка поиска по умолчанию ищет только в текущей папке, а не во всём ящике и не в архивных подпапках — нужно включить расширенный поиск с опцией поиска по подпапкам.
Где находится настройка поиска по всем папкам в SOGo?
В расширенном поиске: кнопка у строки поиска или пункт «Search» в меню с тремя точками у ящика. В поле «Искать сообщения в» выберите корень ящика — поиск пойдёт по всем папкам. Для отдельной папки с подпапками есть флажок «Искать во вложенных папках» в меню шестерёнки.
Можно ли сделать поиск по всем папкам поведением по умолчанию, чтобы не включать его каждый раз?
Быстрый поиск над списком писем всегда работает в текущей папке — это не настраивается. Но в расширенном поиске флажок «Искать во вложенных папках» в SOGo 5.12 включён по умолчанию, а выбор корня ящика охватывает все папки. Запрос #6567 сделать поиск по всем папкам поведением по умолчанию в mailcow закрыт.
Почему поиск по всему архиву работает медленнее, чем по одной папке?
Потому что SOGo делает отдельный IMAP-поиск в каждой папке. Поиск по телу ускоряет полнотекстовый индекс Flatcurve в mailcow: первый поиск по давно не открывавшейся папке строит индекс и идёт медленнее, следующие — быстро. При SKIP_FTS=y индекса нет совсем.
Поиск по подпапкам ищет и в теле письма, или только по теме и отправителю?
Охват и поля — разные настройки. «Искать сообщения в» и флажок подпапок определяют, где искать, а поля «От», «Тема», «Тело» — что искать. Чтобы найти фразу из текста письма в архиве, выберите корень ящика и заполните поле «Тело».
Как организовать архив в SOGo, чтобы поиск по нему был проще?
Стоит избегать слишком глубокой вложенности подпапок (больше двух-трёх уровней) и, если объём переписки большой, сужать условия поиска — например, диапазоном дат или именем отправителя — вместо самого широкого полнотекстового поиска по всему архиву каждый раз.
Источники
- GitHub mailcow-dockerized — Issue #6567 — Feature request от 30.05.2025 «Implement Full Text Search Across All Mailcow SOGO Folders»: просьба по умолчанию искать по содержимому во всех папках; issue закрыт. https://github.com/mailcow/mailcow-dockerized/issues/6567
- mailcow community — Search slow and can not search over all folders? — Обсуждение архива с многолетней историей и тысячами писем в годовых подпапках, упоминание механизма поиска по дереву папок через меню с тремя точками. https://community.mailcow.email/d/2783-search-slow-and-can-not-search-over-all-folders
- SOGo (Alinto) — шаблон UIxMailFolderTemplate.wox и MailboxesController.js — Окно «Advanced search» с полями From/To/Subject/Body, поле «Search messages in» (корень ящика или папка), меню шестерёнки с флажком «Search subfolders» (по умолчанию subfolders: 1), селектор области быстрого поиска «Subject or Sender»/«Entire Message». https://github.com/Alinto/sogo/blob/master/UI/Templates/MailerUI/UIxMailFolderTemplate.wox
- mailcow docs — Full-Text Search (Flatcurve) — Замена Solr на Flatcurve с января 2025, автоиндексация от 20 писем или при поиске, команды doveadm fts rescan / doveadm index, параметры SKIP_FTS и FTS_PROCS. https://docs.mailcow.email/manual-guides/Dovecot/u_e-dovecot-fts/



