Сообщение mailbox full не всегда означает заполненный раздел диска. У пользователя может быть отдельная квота, доменный лимит, переполненные скрытые папки, исчерпанные inode или устаревший индекс Dovecot. Иногда панель показывает размер только INBOX, а Trash, Spam and Sent занимают большую часть лимита. Удаление случайных файлов вручную может повредить Maildir и не обновить учет.

Сохраните точный SMTP-код отказа и определите, какой компонент его вернул. Сравните filesystem space, inode, user quota, domain quota and фактический размер всех папок. Не удаляйте файлы из Maildir через проводник без понимания индексов и процесса пересчета.

Что проверить в первую очередь

Начните с одного воспроизводимого сценария. Зафиксируйте точное время, идентификатор объекта, пользователя или операции, версию приложения и последнее известное рабочее состояние. Не меняйте несколько параметров одновременно: один контролируемый шаг должен подтверждать или исключать одну гипотезу. Перед работой с данными и конфигурацией подготовьте резервную копию и проверенный способ отката.

  • Проверьте df space and df inode на разделе с почтой.
  • Получите фактическую квоту пользователя через Dovecot or используемый mail stack.
  • Посчитайте размер всех Maildir folders, включая hidden Trash, Junk and Sent.
  • Проверьте доменный лимит, резерв файловой системы и отдельный volume or container.

Почему возникает проблема

Внешний симптом часто появляется дальше по цепочке, чем первичная ошибка. Интерфейс может показывать неверное состояние из-за backend, очереди, кеша, прав доступа, фоновой задачи или внешнего API. Поэтому важно проследить данные от источника до результата и найти первую точку расхождения, а не исправлять только последнее сообщение об ошибке.

  • Панель показывает общий диск, а mailbox имеет меньшую логическую квоту.
  • Dovecot quota index устарел после ручного перемещения или восстановления писем.
  • Свободны гигабайты, но закончились inode из-за множества мелких сообщений.
  • Удаленные письма остаются в Trash и продолжают учитываться.
  • LMTP or delivery process пишет на другой заполненный mount, чем тот, который проверил администратор.

Пошаговая диагностика

Диагностику проводите на тестовой записи или отдельном окружении. В журналах скрывайте токены, пароли, персональные данные и содержимое документов. Для каждого шага сохраняйте измеримый результат: код ответа, версию записи, идентификатор события, состояние процесса, контрольную сумму или время выполнения. Так можно отличить подтвержденную причину от случайного совпадения.

  • Сохраните SMTP response and mail log для конкретного recipient and time.
  • Сравните путь mailbox из конфигурации с реально проверяемым mount.
  • Получите quota get and recalc на тестовом пользователе.
  • Посчитайте files and bytes по папкам без чтения содержимого писем.
  • Проверьте permissions, ownership and temporary delivery directory.

Какие лимиты участвуют в доставке письма

Решение принимает delivery service на основе нескольких ресурсов. Нужно проверить не только bytes основного диска, но и логическую квоту, inode, место временной записи, доменные ограничения и доступ процесса к mailbox.

  • Filesystem контролирует bytes, inode and reserved blocks.
  • Mail server применяет user quota and domain quota.
  • Mailbox index хранит рассчитанное использование и требует согласованного обновления.
  • Delivery временно создает файл, затем атомарно перемещает его в Maildir new.

Как исправить проблему

Исправление делите на небольшие обратимые изменения. Сначала устраните подтвержденную причину, затем повторите исходный сценарий и проверьте соседние функции. Массовое обновление данных запускайте на ограниченной выборке с отчетом и только после сверки расширяйте на весь объем. Не отключайте авторизацию, проверку сертификатов, валидацию или аудит ради быстрого исчезновения симптома.

  • Освободите или увеличьте подтвержденный ограничивающий ресурс, а не произвольный диск.
  • Очистите Trash and Spam через почтовый протокол или штатный инструмент.
  • Выполните безопасный quota recalc после резервной копии и проверки ownership.
  • Исправьте mount, path, permissions or container volume, если delivery смотрит не туда.
  • Настройте предупреждения пользователю до достижения лимита.

Безопасный порядок внедрения

  • Сохраните затрагиваемые данные, конфигурацию и текущие журналы, затем проверьте возможность реального восстановления.
  • Повторите проблему на тестовом объекте без реальных списаний, рассылок и необратимых изменений клиентских данных.
  • Зафиксируйте изменение в системе контроля версий или журнале работ вместе с причиной, ожидаемым эффектом и планом отката.
  • Проведите тест на нормальном сценарии, ошибочном вводе, повторном запросе, параллельной операции и временной недоступности зависимости.
  • После выпуска наблюдайте полный пользовательский путь, логи и метрики, а не только один успешный запрос.

Как проверить результат

Разовый успешный тест недостаточен. Повторите операцию, проверьте крайние значения, одновременные действия и восстановление после перезапуска или временного сбоя. Для важного сценария сохраните автоматический тест либо короткий регрессионный чек-лист. Итог должен подтверждаться не только интерфейсом, но и состоянием базы, очереди, внешнего сервиса и журналом действий.

  • Quota tool показывает ожидаемое использование и лимит.
  • Тестовое письмо доставляется, появляется в нужной папке и читается клиентом.
  • Пересчет после добавления and удаления сообщения меняет usage корректно.
  • Перезапуск сервиса не возвращает старое неправильное значение.

Типичные ошибки при исправлении

  • Удалять случайные Maildir files при работающем сервере без backup.
  • Увеличивать квоту, когда закончились inode or temporary space.
  • Проверять только INBOX и игнорировать скрытые папки.
  • Считать webmail единственным источником размера ящика.

Как предотвратить повторение

Профилактика строится вокруг явных контрактов, повторяемых релизов и наблюдаемости. Система должна не только работать сейчас, но и позволять быстро увидеть нарушение правила при следующем обновлении, росте нагрузки или сбое внешнего сервиса. Проверки особенно полезно автоматизировать там, где ошибка уже привела к потере времени, данных, денег или заявок.

  • Мониторьте filesystem bytes, inode and mailbox quota отдельно.
  • Отправляйте предупреждения на нескольких порогах заполнения.
  • Настройте понятную retention policy для Trash and Spam.
  • После миграции or restore выполняйте контролируемую проверку and recalc индексов.

Что контролировать после выпуска

  • Количество успешных и ошибочных операций в разрезе версии, канала и типа сценария.
  • Возраст необработанных записей, длину очередей, число повторных попыток и долю окончательных отказов.
  • Расхождение между пользовательским статусом и фактическим состоянием в базе или внешней системе.
  • Появление новых кодов ошибок после релиза и изменение времени выполнения ключевой операции.
  • Сигналы от поддержки и бизнес-метрики, которые могут показать скрытый частичный сбой.

Что подготовить для технического разбора

  • Описание ожидаемого и фактического поведения с точной последовательностью действий.
  • Время проблемы, идентификатор тестового объекта и версии затронутых компонентов.
  • Фрагменты журналов до и после ошибки без секретов и персональных данных.
  • Перечень последних изменений и уже выполненных проверок.
  • Безопасный доступ к тестовой среде либо способ воспроизвести сбой без влияния на клиентов.

Частые вопросы

Почему после удаления писем квота не уменьшилась?

Письма могли переместиться в Trash, остаться помеченными без expunge или индекс квоты не пересчитался. Проверьте папки и используйте штатную процедуру.

Может ли проблема быть при свободном диске?

Да. Частые причины — user quota, domain quota, inode, другой mount, reserved space или заполненная временная директория.

Когда нужна помощь специалиста

Если сервер сообщает о переполненном ящике при свободном диске, я могу проверить реальные квоты, inode, Maildir и Dovecot, безопасно пересчитать учет и настроить предупреждения.