Вопрос или проблема
При отправке большого письма на новый сервер CentOS6, работающий под управлением Postfix в качестве MTA, возвращается следующее сообщение:
попытались доставить ваше сообщение, но оно было отклонено доменом получателя. Мы рекомендуем связаться с другим провайдером электронной почты для получения дополнительной информации о причине этой ошибки. Ошибка, которую вернул другой сервер: 552 552 5.3.4 Ошибка: размер файла сообщения слишком велик (состояние 18)
Я нашел следующее предложение, но не понимаю, куда его нужно добавить в файле main.cf
:
Это было вызвано Postfix и его ограничением не только на сообщения, но и на размеры почтовых ящиков.
Мне нужно было добавить эту настройку в
/etc/postfix/main.cf
:
message_size_limit = 31457280
Как можно увеличить максимальный размер почты (включая вложения) в Postfix?
Добавьте это где угодно в main.cf, это не имеет значения 🙂 Но хорошо держать директивы сгруппированными в логическом порядке, так проще поддерживать
Согласно официальной документации Postfix:
message_size_limit (по умолчанию: 10240000)
Максимальный размер в байтах сообщения, включая информацию об обертке. Примечание: будьте осторожны при внесении изменений. Чрезмерно малые значения приведут к потере уведомлений о недоставке, когда размер сообщения об ошибке превышает лимит размера сообщения локального или удаленного MTA.
Кроме того, размер по умолчанию для почтового ящика в 50M может предотвратить доставку почты, особенно после увеличения разрешенного размера сообщения. Для увеличения максимального размера почтового ящика на пользователя добавьте mailbox_size_limit = <размер в байтах>
в main.cf.
Кроме того, как отметил Иан Спаркс, если вы используете конфигурацию виртуального почтового ящика, вам может понадобиться установить virtual_mailbox_limit = <size_in_bytes>
.
Да, вы правы: message_size_limit является директивой конфигурации, которую вам нужно. Поместите ее где угодно в файле main.cf и перезагрузите (или перезапустите) Postfix.
Вы можете использовать postconf для проверки текущего установленного значения:
postconf message_size_limit
Будьте осторожны, устанавливая этот лимит на высокое значение. Вам нужно хотя бы в 1.5 раза больше свободного места, чем message_size_limit
, на разделе, где расположен очередь Postfix. Если у вас недостаточно свободного места, тогда все сообщения будут отклонены, даже если они весят всего несколько килобайт. И если вы получите одно сообщение такого размера, а затем пространство превысит предел (во время окончательной доставки почтового ящика), все последующие сообщения будут отклонены. Из-за нехватки места.
Также обратите внимание: электронная почта не является протоколом передачи файлов. См. этот вопрос и ответ: Почему у нас все еще такие небольшие ограничения на размер вложений электронной почты?
Не забудьте установить
virtual_mailbox_limit = <размер_в_байтах>
если вы используете конфигурацию виртуального почтового ящика. У меня ушло довольно много времени, чтобы это выяснить, похоже, никто об этом не говорит. 😉
Для всех, кто ищет ответ для новых версий Postfix (3+) , вам следует задать message_size_limit
равным числу как минимум в 1.5 раза выше, чем реальное сообщение, которое вы хотите отправить. Также этот лимит должен быть меньше, чем mailbox_size_limit
.
Например, если вы хотите, чтобы клиенты/программы могли отправлять почту размером как минимум 30 МБ, вам нужно установить message_size_limit = 47185920
, т.е. 45 МБ с учетом грубого увеличения размера в 1.5 раз (так как сообщения передаются в кодировке mime и, следовательно, размер увеличивается на некоторый коэффициент), т.е. 30 * 1.5 = 45 МБ (47185920 байт) .
Примечание: Этот тред упоминает математику, требуемую для уменьшения сообщения на фактор 1.37. Для безопасности мы можем считать это 1.5 раз.
Я использую iredmail roundcube postfix
отредактируйте ваш /etc/nginx/conf-available/client_max_body_size.conf
установите client_max_body_size 256m;
systemctl restart nginx
vim /etc/php/7.0/fpm/php.ini
upload_max_filesize = 128M;
post_max_size = 130M;
memory_limit = 256M;
service php7.0-fpm restart
vim /opt/www/roundcubemail/.htaccess
Убедитесь, что они меньше или равны параметрам php.ini
Для вашего сервера https://docs.iredmail.org/change.mail.attachment.size.html
postconf -e mailbox_size_limit=124857600 # это НЕ максимальный размер вашего почтового ящика, который редактируется в вашей панели администратора iredmail
postconf -e message_size_limit=114857600
systemctl reload postfix
Или, возможно:
systemctl restart postfix
Не забудьте очистить кэш и перезапустить вашу веб-страницу roundcube 😉
Ответ или решение
Изменение максимального размера почты в Postfix
Если вы столкнулись с ошибкой при отправке больших электронных писем через Postfix на сервере под управлением CentOS6, такой как "552 5.3.4 Error: message file too big", это может быть связано с установленными ограничениями на размер сообщений. В данной статье мы рассмотри, как увеличить максимальный размер почты, включая вложения, в Postfix.
Параметры конфигурации Postfix
Чтобы изменить максимальный размер почты, необходимо внести изменения в файл конфигурации Postfix, который обычно находится по пути /etc/postfix/main.cf
. В этом файле вы можете указать два основных параметра:
- message_size_limit — максимальный размер сообщения в байтах, включая информацию об отправителе и получателе.
- mailbox_size_limit — максимальный размер почтового ящика для отдельного пользователя.
Шаги для изменения максимального размера сообщения
-
Редактирование конфигурационного файла:
Откройте файл конфигурации Postfix:
sudo vi /etc/postfix/main.cf
Добавьте или измените следующие строки:
message_size_limit = 31457280 # 30 MB mailbox_size_limit = 52428800 # 50 MB
Примечание: Рекомендуется устанавливать значение
message_size_limit
как минимум в 1.5 раза больше, чем максимальный размер потенциально отправляемых сообщений, из-за необходимого пространства для MIME-кодирования. Например, для максимального размера 30 MB введите:message_size_limit = 47185920 # 45 MB
-
Если используется виртуальная почта:
Если ваша конфигурация использует виртуальные почтовые ящики, вам может понадобиться дополнительно задать предел
virtual_mailbox_limit
:virtual_mailbox_limit = 52428800 # 50 MB
-
Проверка конфигурации:
После внесения изменений вы можете проверить текущее значение установленного лимита сообщений с помощью команды:
postconf message_size_limit
-
Перезапуск Postfix:
Чтобы применить изменения, выполняем перезапуск службы Postfix:
sudo systemctl restart postfix
Обеспечение свободного места
Обратите внимание, что рекомендуется иметь свободного места на диске не менее 1.5 раза превышающего message_size_limit
, иначе все входящие сообщения могут быть отклонены, даже если они имеют небольшой размер.
Дополнительные параметры
Если работаете с веб-интерфейсами, такими как Roundcube, не забудьте также проверить и изменить настройки PHP:
-
Внесите изменения в файл
php.ini
:sudo vi /etc/php/7.0/fpm/php.ini
Установите параметры как:
upload_max_filesize = 128M post_max_size = 130M
-
После изменения всех конфигураций следует перезапустить необходимые службы:
sudo systemctl restart php7.0-fpm
Также, если используется Nginx, проверяйте настройки:
client_max_body_size 256m;
Обязательно тестируйте отправку сообщений с большими вложениями, чтобы убедиться, что все изменения были применены корректно и без ошибок.
Заключение
Изменение максимального размера сообщения в Postfix требует внимательного подхода к конфигурации параметров, связанных с лимитами сообщений и почтовыми ящиками. С учетом предложенных рекомендаций и корректной настройки, вы сможете без проблем отправлять большие электронные письма.