Мы запускаем почтовый сервер из 30 тыс. Учетных записей электронной почты (Maildir) с сервером Dovecot imap. Мы страдаем от высокой нагрузки ввода-вывода, особенно когда пользователь начинает поиск в больших папках IMAP. Есть ли способ предотвратить поиск по BODY? Мне нужно разрешить поиск по ЗАГОЛОВКАМ (тема, от / до).
Я ничего не нашел по этому поводу в config / documentation.
Это не выполнимо. Поиск не является обязательным для IMAP, и ни один совместимый сервер не может избежать поиска. Я знаю, что люди модифицировали исходный код для этого, но часто вызывает еще худшую нагрузку поскольку клиенты возвращаются к массовой загрузке.
У Dovecot есть способы ускорить поиск. Посмотри на это, если сможешь.
Старый поток, но столкнулся с той же проблемой и хотел поделиться своим решением.
Я сделал это для dovecot 2.2.21 и, похоже, у меня все работает нормально. В lib-storage / mail-search.c я закомментировал два назначения * have_body = true. Пока никаких побочных эффектов, кроме очевидного отсутствия поиска в телах сообщений. Тем не менее поисковый текст будет искать в заголовках. Если требуются тела поиска (т.е. ожидаются результаты), но фактический поиск в телах не нужен, а только в заголовках, то have_body = true можно заменить на have_text = true.
Предполагая, что вы перестраиваете ту же версию, что и установленная в настоящее время, заменяемая библиотека - это libdovecot-storage.
В качестве примечания: я всегда советую своим пользователям иметь правильные темы электронной почты для адекватного поиска. Тема с одним словом «проблема» не очень помогает, когда дело доходит до поиска даже внутри тела.