Иногда в логах почтового сервера появляются ошибки вида:
dovecot: Error: Mailbox INBOX: UID=1234: read(/mnt/mail/user/cur/...) failed
Это значит, что Dovecot не может прочитать одно конкретное письмо. Многие просто удаляют его — но если письмо важное, можно попробовать его восстановить.
Шаг 1: Найдите файл письма
Путь к повреждённому файлу обычно указан в логе. Перейдите в папку cur пользователя:
cd /mnt/newmail/ваш-домен/пользователь@домен.ru/cur/
Файл будет выглядеть примерно так:
1750837808.M991258P12345.host,S=12345,W=12345:2,S
Шаг 2: Проверьте, можно ли прочитать содержимое
Посмотрите начало файла:
head -30 "имя_файла"
Если видите:
From: sender@example.comTo: вы@ваш.доменSubject: Важное письмоDate: ...
— значит, письмо частично целое, и его можно попытаться спасти.
Шаг 3: Создайте "чистую" копию письма
Часто проблема в битых символах, переносах строк или обрыве. Почистим файл:
tr -cd '\11\12\15\40-\176' < "старое_имя" > восстановленное.tmp
Эта команда оставит только:
- Пробелы, табы, переводы строк
- ASCII-символы (буквы, цифры, знаки)
- Удалит бинарный мусор
Переименуйте:
mv восстановленное.tmp "старое_имя"
Шаг 4: Проверьте структуру письма
Откройте файл в редакторе:
nano "имя_файла"
Убедитесь, что:
- Заголовки не повреждены
- Тело письма не обрывается посреди предложения
- В конце есть пустая строка
Можно добавить в конец:
-- Письмо было повреждено и восстановлено вручную.
Шаг 5: Перезагрузите индексы Dovecot
Dovecot кэширует информацию. Удалите индексы, чтобы он перечитал письма:
sudo doveadm kick пользователь@домен.ru
Затем удалите файлы индексов:
rm /путь/к/пользователю/*.index* rm /путь/к/пользователю/dovecot-uidlist
При следующем входе пользователя индексы пересоздадутся.
Шаг 6: Проверьте, открылось ли письмо
Попросите пользователя зайти в почту (через веб-интерфейс или клиент). Письмо должно появиться.
Если:
- Открылось — ✅ вы его спасли!
- Опять ошибка — возможно, повреждение слишком сильное. Лучше удалить.
Когда НЕ стоит чинить
- Файл пустой или 0 байт
- Ошибка
Input/output error— возможно, проблема с диском - Много повреждённых писем — это системная ошибка (диск, RAM, сбой записи)
Как избежать таких проблем
- Не допускайте переполнения диска
- Используйте надёжные файловые системы (ext4, xfs)
- Регулярно делайте бэкапы почтовых ящиков
- Мониторьте логи на ошибки
read failed,corrupted
Вывод
Удалить повреждённое письмо — просто. А вот спасти — это уже мастерство. Иногда достаточно почистить файл и пересоздать индексы, и письмо возвращается к жизни. Особенно, если в нём важная переписка.
Теперь вы знаете, как попытаться его восстановить — не спешите удалять!
Комментарии
Пока нет комментариев. Будьте первым!