#Симптомы и область применимости
SMTP-сервер подтверждает приём письма, но адресат не видит его в почтовом ящике. «250 OK» на этапе передачи не означает, что Dovecot записал сообщение в нужный Maildir/mbox; надо проследить локальную доставку по идентификатору.
#Причины и диагностические признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Ошибка транспортного механизма доставкиПисьмо принято MTA, но не записано в пользовательское хранилище. | В журнале есть LDA/LMTP error после принятия SMTP | Проверьте связку Postfix→Dovecot LMTP или локальный транспорт. |
| Переполнена квота или дискХранилище не может принять новую запись. | В журналах quota exceeded, no space left on device | Проверьте квоту ящика и свободное место. |
| Фильтр перенёс письмоSieve, переадресация или правило клиента сработало после SMTP-приёма. | Письмо видно в «Спам» или иной папке | Проверьте правила и конечный почтовый ящик. |
#Пошаговая диагностика и исправление
- 1. Сделайте одно диагностическое письмоОтправьте сообщение с уникальной темой и временем с другого собственного ящика. Проверьте все папки в веб-почте, не ограничиваясь приложением на телефоне. Если письмо найдено в другой папке, диагностика должна касаться фильтров, а не сети.
- 2. Найдите цепочку по ID в журнале PostfixНа Linux-сервере посмотрите журнал за минуту приёма и найдите queue ID, получателя и итоговые строки status=sent/deferred/bounced. При LMTP status=sent может означать успешную передачу в Dovecot, но проверку расположения письма продолжайте в хранилище.
- Только чтениеLinux · Терминал (Bash)КомандаНужен sudoТолько чтение. На некоторых системах используйте /var/log/mail.log вместо journalctl.
sudo journalctl -u postfix --since "30 minutes ago" --no-pager
- 3. Проверьте, какой транспорт обслуживает доменПосмотрите в Postfix виртуальные домены, transport_maps и доставку через LMTP или локальный агент. Не меняйте mydestination/virtual_mailbox_domains наугад: это может привести к ретрансляции наружу вместо локальной доставки.
- Только чтение; не публикуйте конфигурацию вместе с секретамиLinux · Терминал (Bash)КомандаНужен sudoТолько чтение; не публикуйте конфигурацию вместе с секретами.
sudo postconf -n | grep -E "(virtual_|transport_|mailbox_transport|local_transport)"
- 4. Проверьте квоту конкретного ящикаПри использовании Dovecot с модулем quota запросите состояние только нужного пользователя. Обратите внимание на сообщения о превышении лимита в журнале доставки. Если лимит исчерпан, согласуйте освобождение места с владельцем, не удаляйте чужую почту самостоятельно.
- Dovecot и настроенный quota plugin; замените адресLinux · Терминал (Bash)КомандаНужен sudoDovecot и настроенный quota plugin; замените адрес. При отсутствии модуля команда может не показать квоту.
sudo doveadm quota get -u user@example.com
- 5. Проверьте место и индексы файловой системыНа сервере прочитайте использование раздела, где расположено почтовое хранилище, и количество свободных inode. Сравните с пользовательской квотой. Если раздел полон, освободите безопасные служебные временные файлы по регламенту, не удаляйте Maildir и письма ради освобождения места.
- Linux, чтениеLinux · Терминал (Bash)КомандаLinux, чтение. Для конкретного раздела укажите путь хранилища после уточнения конфигурации.
df -h && df -i
- 6. Найдите почтовые правила и путь доставкиВ административной панели почты или настройках Sieve посмотрите переадресации, фильтры «в спам», автоматическую сортировку и псевдонимы. Проверьте, не направляется ли письмо на несуществующий локальный адрес или во внешнюю систему. Изменения проверяйте на одном тестовом отправителе.
- 7. Сверьте папки на сервере через DovecotПолучите имена папок и число писем в INBOX для тестового пользователя. Если ожидаемое письмо записано, но не отображается в клиенте, проверьте подписку и синхронизацию IMAP вместо повторной пересылки.
- Только метаданные, замените адресLinux · Терминал (Bash)КомандаНужен sudoТолько метаданные, замените адрес. Команда доступна при установленном Dovecot.
sudo doveadm mailbox status -u user@example.com messages unseen INBOX
- 8. Исправьте только установленную причину и повторите тестЕсли LMTP недоступен, восстановите его по журналу и проверьте конфигурацию перед перезапуском. Если квота исчерпана — согласуйте её увеличение; если фильтр ошибается — отключите только это правило. После каждого изменения отправляйте одно контрольное письмо и сверяйте ID.
#Как убедиться, что проблема устранена
Новое контрольное сообщение принято SMTP, доставлено конечным локальным транспортом и отображается в правильной папке веб-почты и IMAP-клиента; журнал не содержит deferred или ошибок квоты.
#Если проблема осталась
Если SMTP отвечает успехом, а ни один локальный журнал не показывает попытку доставки, проверьте, не принимает ли письмо другой MX или внешний фильтрующий шлюз. Сопоставьте полную цепочку Received и серверные ID.