Содержание статьи

Postfix не сохраняет письма в одном абстрактном «хранилище». Все сообщения проходят через очередь почты, которая физически размещена в файловой системе сервера. По умолчанию это каталог /var/spool/postfix, внутри которого письма распределяются по отдельным директориям в зависимости от стадии обработки и состояния доставки.
Каждое письмо в очереди – это не один файл, а набор служебных объектов: тело сообщения, заголовки, информация о получателях и статусах. Такой подход позволяет Postfix параллельно обрабатывать тысячи писем, не блокируя очередь и не создавая конфликтов при повторной доставке. Администратору важно понимать структуру этих каталогов, чтобы корректно диагностировать задержки, ошибки и переполнение очереди.
Фактическое место хранения писем зависит от параметра queue_directory в конфигурации Postfix. Его значение можно проверить командой postconf queue_directory. Изменение пути хранения используется при нехватке дискового пространства, переносе почтовой нагрузки на отдельный раздел или настройке изолированной среды для почтового сервиса.
Знание того, в каком каталоге находятся входящие, активные или отложенные письма, позволяет безопасно анализировать очередь без удаления данных вручную. Для работы с содержимым очереди применяются штатные утилиты Postfix, а прямое вмешательство в файлы используется только в исключительных случаях и с остановленным сервисом.
Базовый каталог очереди Postfix и его расположение
Все письма, обрабатываемые Postfix, хранятся в каталоге очереди, путь к которому задаётся параметром queue_directory. В стандартной установке большинства Linux-дистрибутивов это /var/spool/postfix. Именно этот каталог используется для временного и промежуточного хранения сообщений до момента их доставки или отклонения.
Проверить фактическое расположение очереди можно командой postconf queue_directory. Полученное значение следует учитывать при анализе дискового пространства, настройке резервного копирования и поиске причин задержки доставки. Если каталог размещён на системном разделе с ограниченным объёмом, очередь может блокироваться при заполнении файловой системы.
Каталог очереди должен принадлежать пользователю postfix и группе postfix или postdrop, с правами доступа, исключающими чтение и запись для посторонних процессов. Изменение владельца или прав без остановки сервиса приводит к ошибкам при приёме писем и появлению записей в логах с отказами записи.
Перенос очереди на другой раздел выполняется изменением параметра queue_directory с последующим копированием содержимого и корректировкой прав доступа. Перед такими действиями сервис Postfix необходимо остановить, чтобы избежать повреждения файлов очереди и потери писем.
Назначение директории mail_queue в Postfix

Директория mail_queue не входит в стандартный набор каталогов Postfix и не создаётся автоматически при установке. Чаще всего под этим именем понимают логическое обозначение почтовой очереди или пользовательский каталог, указываемый как обёртка над фактическим значением параметра queue_directory.
На практике mail_queue может использоваться в следующих вариантах:
- символическая ссылка на /var/spool/postfix для упрощения администрирования;
- переименованный каталог очереди при кастомной сборке Postfix;
- путь, заданный в автоматизированных скриптах мониторинга очереди;
- абстрактное имя в документации хостинг-панелей и шаблонах конфигураций.
Если в системе реально существует каталог mail_queue, его назначение следует проверять через конфигурацию:
- командой postconf queue_directory – для определения активного пути очереди;
- проверкой символьных ссылок через ls -l;
- сопоставлением владельца и прав доступа с каталогами Postfix.
Каталог, используемый как mail_queue, обязан содержать стандартную структуру очереди Postfix:
- incoming – принятые, но ещё не обработанные письма;
- active – сообщения в процессе доставки;
- deferred – отложенные из-за ошибок доставки;
- bounce – уведомления о недоставке;
- corrupt – повреждённые файлы очереди.
Если каталог mail_queue не содержит этой структуры, Postfix его не использует. Любые изменения такого пути выполняются только через параметр queue_directory с полной остановкой сервиса и переносом данных с сохранением прав доступа.
Хранение входящих писем в каталоге incoming
Каталог incoming расположен внутри очереди Postfix и используется для первичного размещения писем сразу после приёма по SMTP. Физически он находится по пути /var/spool/postfix/incoming, если не задано иное значение queue_directory. На этом этапе сообщение уже записано на диск, но ещё не прошло проверку очереди и маршрутизацию.
В incoming помещаются файлы с уникальными именами, содержащие тело письма и служебные данные. Сообщения здесь не участвуют в доставке и не обрабатываются менеджером очереди до завершения приёма. Это снижает риск повреждения данных при разрыве соединения или ошибках клиента.
Время нахождения письма в каталоге incoming обычно измеряется секундами. После успешного завершения приёма Postfix перемещает сообщение в active или deferred, в зависимости от состояния очереди. Если письма надолго остаются в incoming, это указывает на сбои в работе сервисов Postfix или проблемы с правами доступа.
Каталог должен быть доступен для записи только процессам Postfix. Права и владелец проверяются командами уровня системы, а диагностика выполняется через логи mail.log или maillog. Ручное удаление файлов из incoming без остановки сервиса может привести к рассинхронизации очереди и потере сообщений.
Обработка и временное хранение писем в каталоге active
Каталог active содержит письма, которые Postfix в данный момент пытается доставить. Он расположен по пути /var/spool/postfix/active внутри очереди и обслуживается менеджером очереди qmgr. Попадание сообщения в этот каталог означает, что для него уже определены получатели и выбран транспорт доставки.
Количество файлов в active ограничено параметром qmgr_message_active_limit. Это ограничение защищает сервер от перегрузки при массовой отправке писем. При превышении лимита новые сообщения остаются в incoming или deferred до освобождения места.
Файлы в active находятся в обработке ограниченное время. Если доставка завершается успешно, сообщение удаляется из очереди. При временной ошибке письмо переносится в deferred с фиксацией причины сбоя. Повторные попытки доставки выполняются уже вне каталога active.
Резкий рост количества файлов в active указывает на проблемы с исходящими соединениями, DNS или удалёнными серверами. Анализ проводится через mailq или postqueue -p, а не прямым просмотром каталога. Любые ручные действия с файлами в active без остановки Postfix могут привести к зависшим процессам доставки.
Очередь отложенной доставки в каталоге deferred
Каталог deferred используется Postfix для хранения писем, доставка которых завершилась временной ошибкой. Физически он находится в составе очереди по пути /var/spool/postfix/deferred. Сообщения сюда перемещаются из active после неудачной попытки отправки, когда удалённый сервер или сетевые условия не позволяют завершить доставку.
Каждое письмо в deferred содержит информацию о причине откладывания и времени следующей попытки. Интервалы повторной доставки регулируются параметрами конфигурации и увеличиваются по мере роста количества неудачных попыток. Это снижает нагрузку на систему и предотвращает постоянные обращения к недоступным серверам.
- временная недоступность SMTP-сервера получателя;
- ошибки DNS при разрешении MX-записей;
- превышение лимитов соединений или отклонение по политике;
- временные сбои сети или тайм-ауты.
Анализ очереди deferred выполняется через mailq или postqueue -p с расшифровкой кодов ошибок. Массовое накопление писем в этом каталоге требует проверки сетевых настроек, DNS и ограничений со стороны удалённых серверов.
Ручное удаление файлов из deferred без корректировки очереди не рекомендуется. Для управления сообщениями используются штатные команды Postfix, позволяющие повторно инициировать доставку или удалить письма без нарушения структуры очереди.
Хранение отправленных, но не подтверждённых писем в каталоге bounce
Каталог bounce предназначен для хранения сообщений, для которых доставка не удалась и требуется создание уведомления о недоставке (DSN). Он находится внутри очереди Postfix по пути /var/spool/postfix/bounce и содержит как исходное письмо, так и метаданные о получателях и причинах ошибки.
Файлы в bounce создаются автоматически при невозможности доставки письма из active или deferred. После успешного формирования уведомления и отправки его отправителю файл удаляется. Если уведомление не удалось сгенерировать, письма остаются в каталоге до устранения проблемы.
Наиболее частые причины попадания писем в bounce:
- неверный адрес получателя или несуществующий домен;
- отклонение письма удалённым SMTP-сервером по политике;
- превышение размера сообщения;
- системные ошибки при формировании уведомления DSN.
Для проверки содержимого bounce используют команды postcat и postqueue -p. Ручное удаление файлов допустимо только при остановленном сервисе Postfix, иначе возможна потеря информации о недоставленных письмах и сбои в логике уведомлений.
Роль каталога corrupt и причины появления писем

Каталог corrupt внутри очереди Postfix предназначен для хранения сообщений, которые не удалось корректно обработать или записать в файловую систему. Физически он располагается по пути /var/spool/postfix/corrupt и служит изоляцией для повреждённых файлов, предотвращая нарушение работы очереди.
Сообщения попадают в corrupt в следующих случаях:
- сбой записи на диск из-за проблем с файловой системой;
- частичное получение письма в incoming при разрыве соединения;
- нарушение формата или структуры файла очереди Postfix;
- ошибки при перемещении письма между каталогами active, deferred и bounce.
Администратору рекомендуется регулярно проверять каталог corrupt и анализировать файлы с помощью postcat. Удаление повреждённых писем допустимо только после резервного копирования и остановки сервиса, чтобы не нарушить согласованность очереди и избежать потери работоспособных сообщений.
Как проверить и изменить путь хранения писем в настройках Postfix

Путь хранения писем в Postfix определяется параметром queue_directory. Проверка текущего значения выполняется командой:
postconf queue_directory
Для изменения каталога необходимо выполнить следующие шаги:
| Шаг | Описание |
|---|---|
| 1 | Остановить сервис Postfix: systemctl stop postfix |
| 2 | Скопировать текущую очередь в новый каталог с сохранением прав: rsync -a /var/spool/postfix /новый/путь |
| 3 | Изменить параметр queue_directory в конфигурационном файле /etc/postfix/main.cf: queue_directory = /новый/путь |
| 4 | Проверить права доступа и владельца каталога: chown -R postfix:postfix /новый/путь |
| 5 | Запустить сервис Postfix: systemctl start postfix |
| 6 | Проверить работоспособность очереди командой postqueue -p |
Ручное изменение пути без копирования и корректировки прав может привести к отказу Postfix в приёме и обработке писем. Рекомендуется планировать перенос на время минимальной нагрузки.
Вопрос-ответ:
Где физически находятся письма Postfix на сервере?
По умолчанию Postfix хранит все письма в каталоге очереди /var/spool/postfix. Внутри этой директории письма распределяются по подкаталогам incoming, active, deferred, bounce и corrupt, в зависимости от состояния обработки и типа доставки. Каждое письмо хранится как отдельный файл с уникальным именем вместе с метаданными о получателях и статусах.
Для чего нужен каталог incoming в Postfix?
Каталог incoming используется для временного хранения писем сразу после их приёма по SMTP. На этом этапе сообщения ещё не обработаны и не отправлены в доставку. Файлы в incoming содержат тело письма и служебную информацию, что позволяет Postfix безопасно принять сообщение даже при разрыве соединения или ошибках клиента.
Что делать, если письма долго остаются в deferred?
Если письма накапливаются в каталоге deferred, это указывает на проблемы с доставкой: недоступность удалённых серверов, ошибки DNS или сетевые тайм-ауты. Для анализа используют команду postqueue -p или mailq, чтобы получить список сообщений и причины их задержки. После устранения проблем Postfix повторно отправляет письма из deferred.
Можно ли вручную удалять файлы из каталога bounce?
Удаление файлов из bounce без остановки Postfix не рекомендуется, так как это нарушает формирование уведомлений о недоставке. Корректный способ — остановить сервис, сделать резервную копию каталога и удалить старые или повреждённые файлы. Для анализа содержимого используют утилиту postcat и команды очереди Postfix.
Как изменить путь хранения писем Postfix на другой диск?
Путь хранения задаётся параметром queue_directory в файле /etc/postfix/main.cf. Для изменения каталога нужно остановить Postfix, скопировать содержимое очереди в новый путь с сохранением прав, изменить значение параметра, убедиться в правильных правах доступа и запустить сервис заново. Проверка работоспособности выполняется через postqueue -p.
Как Postfix распределяет письма между каталогами очереди?
Postfix хранит письма в структуре очереди, которая делится на несколько подкаталогов. Incoming содержит только что принятые сообщения, active — письма в процессе доставки, deferred — отложенные из-за временных ошибок, bounce — для писем, требующих уведомления о недоставке, а corrupt хранит повреждённые файлы. Каждое письмо представляет собой набор файлов с телом сообщения и метаданными о получателях и статусах, что обеспечивает безопасную обработку и повторные попытки доставки.
Как проверить текущее расположение каталога очереди и изменить его?
Текущее расположение очереди Postfix определяется параметром queue_directory. Его можно проверить командой postconf queue_directory. Для изменения пути необходимо остановить сервис Postfix, скопировать содержимое очереди в новый каталог с сохранением прав доступа, изменить значение queue_directory в файле /etc/postfix/main.cf и запустить сервис заново. После этого следует проверить работоспособность очереди через postqueue -p.
