Починил почту: битые письма и индексы Dovecot
Проблема: письма приходят и видны в Roundcube (веб-интерфейсе), но не отображаются в Thunderbird. При этом синхронизация висит, папки пустые, а ошибок нет.
После нескольких часов разбирательств — нашёл и починил. Делюсь решением, чтобы не забыть и кому-то пригодилось.
Причина
- Одно или несколько битых писем в папке
curс несовпадением размера в имени файла и реального содержимого. - Из-за этого Dovecot не может корректно построить индексы (dovecot.index, dovecot.index.cache).
- Thunderbird (IMAP-клиент) не может синхронизироваться — зависает или просто не показывает письма.
Решение шаг за шагом
1. Переходим в папку пользователя
cd /mnt/newmail/domen.ru/upravk@domen.ru/
Путь может отличаться — зависит от вашей настройки Maildir.
2. Удаляем старые индексы
sudo rm dovecot.index*
sudo rm dovecot.list.index*
sudo rm dovecot-uidlist
Это безопасно — индексы пересоздаются автоматически.
3. Находим битое письмо
Запускаем индексацию — Dovecot сам подскажет, где проблема:
sudo -u vmail doveadm index -u upravk@domen.ru INBOX
Если видим ошибку вроде:
Cached message size larger than expected (9570 > 704)
— значит, нашли виновника.
4. Удаляем битое письмо
Например:
sudo rm "/mnt/newmail/domen.ru/upravk@domen.ru/cur/1749028448.M995164P1600112.pochta.domen.ru,S=9570,W=9724:2,S"
Важно: имя файла может содержать спецсимволы — обязательно брать в кавычки!
5. Перестраиваем индексы для всех папок
Сначала смотрим, какие папки есть:
sudo -u vmail doveadm mailbox list -u upravk@domen.ru
Затем проходим по всем:
sudo -u vmail doveadm mailbox list -u upravk@domen.ru | while read folder; do
sudo -u vmail doveadm index -u upravk@domen.ru "$folder"
done
6. Перезапускаем Dovecot
sudo systemctl restart dovecot
Результат
✅ Через 10 секунд в Thunderbird появились все письма.
✅ Синхронизация работает.
✅ Roundcube не пострадал.
Вывод
Если Thunderbird перестал видеть письма, а в веб-интерфейсе они есть — скорее всего, битое письмо сломало индексы Dovecot.
Решение:
- Удалить индексы.
- Найти и удалить повреждённое письмо (по ошибке размера).
- Переиндексировать все папки.
- Перезапустить Dovecot.
Работает стабильно. Сохранил инструкцию — пригодится.
Комментарии
Пока нет комментариев. Будьте первым!