↩️ Назад

Категории

Как спасти повреждённое письмо в Dovecot (вместо удаления)

26.08.2025 | Статья из категории: Linux

Как спасти повреждённое письмо в Dovecot (вместо удаления)

Иногда в логах почтового сервера появляются ошибки вида:

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.com
  • To: вы@ваш.домен
  • 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

Вывод

Удалить повреждённое письмо — просто. А вот спасти — это уже мастерство. Иногда достаточно почистить файл и пересоздать индексы, и письмо возвращается к жизни. Особенно, если в нём важная переписка.

Теперь вы знаете, как попытаться его восстановить — не спешите удалять!




Категории:

Категории

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку статей

Посетителей сегодня: 0
о блоге | карта блога

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA