#Симптомы и область применимости
Письмо с вложением не проходит через почту: клиент или сервер сообщает «message too large», 552 либо превышение лимита. Почтовый размер отличается от размера файла на диске — кодирование MIME увеличивает объём, а ограничения действуют на нескольких звеньях.
#Причины и диагностические признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Слишком мал лимит входящего SMTPОграничение message_size_limit применяется к полному письму. | Postfix отвечает 552 после DATA или объявляет малый SIZE | Проверьте конкретный лимит и политику домена. |
| Ограничение конечного получателяУ принимающего провайдера может быть более строгий предел. | Своим адресатам письмо уходит, другому домену нет | Сравните SMTP-код и рекомендуемый размер вложений. |
| Превышена квота ящикаПочтовое хранилище или квота не позволяют записать письмо. | Малые письма также не сохраняются | Сверьте лимит ящика и свободное место. |
#Пошаговая диагностика и исправление
- 1. Зафиксируйте фактический размер отправкиВ клиенте откройте исходное сообщение и свойства вложения. В сообщении об отказе найдите реальный SMTP-код и указанное число байт/мегабайт. Нельзя приравнивать файл 20 МБ к письму ровно 20 МБ: кодирование base64 и заголовки увеличивают объём.
- 2. Проверьте, кто отказалСравните письмо малой величины и то же письмо с приложенным файлом на собственном тестовом ящике. Если отказ сразу при отправке, смотрите клиент, сайт и ваш submission; если после доставки до удалённого домена — ограничение получателя или промежуточного шлюза.
- 3. Прочитайте предел PostfixНа сервере выполните чтение значения message_size_limit. Это полный размер сообщения, а не допустимый размер файла. Не увеличивайте параметр без понимания объёма очереди и свободного пространства.
- Postfix, только чтение; значение обычно выражено в байтахLinux · Терминал (Bash)КомандаPostfix, только чтение; значение обычно выражено в байтах.
postconf -h message_size_limit
- 4. Проверьте объявляемый SIZE сервераИз отдельного терминала подключитесь к порту submission по STARTTLS и посмотрите ответ EHLO: сервер может объявлять поддерживаемый размер. Если интерфейс принимает большой файл, это не отменяет последующие ограничения на пути к адресату.
- Замените домен; защищённое соединение без авторизации, не передавайте парольLinux · Терминал (Bash)КомандаЗамените домен; защищённое соединение без авторизации, не передавайте пароль.
openssl s_client -starttls smtp -connect mail.example.com:587 -servername mail.example.com -crlf </dev/null
- 5. Проверьте ограничения веб-приложения отдельноЕсли письмо отправляет сайт, проверьте размер загрузки PHP и предел запроса Nginx/Apache, а также ограничение почтовой библиотеки. Они влияют на обработку формы до SMTP. Не повышайте upload_max_filesize, если SMTP уже возвращает 552.
- 6. Проверьте квоту и свободное местоНа локальном Dovecot просмотрите квоту целевого ящика, затем df -h для раздела почты. Если место закончилось, согласуйте резервирование и освобождение пространства; удаление писем без разрешения и копии может привести к потере данных.
- Dovecot с quota plugin; адрес примерLinux · Терминал (Bash)КомандаНужен sudoDovecot с quota plugin; адрес пример. Только чтение.
sudo doveadm quota get -u user@example.com
- 7. Выберите безопасный способ передачи больших файловЕсли ограничения устанавливает адресат, загрузите файл в защищённое хранилище и отправьте ссылку с контролем доступа, сроком действия и нужными правами. Для конфиденциальных документов не делайте файл публичным и не отключайте проверку антивирусом ради доставки.
- 8. Изменяйте лимит только при подтверждённой необходимостиЕсли ваш сервер обслуживает обе стороны и политика допускает больший размер, сохраните исходную конфигурацию, оцените пиковую очередь и файловое хранилище, измените соответствующий параметр, проверьте postfix check и выполните штатное применение. Повторите тест только с разрешённым файлом меньшего и большего размера.
#Как убедиться, что проблема устранена
Письма допустимого размера доставляются с вложениями без 552, размеры в объявленном SIZE и настройках совпадают с политикой, а превышение лимита по-прежнему обрабатывается понятным отказом.
#Если проблема осталась
Если ваш сервер принимает письмо, но удалённый отказывает из-за своего предела, не меняйте местный message_size_limit без необходимости. Используйте защищённую ссылку либо согласуйте допустимый объём с получателем.