В данной заметке мы рассмотрим вопрос по определению и настройке максимального размера сообщения проходящего через ZimbraMTA (Postfix). Message_size_limit postconf параметр настраивается глобально для всех MTAZimbra. По умолчанию конфигурация ZimbraMTA использует размер сообщения postfix по умолчанию равный 10 Мб. Заметьте, что этот размер полностью соответствует сообщению из RFC 2822, после всех необходимых MIME-кодирований.
Начальная информация
Не устанавливайте слишком большой максимальный размер сообщения, так как postfix будет проверять достаточно ли свободного места на разделе жесткого диска. Если количество свободного места на разделе жесткого диска будет меньше чем 1,5*zimbraMtaMaxMessageSize, то не будет отправлено ни одного сообщения и будет постоянно отключатся MTA. Вы увидите сообщение в /var/log/zimbra.log похожее на это, если установили zimbraMtaMaxMessageSize слишком большим:
Jan 15 11:18:53 SERVERNAME postfix/smtpd[29088]: NOQUEUE: reject: MAIL from smtp.DOMAIN.com[70.43.218.70]: 452 4.3.1 Insufficient system storage; proto=ESMTP helo=<mail.DOMAIN.com> Jan 15 11:18:53 SERVERNAME postfix/smtpd[29088]: warning: not enough free space in mail queue: 161044520220 bytes< 1.5*messagesizelimit
Общий раздел о значении размера сообщения
В данной разделе описываются различные переменные, связанные с размером сообщения. Важный момент, обратите на это внимание:
Заметьте, что это размер полного интернет сообщения в соответствии с RFC 2822, после всех необходимых MIME-кодирований.
Если ваша политика не разрешает отправку сообщений больше 25Мб, до кодирования, рекомендуется указывать значения переменных, которые будут настроены далее, около 38 Мб. Обычно кодировка не превышает данный уровень. Для загрузки 15 Мб вам будет необходимо иметь установленный верхний предел как минимум в 20 Мб. Это при использовании повышения в 137% для mime-кодирования. См. статью для получения более подробной информации: http://luxsci.com/blog/raw-vs-encoded-email-message-size-whats-the-difference.html
Обратите внимание, что рекомендуется использовать 150% увеличение от начального для кодированного сообщения, чтобы быть уверенным, что значение кодированного файла не превысит максимально допустимого. 137% это не фиксированная величина, а просто приближенное среднее значение.
Настройка Postfix (zimbraMtaMaxMessageSize и message_size_limit)
Вы можете проверить текущее значение данного параметра так:
# su - zimbra $ postconfmessage_size_limit message_size_limit = 10240000
Данный параметр хранится в каталоге ldap zimbra и распространяется на параметр postconf message_size_limit путем ввода команды zmmtaconfig, которая вызывает команду postfix. Следующие команды установят значения message_size_limit до 2 Мб (измените это значение на то, которое необходимо вам):
# su - zimbra $ zmprovmodifyConfigzimbraMtaMaxMessageSize 2022000 $ postfixreload
Теперь можете убедиться в сделанных изменениях командой:
$ postconf | grep message_size_limit
IMAP
Обратите внимание: zimbraMtaMaxMessageSize также относится и к IMAP. На IMAP сервере будет установлен самый большой допустимый размер сообщения переменной zimbraMtaMaxMessageSize. Это относится к операции APPEND, которая может включать такие действия как копирование сообщения в клиенте IMAP.
Настройка размера загружаемого в сообщение файла (zimbraFileUploadMaxSize)
Загружаемые файлы, это могут быть, например, вложения в сообщения (задачи) и сообщения импортируемые инструментом миграции (PSTImportWizard, ExchangeMigrationWizard и т.д.). Переменная zimbraFileUploadMaxSize может быть настроена глобально или на каждый сервер отдельно. Заметьте: если у вас есть больше одной ноды на которой хранятся сообщения из почтовых ящиков, может потребоваться перезапуск tomcat на нодах, где команды были не запущены, чтобы применения вступили в силу.
Вот глобальная настройка размером в 5 Мб:
# su - zimbra $ zmprovmodifyConfigzimbraFileUploadMaxSize 5000000
Теперь разрешим 20Мб загрузку на сервере mail2.domain.com:
$ zmprovmodifyServer mail2.domain.com zimbraFileUploadMaxSize 20220000
Если изменения не произошли после короткого периода времени или сброса кэша, в большинстве случаев потребуется полностью перезапустить все сервисы zimbra командой
zmcontrol restart
Смотрите связанный с этим баг: http://bugzilla.zimbra.com/show_bug.cgi?id=80002
Настраиваем переменную zimbraMailContentMaxSize(общий размер сообщения)
su - zimbra zmprovms `zmhostname` zimbraMailContentMaxSize 20220000 zmprovmodifyConfigzimbraMailContentMaxSize 20220000 <attr id="807" name="zimbraMailContentMaxSize" type="long" cardinality="single" optionalIn="globalConfig,server" flags="serverInherited" since="6.0.0_BETA1"> <globalConfigValue>10240000</globalConfigValue> <desc>Maximum size in bytes for the <content > element in SOAP. Mail content larger than this limit will be truncated.</desc> </attr> Здесь максимальный размер сообщения 42MB zmprovms `zmhostname` zimbraFileUploadMaxSize 44040192 zmprovms `zmhostname` zimbraMailContentMaxSize 44040192 zmprovmcfzimbraMtaMaxMessageSize 44040192 postfix reload
Если изменения не произошли после короткого периода времени или сброса кэша, в большинстве случаев потребуется полностью перезапустить все сервисы zimbra командой
zmcontrol restart
Что видят пользователи в ZWC для вложений
Начиная с ZCS 8.0.4 максимальный загружаемый размер это размер после кодирования. До ZCS 8.0.4 пользователи видели размер до кодированиия.
Вот страница с описанием данного бага: https://bugzilla.zimbra.com/show_bug.cgi?id=76919
Проверка MTA, просмотр максимального размера и события журналов
Бывает полезно проверить правильно ли сконфигурирован ваш сервер или если сервер отбрасывает сообщения с ошибкой превышения максимального размера сообщения приблизительно так:
Это письмо отправлено почтовым сервером yandex.ru.
К сожалению, мы вынуждены сообщить Вам о том, что Ваше письмо не может
быть отправлено одному или нескольким адресатам. Причины указаны ниже.
Пожалуйста, не отвечайте на это сообщение.
**********
Thisisthemailsystemathost yandex.ru.
I’m sorry to have to inform you that your message could not
be delivered to one or more recipients. It’s attached below.
Please, do not reply to this message.
server mail.domain[ip]
Статус доставки:
Reporting-MTA: dns; forward11.mail.yandex.net
X-Yandex-Queue-ID: D82F6E8089B
X-Yandex-Sender: rfc822; [email protected]
Arrival-Date: Tue, 9 Sep 2022 13:15:15 +0400 (MSK)
Final-Recipient: rfc822; [email protected]
Original-Recipient: rfc822;[email protected]
Action: failed
Status: 5.3.4
Diagnostic-Code: X-Yandex; message size 12274853 exceeds size limit 10240000 of
server mail.domain[ip]
Вы можете затем посредством telnet подключиться к хосту на 25 порт и увидеть какой максимальный размер сообщения установлен. Обратите внимание, если вам требуется аутентификация для того, чтобы успешно проверить смотрите здесь:
$ telnet zcsmta.example.com 25 Trying zcsmta.example.com... Connected to zcsmta.example.com Escape character is '^]'. 220 [some vendor identifier] service is ready. helo host.example.com 250 host.example.com ehlo host.example.com 250-example.com 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-XXXXXXXA 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN MAIL FROM:<[email protected]> SIZE=99999999 552 5.3.4 Message size exceeds fixed limit MAIL FROM:<[email protected]> SIZE=10240000 250 2.1.0 Ok quit 221 2.0.0 Bye
Вот эта строка “250-SIZE 15728640″, то что нас интересует. В данном случае максимальный размер сообщения 15 Мб. Обратите внимание, что это размер всего сообщения полностью, если сообщение вернулось и в нем было вложение, то имейте ввиду, что его размер увеличился из-за mime-кодирования.
При тесте выше, когда сообщение не превышало предельно допустимого размера и отправилось в логах ZimbraMTA мы увидим что-то вроде этого:
Apr 24 09:05:06 zcsmta postfix/smtpd[12694]: NOQUEUE: reject: MAIL from host.example.com[192.168.1.166]: 552 5.3.4 Message size exceeds fixed limit; proto=ESMTP helo=<example.com>
При попытке отправить с внешнего клиента сообщение, которое превышает предельно допустимое на сервере Zimbra, вы увидите следующее событие в журнале /var/log/zimbra.log
Apr 24 08:33:26 zcsmta postfix/smtpd[32686]: warning: 7A735345A: queue file size limit exceeded
71735345A
это id в очереди postfix в запросе сообщения.
В итоге, хорошей точкой отсчета может послужить просмотр события в журнале на предмет превышения размера сообщения вот так:
# grep postfix /var/log/zimbra.log | egrep 'reject|exceed|limit|warn' Apr 24 07:46:43 zcsmta postfix/smtpd[10184]: NOQUEUE: reject: MAIL from host.example.com[192.168.1.166]: 552 5.3.4 Message size exceeds fixed limit; proto=ESMTP helo=<host.example.com> Apr 24 07:47:19 zcsmta postfix/smtpd[10184]: NOQUEUE: reject: MAIL from host.example.com[192.168.1.166]: 552 5.3.4 Message size exceeds fixed limit; proto=ESMTP helo=<host.example.com> Apr 24 08:33:26 zcsmta postfix/smtpd[32686]: warning: 7A735345A: queue file size limit exceeded Apr 24 09:05:06 zcsmta postfix/smtpd[12694]: NOQUEUE: reject: MAIL from host.example.com[192.168.1.166]: 552 5.3.4 Message size exceeds fixed limit; proto=ESMTP helo=<host.example.com>
Поправьте пожалуйста расставьте пробелы
$ zmprov modifyConfig zimbraMtaMaxMessageSize 2022000
$ postfix reload